diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/glossaries-extra |
Initial commit
Diffstat (limited to 'macros/latex/contrib/glossaries-extra')
104 files changed, 79711 insertions, 0 deletions
diff --git a/macros/latex/contrib/glossaries-extra/CHANGES b/macros/latex/contrib/glossaries-extra/CHANGES new file mode 100644 index 0000000000..922ea958be --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/CHANGES @@ -0,0 +1,1044 @@ +1.41 (2019-04-09): + + * glossary-topic.sty: + + - added command \glstopicSubPreLocSep and moved \space + from \glstopicSubLoc to \glstopicSubPreLocSep + + - added check for description in \glstopicSubItem + + - moved \par from \glstopicSubItem to \glstopicAssignSubIndent + + * glossaries-extra-stylemods.sty: + + - added \glstreePreHeader + + - added check for description in \glsxtralttreeSymbolDescLocation + + - added \glstreeDescLoc and \glstreeChildDescLoc + + - \glsxtralttreeSymbolDescLocation now checks if the description + field is set + + - added \glslistgroupskip + +1.40 (2019-03-31): + + * glossaries-extra.sty: + + - corrected formatting for abbreviation + style 'long-hyphen-noshort-noreg' + + - changed definition of \glsfirstabbrvdefaultfont to use + \glsabbrvdefaultfont instead of \glsabbrvfont for + consistency + + - new: \GlsXtrDefaultResourceOptions + + * glossaries-extra-bib2gls.sty: + + - new commands provided if associated glossary has been defined: + \printunsrtabbreviations + \printunsrtsymbols + \printunsrtnumbers + \printunsrtacronyms + \printunsrtindex + + * glossary-topic.sty: + + - new package providing glossary styles 'topic' and 'topicmcols' + +1.39 (2018-03-22) + + * glossaries-extra.sty: + + - Added example-glossaries-symbolnames.bib + (corresponds to sample example-glossaries-symbolnames.tex + file provided by glossaries.sty) + + - Added starred versions of: + + \GlsXtrIfFieldEqStr + \GlsXtrIfFieldEqXpStr + \GlsXtrIfXpFieldEqXpStr + \GlsXtrIfFieldCmpNum + \GlsXtrIfFieldEqNum + \GlsXtrIfFieldNonZero + + - New command: \glsxtrentryparentname + + - New command: \glsxtrsetglossarylabel and 'label' key + for 'printgloss' family. + + - bug fix: added protection against fragile/non-expandable + commands in location within \@glsxtr@dorecord + + - bug fix: corrected short-nolong-desc, short-sc-nolong-desc, + short-sm-nolong-desc, short-em-desc (and their synonyms) + to behave as advertised in the manual. (That is, + name={short (long)} and description key must be supplied.) + + * glossary-bookindex.sty: + + - added: \glsxtrbookindexlocation, \glsxtrbookindexsublocation + +1.38 (2018-12-01) + + * glossary-longextra.sty + + - bug fix: \glslongextraNameFmt + +1.37 (2018-11-30) + + * glossaries-extra.sty + + - added record=nameref option + + - added equations and floats options + + - added \glsxtrhiername, \Glsxtrhiername, \GlsXtrhiername, + \GLSxtrhiername, \GLSXTRhiername and \glsxtrhiernamesep + + - added \GlsXtrStandaloneEntryName and \GlsXtrStandaloneEntryOther + + - added \GlsXtrLocationField + + - added \GlsXtrAutoAddOnFormat + + - added \glsxtridentifyglslike + + - added \GLSxtrusefield + + - bug fix: corrected \Glsxtrusefield + + * glossaries-extra-bib2gls.sty + + - added \glsxtrdisplaylocnameref, \glsxtrfmtinternalnameref + and \glsxtrfmtexternalnameref + + - added \glsxtrSetWidest and \glsxtrSetWidestFallback + + - added \glsxtraddlabelprefix, \glsxtrprependlabelprefix, + \glsxtrclearlabelprefixes, \glsxtrifinlabelprefixlist, + \dgls, \dglspl, \dGls, \dGlspl, \dGLS, \dGLSpl, + \dglslink, \dglsdisp + + - added \glsrenewcommand + + * glossary-longextra.sty + + - new package providing additional longtable glossary styles + +1.36 (2018-08-18) + + * glossaries-extra-bib2gls.sty + + - added \glsxtrdisplaysupploc and \glsxtrmultisupplocation for use + with bib2gls version 1.7+. + + * glossaries-extra.sty + + - added \glsxtrautoindexesc + +1.35 (2018-08-13) + + * fixed bug in \glslink + +1.34 (2018-07-29): + + * glossaries-extra.sty + + - added package option docdef=atom (behaves like docdef=restricted + but creates the .glsdefs file for atom's autocomplete support). + + - added \GlsXtrIfUnusedOrUndefined + +1.33 (2018-07-26): + + * glossaries-extra.sty: + + - bug fix: added check for existence in \ifglsused + +1.32 (2018-05-24): + + * glossaries-extra.sty: + + - added \GlsXtrForeignText, \GlsXtrForeignTextField + and \GlsXtrUnknownDialectWarning + +1.31 (2018-05-09): + + * glossaries-extra.sty: + + - added \glsdefpostlink, \glsdefpostname, \glsdefpostdesc + + - added \glsxtrpostlinkAddSymbolDescOnFirstUse + + - added \glslocalreseteach and \glslocalunseteach + + - added \glsaddeach + + - added \GlsXtrIfFieldEqXpStr, \GlsXtrIfXpFieldEqXpStr + \GlsXtrIfFieldNonZero, \GlsXtrIfFieldEqNum and + \GlsXtrIfFieldCmpNum + + - added \GlsXtrForUnsetBufferedList + + - added starred version \GlsXtrStartUnsetBuffering* + + - added prefix key to the glslink and printgloss families + + - added support for accessibility attributes: + accessinsertdots, accessaposplural, accessnoshortplural, + nameshortaccess, firstshortaccess, textshortaccess + + - added \GlsXtrStandaloneGlossaryType and + \GlsXtrStandaloneSubEntryItem + + - added \glsxtrRevertTocMarks + + - added warning if \printglossary is used with record=only + + - bug fix: corrected targetnameprefix + + * glossaries-extra-bib2gls.sty: + + - added \glscapturedgroup + + - added \GlsXtrIfHasNonZeroChildCount + + * glossaries-extra-stylemods.sty: + + - added: + + \glstreedefaultnamefmt + \glstreenonamedesc + \glstreenonamesymbol + \glstreenonamechilddesc + \glstreedesc + \glstreesymbol + \glstreechilddesc + \glstreechildsymbol + \glslistdesc + +1.30 (2018-04-25): + + * glossaries-extra.sty: + + - added \glsuserdescription (now used by long-short-user + and short-long-user abbreviation styles) + + - added \glsaddpresetkeys and \glsaddpostsetkeys + + - added \GlsXtrStartUnsetBuffering and + \GlsXtrStopUnsetBuffering + + - added \GlsXtrExpandedFmt + + - added \glsxtrabbreviationfont + + - added textformat key for commands like \glslink, \gls etc + + - bug fix: added \@glsxtr@record to \glsxtrfull, + \glsxtrshort, \glsxtrlong and variants + + - bug fix: added check for counter=wrglossary + in \glsxtr@inc@wrglossaryctr + + * glossaries-extra-bib2gls.sty: + + - new commands: + + \GlsXtrDualField + \GlsXtrDualBackLink + +1.29 (2018-04-09): + + * glossaries-extra-bib2gls.sty: + + - new commands: + + \GlsXtrBibTeXEntryAliases + \GlsXtrProvideBibTeXFields + \glsxtr@wrglossarylocation + \GlsXtrIndexCounterLink + + * glossaries-extra.sty: + + - added package option 'indexcounter' + + - bug fix: \glsxtrfieldforlistloop (corrected argument order) + + - added check for \gls@begindocdefs + + - added expansion in \@gls@removespaces + +1.28 (2018-03-06): + + * glossaries-extra.sty: + + - bug fix: \glsxtrsetgrouptitle and \glsxtrlocalsetgrouptitle + changed \csxdef/\csedef to \protected@csxdef and + \protected@csedef, respectively + + - \glsxtredeffield now uses \protected@csedef instead + of \csedef + +1.27 (2018-02-26): + + * added supplementary package glossaries-extra-bib2gls.sty + (automatically loaded by the record=only package option) + +1.26 (2018-01-05): + + * glossaries-extra.sty: + + - added \GlsXtrEnableLinkCounting and associated commands. + + - added \glslinkpresetkeys + +1.25 (2017-11-24) + + * glossaries-extra.sty: + + - added: \glsxtronlyname, \glsxtrlongshortname, + \glsxtrshortlongname, \glsxtrfootnotename, + \glsxtrshortnolongname, \glsxtrlongnoshortdescname, + \glsxtrlongnoshortname, \glsxtrlongshortuserdescname, + \glsxtrshortlonguserdescname + + - added \glsextrapostnamehook + + - \glsxtrpostlinkAddDescOnFirstUse and + \glsxtrpostlinkAddSymbolOnFirstUse now use \glsxtrparen instead + of hard-coded parentheses. + + * glossary-bookindex.sty: + + - added \glsxtrbookindexmulticolsenv + +1.24 (2017-11-14): + + * glossaries-extra-manual.tex: + + - corrected syntax of \glsxtrifhasfield and \GlsXtrIfFieldEqStr + (first argument is field, second is entry label) + + * glossaries-extra.sty: + + - added \glsxtrforcsvfield + + - added \glsxtrlocalsetgrouptitle + + - bug fix (\glsadd breaks with sort=use) + +1.23 (2017-11-12): + + * glossaries-extra.sty: + + - added \glsxtrrestorepostpunc + + - added \GlsXtrIfFieldUndef + + - added \glsxtrifcustomdiscardperiod + + - added starred form of \glsxtrfmt + + - bug fix: added missing label in \@glsxtrentryfmt + + - fixed shortcuts=all / true option + (\newabbr now defined with \providecommand) + + * glossaries-extra-stylemods.sty: + + - added \glsupdatewidest, \gglsupdatewidest, \eglsupdatewidest + and \xglsupdatewidest + +1.22 (2017-11-08): + + * glossaries-extra.sty: + + - \glsseeitemformat: added check for short field + + - added \glossentrynameother and \glsxtrglossentryother + + - added \glsxtrnopostpunc and \glsxtractivatenopost + + * glossary-bookindex.sty: + + - removed \ifglsnopostdot check from \glsxtrbookindexprelocation + (inappropriate as bookindex style doesn't display the + description) + +1.21 (2017-11-03): + + * glossaries-extra.sty: + + - fixed shortcuts=ac and shortcuts=none settings + + - new package option postpunc + + - added extra debug settings (debug=showwrgloss and debug=all) + + - modified \glsseeitemformat + + - new commands: \glsuseabbrvfont and \glsuselongfont + + - new command \glsxtrglossentry + + - new commands: \ifglsxtr@hyperoutside and + \glsxtrinithyperoutside and associated key hyperoutside + and category attribute hyperoutside. + + - new attribute textformat + + - patched \glsnavhyperlink + + - \glsenablehyper and \glsdisablehyper now use \def rather + than \let to allow for redefinitions of \glsdohyperlink etc + + - added \@glsxtr@checkgroup (letter group check is now + in \@print@unsrt@glossary during the construction of + \@glsxtr@doglossary to avoid complications caused + by the tabular-like styles) + + - added \glshex, \glsxtrresourceinit + + - added \GlsXtrTotalRecordCount, \GlsXtrRecordCount, + \GlsXtrLocationRecordCount, \glsxtrdetoklocation, + \glsxtrenablerecordcount, \glsxtrrecordtriggervalue, + \GlsXtrSetRecordCountAttribute, \glsxtrifrecordtrigger + + - added \rgls, \rglspl, \rGls, \rGlspl, \rGLS, \rGLSpl, + \rglsformat, \rglsplformat, \rGlsformat, \rGlsplformat, + \rGLSformat, \rGLSplformat + + - added \glsxtrnewgls, \glsxtrnewglslike, \glsxtrnewrgls, + \glsxtrnewrglslike + + - added \printunsrtglossaryentryprocesshook, + \printunsrtglossaryskipentry, + \printunsrtglossarypredoglossary, + \glsxtriflabelinlist + + - added \GlsXtrIfFieldEqStr + + - new abbreviation styles: nolong-short, nolong-short-noreg, + nolong-short-sm, nolong-short-sc + + * glossary-bookindex.sty: new + + * glossaries-extra-stylemods.sty: + + - added package option "all" + + - added \glsxtrprelocation + + - added \glstreeprelocation and \glstreechildprelocation + + - added \glslistprelocation, \glslistchildprelocation, + and \glslistchildpostlocation + + - patched indexgroup, indexhypergroup, treegroup, + treehypergroup, treenonamegroup, treenonamehypergroup, + alttreegroup, alttreehypergroup, mcolindexgroup, + mcolindexhypergroup, mcolindexspannav, mcoltreegroup, + mcoltreehypergroup, mcoltreespannav, mcoltreenonamegroup, + mcoltreenonamehypergroup, mcoltreenonamespannav, + mcolalttreegroup, mcolalttreehypergroup, mcolalttreespannav, + listgroup, listhypergroup, altlistgroup, altlisthypergroup + styles to discourage page breaks after + letter group headings. + + - added \gglssetwidest + + - ensured that all tabular-like styles have the + \ifglsnogroupskip moved outside of the definition + of \glsgroupskip + +1.20 (2017-09-11): + + * New 'printgloss' key targetnameprefix + + * Corrected .ins to remove default preamble and postamble + from .bib files + +1.19 (2017-09-08): + + * New command: \GlsXtrSetDefaultNumberFormat + + * New command: \glsxtrhyperlink + + * New command: \glsxtrifhasfield + + * Added thevalue and theHvalue keys to \glslink etc + + * Bug fixes for record=only and record=alsoindex options + + * Added example .bib files for use with bib2gls + +1.18 (2017-08-10): + + * Fixed bug caused by missing argument of 'stylemods'. + +1.17 (2017-08-09): + + * Added \glsxtrword, \glsxtrwordsep and check for 'markwords' + and 'markshortwords' category attributes. + + * New abbreviation styles: + + - short-nolong-noreg + - short-nolong-desc-noreg + - long-noshort-desc-noreg + - long-noshort-noreg + - long-em-noshort-em-noreg + - long-em-noshort-em-desc-noreg + - long-only-short-only + - long-only-short-only-desc + + designed to work with 'markwords' attribute: + - long-hyphen-short-hyphen + - long-hyphen-short-hyphen-desc + - long-hyphen-noshort-desc-noreg + - long-hyphen-postshort-hyphen + - long-hyphen-postshort-hyphen-desc + - short-hyphen-long-hyphen + - short-hyphen-long-hyphen-desc + - short-hyphen-postlong-hyphen + - short-hyphen-postlong-hyphen-desc + + * New sample document sample-abbr-styles.tex that illustrates all + available abbreviation styles. + + * Fixed some inconsistencies in the predefined abbreviation styles. + + * Added extra value 'ac' to package option 'shortcuts' + + * Added \ifglsxtrinsertinside check for subsequent use. + + * Added \glsxtrparen, \glsxtrsubsequentfmt and sundry other helper + commands related to abbreviation styles. + +1.16 (2017-06-15): + + * New key: seealso + + * New commands: \glsxtrseealsolabels, \glsxtrseelist, + \glsxtrindexseealso, \glsxtruseseealso, + \glsxtrautoindexentry, \glsxtrautoindexassignsort, + \glsxtrautoindex + + * New package option: autoseeindex + (autoseeindex=false requires at least glossaries v4.30) + + * Added xindy "seealso" cross-reference class to work with + \glsxtrindexseealso (requires at least glossaries v4.30, + otherwise behaves like \glssee). + + * Added example-glossaries-xr.tex which contains dummy entries + with cross-references for use in test documents. + + * Fixed bug in \@gls@noidx@getgrouptitle + + * Fixed bug in \@print@unsrt@glossary + +1.15 (2017-05-10): + + * Fixed typo in command name (\glsabbvfont -> \glsabbrvfont) + + * Deferred location expansion in \@glsxtr@dorecord + +1.14 (2017-04-18): + + * New keys for \glsadd: thevalue and theHvalue + + * New key 'wrgloss' for \gls, \glstext etc and associated + commands: + \glsxtrinitwrgloss + \ifglsxtrinitwrglossbefore + \glsxtrinitwrglossbeforetrue + \glsxtrinitwrglossbeforefalse + + * New command: \glsxtrlocationhyperlink + + * New attribute checks: externallocation, wrgloss + + * Bug fix: "incorrect alias target name when using \glshyperlink + (and therefore also \glsseeformat)" + http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=120 + + * Bug fix: corrected assignment of \cGls in \glsenableentrycount + and \glsenableentryunitcount + +1.13 (2017-02-07): + + * Fixed bug in \glsdisp that caused an infinite loop. + + * Switched to \providecommand for \glsxtrsetaliasnoindex + +1.12 (2017-02-03): + + * \longnewglossaryentry now has a starred version that + doesn't suppress the post-description hook. The unstarred + version now inserts \glsxtrpostlongdescription at the end + of the description instead of the hard-coded + \leavevmode\unskip\nopostdesc + + * Added option 'postdot' (shortcut for 'nopostdot=false') + + * Added 'alias' key to \newglossaryentry and associated command + \glsxtralias + + * \printunsrtglossary now has a starred version. + + * New commands: + + \apptoglossarypreamble + \pretoglossarypreamble + \glsxtrprovidestoragekey + \glsxtrfielduse + \glsxtrifkeydefined + \glsxtrfieldlistadd + \glsxtrfieldlistgadd + \glsxtrfieldlisteadd + \glsxtrfieldlistxadd + \glsxtrfielddolistloop + \glsxtrfieldforlistloop + \glsxtrfieldifinlist + \glsxtrfieldxifinlist + \glsxtrdisplaysingleloc + \glsxtrdisplaystartloc + \glsxtrdisplayendloc + \glsxtrdisplayendlochook + \glsxtrlocrangefmt + \GlsXtrSetField + \gGlsXtrSetField + \eGlsXtrSetField + \xGlsXtrSetField + \GlsXtrLetField + \csGlsXtrLetField + \GlsXtrLetFieldToField + \glsxtrdeffield + \glsxtredeffield + \glsxtrsetfieldifexists + \GlsXtrRecordCounter + \printunsrtglossaryunit + \printunsrtglossaryunitsetup + \glsxtrcopytoglossary + \provideignoredglossary + \glsxtrabbrvpluralsuffix + \glsxtrfmt + \glsxtrentryfmt + \GlsXtrFmtField + \GlsXtrFmtDefaultOptions + + * Added existence checks to \newignoredglossary + + * Modified \glsnoidxdisplayloc to check for range formations. + + * The record=only package option automatically implements + indexcrossref=false + + * \glsxtrresourcefile sets the category code of @ to letter + to allow internal commands within the location field. + + * \GlsXtrLoadResources can now be used multiple times. After + the first instance "\jobname-<n>" is used as the argument + to \glsxtrresourcefile. + + * New abbreviation styles: + + long-postshort-user + long-postshort-user-desc + short-postlong-user + short-postlong-user-desc + +1.11 (2017-01-19): + + * \glsxtrresourcefile now enforces the file extension .glstex + (This change is a security feature so there's no backward + compatibility. If you have used this command from v1.08 + you'll have to change the file name extension to continue + using it. Alternatively use \input or \loadglsentries instead.) + + * Extra information written to aux file by \glsxtrresourcefile + + * Added \GlsXtrLoadResources + + * New command: \glsxtrpageref (like glossary.sty's \glsrefentry + but uses \pageref instead of \ref). + + * Added starred version of \newignoredglossary + + * Added support for attributes: targeturl, targetcategory + and targetname. + +1.10 (2016-12-17): + + * Fixed bug causing \GLS to behave like \GLSpl + http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view;key=117 + +1.09 (2016-12-16): + + * Fixed bug when using the optional argument of \makeglossaries + +1.08 (2016-12-13): + + * Added record option + + * New commands: + + - \glsxtrresourcefile + - \printunsrtglossary + - \printunsrtglossaries + + * Fixed bug that occurs with undefaction=warn and an + undefined \glslabel in the post-link hook + +1.07 (2016-08-15): + + * New commands \glsxtrp etc. + + * New command \glsxtrabbrvfootnote used by the footnote + abbreviation styles (instead of hard-coding \footnote + into the style). + + * Fixed bug in footnote styles that used \glsfirstlongfont + instead of \glsfirstlongfootnotefont. + + * Fixed "first" and "firstplural" keys in the postfootnote + style (was causing repeated footnotes). + + * Fixed "text" key in the long-short-desc and short-long-desc + abbreviation styles, and fixed misspelling of \glsabbrvfont + in the "plural" key. + + * Fixed \glsfirst, \Glsfirst and \GLSfirst to ensure they + honour the nohyperfirst attribute. + + * Fixed bug in \RestoreAcronyms + www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=113 + +1.06 (2016-06-18): + + * Added docdefs=restricted (don't use .glsdefs file, document + definitions allowed provided they come before the glossary + in which they belong is displayed) + + * New command \glsxtrusesee + +1.05 (2016-06-10): + + * Added \glsfirstlongfootnotefont and \glslongfootnotefont + (Bug fix http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=110) + + * Bug fix in short-em-long style (corrected long form font command) + + * glossaries-extra-stylemods.sty: provided supplementary + alttree commands. + +1.04 (2016-05-02): + + * Added \GlsXtrEnablePreLocationTag + + * Added check for category \glsxtrpostname... in + \glxstrpostnamehook + + * Added new abbreviation styles: + - long-short-user + - long-short-user-desc + - short-long-user + - short-long-user-desc + and their accompanying commands \glsxtruserfield, + \glsxtruserparen, \glsabbrvuserfont and \glsxtrusersuffix. + + * Added new abbreviation styles: + - long-em-short-em + - long-em-short-em-desc + - short-em-long-em + - short-em-long-em-desc + and their accompanying commands \glsabbrvemfont and + \glsfirstlongemfont + + * Fixed sort in long-short-desc abbreviation style. + + * Reorganised naming scheme of abbreviation styles. + (Backward-compatible synonyms provided.) + + * Added \glsxtrregularfont + + * Added \glslongfont and \glslongdefaultfont + + * Added glossdescfont and glossnamefont attribute checks in + \glossentryname, \Glossentryname and \glossentrydesc + + * Tidied up accessibility support + + * Modified \glstext, \glsfirst, \glsplural, \glsfirstplural + (and case-changing variants) to set the abbreviation style + if required. + +1.03 (2016-04-27): + + * Fixed bug in \glsxtrtitleshortpl + (www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=107) + + * Fixed bugs in \glsplural, \Glsplural, \GLSplural, + \Glsfirstplural, \GLSfirstplural, \glsxtrtitlelongpl + +1.02 (2016-04-25): + + * Added \ifglsxtrinsertinside + + * Added \glsfmtlong, \glsfmtlongpl, \Glsfmtlong, \Glsfmtlongpl, + \glsfmtfull, \glsfmtfullpl, \Glsfmtfull, \Glsfmtfullpl + + * Added package glossaries-extra-stylemods.sty + +1.01 (2016-02-02): + + * Added retainfirstuseperiod attribute + + * bug fix for "short-desc" style: + fixed typo in \glsxtrinlinefullformat + and added missing second argument + +1.0 (2016-01-24 First stable release): + + * indexcrossrefs is now initially set to false but will + be automatically switched on if the "see" key is used. + +0.5.4 (2015-12-15): + + * Modified \glsdohyperlink and \glsdonohyperlink to ameliorate + the problems resulted from nested link-text. + + * Added per unit entry counting. + + * Modified \cglsformat etc to check for the regular attribute. + + * Added \GlsXtrEnableOnTheFly + + * Added \GlsXtrSetAltModifier and \GlsXtrSetDefaultGlsOpts + + * Added \glsxtrprotectlinks to deal with nested \gls etc. + + * Added \glsxtrpostunset, \glsxtrpostlocalunset, + \glsxtrpostreset and \gslxtrpostlocalreset + + * Added checks for entry's existence in shortcut tests + \glshasattribute and \glsifattribute and in + \glspostlinkhook + + * Added \glsxtrdowrglossaryhook + + * Added package option indexcrossrefs + + * Fixed \@newglossaryentryposthook so that it will add an empty + see value if not set. Added "see" element to field map + \@gls@keymap. + + * Added redefinition of \@gls@setdefault@glslink@opts to + set the default index value. + + * \MakeAcronymsAbbreviations now disables \setacronymstyle + +0.5.3 (2015-12-08): + + * Fixed bug in "abbreviations" package option. + + * Added support for "indexname" and "dualindex" attributes + with associated new commands. + + * Added provision for language modules (but none provided). + + * Removed \GlsXtrNoGlsWarningNoAutoMakeMain + (identical to \GlsXtrNoGlsWarningEmptyMain) + + * Added check for \glsdescwidth and \glspagelistwidth and + fixed adjustment for \glslistdottedwidth. + +0.5.2 (2015-12-08): + + * Modified the "nonumberlist" key (\printglossary) so that + it saves the number list. + + * Added \GlsXtrFormatLocationList + + * New command \GlsXtrEnableInitialTagging + + * Added \glsxtrfieldtitlecase + + * Modified \glossentrydesc to check for "glossdesc" attribute. + + * Modified \glossentryname to check for "glossname" attribute. + + * Fixed misspelt glossaries-accsupp (final letter was missing) + in \@ifpackageloaded + + * Modified commands like \@glstext@ to use \glsaccess... + instead of \glsentry... if glossaries-accsupp loaded. + + * Added: + + \GLSaccessname + \GLSaccesstext + \GLSaccessplural + \GLSaccessfirst + \GLSaccessfirstplural + \GLSaccesssymbol + \GLSaccesssymbolplural + \GLSaccessdesc + \GLSaccessdescplural + \GLSaccessshort + \GLSaccessshortpl + \GLSaccesslong + \glsaccesslongpl + \Glsaccesslongpl + \GLSaccesslongpl + + * Removed \glsxtrabbrvfmt and moved + \glssetabbrvfmt{\glscategory{\glslabel}} to \glsentryfmt + + * Added check for post-definition style switch. + + * Added \glsxtrnewabbrevpresetkeyhook + +0.5.1 (2015-12-07): + + * Removed \ifglsxtruseuchead + Now implemented through the "headuc" attribute. + Commands like \glsxtrheadshort modified to accommodate this. + + * Added: + \Glsaccessname + \Glsaccesstext + \Glsaccessplural + \Glsaccessfirst + \Glsaccessfirstplural + \Glsaccesssymbol + \Glsaccesssymbolplural + \Glsaccessdesc + \Glsaccessdescplural + + * Abbreviation styles (non-regular) now switch off regular + attribute if it has been set. (In case the style is + switched for a given category, e.g the "acronym" category.) + +0.5 (2015-12-07): + + * Renamed \glsentryfmtshort -> \glsfmtshort etc + These now use new commands \glsxtrtitleshort and + \glsxtrheadmarkshort etc to work better in page headers + that convert to upper case. + + * Added new commands for use in section headings: + \glsfmttext, \Glsfmttext, \glsfmtplural, \Glsfmtplural, + \glsfmtfirst, \Glsfmtfirst, \glsfmtfirstpl, + \Glsfmtfirstpl + + * New commands \glshascategoryattribute and \glshasattribute + + * Added \glsfirstabbrvdefaultfont and \glsfirstlongdefaultfont + Styles now set \glsfirstabbrvfont and \glsfirstlongfont + + * \markright and \markboth redefined so that they use + \glsxtrmarkhook (use \glsxtrRevertMarks to restore + original definitions). + + * Redefined \glsenableentrycount and added + \glsxtrifcounttrigger (support for "entrycount" + attribute). Added \GlsXtrEnableEntryCounting + + * Changed default behaviour of commands like \cgls + so they don't produce a warning if used without + \glsenableentrycount. Instead a warning is triggered + if \glsenableentrycount is used without setting + the "entrycount" attribute. + + * Added \cGLS, \cGLSpl + + * \acronymfont and \firstacronymfont redefined to + use \glsabbrvfont and \glsfirstabbrvfont (switched back + with \RestoreAcronyms). + + * New abbreviation styles: footnote-sc, postfootnote-sc, + long-short-sm, long-short-sm-desc, short-sm-long, + short-sm-long-desc, short-sm, short-sm-desc, short-desc, + long-sm, long-desc-sm, footnote-sm, postfootnote-sm, + long-short-em, long-short-em-desc, short-em-long, + short-em-long-desc, short-em, short-em-desc, short-desc, + long-em, long-desc-em, footnote-em, postfootnote-em. + + * New command \glsxtrsmfont for use in *-sm abbreviation + styles and \glsxtrsmsuffix for the default short plural + suffix. + + * New command \glsxtrscfont for use in *-sc abbreviation + styles and \glsxtrscsuffix for the default short plural + suffix. + +0.4 (2015-12-03): + + * The "abbreviations" option redefines \acronymtype if + the "acronym" option hasn't been used. + + * Redefinition of \newacronym sets the default type to + \acronymtype + + * Added \glsxtrifemptyglossary + + * \glsxtrnewsymbol and \glsxtrnewnumber adjusted so that the + name and label need to be supplied. + + * Fixed bug in \newterm + + * Changed \glsentryfmtshort etc to use \glsxtrshort etc + +0.3 (2015-12-03): + + * Added \glsxtrNoGlossaryWarning and "nomissingglstext" option. + + * Added \glsshortpltok and \glslongpltok. Abbreviation styles + now additionally set the first, firstplural and plural + keys even if the regular attribute isn't set to true. + (Allows the use of commands like \glsfirst, although + limitations apply.) + + * Added \glsxtrpostlinkAddDescOnFirstUse and + \glsxtrpostlinkAddSymbolOnFirstUse + + * \glsentryfmt also checks for the presence of the short key. + + * Added support for insertdots attribute. + + * Added \glsxtrpostlinkendsentence + + * Added \glsxtrshortpl etc. + + * Renamed \abbrvdefaultfont -> \glsabbrvdefaultfont + + * Added abbreviation plural shortcuts. + + * Added glossaries-accsupp support. + + * Bug fix in long-short-desc and short-long-desc abbreviation + styles + - argument of \glsxtrfullformat should be \the\glslabeltok + not \the\glsshorttok + + * Bug fix in *-sc abbreviation styles + +0.2 (2015-11-30): + + * Name changes: + + \glsxtrlongfont -> \glsfirstlongfont + \abbrvfont -> \glsabbrvfont + \firstabbrvfont -> \glsfirstabbrvfont + + * "short" abbreviation style uses "short (long)" + for the inline full style. + +0.1 (2015-11-22): Initial experimental release. diff --git a/macros/latex/contrib/glossaries-extra/README b/macros/latex/contrib/glossaries-extra/README new file mode 100644 index 0000000000..6f39a09e00 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/README @@ -0,0 +1,28 @@ +LaTeX Package : glossaries-extra v1.41 + +Last Modified : 2019-04-09 + +Author : Nicola Talbot + +This package provides improvements and extra features to the +glossaries package. Some of the default glossaries.sty behaviour +is changed by glossaries-extra.sty. See the user manual +glossaries-extra-manual.pdf for further details. + +Requires the glossaries package (and, naturally, all packages +required by glossaries.sty). + +The file example-glossaries-xr.tex contains dummy +entries with cross-references that may be used for creating +minimal working examples for testing the glossaries-extra +package. (The base glossaries package provides additional files, +but this one needs glossaries-extra.sty.) + +LICENCE + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/license/lppl1.3 +for the details of that license. + +Author's home page: http://www.dickimaw-books.com/ + diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf Binary files differnew file mode 100644 index 0000000000..8272e2c862 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html new file mode 100644 index 0000000000..bf636b8fa4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html @@ -0,0 +1,29815 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd--> +<html xmlns="http://www.w3.org/1999/xhtml" +> +<head><title></title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" /> +<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" /> +<!-- xhtml,fn-in,css-in,uni-html4,utf8 --> +<meta name="src" content="glossaries-extra-manual.tex" /> + +<style type="text/css"> +<!-- + +/* start css.sty */ +.cmmi-10{font-style: italic;} +.cmr-17{font-size:170%;} +.cmr-12{font-size:120%;} +.cmr-8{font-size:80%;} +.cmtt-12{font-size:120%;font-family: monospace;} +.cmtt-12{font-family: monospace;} +.cmtt-12{font-family: monospace;} +.cmtt-12{font-family: monospace;} +.cmtt-12{font-family: monospace;} +.cmbx-10{ font-weight: bold;} +.cmss-10{ font-family: sans-serif;} +.cmss-10{ font-family: sans-serif;} +.cmss-10{ font-family: sans-serif;} +.cmss-10{ font-family: sans-serif;} +.cmtt-10{font-family: monospace;} +.cmtt-10{font-family: monospace;} +.cmtt-10{font-family: monospace;} +.cmtt-10{font-family: monospace;} +.cmtt-10{font-family: monospace;} +.cmr-9{font-size:90%;} +.cmss-8{font-size:80%; font-family: sans-serif;} +.cmss-8{ font-family: sans-serif;} +.cmss-8{ font-family: sans-serif;} +.cmss-8{ font-family: sans-serif;} +.cmtt-9{font-size:90%;font-family: monospace;} +.cmtt-9{font-family: monospace;} +.cmtt-9{font-family: monospace;} +.cmtt-9{font-family: monospace;} +.cmtt-9{font-family: monospace;} +.cmti-10{ font-style: italic;} +.cmssbx-10{ font-family: sans-serif; font-weight: bold;} +.cmssbx-10{ font-family: sans-serif; font-weight: bold;} +.cmssbx-10{ font-family: sans-serif; font-weight: bold;} +.cmssbx-10{ font-family: sans-serif; font-weight: bold;} +.cmitt-10{font-family: monospace; font-style: italic;} +.cmmi-9{font-size:90%;font-style: italic;} +.cmssi-10{ font-family: sans-serif; font-style: oblique;} +.cmssi-10{ font-family: sans-serif; font-style: oblique;} +.cmssi-10{ font-family: sans-serif; font-style: oblique;} +.cmssi-10{ font-family: sans-serif; font-style: oblique;} +.cmtt-8{font-size:80%;font-family: monospace;} +.cmtt-8{font-family: monospace;} +.cmtt-8{font-family: monospace;} +.cmtt-8{font-family: monospace;} +.cmtt-8{font-family: monospace;} +.cmti-8{font-size:80%; font-style: italic;} +p.noindent { text-indent: 0em } +td p.noindent { text-indent: 0em; margin-top:0em; } +p.nopar { text-indent: 0em; } +p.indent{ text-indent: 1.5em } +@media print {div.crosslinks {visibility:hidden;}} +a img { border-top: 0; border-left: 0; border-right: 0; } +center { margin-top:1em; margin-bottom:1em; } +td center { margin-top:0em; margin-bottom:0em; } +.Canvas { position:relative; } +img.math{vertical-align:middle;} +li p.indent { text-indent: 0em } +li p:first-child{ margin-top:0em; } +li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } +.enumerate1 {list-style-type:decimal;} +.enumerate2 {list-style-type:lower-alpha;} +.enumerate3 {list-style-type:lower-roman;} +.enumerate4 {list-style-type:upper-alpha;} +div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +.obeylines-h,.obeylines-v {white-space: nowrap; } +div.obeylines-v p { margin-top:0; margin-bottom:0; } +.overline{ text-decoration:overline; } +.overline img{ border-top: 1px solid black; } +td.displaylines {text-align:center; white-space:nowrap;} +.centerline {text-align:center;} +.rightline {text-align:right;} +div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; } +.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.fbox {display:table} +div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +div.minipage{width:100%;} +div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;} +div.center div {text-align: left;} +div.flushright, div.flushright div.flushright {text-align: right;} +div.flushright div {text-align: left;} +div.flushleft {text-align: left;} +.underline{ text-decoration:underline; } +.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; } +.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; } +.framebox-c {text-align:center;} +.framebox-l {text-align:left;} +.framebox-r {text-align:right;} +span.thank-mark{ vertical-align: super } +span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +div.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;} +div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;} +div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } +table.tabular td p{margin-top:0em;} +table.tabular {margin-left: auto; margin-right: auto;} +td p:first-child{ margin-top:0em; } +td p:last-child{ margin-bottom:0em; } +div.td00{ margin-left:0pt; margin-right:0pt; } +div.td01{ margin-left:0pt; margin-right:5pt; } +div.td10{ margin-left:5pt; margin-right:0pt; } +div.td11{ margin-left:5pt; margin-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +td.td00{ padding-left:0pt; padding-right:0pt; } +td.td01{ padding-left:0pt; padding-right:5pt; } +td.td10{ padding-left:5pt; padding-right:0pt; } +td.td11{ padding-left:5pt; padding-right:5pt; } +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +.hline hr, .cline hr{ height : 1px; margin:0px; } +.tabbing-right {text-align:right;} +span.TEX {letter-spacing: -0.125em; } +span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} +a span.TEX span.E {text-decoration: none; } +span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;} +span.LATEX span.TEX{ position:relative; left: -0.4em; } +div.float, div.figure {margin-left: auto; margin-right: auto;} +div.float img {text-align:center;} +div.figure img {text-align:center;} +.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +table.equation {width:100%;} +.equation td{text-align:center; } +td.equation { margin-top:1em; margin-bottom:1em; } +td.equation-label { width:5%; text-align:center; } +td.eqnarray4 { width:5%; white-space: normal; } +td.eqnarray2 { width:5%; } +table.eqnarray-star, table.eqnarray {width:100%;} +div.eqnarray{text-align:center;} +div.array {text-align:center;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.pmatrix img{vertical-align:middle;} +div.pmatrix {text-align:center;} +table.pmatrix {width:100%;} +span.bar-css {text-decoration:overline;} +img.cdots{vertical-align:middle;} +.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;} +.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;} +.index-item, .index-subitem, .index-subsubitem {display:block} +div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;} +div.caption span.id{font-weight: bold; white-space: nowrap; } +h1.partHead{text-align: center} +p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} +.subparagraphHead, .likesubparagraphHead { font-weight: bold;} +.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} +.verse{white-space:nowrap; margin-left:2em} +div.maketitle {text-align:center;} +h2.titleHead{text-align:center;} +div.maketitle{ margin-bottom: 2em; } +div.author, div.date {text-align:center;} +div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } +.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } +h1.partHead{text-align: center} +.abstract p {margin-left:5%; margin-right:5%;} +div.abstract {width:100%;} +.alltt P { margin-bottom : 0em; margin-top : 0em; } +.alltt { margin-bottom : 1em; margin-top : 1em; } +.equation td{text-align:center; } +.equation-star td{text-align:center; } +table.equation-star { width:100%; } +table.equation { width:100%; } +table.align, table.alignat, table.xalignat, table.xxalignat, table.flalign {width:95%; margin-left:5%; white-space: nowrap;} +table.align-star, table.alignat-star, table.xalignat-star, table.flalign-star {margin-left:auto; margin-right:auto; white-space: nowrap;} +td.align-label { width:5%; text-align:center; } +td.align-odd { text-align:right; padding-right:0.3em;} +td.align-even { text-align:left; padding-right:0.6em;} +table.multline, table.multline-star {width:100%;} +td.gather {text-align:center; } +table.gather {width:100%;} +div.gather-star {text-align:center;} +table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } +div.longtable{text-align:center;} +.supertabular {text-align:center} +div.important { border : solid red; } +div.verbatim { font-family: monospace; white-space: nowrap; text-align:left; clear:both; padding-top: 2ex; padding-bottom: 2ex;} +span.HoLogo-XeLaTeX span.HoLogo-Xe{margin-right:-.13em;} +span.HoLogo-Xe span.HoLogo-e{position:relative;top:.5ex;left-margin:-.1em;} +span.HoLogo-LaTeX span.HoLogo-a{position:relative;top:-.5ex;margin-left:-.36em;margin-right:-.15em;font-size:85%;} +span.HoLogo-TeX span.HoLogo-e{position:relative;top:.5ex;margin-left:-.1667em;margin-right:-.125em;} +a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;} +/* end css.sty */ + + +--> +</style> +</head><body +> +<!--l. 235--><p class="noindent" ><a + id="top"></a> +</p><!--l. 235--><p class="indent" > + + + +</p><!--l. 235--><p class="indent" > + + + +</p> +<div class="center" +> +<!--l. 235--><p class="noindent" > +</p><!--l. 235--><p class="noindent" ><span +class="cmr-17">glossaries-extra.sty v1.41: an extension to the</span> +<span +class="cmr-17">glossaries package</span> +</p> +<div class="tabular"> <table id="TBL-1" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-1-1g"><col +id="TBL-1-1" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-1-1" +class="td11"> <span +class="cmr-12">Nicola L.C. Talbot </span></td> +</tr><tr +class="vspace" style="font-size:10.0pt"><td +> </td></tr><tr + style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-2-1" +class="td11"> <span +class="cmr-12">Dickimaw Books </span></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-3-1" +class="td11"><a +href="http://www.dickimaw-books.com/" class="url" ><span +class="cmtt-12">http://www.dickimaw-books.com/</span></a></td></tr></table> +</div> +<!--l. 235--><p class="noindent" ><span +class="cmr-12">2019-04-09</span></p></div> + <div +class="abstract" +> +<!--l. 237--><p class="indent" > + + + +</p> +<div class="center" +> +<!--l. 237--><p class="noindent" > +</p><!--l. 237--><p class="noindent" ><span +class="cmbx-10">Abstract</span></p></div> +<!--l. 238--><p class="noindent" >The <span +class="cmss-10">glossaries-extra </span>package is an extension to the <span +class="cmss-10">glossaries </span>package, providing +additional features. Some of the features provided by this package are only available +with <span +class="cmss-10">glossaries </span>version 4.19 (or above). This document assumes familiarity with the +<span +class="cmss-10">glossaries </span>package. +</p><!--l. 244--><p class="indent" > The file <span +class="cmtt-10">example-glossaries-xr.tex </span>contains dummy entries with cross-references +that may be used for creating minimal working examples for testing the +<span +class="cmss-10">glossaries-extra </span>package. (The base <span +class="cmss-10">glossaries </span>package provides additional files, but +this one needs <span +class="cmss-10">glossaries-extra</span>.) There are equivalent <span +class="cmtt-10">.bib </span>files for use with +<a + id="dx1-2"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. + + + +</p> + </div> +<!--l. 253--><p class="indent" > <div class="important" title="Important Note"> Since <span +class="cmss-10">glossaries-extra </span>internally loads the <span +class="cmss-10">glossaries </span>package, you also need to have +<span +class="cmss-10">glossaries </span>installed and all the packages that <span +class="cmss-10">glossaries </span>depends on (including, but not +limited to, <span +class="cmss-10">tracklang</span><a + id="dx1-3"></a>, <span +class="cmss-10">mfirstuc</span><a + id="dx1-4"></a>, <span +class="cmss-10">etoolbox</span><a + id="dx1-5"></a>, <span +class="cmss-10">xkeyval</span><a + id="dx1-6"></a> (at least version dated 2006/11/18), +<span +class="cmss-10">textcase</span><a + id="dx1-7"></a>, <span +class="cmss-10">xfor</span><a + id="dx1-8"></a>, <span +class="cmss-10">datatool-base</span><a + id="dx1-9"></a> and <span +class="cmss-10">amsgen</span><a + id="dx1-10"></a>. These packages are all available in the +current <span class="TEX">T<span +class="E">E</span>X</span> Live and Mik<span class="TEX">T<span +class="E">E</span>X</span> distributions. If any of them are missing, please +update your <span class="TEX">T<span +class="E">E</span>X</span> distribution using your update manager. (For help on this see, for +example, <a +href="http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution" >How do I update my <span class="TEX">T<span +class="E">E</span>X</span> distribution?</a> or <a +href="http://tex.stackexchange.com/questions/14925/updating-tex-on-linux" >Updating <span class="TEX">T<span +class="E">E</span>X</span> on Linux</a>.) +</div> +</p><!--l. 268--><p class="noindent" > +</p><!--l. 270--><p class="indent" > Additional resources: </p> + <ul class="itemize1"> + <li class="itemize">The <span +class="cmss-10">glossaries-extra </span>documented code <a +href="http://mirrors.ctan.org/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf" >glossaries-extra-code.pdf</a>. + </li> + <li class="itemize">The <a +href="http://www.dickimaw-books.com/gallery/#glossaries-extra" ><span +class="cmss-10">glossaries-extra </span>gallery</a>. + </li> + <li class="itemize"><span +class="cmss-10">glossaries-extra </span>and <a + id="dx1-11"></a><span +class="cmtt-10">bib2gls</span>: An Introductory Guide. + (<a +href="http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf" ><span +class="cmtt-10">bib2gls-begin.pdf</span></a>). + </li> + <li class="itemize"><a +href="https://www.dickimaw-books.com/latex/buildglossaries/" >Incorporating makeglossaries or makeglossaries-lite or bib2gls into the + document build</a>. + </li> + <li class="itemize">The <a +href="http://www.dickimaw-books.com/software/bib2gls" ><span +class="cmtt-10">bib2gls</span></a> application. + </li> + <li class="itemize">The base <a +href="https://ctan.org/pkg/glossaries" ><span +class="cmss-10">glossaries</span></a> package.</li></ul> + + + + <h2 class="likechapterHead"><a + id="x1-1000"></a>Contents</h2> + <div class="tableofcontents"> + <span class="chapterToc" >1 <a +href="#sec:intro" id="QQ2-1-2">Introduction</a></span> +<br />  <span class="sectionToc" >1.1 <a +href="#sec:defaults" id="QQ2-1-3">Package Defaults</a></span> +<br />  <span class="sectionToc" >1.2 <a +href="#sec:pkgopts" id="QQ2-1-4">New or Modified Package Options</a></span> +<br /> <span class="chapterToc" >2 <a +href="#sec:modifications" id="QQ2-1-5">Modifications to Existing Commands and Styles</a></span> +<br />  <span class="sectionToc" >2.1 <a +href="#sec:wrglossary" id="QQ2-1-6">Entry Indexing</a></span> +<br />  <span class="sectionToc" >2.2 <a +href="#sec:see" id="QQ2-1-7">Cross-References (“see” and “see also”)</a></span> +<br />  <span class="sectionToc" >2.3 <a +href="#sec:entryfmtmods" id="QQ2-1-8">Entry Display Style Modifications</a></span> +<br />  <span class="sectionToc" >2.4 <a +href="#sec:entrycountmods" id="QQ2-1-9">Entry Counting Modifications</a></span> +<br />  <span class="sectionToc" >2.5 <a +href="#sec:glsunset" id="QQ2-1-10">First Use Flag</a></span> +<br />  <span class="sectionToc" >2.6 <a +href="#plurals" id="QQ2-1-11">Plurals</a></span> +<br />  <span class="sectionToc" >2.7 <a +href="#sec:nested" id="QQ2-1-12">Nested Links</a></span> +<br />  <span class="sectionToc" >2.8 <a +href="#sec:acronymmods" id="QQ2-1-13">Acronym Style Modifications</a></span> +<br />  <span class="sectionToc" >2.9 <a +href="#x1-140002.9" id="QQ2-1-15"><span +class="cmss-10">glossary-bookindex </span>package</a></span> +<br />  <span class="sectionToc" >2.10 <a +href="#x1-150002.10" id="QQ2-1-16"><span +class="cmss-10">glossary-longextra </span>package</a></span> +<br />  <span class="sectionToc" >2.11 <a +href="#x1-160002.11" id="QQ2-1-17"><span +class="cmss-10">glossary-topic </span>package</a></span> +<br />  <span class="sectionToc" >2.12 <a +href="#sec:glosstylemods" id="QQ2-1-18">Glossary Style Modifications</a></span> +<br />   <span class="subsectionToc" >2.12.1 <a +href="#sec:stylehooks" id="QQ2-1-19">Style Hooks</a></span> +<br />   <span class="subsectionToc" >2.12.2 <a +href="#sec:glosstylenumlist" id="QQ2-1-20">Number List</a></span> +<br />   <span class="subsectionToc" >2.12.3 <a +href="#x1-200002.12.3" id="QQ2-1-21">The <span +class="cmss-10">glossaries-extra-stylemods </span>Package</a></span> +<br /> <span class="chapterToc" >3 <a +href="#sec:abbreviations" id="QQ2-1-22">Abbreviations</a></span> +<br />  <span class="sectionToc" >3.1 <a +href="#sec:tagging" id="QQ2-1-23">Tagging Initials</a></span> +<br />  <span class="sectionToc" >3.2 <a +href="#sec:abbrstyle" id="QQ2-1-24">Abbreviation Styles</a></span> +<br />  <span class="sectionToc" >3.3 <a +href="#sec:abbrshortcuts" id="QQ2-1-25">Shortcut Commands</a></span> +<br />  <span class="sectionToc" >3.4 <a +href="#sec:predefabbrvstyles" id="QQ2-1-27">Predefined Abbreviation Styles</a></span> +<br />   <span class="subsectionToc" >3.4.1 <a +href="#sec:predefregabbrvstyles" id="QQ2-1-28">Predefined Abbreviation Styles that Set the Regular Attribute</a></span> +<br />   <span class="subsectionToc" >3.4.2 <a +href="#sec:predefnonregabbrvstyles" id="QQ2-1-29">Predefined Abbreviation Styles that Don’t Set the Regular Attribute</a></span> +<br />  <span class="sectionToc" >3.5 <a +href="#sec:newabbrvstyle" id="QQ2-1-30">Defining New Abbreviation Styles</a></span> +<br /> <span class="chapterToc" >4 <a +href="#sec:headtitle" id="QQ2-1-31">Entries in Sectioning Titles, Headers, Captions and Contents</a></span> +<br /> <span class="chapterToc" >5 <a +href="#sec:categories" id="QQ2-1-32">Categories</a></span> +<br /> <span class="chapterToc" >6 <a +href="#sec:countref" id="QQ2-1-33">Counting References</a></span> +<br />  <span class="sectionToc" >6.1 <a +href="#sec:entrycount" id="QQ2-1-34">Entry Counting (First Use Flag)</a></span> +<br />  <span class="sectionToc" >6.2 <a +href="#sec:linkcount" id="QQ2-1-35">Link Counting</a></span> +<br /> <span class="chapterToc" >7 <a +href="#sec:autoindex" id="QQ2-1-36">Auto-Indexing</a></span> +<br /> <span class="chapterToc" >8 <a +href="#sec:onthefly" id="QQ2-1-37">On-the-Fly Document Definitions</a></span> +<br /> <span class="chapterToc" >9 <a +href="#sec:bib2gls" id="QQ2-1-38"><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases</a></span> + + + +<br />  <span class="sectionToc" >9.1 <a +href="#selection" id="QQ2-1-39">Selection</a></span> +<br />  <span class="sectionToc" >9.2 <a +href="#sortinganddisplayingtheglossary" id="QQ2-1-40">Sorting and Displaying the Glossary</a></span> +<br />  <span class="sectionToc" >9.3 <a +href="#x1-390009.3" id="QQ2-1-41">The <span +class="cmss-10">glossaries-extra-bib2gls </span>package</a></span> +<br />   <span class="subsectionToc" >9.3.1 <a +href="#sec:supplocations" id="QQ2-1-42">Supplemental Locations</a></span> +<br />   <span class="subsectionToc" >9.3.2 <a +href="#sec:recordnameref" id="QQ2-1-43">Nameref Record</a></span> +<br />   <span class="subsectionToc" >9.3.3 <a +href="#sec:resourcecommands" id="QQ2-1-44">Helper Commands for Resource Options</a></span> +<br />  <span class="sectionToc" >9.4 <a +href="#supplementarycommands" id="QQ2-1-45">Supplementary Commands</a></span> +<br />  <span class="sectionToc" >9.5 <a +href="#sec:recordcount" id="QQ2-1-46">Record Counting</a></span> +<br /> <span class="chapterToc" >10 <a +href="#sec:miscnew" id="QQ2-1-47">Miscellaneous New Commands</a></span> +<br />  <span class="sectionToc" >10.1 <a +href="#sec:fields" id="QQ2-1-48">Entry Fields</a></span> +<br />  <span class="sectionToc" >10.2 <a +href="#sec:printunsrt" id="QQ2-1-49">Display All Entries Without Sorting or Indexing</a></span> +<br />  <span class="sectionToc" >10.3 <a +href="#sec:glossentry" id="QQ2-1-50">Standalone Entry Items</a></span> +<br />  <span class="sectionToc" >10.4 <a +href="#sec:alias" id="QQ2-1-51">Entry Aliases</a></span> +<br /> <span class="chapterToc" >11 <a +href="#sec:supplemental" id="QQ2-1-52">Supplemental Packages</a></span> +<br />  <span class="sectionToc" >11.1 <a +href="#sec:prefix" id="QQ2-1-53">Prefixes or Determiners</a></span> +<br />  <span class="sectionToc" >11.2 <a +href="#sec:accsupp" id="QQ2-1-54">Accessibility Support</a></span> +<br /> <span class="chapterToc" >12 <a +href="#sec:samples" id="QQ2-1-55">Sample Files</a></span> +<br /> <span class="chapterToc" >13 <a +href="#sec:lang" id="QQ2-1-56">Multi-Lingual Support</a></span> +<br /> <span class="chapterToc" > <a +href="#glossary">Glossary</a></span> + </div> + + + +<!--l. 295--><p class="indent" > <div class="chapter"><h2 class="chapterHead">1. <a + id="sec:intro"></a>Introduction</h2> +</p><!--l. 298--><p class="indent" > The <span +class="cmss-10">glossaries </span>package is a flexible package, but it’s also a heavy-weight package +that uses a lot of resources. As package developer, I’m caught between those users +who complain about the drawbacks of a heavy-weight package with a large user +manual and those users who want more features (which necessarily adds to the +package weight and manual size). +</p><!--l. 305--><p class="indent" > The <span +class="cmss-10">glossaries-extra </span>package is an attempt to provide a compromise for this +conflict. Version 4.22 of the <span +class="cmss-10">glossaries </span>package is the last version to incorporate new +features.<span class="footnote-mark"><a +href="#fn1x1" id="fn1x1-bk"><sup class="textsuperscript">1.1</sup></a></span><a + id="x1-2001f1"></a> +Future versions of <span +class="cmss-10">glossaries </span>will just be bug fixes. New features will instead be added +to <span +class="cmss-10">glossaries-extra</span>. This means that the base <span +class="cmss-10">glossaries </span>package won’t increase in terms +of package loading time and allocation of resources, but those users who do want +extra features available will have more of a chance of getting their feature requests +accepted. +</p> +<!--l. 319--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.1 </span> <a + id="sec:defaults"></a>Package Defaults</h3> +<!--l. 322--><p class="noindent" >I’m not happy with some of the default settings assumed by the <span +class="cmss-10">glossaries </span>package, +and, judging from code I’ve seen, other users also seem unhappy with them, as +certain package options are often used in questions posted on various sites. I can’t +change the default behaviour of <span +class="cmss-10">glossaries </span>as it would break backward compatibility, +but since <span +class="cmss-10">glossaries-extra </span>is a separate package, I have decided to implement some of +these commonly-used options by default. You can switch them back if they’re not +appropriate. +</p><!--l. 332--><p class="indent" > The new defaults are: </p> + <ul class="itemize1"> + <li class="itemize"><a +href="#styopt.toc"><span +class="cmss-10">toc</span></a><span +class="cmss-10">=true</span><a + id="dx1-3001"></a> (add the glossaries to the table of contents). Use <a +href="#styopt.toc"><span +class="cmss-10">toc</span></a><span +class="cmss-10">=false</span><a + id="dx1-3002"></a> to + switch this back off. + </li> + <li class="itemize"><a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><span +class="cmss-10">=true</span><a + id="dx1-3003"></a> (suppress the terminating full stop after the description + in the glossary). Use <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><span +class="cmss-10">=false</span><a + id="dx1-3004"></a> or just <a +href="#styopt.postdot"><span +class="cmss-10">postdot</span></a><a + id="dx1-3005"></a> to restore the + terminating full stop (period). + </li> + <li class="itemize"><a +href="#styopt.noredefwarn"><span +class="cmss-10">noredefwarn</span></a><span +class="cmss-10">=true</span><a + id="dx1-3006"></a> (suppress the warnings that occur when the <span +class="cmss-10">theglossary</span><a + id="dx1-3007"></a><a + id="dx1-3008"></a> + environment and <span +class="cmtt-10">\printglossary </span>are redefined while <span +class="cmss-10">glossaries </span>is + loading). To restore the warnings, use <a +href="#styopt.noredefwarn"><span +class="cmss-10">noredefwarn</span></a><span +class="cmss-10">=false</span><a + id="dx1-3009"></a>. Note that this + won’t have any effect if the <span +class="cmss-10">glossaries </span>package has already been loaded + before you use the <span +class="cmss-10">glossaries-extra </span>package. + </li> + <li class="itemize">If <span +class="cmss-10">babel</span><a + id="dx1-3010"></a> has been loaded, the <a +href="#styopt.translate"><span +class="cmss-10">translate</span></a><span +class="cmss-10">=babel</span><a + id="dx1-3011"></a> option is switched on. To + revert to using the <span +class="cmss-10">translator</span><a + id="dx1-3012"></a> interface, use <a +href="#styopt.translate"><span +class="cmss-10">translate</span></a><span +class="cmss-10">=true</span><a + id="dx1-3013"></a>. There is no + change to the default if <span +class="cmss-10">babel</span><a + id="dx1-3014"></a> hasn’t been loaded. + </li></ul> + + + +<!--l. 356--><p class="indent" > The examples below illustrate the difference in explicit package options between +<span +class="cmss-10">glossaries </span>and <span +class="cmss-10">glossaries-extra</span>. There may be other differences resulting from +modifications to commands provided by <span +class="cmss-10">glossaries </span>(see <a +href="#sec:modifications"><span +class="cmsy-10">§</span>2 </a><a +href="#sec:modifications">Modifications to Existing +Commands and Styles<!--tex4ht:ref: sec:modifications --></a>). +</p><!--l. 362--><p class="indent" > + </p><ol class="enumerate1" > + <li + class="enumerate" id="x1-3016x1"> + + + + <div class="verbatim" id="verbatim-1"> + \documentclass{article} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 367--><p class="nopar" > This is like: + + + +</p> + <div class="verbatim" id="verbatim-2"> + \documentclass{article} +  <br />\usepackage[toc,nopostdot]{glossaries} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 373--><p class="nopar" > + </p></li> + <li + class="enumerate" id="x1-3018x2"> + + + + <div class="verbatim" id="verbatim-3"> + \documentclass[british]{article} +  <br />\usepackage{babel} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 380--><p class="nopar" > This is like: + + + +</p> + <div class="verbatim" id="verbatim-4"> + \documentclass[british]{article} +  <br />\usepackage{babel} +  <br />\usepackage[toc,nopostdot,translate=babel]{glossaries} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 387--><p class="nopar" > + </p></li> + <li + class="enumerate" id="x1-3020x3"> + + + + <div class="verbatim" id="verbatim-5"> + \documentclass{memoir} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 393--><p class="nopar" > This is like: + + + +</p> + <div class="verbatim" id="verbatim-6"> + \documentclass{memoir} +  <br />\usepackage[toc,nopostdot,noredefwarn]{glossaries} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 399--><p class="nopar" > <span +class="cmti-10">However</span> + + + +</p> + <div class="verbatim" id="verbatim-7"> + \documentclass{memoir} +  <br />\usepackage{glossaries} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 405--><p class="nopar" > This is like: + + + +</p> + <div class="verbatim" id="verbatim-8"> + \documentclass{memoir} +  <br />\usepackage[toc,nopostdot]{glossaries} +  <br />\usepackage{glossaries-extra} +</div> + <!--l. 411--><p class="nopar" > Since by the time <span +class="cmss-10">glossaries-extra </span>has been loaded, <span +class="cmss-10">glossaries </span>has already + redefined <span +class="cmss-10">memoir</span><a + id="dx1-3021"></a>’s glossary-related commands.</p></li></ol> +<!--l. 417--><p class="indent" > Another noticeable change is that by default <span +class="cmtt-10">\printglossary </span>will now display +information text in the document if the external glossary file doesn’t exist. This is +explanatory text to help new users who can’t work out what to do next to complete +the document build. Once the document is set up correctly and the external files have +been generated, this text will disappear. +</p><!--l. 424--><p class="indent" > This change is mostly likely to be noticed by users with one or more +redundant empty glossaries who ignore transcript messages, explicitly use +<a + id="dx1-3022"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a>/<a + id="dx1-3023"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> on just the non-empty glossary (or glossaries) and use the iterative +<span +class="cmtt-10">\printglossaries</span><a + id="dx1-3024"></a> command instead of <span +class="cmtt-10">\printglossary</span><a + id="dx1-3025"></a>. For example, consider the +following: + + + +</p> + <div class="verbatim" id="verbatim-9"> +\documentclass{article} + <br />\usepackage[acronym]{glossaries} + <br />\makeglossaries + <br />\newacronym{laser}{laser}{light amplification by stimulated + <br />emission of radiation} + <br />\begin{document} + <br />\gls{laser} + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 448--><p class="nopar" > The above document will only display the list of acronyms at the place where +<span +class="cmtt-10">\printglossaries</span><a + id="dx1-3026"></a> occurs. However it will also attempt to input the <span +class="cmtt-10">.gls </span>file +associated with the <span +class="cmtt-10">main </span>glossary. +</p><!--l. 454--><p class="indent" > If you use <a + id="dx1-3027"></a><a +href="#glo:makeglossaries"><span +class="cmtt-10">makeglossaries</span></a>, you’ll get the warning message: + + + +</p> + <div class="verbatim" id="verbatim-10"> +Warning: File 'test.glo' is empty. + <br />Have you used any entries defined in glossary 'main'? + <br />Remember to use package option 'nomain' if you + <br />don't want to use the main glossary. +</div> +<!--l. 460--><p class="nopar" > (where the original file is called <span +class="cmtt-10">test.tex</span>) but if you simply call <a + id="dx1-3028"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> directly +to generate the <span +class="cmtt-10">.acr </span>file (without attempting to create the <span +class="cmtt-10">.gls </span>file) then the +transcript file will always contain the message: + + + +</p> + <div class="verbatim" id="verbatim-11"> +No file test.gls. +</div> +<!--l. 467--><p class="nopar" > This doesn’t occur with <a + id="dx1-3029"></a><a +href="#glo:makeglossaries"><span +class="cmtt-10">makeglossaries</span></a> as it will create the <span +class="cmtt-10">.gls </span>file containing +the single command <span +class="cmtt-10">\null</span>. +</p><!--l. 471--><p class="indent" > If you simply change from <span +class="cmss-10">glossaries </span>to <span +class="cmss-10">glossaries-extra </span>in this document, you’ll +find a change in the resulting PDF if you don’t use <a + id="dx1-3030"></a><span +class="cmtt-10">makeglossaries </span>and you only +generate the <span +class="cmtt-10">.acr </span>file with <a + id="dx1-3031"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a>. +</p><!--l. 476--><p class="indent" > The transcript file will still contain the message about the missing <span +class="cmtt-10">.gls</span>, but now +you’ll also see information in the actual PDF document. The simplest remedy is to +follow the advice inserted into the document at that point, which is to add the +<a +href="#styopt.nomain"><span +class="cmss-10">nomain</span></a><a + id="dx1-3032"></a> package option: + + + +</p> + <div class="verbatim" id="verbatim-12"> +\documentclass{article} + <br />\usepackage[nomain,acronym,postdot]{glossaries-extra} + <br />\makeglossaries + <br />\setabbreviationstyle[acronym]{long-short} + <br />\newacronym{laser}{laser}{light amplification by stimulated + <br />emission of radiation} + <br />\begin{document} + <br />\gls{laser} + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 500--><p class="nopar" > (Note the need to set the acronym style using <span +class="cmtt-10">\setabbreviationstyle </span>before +<span +class="cmtt-10">\newacronym</span>. See <a +href="#sec:abbreviations"><span +class="cmsy-10">§</span>3 </a><a +href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a> for further details.) +</p><!--l. 505--><p class="noindent" > +</p> +<!--l. 505--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.2 </span> <a + id="sec:pkgopts"></a>New or Modified Package Options</h3> +<!--l. 508--><p class="noindent" >If you haven’t already loaded <span +class="cmss-10">glossaries</span>, you can use any of the package options +provided by <span +class="cmss-10">glossaries </span>when you load <span +class="cmss-10">glossaries-extra </span>and they will automatically be +passed to <span +class="cmss-10">glossaries </span>(which <span +class="cmss-10">glossaries-extra </span>will load). If <span +class="cmss-10">glossaries </span>has already +been loaded, then those options will be passed to <span +class="cmtt-10">\setupglossaries</span><a + id="dx1-4001"></a>, but +remember that not all of the <span +class="cmss-10">glossaries </span>package options may be used in that +command. +</p><!--l. 516--><p class="indent" > <div class="important" title="Important Note"> This section only lists options that are either unrecognised by the <span +class="cmss-10">glossaries</span> +package or are a modified version of options of the same name provided by <span +class="cmss-10">glossaries</span>. +See the <span +class="cmss-10">glossaries </span>user manual for details about the unmodified options. +</div> +</p><!--l. 522--><p class="noindent" > +</p><!--l. 524--><p class="indent" > The new and modified options provided by <span +class="cmss-10">glossaries-extra </span>are described +below: + + + + </p><dl class="description"><dt class="description"> +<a + id="styopt.debug"></a><span +class="cmssbx-10">debug</span><a + id="dx1-4002"></a> </dt><dd +class="description">The <span +class="cmss-10">glossaries </span>package has a <span +class="cmss-10">debug </span>option that allows the values <span +class="cmss-10">false</span>, + <span +class="cmss-10">true </span>and <span +class="cmss-10">showtargets</span>. The <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=showtargets</span><a + id="dx1-4003"></a> option was introduced to + <span +class="cmss-10">glossaries </span>v4.32, so if you want to use this option with <span +class="cmss-10">glossaries-extra </span>you + must make sure that your version of <span +class="cmss-10">glossaries </span>supports it. + <!--l. 537--><p class="noindent" >The <span +class="cmss-10">glossaries-extra </span>package extends this option to provide the additional + values <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=showwrgloss</span><a + id="dx1-4004"></a> and <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=all</span><a + id="dx1-4005"></a>. + </p><!--l. 541--><p class="noindent" >The <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=showwrgloss</span><a + id="dx1-4006"></a> option implements <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=true</span><a + id="dx1-4007"></a> and uses + </p><!--l. 543--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrwrglossmark</span><span +class="cmtt-9"> </span></span><a + id="dx1-4008"></a> <span +class="cmtt-10">\glsxtrwrglossmark </span></div><hr> + </p><!--l. 545--><p class="noindent" > + to show a mark <span +class="cmsy-10">⋅ </span>just before the write operation performed by the + indexing commands. If you use <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-4009"></a> there will be a mark + for the write operation to the <span +class="cmtt-10">.aux </span>file for <a + id="dx1-4010"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> and a mark for + the write operation to the associated glossary file for <a + id="dx1-4011"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or + <a + id="dx1-4012"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a>. + </p><!--l. 553--><p class="noindent" >The <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=all</span><a + id="dx1-4013"></a> option implements both <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=showtargets</span><a + id="dx1-4014"></a> and + <a +href="#styopt.debug"><span +class="cmss-10">debug</span></a><span +class="cmss-10">=showwrgloss</span><a + id="dx1-4015"></a>. + </p></dd><dt class="description"> +<a + id="styopt.postdot"></a><span +class="cmssbx-10">postdot</span><a + id="dx1-4016"></a> </dt><dd +class="description">(New to version 1.12.) This option is just a shortcut for <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><span +class="cmss-10">=false</span><a + id="dx1-4017"></a>. + </dd><dt class="description"> +<a + id="styopt.postpunc"></a><span +class="cmssbx-10">postpunc</span><a + id="dx1-4018"></a> </dt><dd +class="description">(New to version 1.21.) This option sets the post-description punctuation to + the given value. For example: <span +class="cmss-10">postpunc=; </span>does + + + + <div class="verbatim" id="verbatim-13"> + \renewcommand{\glspostdescription}{;} +</div> + <!--l. 564--><p class="nopar" > The value may also be one of the following keywords: + </p><dl class="description"><dt class="description"> + <span +class="cmtt-10">comma</span><span +class="cmbx-10">:</span> </dt><dd +class="description"><a +href="#styopt.postpunc"><span +class="cmss-10">postpunc</span></a><span +class="cmss-10">=comma</span><a + id="dx1-4019"></a> is equivalent to + + + + <div class="verbatim" id="verbatim-14"> + \renewcommand{\glspostdescription}{,} +</div> + <!--l. 571--><p class="nopar" > + </p></dd><dt class="description"> + <span +class="cmtt-10">dot</span><span +class="cmbx-10">:</span> </dt><dd +class="description"><a +href="#styopt.postpunc"><span +class="cmss-10">postpunc</span></a><span +class="cmss-10">=dot</span><a + id="dx1-4020"></a> is equivalent to + + + + <div class="verbatim" id="verbatim-15"> + \renewcommand{\glspostdescription}{.\spacefactor\sfcode`\. } +</div> + <!--l. 577--><p class="nopar" > + </p></dd><dt class="description"> + <span +class="cmtt-10">none</span><span +class="cmbx-10">:</span> </dt><dd +class="description"><a +href="#styopt.postpunc"><span +class="cmss-10">postpunc</span></a><span +class="cmss-10">=none</span><a + id="dx1-4021"></a> is equivalent to + + + + <div class="verbatim" id="verbatim-16"> + \renewcommand{\glspostdescription}{} +</div> + <!--l. 583--><p class="nopar" ></p></dd></dl> + <!--l. 585--><p class="noindent" >The default definition is + + + +</p> + <div class="verbatim" id="verbatim-17"> + \newcommand*{\glspostdescription}{% +  <br />  \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi +  <br />} +</div> + <!--l. 590--><p class="nopar" > where the conditional is determined by the <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><a + id="dx1-4022"></a> package option. + The <a +href="#styopt.postpunc"><span +class="cmss-10">postpunc</span></a><a + id="dx1-4023"></a> option removes the conditional from the definition of + <span +class="cmtt-10">\glspostdescription</span>. The package options <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><a + id="dx1-4024"></a> and <a +href="#styopt.postdot"><span +class="cmss-10">postdot</span></a><a + id="dx1-4025"></a> will restore + the original definition of <span +class="cmtt-10">\glspostdescription</span>. + </p><!--l. 597--><p class="noindent" >The <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-4026"></a> package adjusts the predefined styles + that had a hard-coded <span +class="cmtt-10">\space </span>before the <a + id="dx1-4027"></a><a +href="#glo:numberlist">number list</a> so that they use + <span +class="cmtt-10">\glsxtrprelocation </span>instead (which is defined to <span +class="cmtt-10">\space</span>). You can therefore + redefine this command in combination with <a +href="#styopt.postpunc"><span +class="cmss-10">postpunc</span></a><a + id="dx1-4028"></a> to alter the separator + before the <a + id="dx1-4029"></a>number list. For example, to have a comma followed by + <span +class="cmtt-10">\hfil</span>: + + + +</p> + <div class="verbatim" id="verbatim-18"> + \usepackage[postpunc=comma,stylemods]{glossaries-extra} +  <br />\renewcommand{\glsxtrprelocation}{\hfil} +</div> + <!--l. 607--><p class="nopar" > Be careful with doing this as it will look odd if the <a + id="dx1-4030"></a><a +href="#glo:numberlist">number list</a> is missing. + (With <a + id="dx1-4031"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> you can instead redefine <span +class="cmtt-10">\glsxtrprelocation </span>to do nothing + and set the location prefixes with <span +class="cmtt-10">loc-prefix </span>which will only apply if the entry + has a <a + id="dx1-4032"></a>number list.) + </p></dd><dt class="description"> +<a + id="styopt.accsupp"></a><span +class="cmssbx-10">accsupp</span><a + id="dx1-4033"></a> </dt><dd +class="description">Load the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-4034"></a> package (if not already loaded). + <!--l. 617--><p class="noindent" >If you want to define styles that can interface with the accessibility support + provided by <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-4035"></a> use the <span +class="cmtt-10">\glsaccess</span>⟨<span +class="cmitt-10">xxx</span>⟩ type of commands + instead of <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmitt-10">xxx</span>⟩ (for example, <span +class="cmtt-10">\glsaccesstext</span><a + id="dx1-4036"></a> instead of + <span +class="cmtt-10">\glsentrytext</span><a + id="dx1-4037"></a>). If <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-4038"></a> hasn’t been loaded those commands are + equivalent (for example, <span +class="cmtt-10">\glsaccesstext </span>just does <span +class="cmtt-10">\glsentrytext</span>) but if it + has been loaded, then the <span +class="cmtt-10">\glsaccess</span>⟨<span +class="cmitt-10">xxx</span>⟩ commands will add the + accessibility information. (See <a +href="#sec:accsupp"><span +class="cmsy-10">§</span>11.2 </a><a +href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a> for further + details.) + </p><!--l. 627--><p class="noindent" >Note that the <a +href="#styopt.accsupp"><span +class="cmss-10">accsupp</span></a><a + id="dx1-4039"></a> option can only be used as a package option (and can’t + be set with <span +class="cmtt-10">\glossariesextrasetup</span><a + id="dx1-4040"></a>) since the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-4041"></a> package must + be loaded before <span +class="cmss-10">glossaries-extra </span>if it’s required. + </p></dd><dt class="description"> +<a + id="styopt.stylemods"></a><span +class="cmssbx-10">stylemods</span><a + id="dx1-4042"></a> </dt><dd +class="description">This is a ⟨<span +class="cmti-10">key</span>⟩=⟨<span +class="cmti-10">value</span>⟩ option used to load the <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-4043"></a> + package. The value may be a comma-separated list of options to pass to that + package. (Remember to group ⟨<span +class="cmti-10">value</span>⟩ if it contains any commas.) The value may + be omitted if no options need to be passed. See <a +href="#sec:glosstylemods"><span +class="cmsy-10">§</span>2.12 </a><a +href="#sec:glosstylemods">Glossary Style + Modifications<!--tex4ht:ref: sec:glosstylemods --></a> for further details. There are two special keyword values: + <a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><span +class="cmss-10">=default</span><a + id="dx1-4044"></a> (equivalent to omitting the value) and <a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><span +class="cmss-10">=all</span><a + id="dx1-4045"></a>, which + loads all the predefined styles. + </dd><dt class="description"> +<a + id="styopt.undefaction"></a><span +class="cmssbx-10">undefaction</span><a + id="dx1-4046"></a> </dt><dd +class="description">This is a ⟨<span +class="cmti-10">key</span>⟩=⟨<span +class="cmti-10">value</span>⟩ option, which has two allowed values: <span +class="cmss-10">warn </span>and + <span +class="cmss-10">error</span>. This indicates what to do if an undefined glossary entry is referenced. The + default behaviour is <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=error</span><a + id="dx1-4047"></a>, which produces an error message (the + default for <span +class="cmss-10">glossaries</span>). You can switch this to a warning message (and ?? + appearing in the text) with <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-4048"></a>. + <!--l. 652--><p class="noindent" ><div class="important" title="Important Note"> Undefined entries can’t be picked up by any commands that iterate + over a glossary list. This includes <span +class="cmtt-10">\forglsentries</span><a + id="dx1-4049"></a> and <span +class="cmtt-10">\glsaddall</span><a + id="dx1-4050"></a>. + </div> + + + + </p><!--l. 656--><p class="noindent" > + </p><!--l. 658--><p class="noindent" >Note that <span +class="cmtt-10">\ifglsused</span><a + id="dx1-4051"></a> will display ?? in the document text with + <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-4052"></a> if the entry hasn’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 <a +href="#sec:glsunset"><span +class="cmsy-10">§</span>2.5 </a><a +href="#sec:glsunset">First Use Flag<!--tex4ht:ref: sec:glsunset --></a> for further + details. + </p></dd><dt class="description"> +<a + id="styopt.indexcrossrefs"></a><span +class="cmssbx-10">indexcrossrefs</span><a + id="dx1-4053"></a> </dt><dd +class="description">This is a boolean option. If <span +class="cmss-10">true</span>, this will automatically index any + cross-referenced entries that haven’t been marked as used at the end of the + document. Note that this necessarily adds to the overall document build time, + especially if you have defined a large number of entries, so this defaults to <span +class="cmss-10">false</span>, + but it will be automatically switched on if you use the <span +class="cmss-10">see</span><a + id="dx1-4054"></a> or <span +class="cmss-10">seealso</span><a + id="dx1-4055"></a> keys + in any entries (unless <a +href="#styopt.autoseeindex"><span +class="cmss-10">autoseeindex</span></a><span +class="cmss-10">=false</span><a + id="dx1-4056"></a>). To force it off, even if you + use the <span +class="cmss-10">see</span><a + id="dx1-4057"></a> or <span +class="cmss-10">seealso</span><a + id="dx1-4058"></a> key, you need to explicitly set <a +href="#styopt.indexcrossrefs"><span +class="cmss-10">indexcrossrefs</span></a><a + id="dx1-4059"></a> to + <span +class="cmss-10">false</span>. + <!--l. 676--><p class="noindent" >Note that <a + id="dx1-4060"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> can automatically find dependent entries when it + parses the <span +class="cmtt-10">.bib </span>source file. The <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-4061"></a> option automatically implements + <a +href="#styopt.indexcrossrefs"><span +class="cmss-10">indexcrossrefs</span></a><span +class="cmss-10">=false</span><a + id="dx1-4062"></a>. + </p></dd><dt class="description"> +<a + id="styopt.autoseeindex"></a><span +class="cmssbx-10">autoseeindex</span><a + id="dx1-4063"></a> </dt><dd +class="description"> (New to v1.16.) This is a boolean option. If true (default), this makes + the <span +class="cmss-10">see</span><a + id="dx1-4064"></a> and <span +class="cmss-10">seealso</span><a + id="dx1-4065"></a> keys automatically index the cross-reference when an entry + is defined. If false, the value of those keys will still be stored in their + corresponding fields (and can be accessed using commands like <span +class="cmtt-10">\glsxtrusesee</span> + and <span +class="cmtt-10">\glsxtruseseealso</span>) but cross-reference won’t be automatically + indexed. + <!--l. 690--><p class="noindent" >Note that the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4066"></a> option automatically implements <a +href="#styopt.autoseeindex"><span +class="cmss-10">autoseeindex</span></a><span +class="cmss-10">=false</span><a + id="dx1-4067"></a>. + </p><!--l. 693--><p class="noindent" >For example, if an entry is defined as + + + +</p> + <div class="verbatim" id="verbatim-19"> + \newglossaryentry{foo}{name={foo},description={},see={bar,baz}} +</div> + <!--l. 696--><p class="nopar" > then with <span +class="cmtt-10">autoseeindex=true</span>, this is equivalent to + + + +</p> + <div class="verbatim" id="verbatim-20"> + \newglossaryentry{foo}{name={foo},description={}} +  <br />\glssee{foo}{bar,baz} +  <br />\glossariesextrasetup{indexcrossrefs=true} +  <br />\GlsXtrSetField{foo}{see}{bar,baz} +</div> + <!--l. 703--><p class="nopar" > but with <span +class="cmtt-10">autoseeindex=false</span>, this is equivalent to + + + +</p> + <div class="verbatim" id="verbatim-21"> + \newglossaryentry{foo}{name={foo},description={}} +  <br />\GlsXtrSetField{foo}{see}{bar,baz} +</div> + <!--l. 708--><p class="nopar" > Note that <a +href="#styopt.indexcrossrefs"><span +class="cmss-10">indexcrossrefs</span></a><a + id="dx1-4068"></a> isn’t automatically implemented by the presence of the + <span +class="cmss-10">see</span><a + id="dx1-4069"></a> key when <a +href="#styopt.autoseeindex"><span +class="cmss-10">autoseeindex</span></a><a + id="dx1-4070"></a> is false. + </p><!--l. 713--><p class="noindent" >It’s therefore possible to remove the cross-references from the location lists and + set their position within the glossary style. + </p><!--l. 716--><p class="noindent" >Another method of preventing the automatic indexing is to define the entries + before the external indexing files have been opened with <span +class="cmtt-10">\makeglossaries</span>. + Since the appropriate file isn’t open, the information can’t be written to it. + This will need the package option <span +class="cmss-10">seenoindex=ignore </span>(provided by <span +class="cmss-10">glossaries</span>) to + prevent an error occurring. + </p></dd><dt class="description"> +<a + id="styopt.record"></a><span +class="cmssbx-10">record</span><a + id="dx1-4071"></a> </dt><dd +class="description">(New to v1.08.) This is a ⟨<span +class="cmti-10">key</span>⟩=⟨<span +class="cmti-10">value</span>⟩ option provided for the benefit of + <a + id="dx1-4072"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> (see <a +href="#sec:bib2gls"><span +class="cmsy-10">§</span>9 </a><a +href="#sec:bib2gls"><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>). + <!--l. 727--><p class="noindent" >The option may only be set in the preamble and can’t be used after + <span +class="cmtt-10">\GlsXtrLoadResources</span>. If the value is missing <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4073"></a> is assumed. + Permitted values: + </p><dl class="description"><dt class="description"> + <span +class="cmssbx-10">off</span> </dt><dd +class="description">This is the default setting. The indexing is performed as normal using + either <span +class="cmtt-10">\makeglossaries </span>or <span +class="cmtt-10">\makenoidxglossaries</span>. This setting + implements <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=error</span><a + id="dx1-4074"></a>. + </dd><dt class="description"> + <span +class="cmssbx-10">only</span> </dt><dd +class="description">The indexing is performed by <a + id="dx1-4075"></a><span +class="cmtt-10">bib2gls </span>(see <a +href="#sec:bib2gls"><span +class="cmsy-10">§</span>9 </a><a +href="#sec:bib2gls"><span +class="cmtt-10">bib2gls</span>: + Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>). Neither <span +class="cmtt-10">\makeglossaries </span>nor + <span +class="cmtt-10">\makenoidxglossaries </span>is permitted. This setting implements + <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-4076"></a> and automatically loads the supplementary + <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4077"></a> package. (There should be no need to explicitly + load <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4078"></a>.) + <!--l. 742--><p class="noindent" >The glossaries should be displayed using <span +class="cmtt-10">\printunsrtglossary </span>(or + <span +class="cmtt-10">\printunsrtglossaries</span>). + </p><!--l. 745--><p class="noindent" >The document build process is (assuming the file is called <span +class="cmtt-10">myDoc.tex</span>): + + + +</p> + <div class="verbatim" id="verbatim-22"> + pdflatex myDoc +  <br />bib2gls myDoc +  <br />pdflatex myDoc +</div> + <!--l. 751--><p class="nopar" > + </p><!--l. 753--><p class="noindent" >Note that <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4079"></a> will prevent the <span +class="cmss-10">see</span><a + id="dx1-4080"></a> from automatically + implementing <span +class="cmtt-10">\glssee</span>. (<a + id="dx1-4081"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> deals with the <span +class="cmss-10">see</span><a + id="dx1-4082"></a> field.) You + may explicitly use <span +class="cmtt-10">\glssee </span>in the document, but <a + id="dx1-4083"></a><span +class="cmtt-10">bib2gls </span>will + ignore the cross-reference if the <span +class="cmss-10">see</span><a + id="dx1-4084"></a> field was already set for that + entry. + </p><!--l. 759--><p class="noindent" >The <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4085"></a> option will automatically set the <span +class="cmss-10">glossaries </span>package’s + <a +href="#styopt.sort"><span +class="cmss-10">sort</span></a><span +class="cmss-10">=none</span><a + id="dx1-4086"></a> option if available. (That option value was only introduced to + <span +class="cmss-10">glossaries </span>v4.30.) + </p></dd><dt class="description"> + <span +class="cmssbx-10">nameref</span> </dt><dd +class="description">(New to v1.37 and requires <a + id="dx1-4087"></a><span +class="cmtt-10">bib2gls </span>v1.8+.) This option is like + <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4088"></a> but additionally records the current label information given by + <span +class="cmtt-10">\@currentlabel </span>and <span +class="cmtt-10">\@currentHref</span>, and provides a more reliable way of + saving the <span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter</span>⟩ for the given location. This option requires + <span +class="cmss-10">hyperref</span><a + id="dx1-4089"></a> otherwise it will fall back on the usual location records. + Remember that <span +class="cmtt-10">\@currentHref </span>is always globally updated whenever + <span +class="cmtt-10">\refstepcounter </span>is used, but <span +class="cmtt-10">\@currentlabel </span>isn’t. This can cause some + undesired side-effects with some settings. Remember also that the + <a +href="#styopt.indexcounter"><span +class="cmss-10">indexcounter</span></a><a + id="dx1-4090"></a> option increments the associated counter every time an entry + is indexed, which affects this option. See <a +href="#sec:recordnameref"><span +class="cmsy-10">§</span>9.3.2 </a><a +href="#sec:recordnameref">Nameref Record<!--tex4ht:ref: sec:recordnameref --></a> for further + details. + <!--l. 777--><p class="noindent" >This option is best used with <a +href="#styopt.counter"><span +class="cmss-10">counter</span></a><span +class="cmss-10">=chapter</span><a + id="dx1-4091"></a> or <a +href="#styopt.counter"><span +class="cmss-10">counter</span></a><span +class="cmss-10">=section</span><a + id="dx1-4092"></a> if you + want the title included in the location list. If the indexing counter is the + default <span +class="cmss-10">page</span><a + id="dx1-4093"></a>, only the location number is shown. Similarly for + <a +href="#styopt.counter"><span +class="cmss-10">counter</span></a><span +class="cmss-10">=equation</span><a + id="dx1-4094"></a> (or <a +href="#styopt.equations"><span +class="cmss-10">equations</span></a><span +class="cmss-10">=true</span><a + id="dx1-4095"></a>). + </p></dd><dt class="description"> + <span +class="cmssbx-10">alsoindex</span> </dt><dd +class="description">This is a hybrid setting that uses <a + id="dx1-4096"></a><span +class="cmtt-10">bib2gls </span>to fetch entry information + from <span +class="cmtt-10">.bib </span>files, but uses <a + id="dx1-4097"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or <a + id="dx1-4098"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> to create the glossary + files. This option should be used with <span +class="cmtt-10">\makeglossaries </span>but not + with its optional argument. This option should not be used with + <span +class="cmtt-10">\makenoidxglossaries</span>. You may need to change the transcript file used + by <a + id="dx1-4099"></a><span +class="cmtt-10">bib2gls </span>to avoid a clash with the transcript file used by <a + id="dx1-4100"></a><span +class="cmtt-10">makeindex</span> + or <a + id="dx1-4101"></a><span +class="cmtt-10">xindy</span>. (This can be done with <a + id="dx1-4102"></a><span +class="cmtt-10">bib2gls</span>’s <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">--log-file</span></span></span> or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">-t</span></span></span> + option.) + <!--l. 794--><p class="noindent" >The glossaries should be displayed using <span +class="cmtt-10">\printglossary </span>(or + <span +class="cmtt-10">\printglossaries</span>). This option is expected to be used with <a + id="dx1-4103"></a><span +class="cmtt-10">bib2gls</span>’s + <span +class="cmtt-10">sort=none </span>setting and so <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4104"></a> is not automatically + + + + loaded. + </p><!--l. 799--><p class="noindent" >The document build process is (assuming the file is called <span +class="cmtt-10">myDoc.tex</span>): + + + +</p> + <div class="verbatim" id="verbatim-23"> + pdflatex myDoc +  <br />bib2gls myDoc +  <br />pdflatex myDoc +  <br />makeglossaries myDoc +  <br />pdflatex myDoc +</div> + <!--l. 807--><p class="nopar" ></p></dd></dl> + <!--l. 810--><p class="noindent" >With the recording on (<a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-4105"></a> or <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-4106"></a>), any of the commands + that would typically index the entry (such as <span +class="cmtt-10">\gls</span>, <span +class="cmtt-10">\glstext </span>or <span +class="cmtt-10">\glsadd</span>) + will add a <span +class="cmtt-10">\glsxtr@record </span>entry to the <span +class="cmtt-10">.aux </span>file. <a + id="dx1-4107"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> can then + read these lines to find out which entries have been used. (Remember + that commands like <span +class="cmtt-10">\glsentryname </span>don’t index, so any use of these + commands won’t add a corresponding <span +class="cmtt-10">\glsxtr@record </span>entry to the + <span +class="cmtt-10">.aux </span>file.) See <a +href="#sec:bib2gls"><span +class="cmsy-10">§</span>9 </a><a +href="#sec:bib2gls"><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a> for further + details. + </p></dd><dt class="description"> +<a + id="styopt.equations"></a><span +class="cmssbx-10">equations</span><a + id="dx1-4108"></a> </dt><dd +class="description">(New to v1.37.) This option will cause the default location counter to + automatically switch to <span +class="cmss-10">equation</span><a + id="dx1-4109"></a> when inside a numbered equation + environment, such as <span +class="cmss-10">equation</span><a + id="dx1-4110"></a><a + id="dx1-4111"></a> or <span +class="cmss-10">align</span><a + id="dx1-4112"></a><a + id="dx1-4113"></a>. The counter can be explicitly overridden + with <span +class="cmss-10">counter</span><a + id="dx1-4114"></a> in the optional arguments of commands like <span +class="cmtt-10">\glslink </span>or <span +class="cmtt-10">\gls </span>as + usual. + </dd><dt class="description"> +<a + id="styopt.floats"></a><span +class="cmssbx-10">floats</span><a + id="dx1-4115"></a> </dt><dd +class="description">(New to v1.37.) This option will cause the default location counter to + automatically switch to the corresponding counter when inside a floating + environment, such as <span +class="cmss-10">figure</span><a + id="dx1-4116"></a><a + id="dx1-4117"></a> or <span +class="cmss-10">table</span><a + id="dx1-4118"></a><a + id="dx1-4119"></a>. The counter can be explicitly overridden + with <span +class="cmss-10">counter</span><a + id="dx1-4120"></a> in the optional arguments of commands like <span +class="cmtt-10">\glslink </span>or <span +class="cmtt-10">\gls </span>as + usual. Remember that within floats it’s the <span +class="cmtt-10">\caption </span>command that + actually uses <span +class="cmtt-10">\refstepcounter</span>, so indexing before the caption will + result in the wrong reference. The commands for use in captions and + sections, such as <span +class="cmtt-10">\glsfmttext </span>and <span +class="cmtt-10">\glsfmtshort</span>, don’t index. (See <a +href="#sec:headtitle"><span +class="cmsy-10">§</span>4 + </a><a +href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and Contents<!--tex4ht:ref: sec:headtitle --></a>). You may + want to consider using <span +class="cmtt-10">\glsadd </span>after the caption (not before). For + example: + + + + <div class="verbatim" id="verbatim-24"> + \begin{figure}[htbp] +  <br />  \centering +  <br />  \includegraphics{example-image} +  <br />  \caption{Sample \glsfmttext{foobar} figure} +  <br />  \glsadd{foobar} +  <br />\end{figure} +</div> + <!--l. 846--><p class="nopar" > + </p></dd><dt class="description"> +<a + id="styopt.indexcounter"></a><span +class="cmssbx-10">indexcounter</span><a + id="dx1-4121"></a> </dt><dd +class="description">(New to v1.29.) This option (which doesn’t take a value) is primarily + intended for use with <a + id="dx1-4122"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> (v1.4+) and <span +class="cmss-10">hyperref</span><a + id="dx1-4123"></a>. It can be used + with <a + id="dx1-4124"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or <a + id="dx1-4125"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> but it will interfere with the <a + id="dx1-4126"></a><a +href="#glo:numberlist">number list</a> + collation, so you won’t have ranges and you’ll have duplicate page numbers + present (but each page number will link to the relevant part of the page + where the indexing occurred). This option automatically implements + <a +href="#styopt.counter"><span +class="cmss-10">counter</span></a><span +class="cmss-10">=wrglossary</span><a + id="dx1-4127"></a>. + <!--l. 857--><p class="noindent" ><div class="important" title="Important Note"> This option works by incrementing <span +class="cmss-10">wrglossary</span><a + id="dx1-4128"></a> and adding <span +class="cmtt-10">\label</span><a + id="dx1-4129"></a>. This can + cause a problem if the indexing occurs in an <span +class="cmss-10">equation</span><a + id="dx1-4130"></a><a + id="dx1-4131"></a> environment as <span +class="cmss-10">amsmath</span><a + id="dx1-4132"></a> + forbids multiple occurrences of <span +class="cmtt-10">\label </span>(resulting in the “Multiple <span +class="cmtt-10">\label</span>’s” + error). It’s best to change the counter to <span +class="cmss-10">page</span><a + id="dx1-4133"></a> or <span +class="cmss-10">equation</span><a + id="dx1-4134"></a> when in maths mode + with this option. For example: + + + +</p> + <div class="verbatim" id="verbatim-25"> + \renewcommand{\glslinkpresetkeys}{% +  <br /> \ifmmode \setkeys{glslink}{counter=equation}\fi} +  <br />\renewcommand{\glsaddpresetkeys}{% +  <br /> \ifmmode \setkeys{glossadd}{counter=equation}\fi} +</div> + <!--l. 870--><p class="nopar" > </div> + </p><!--l. 871--><p class="noindent" > + </p><!--l. 873--><p class="noindent" >By default (with <span +class="cmss-10">hyperref</span><a + id="dx1-4135"></a>), the page numbers in <a + id="dx1-4136"></a><a +href="#glo:numberlist">number lists</a> link back to the + top of the relevant page (provided the format uses <span +class="cmtt-10">\glshypernumber</span>). The + <a +href="#styopt.indexcounter"><span +class="cmss-10">indexcounter</span></a><a + id="dx1-4137"></a> option is designed to link back to the place within the page where + the indexing occurred. It does this by creating a new counter (called <span +class="cmss-10">wrglossary</span><a + id="dx1-4138"></a>) + that’s incremented with <span +class="cmtt-10">\refstepcounter </span>every time an entry is indexed (but + not via cross-referencing commands, such as <span +class="cmtt-10">\glssee</span>). A <span +class="cmtt-10">\label </span>is placed + immediately after the increment command allowing the back-referenced to be + obtained with <span +class="cmtt-10">\pageref</span>. The location, as seen by the indexing application, is + the value of the <span +class="cmss-10">wrglossary</span><a + id="dx1-4139"></a> counter but this value is substituted with the page + reference when <a + id="dx1-4140"></a>number list is typeset. Since the counter is used by all + entries and is incremented every time any indexing occurs, neither + <a + id="dx1-4141"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> nor <a + id="dx1-4142"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> can correctly collate the lists. For example, if the first + term to be referenced is indexed three times on page 5 without any + intervening terms then the actual locations obtained from <span +class="cmss-10">wrglossary</span><a + id="dx1-4143"></a> + will be 1, 2 and 3, which <a + id="dx1-4144"></a><span +class="cmtt-10">xindy </span>and <a + id="dx1-4145"></a><span +class="cmtt-10">makeindex </span>will try to form into + the range 1–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 <span +class="cmss-10">page</span><a + id="dx1-4146"></a> counter was + used. + </p><!--l. 897--><p class="noindent" >Since <a + id="dx1-4147"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> is designed specifically to work with <span +class="cmss-10">glossaries-extra</span>, + <a + id="dx1-4148"></a><span +class="cmtt-10">bib2gls </span>(v1.4+) will check for <span +class="cmss-10">wrglossary</span><a + id="dx1-4149"></a> locations. If the default + <span +class="cmtt-10">--merge-wrglossary-records </span>is on, then any records for the same page + for a given entry will be merged. In the above example with three + references on page 5, only a single record for page 5 for that entry will be + added to the <a + id="dx1-4150"></a>number list and it will link back to the first instance on + that page. Whereas if you use the <span +class="cmtt-10">--no-merge-wrglossary-records</span> + switch, the <a + id="dx1-4151"></a>number list will contain three instance of page 5, with + each linking to the corresponding place on that page. In both cases, + consecutive pages can form ranges, but it may look strange in the second + case. + </p><!--l. 910--><p class="noindent" >See the <a + id="dx1-4152"></a><span +class="cmtt-10">bib2gls </span>documentation for the <span +class="cmtt-10">save-index-counter </span>resource option + for more details. + + + + </p></dd><dt class="description"> +<a + id="styopt.docdef"></a><span +class="cmssbx-10">docdef</span><a + id="dx1-4153"></a> </dt><dd +class="description">This option governs the use of <span +class="cmtt-10">\newglossaryentry</span>. It was originally a + boolean option, but as from version 1.06, it can now take one of the following + values (if the value is omitted, <span +class="cmss-10">true </span>is assumed): + <ul class="itemize1"> + <li class="itemize"><span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-4155"></a> is not permitted in the <span +class="cmss-10">document</span><a + id="dx1-4156"></a><a + id="dx1-4157"></a> environment + (default). + </li> + <li class="itemize"><span +class="cmtt-10">\newglossaryentry </span>behaves as it does in the base <span +class="cmss-10">glossaries </span>package. + That is, where its use is permitted in the <span +class="cmss-10">document</span><a + id="dx1-4159"></a><a + id="dx1-4160"></a> environment, it + uses the <span +class="cmtt-10">.glsdefs </span>temporary file to store the entry definitions so + that on the next <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run the entries are defined at the beginning + of the <span +class="cmss-10">document</span><a + id="dx1-4161"></a><a + id="dx1-4162"></a> environment. This allows the entry information + to be referenced in the glossary, even if the glossary occurs before + <span +class="cmtt-10">\newglossaryentry</span>. (For example, when the glossary is displayed in + the front matter.) This method of saving the definitions for the next + <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run has drawbacks that are detailed in the <span +class="cmss-10">glossaries </span>user + manual. + <!--l. 934--><p class="noindent" >Remember that if <span +class="cmtt-10">\newglossaryentry </span>wouldn’t be allowed in the + <span +class="cmss-10">document</span><a + id="dx1-4163"></a><a + id="dx1-4164"></a> environment with the base <span +class="cmss-10">glossaries </span>package, then it still + won’t be allowed with <a +href="#styopt.docdefs"><span +class="cmss-10">docdefs</span></a><span +class="cmss-10">=true</span><a + id="dx1-4165"></a>. If your glossaries occur at the + end of the document, consider using <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=restricted</span><a + id="dx1-4166"></a> instead. + </p></li> + <li class="itemize">(new to version 1.06) <span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-4168"></a> is permitted in the + <span +class="cmss-10">document</span><a + id="dx1-4169"></a><a + id="dx1-4170"></a> environment without using the <span +class="cmtt-10">.glsdefs </span>file. This means + that all entries must be defined before the glossary is displayed, but + it avoids the complications associated with saving the entry details + in a temporary file. You will still need to take care about any changes + made to characters that are required by the ⟨<span +class="cmti-10">key</span>⟩=⟨<span +class="cmti-10">value</span>⟩ mechanism + (that is, the comma and equal sign) and any <a + id="dx1-4171"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or <a + id="dx1-4172"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> + character that occurs in the <span +class="cmss-10">sort</span><a + id="dx1-4173"></a> key or label. If any of those characters + are made active in the document, then it can cause problems with + the entry definition. This option will allow <span +class="cmtt-10">\newglossaryentry </span>to + be used in the document with <span +class="cmtt-10">\makenoidxglossaries</span>, but note that + <span +class="cmtt-10">\longnewglossaryentry </span>remains a preamble-only command. + <!--l. 957--><p class="noindent" >With this option, if an entry appears in the glossary before it has been + defined, an error will occur (or a warning if the <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-4174"></a> + option is used.) If you edit your document and either remove an entry + or change its label, you may need to delete the document’s temporary + files (such as the <span +class="cmtt-10">.aux </span>and <span +class="cmtt-10">.gls </span>files). + </p></li> + <li class="itemize">(new to version 1.34) This option behaves like <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=restricted</span><a + id="dx1-4176"></a> but + creates the <span +class="cmtt-10">.glsdefs </span>file for <a +href="https://atom.io/packages/autocomplete-glossaries" >atom’s autocomplete support</a>. This file + isn’t input by <span +class="cmss-10">glossaries-extra </span>and so associated problems with the + + + + use of this file are avoided, but it allows the autocomplete support + to find the labels in the file. As with <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=restricted</span><a + id="dx1-4177"></a>, entries may + be defined in the preamble or anywhere in the document, but they + may only be referenced after they have been defined. Entries must + be defined before the associated glossary is displayed. + </li></ul> + <!--l. 978--><p class="noindent" >The <span +class="cmss-10">glossaries </span>package allows <span +class="cmtt-10">\newglossaryentry </span>within the <span +class="cmss-10">document</span><a + id="dx1-4178"></a><a + id="dx1-4179"></a> + environment (when used with <a + id="dx1-4180"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or <a + id="dx1-4181"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a>) but the user manual warns + against this usage. By default the <span +class="cmss-10">glossaries-extra </span>package <span +class="cmti-10">prohibits </span>this, only + allowing definitions within the preamble. If you are really determined to define + entries in the <span +class="cmss-10">document</span><a + id="dx1-4182"></a><a + id="dx1-4183"></a> environment, despite all the associated drawbacks, you + can restore this with <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=true</span><a + id="dx1-4184"></a>. Note that this doesn’t change the + prohibitions that the <span +class="cmss-10">glossaries </span>package has in certain circumstances (for + example, when using “option 1”). See the <span +class="cmss-10">glossaries </span>user manual for + further details. A better option if document definitions are required + is <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=restricted</span><a + id="dx1-4185"></a>. Only use <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><span +class="cmss-10">=true</span><a + id="dx1-4186"></a> if document definitions + are necessary and one or more of the glossaries occurs in the front + matter. + </p><!--l. 995--><p class="noindent" >This option affects commands that internally use <span +class="cmtt-10">\newglossaryentry</span>, such as + <span +class="cmtt-10">\newabbreviation</span>, but not the “on-the-fly” commands described in <a +href="#sec:onthefly"><span +class="cmsy-10">§</span>8 + </a><a +href="#sec:onthefly">On-the-Fly Document Definitions<!--tex4ht:ref: sec:onthefly --></a>. + </p></dd><dt class="description"> +<a + id="styopt.nomissingglstext"></a><span +class="cmssbx-10">nomissingglstext</span><a + id="dx1-4187"></a> </dt><dd +class="description">This is a boolean option. If true, this will suppress the + warning written to the transcript and the warning text that will appear + in the document if the external glossary files haven’t been generated + due to an incomplete document build. However, it’s probably simpler + just to fix whatever has caused the failure to build the external file or + files. + </dd><dt class="description"> +<a + id="styopt.abbreviations"></a><span +class="cmssbx-10">abbreviations</span><a + id="dx1-4188"></a> </dt><dd +class="description">This option has no value and can’t be cancelled. If used, it will + automatically create a new glossary with the label <span +class="cmtt-10">abbreviations </span>and + redefines <span +class="cmtt-10">\glsxtrabbrvtype </span>to this label. In addition, it defines a shortcut + command + <!--l. 1013--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printabbreviations</span><span +class="cmtt-9"> </span></span><a + id="dx1-4189"></a> <span +class="cmtt-10">\printabbreviations[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> + </p><!--l. 1015--><p class="noindent" > + which is equivalent to </p><div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\printglossary[type=\glsxtrabbrvtype,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span> + + + +</div> + </div> If <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4190"></a> is also loaded then this option will additionally + provide: + <!--l. 1022--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtabbreviations</span><span +class="cmtt-9"> </span></span><a + id="dx1-4191"></a> <span +class="cmtt-10">\printunsrtabbreviations[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span> + </div><hr> + </p><!--l. 1024--><p class="noindent" > + which uses <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-4192"></a>. + </p><!--l. 1027--><p class="noindent" >The title of the new glossary is given by + </p><!--l. 1028--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\abbreviationsname</span><span +class="cmtt-9"> </span></span><a + id="dx1-4193"></a> <span +class="cmtt-10">\abbreviationsname </span></div><hr> + </p><!--l. 1030--><p class="noindent" > + If this command is already defined, it’s left unchanged. Otherwise it’s defined + to “Abbreviations” if <span +class="cmss-10">babel</span><a + id="dx1-4194"></a> hasn’t been loaded or <span +class="cmtt-10">\acronymname </span>if + <span +class="cmss-10">babel</span><a + id="dx1-4195"></a> has been loaded. However, if you’re using <span +class="cmss-10">babel</span><a + id="dx1-4196"></a> it’s likely you + will need to change this. (See <a +href="#sec:lang"><span +class="cmsy-10">§</span>13 </a><a +href="#sec:lang">Multi-Lingual Support<!--tex4ht:ref: sec:lang --></a> for further + details.) + </p><!--l. 1037--><p class="noindent" ><div class="important" title="Important Note"> If you don’t use the <a +href="#styopt.abbreviations"><span +class="cmss-10">abbreviations</span></a><a + id="dx1-4197"></a> package option, the <span +class="cmtt-10">\abbreviationsname</span> + command won’t be defined (unless it’s defined by an included language file). + </div> + </p><!--l. 1041--><p class="noindent" > + </p><!--l. 1043--><p class="noindent" >If the <a +href="#styopt.abbreviations"><span +class="cmss-10">abbreviations</span></a><a + id="dx1-4198"></a> option is used and the <a +href="#styopt.acronym"><span +class="cmss-10">acronym</span></a><a + id="dx1-4199"></a> option provided by the + <span +class="cmss-10">glossaries </span>package hasn’t been used, then <span +class="cmtt-10">\acronymtype</span><a + id="dx1-4200"></a> will be set to + <span +class="cmtt-10">\glsxtrabbrvtype</span><a + id="dx1-4201"></a> so that acronyms defined with <span +class="cmtt-10">\newacronym</span><a + id="dx1-4202"></a> can be added + to the list of abbreviations. If you want acronyms in the <span +class="cmtt-10">main </span>glossary and + other abbreviations in the <span +class="cmtt-10">abbreviations </span>glossary then you will need to + redefine <span +class="cmtt-10">\acronymtype </span>to <span +class="cmtt-10">main</span>: + + + +</p> + <div class="verbatim" id="verbatim-26"> + \renewcommand*{\acronymtype}{main} +</div> + <!--l. 1053--><p class="nopar" > + </p><!--l. 1055--><p class="noindent" >Note that there are no analogous options to the <span +class="cmss-10">glossaries </span>package’s <a +href="#styopt.acronymlists"><span +class="cmss-10">acronymlists</span></a><a + id="dx1-4203"></a> + option (or associated commands) as the abbreviation mechanism is handled + differently with <span +class="cmss-10">glossaries-extra</span>. + </p></dd><dt class="description"> +<a + id="styopt.symbols"></a><span +class="cmssbx-10">symbols</span><a + id="dx1-4204"></a> </dt><dd +class="description">This is passed to <span +class="cmss-10">glossaries </span>but will additionally define + <!--l. 1062--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewsymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-4205"></a> <span +class="cmtt-10">\glsxtrnewsymbol[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">symbol</span>⟩<span +class="cmtt-10">}</span> + </div><hr> + </p><!--l. 1064--><p class="noindent" > + which is equivalent to </p><div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\newglossaryentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">name={</span>⟨<span +class="cmitt-10">symbol</span>⟩<span +class="cmtt-10">},</span> + <br /><span +class="cmtt-10"> sort={</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">},type=symbols,category=symbol,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmsy-10">}</span> +</div> + </div> Note that the <span +class="cmss-10">sort</span><a + id="dx1-4206"></a> key is set to the ⟨<span +class="cmti-10">label</span>⟩ not the ⟨<span +class="cmti-10">symbol</span>⟩ as the symbol will + likely contain commands. + <!--l. 1073--><p class="noindent" >If <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4207"></a> is also loaded then this option will additionally + provide: + </p><!--l. 1075--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtsymbols</span><span +class="cmtt-9"> </span></span><a + id="dx1-4208"></a> <span +class="cmtt-10">\printunsrtsymbols[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> + </p><!--l. 1077--><p class="noindent" > + which uses <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-4209"></a>. + </p></dd><dt class="description"> +<a + id="styopt.numbers"></a><span +class="cmssbx-10">numbers</span><a + id="dx1-4210"></a> </dt><dd +class="description">This is passed to <span +class="cmss-10">glossaries </span>but will additionally define + <!--l. 1082--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewnumber</span><span +class="cmtt-9"> </span></span><a + id="dx1-4211"></a> <span +class="cmtt-10">\glsxtrnewnumber[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">number</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 1084--><p class="noindent" > + which is equivalent to </p><div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\newglossaryentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">name={</span>⟨<span +class="cmitt-10">number</span>⟩<span +class="cmtt-10">},</span> + <br /><span +class="cmtt-10"> sort={</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">},type=numbers,category=number,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmsy-10">}</span> + + + +</div> + </div> + <!--l. 1091--><p class="noindent" >If <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4212"></a> is also loaded then this option will additionally + provide: + </p><!--l. 1093--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtnumbers</span><span +class="cmtt-9"> </span></span><a + id="dx1-4213"></a> <span +class="cmtt-10">\printunsrtnumbers[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> + </p><!--l. 1095--><p class="noindent" > + which uses <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-4214"></a>. + </p></dd><dt class="description"> +<a + id="styopt.acronyms"></a><span +class="cmssbx-10">acronyms</span><a + id="dx1-4215"></a> <span +class="cmbx-10">(or </span><a + id="styopt.acronym"></a><span +class="cmssbx-10">acronym</span><a + id="dx1-4216"></a><span +class="cmbx-10">)</span> </dt><dd +class="description">This is passed to <span +class="cmss-10">glossaries </span>but if <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4217"></a> is + also loaded then this option will additionally provide: + <!--l. 1102--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtacronyms</span><span +class="cmtt-9"> </span></span><a + id="dx1-4218"></a> <span +class="cmtt-10">\printunsrtacronyms[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> + </p><!--l. 1104--><p class="noindent" > + which uses <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-4219"></a>. + </p><!--l. 1107--><p class="noindent" ><div class="important" title="Important Note"> This option defines a new glossary with the label <span +class="cmtt-10">acronym </span>not <span +class="cmtt-10">acronyms</span>. You + may find it easier to reference it with the command <span +class="cmtt-10">\acronymtype</span><a + id="dx1-4220"></a>. + </div> + </p><!--l. 1111--><p class="noindent" > + </p></dd><dt class="description"> +<a + id="styopt.index"></a><span +class="cmssbx-10">index</span><a + id="dx1-4221"></a> </dt><dd +class="description">This is passed to <span +class="cmss-10">glossaries </span>but if <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-4222"></a> is also loaded then this + option will additionally provide: + <!--l. 1117--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtindex</span><span +class="cmtt-9"> </span></span><a + id="dx1-4223"></a> <span +class="cmtt-10">\printunsrtindex[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> + </p><!--l. 1119--><p class="noindent" > + which uses <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-4224"></a>. + </p></dd><dt class="description"> +<a + id="styopt.shortcuts"></a><span +class="cmssbx-10">shortcuts</span><a + id="dx1-4225"></a> </dt><dd +class="description">Unlike the <span +class="cmss-10">glossaries </span>package option of the same name, this option isn’t + boolean but has multiple values: + <ul class="itemize1"> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=acronyms</span><a + id="dx1-4226"></a> (or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=acro</span><a + id="dx1-4227"></a>): set the shortcuts provided + by the <span +class="cmss-10">glossaries </span>package for acronyms (such as <span +class="cmtt-10">\ac</span>). Note that the + short and long forms don’t use <span +class="cmtt-10">\glsxtrshort </span>and <span +class="cmtt-10">\glsxtrlong </span>but + use the original <span +class="cmtt-10">\acrshort </span>and <span +class="cmtt-10">\acrlong</span>, which don’t recognise + multiple abbreviation styles. The better option with <span +class="cmss-10">glossaries-extra</span> + is <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=ac</span><a + id="dx1-4228"></a>. + </li> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=ac</span><a + id="dx1-4229"></a>: set the shortcuts provided by the <span +class="cmss-10">glossaries </span>package for + acronyms (such as <span +class="cmtt-10">\ac</span>) but uses the <span +class="cmss-10">glossaries-extra </span>interface (such + as <span +class="cmtt-10">\glsxtrshort </span>rather than <span +class="cmtt-10">\acrshort</span>). In this case <span +class="cmtt-10">\ac </span>is defined + as <span +class="cmtt-10">\cgls </span>rather than <span +class="cmtt-10">\gls</span>. + + + + </li> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=abbreviations</span><a + id="dx1-4230"></a> (or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=abbr</span><a + id="dx1-4231"></a>): + set the abbreviation shortcuts provided by <span +class="cmss-10">glossaries-extra</span>. (See <a +href="#sec:abbrshortcuts"><span +class="cmsy-10">§</span>3.3 + </a><a +href="#sec:abbrshortcuts">Shortcut Commands<!--tex4ht:ref: sec:abbrshortcuts --></a>.) These settings don’t switch on the acronym + shortcuts provided by the <span +class="cmss-10">glossaries </span>package. + </li> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=other</span><a + id="dx1-4232"></a>: set the “other” shortcut commands, but not the shortcut + commands for abbreviations or the acronym shortcuts provided by + <span +class="cmss-10">glossaries</span>. The “other” shortcuts are: + <ul class="itemize2"> + <li class="itemize"><span +class="cmtt-10">\newentry</span><a + id="dx1-4233"></a> equivalent to <span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-4234"></a> + </li> + <li class="itemize"><span +class="cmtt-10">\newsym</span><a + id="dx1-4235"></a> equivalent to <span +class="cmtt-10">\glsxtrnewsymbol</span><a + id="dx1-4236"></a> (see the <a +href="#styopt.symbols"><span +class="cmss-10">symbols</span></a><a + id="dx1-4237"></a> + option). + </li> + <li class="itemize"><span +class="cmtt-10">\newnum</span><a + id="dx1-4238"></a> equivalent to <span +class="cmtt-10">\glsxtrnewnumber</span><a + id="dx1-4239"></a> (see the <a +href="#styopt.numbers"><span +class="cmss-10">numbers</span></a><a + id="dx1-4240"></a> + option).</li></ul> + </li> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=all</span><a + id="dx1-4241"></a> (or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=true</span><a + id="dx1-4242"></a>): implements <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=ac</span><a + id="dx1-4243"></a>, + <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=abbreviations</span><a + id="dx1-4244"></a> and <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=other</span><a + id="dx1-4245"></a>. + </li> + <li class="itemize"><a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=none</span><a + id="dx1-4246"></a> (or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=false</span><a + id="dx1-4247"></a>): don’t define any of the shortcut + commands (default).</li></ul> + <!--l. 1167--><p class="noindent" >Note that multiple invocations of the <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><a + id="dx1-4248"></a> option <span +class="cmti-10">within the same option</span> + <span +class="cmti-10">list </span>will override each other.</p></dd></dl> +<!--l. 1171--><p class="indent" > After the <span +class="cmss-10">glossaries-extra </span>package has been loaded, you can set available options +using +</p><!--l. 1173--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glossariesextrasetup</span><span +class="cmtt-9"> </span></span><a + id="dx1-4249"></a> <span +class="cmtt-10">\glossariesextrasetup{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1175--><p class="noindent" > +The <a +href="#styopt.abbreviations"><span +class="cmss-10">abbreviations</span></a><a + id="dx1-4250"></a> and <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><a + id="dx1-4251"></a> options may only be used in the preamble. Additionally, +<a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><a + id="dx1-4252"></a> can’t be used after <span +class="cmtt-10">\makenoidxglossaries</span><a + id="dx1-4253"></a>. + + + +</p> +<!--l. 1180--><p class="indent" > </div> +</p><!--l. 1180--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">2. <a + id="sec:modifications"></a>Modifications to Existing Commands and Styles</h2> +</p><!--l. 1183--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\nopostdesc</span><a + id="dx1-5001"></a> which may be used in the <span +class="cmss-10">description</span><a + id="dx1-5002"></a> +to suppress the post-description hook. The <span +class="cmss-10">glossaries-extra </span>package provides another +command +</p><!--l. 1187--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnopostpunc</span><span +class="cmtt-9"> </span></span><a + id="dx1-5003"></a> <span +class="cmtt-10">\glsxtrnopostpunc </span></div><hr> +</p><!--l. 1189--><p class="noindent" > +which has a similar function but only suppresses the post-description punctuation. It +doesn’t suppress the use of <span +class="cmtt-10">\glsxtrpostdescription </span>which allows the use of +category-dependent post-description hooks. (Note that the punctuation, +which is in the original base hook <span +class="cmtt-10">\glspostdescription</span>, comes after the +extended post-description hook <span +class="cmtt-10">\glsxtrpostdescription </span>not before.) The +post-description hook can counter-act the effect of <span +class="cmtt-10">\glsxtrnopostpunc</span> +using +</p><!--l. 1198--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrrestorepostpunc</span><span +class="cmtt-9"> </span></span><a + id="dx1-5004"></a> <span +class="cmtt-10">\glsxtrrestorepostpunc </span></div><hr> +</p><!--l. 1200--><p class="noindent" > +These commands have no effect outside of the glossary (except with standalone +entries that use <span +class="cmtt-10">\glsxtractivatenopost </span>and <span +class="cmtt-10">\glspostdescription</span>, see <a +href="#sec:glossentry"><span +class="cmsy-10">§</span>10.3 +</a><a +href="#sec:glossentry">Standalone Entry Items<!--tex4ht:ref: sec:glossentry --></a>). +</p><!--l. 1205--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides +</p><!--l. 1206--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsseeitemformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-5005"></a> <span +class="cmtt-10">\glsseeitemformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1208--><p class="noindent" > +to format items in a cross-reference list (identified with the <span +class="cmss-10">see</span><a + id="dx1-5006"></a> key or <span +class="cmtt-10">\glssee</span>). This +was originally defined to use <span +class="cmtt-10">\glsentryname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>since it makes more sense for the +cross-reference to match the way the term appears in the glossary. Unfortunately this +caused a problem when the <span +class="cmss-10">name</span><a + id="dx1-5007"></a> field was sanitized, which used to be the default +setting, so <span +class="cmss-10">glossaries </span>v3.0 changed the default definition of this command to +use <span +class="cmtt-10">\glsentrytext </span>instead. Since the <span +class="cmss-10">name</span><a + id="dx1-5008"></a> and <span +class="cmss-10">text</span><a + id="dx1-5009"></a> field are quite often +the same, this change usually doesn’t have a noticeable effect. However, +now that the <span +class="cmss-10">name</span><a + id="dx1-5010"></a> field is no longer sanitized (following the redesign of +<span +class="cmss-10">glossaries </span>v4.0) it makes more sense to restore this command to its original +behaviour, but to take account of abbreviations <span +class="cmss-10">glossaries-extra </span>redefines this +as: + + + +</p> + <div class="verbatim" id="verbatim-27"> +\renewcommand*{\glsseeitemformat}[1]{% + <br /> \ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}% + <br />} +</div> +<!--l. 1227--><p class="nopar" > If you want to restore the <span +class="cmss-10">glossaries </span>v3.0+ definition just do: + + + +</p> + <div class="verbatim" id="verbatim-28"> +\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} +</div> +<!--l. 1231--><p class="nopar" > The <span +class="cmss-10">glossaries-extra</span><a + id="dx1-5011"></a> package provides <span +class="cmtt-10">\glsxtrhiername</span><a + id="dx1-5012"></a> and its case-changing +variants that may be used within the definition of <span +class="cmtt-10">\glsseeitemformat </span>if required. +These display the hierarchy for sub-entries rather than just the name, which may be +more helpful in cross-references. See <a +href="#sec:see"><span +class="cmsy-10">§</span>2.2 </a><a +href="#sec:see">Cross-References (“see” and “see also”)<!--tex4ht:ref: sec:see --></a> for +further details. +</p><!--l. 1239--><p class="indent" > The commands used by <span +class="cmss-10">glossaries </span>to automatically produce an error if an entry is +undefined (such as <span +class="cmtt-10">\glsdoifexists</span><a + id="dx1-5013"></a>) are changed to take the <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><a + id="dx1-5014"></a> option into +account. +</p><!--l. 1243--><p class="indent" > The <span +class="cmtt-10">\newignoredglossary</span><a + id="dx1-5015"></a><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">type</span>⟩<span +class="cmtt-10">} </span>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 <a +href="#catattr.targeturl"><span +class="cmss-10">targeturl</span></a><a + id="dx1-5016"></a> attribute to create a link to an external URL. (See <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 +</a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.) As from v1.12 both the starred and unstarred version +check that the glossary doesn’t already exist. (The <span +class="cmss-10">glossaries </span>package omits this +check.) +</p><!--l. 1252--><p class="indent" > You can now provide an ignored glossary with: +</p><!--l. 1253--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\provideignoredglossary</span><span +class="cmtt-9"> </span></span><a + id="dx1-5017"></a> <span +class="cmtt-10">\provideignoredglossary{</span>⟨<span +class="cmitt-10">type</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1255--><p class="noindent" > +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. +</p><!--l. 1260--><p class="indent" > The individual glossary displaying commands <span +class="cmtt-10">\printglossary</span><a + id="dx1-5018"></a>, <span +class="cmtt-10">\printnoidxglossary</span><a + id="dx1-5019"></a> +and <span +class="cmtt-10">\printunsrtglossary </span>have two extra keys: +</p> + <ul class="itemize1"> + <li class="itemize"><span +class="cmss-10">target</span><a + id="dx1-5020"></a>. This is a boolean key which can be used to switch off the automatic + hypertarget for each entry. Unlike <span +class="cmtt-10">\glsdisablehyper </span>this doesn’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. + </li> + <li class="itemize"><span +class="cmss-10">targetnameprefix</span><a + id="dx1-5021"></a><span +class="cmtt-10">={</span>⟨<span +class="cmti-10">prefix</span>⟩<span +class="cmtt-10">}</span>. Another way of avoiding duplicate target names + is to set a prefix used for the names. Unlike changing <span +class="cmtt-10">\glolinkprefix</span> + this doesn’t affect any hyperlinks (such as those created with <span +class="cmtt-10">\gls</span>). + </li> + <li class="itemize"><span +class="cmss-10">prefix</span><a + id="dx1-5022"></a><span +class="cmtt-10">={</span>⟨<span +class="cmti-10">prefix</span>⟩<span +class="cmtt-10">}</span>. If you do actually want to locally change <span +class="cmtt-10">\glolinkprefix</span>, + you can use the <span +class="cmss-10">prefix</span><a + id="dx1-5023"></a> key instead. You need to use the matching <span +class="cmss-10">prefix</span><a + id="dx1-5024"></a> + key in commands like <span +class="cmtt-10">\gls</span>. + </li> + <li class="itemize"><span +class="cmss-10">label</span><a + id="dx1-5025"></a><span +class="cmtt-10">={</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. Labels the glossary with <span +class="cmtt-10">\label{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span>and also defines + + + + <span +class="cmtt-10">\@currentlabelname </span>to the glossary’s TOC title (to provide text for + <span +class="cmtt-10">\nameref</span>). You can also set the label before the glossary using: + <!--l. 1288--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetglossarylabel</span><span +class="cmtt-9"> </span></span><a + id="dx1-5026"></a> <span +class="cmtt-10">\glsxtrsetglossarylabel{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 1290--><p class="noindent" > + but take care of duplicate labels if it’s not scoped.</p></li></ul> +<!--l. 1294--><p class="indent" > The <span +class="cmtt-10">\newglossaryentry </span>command has three new keys: </p> + <ul class="itemize1"> + <li class="itemize"><span +class="cmss-10">category</span><a + id="dx1-5027"></a>, which sets the category label for the given entry. By default this + is <span +class="cmtt-10">general</span>. See <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further information about categories. + </li> + <li class="itemize"><span +class="cmss-10">alias</span><a + id="dx1-5028"></a>, which allows an entry to be alias to another entry. See <a +href="#sec:alias"><span +class="cmsy-10">§</span>10.4 </a><a +href="#sec:alias">Entry + Aliases<!--tex4ht:ref: sec:alias --></a> for further details. + </li> + <li class="itemize"><span +class="cmss-10">seealso</span><a + id="dx1-5029"></a>, which performs much like <span +class="cmss-10">see</span><a + id="dx1-5030"></a>, but allows for separate “see” and + “see also” treatment. See <a +href="#sec:see"><span +class="cmsy-10">§</span>2.2 </a><a +href="#sec:see">Cross-References (“see” and “see also”)<!--tex4ht:ref: sec:see --></a> for + further details.</li></ul> +<!--l. 1306--><p class="noindent" >The test file <span +class="cmtt-10">example-glossaries-xr.tex </span>contains dummy entries with a mixture of +<span +class="cmss-10">see</span><a + id="dx1-5031"></a>, <span +class="cmss-10">alias</span><a + id="dx1-5032"></a> and <span +class="cmss-10">seealso</span><a + id="dx1-5033"></a> keys for use with minimal working examples. There are also +<span +class="cmtt-10">example-glossaries-*.bib </span>files that correspond to each <span +class="cmtt-10">example-glossaries-*.tex</span> +file for testing <a + id="dx1-5034"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. +</p><!--l. 1313--><p class="indent" > The <span +class="cmtt-10">\longnewglossaryentry </span>command now has a starred version (as from v1.12) +that doesn’t automatically insert + + + +</p> + <div class="verbatim" id="verbatim-29"> +\leavevmode\unskip\nopostdesc +</div> +<!--l. 1317--><p class="nopar" > at the end of the description field. +</p><!--l. 1319--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\longnewglossaryentry</span><span +class="cmtt-9"> </span></span><a + id="dx1-5035"></a> <span +class="cmtt-10">\longnewglossaryentry*{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">description</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1321--><p class="noindent" > +The <span +class="cmss-10">descriptionplural</span><a + id="dx1-5036"></a> key is left unset unless explicitly set in ⟨<span +class="cmti-10">options</span>⟩. +</p><!--l. 1325--><p class="indent" > The unstarred version no longer hard-codes the above code (which removes +trailing space and suppresses the post-description hook) but instead uses: +</p><!--l. 1328--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlongdescription</span><span +class="cmtt-9"> </span></span><a + id="dx1-5037"></a> <span +class="cmtt-10">\glsxtrpostlongdescription </span></div><hr> +</p><!--l. 1330--><p class="noindent" > +This can be redefined to allow the post-description hook to work but retain the +<span +class="cmtt-10">\unskip </span>part if required. For example: + + + +</p> + <div class="verbatim" id="verbatim-30"> +\renewcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip} +</div> +<!--l. 1336--><p class="nopar" > This will discarded unwanted trailing space at the end of the description but won’t +suppress the post-description hook. +</p><!--l. 1340--><p class="indent" > The unstarred version also alters the base <span +class="cmss-10">glossaries</span><a + id="dx1-5038"></a> package’s treatment of the +<span +class="cmss-10">descriptionplural</span><a + id="dx1-5039"></a> key. Since a plural description doesn’t make much sense for +multi-paragraph descriptions, the default behaviour with <span +class="cmss-10">glossaries-extra</span><a + id="dx1-5040"></a>’s +<span +class="cmtt-10">\longnewglossaryentry </span>is to simply leave the plural description unset +unless explicitly set using the <span +class="cmss-10">descriptionplural</span><a + id="dx1-5041"></a> key. The <span +class="cmss-10">glossaries.sty </span>version +of this command sets the description’s plural form to the same as the +singular.<span class="footnote-mark"><a +href="#fn1x2" id="fn1x2-bk"><sup class="textsuperscript">2.1</sup></a></span><a + id="x1-5042f1"></a> +</p><!--l. 1355--><p class="indent" > Note that this modified unstarred version doesn’t append <span +class="cmtt-10">\glsxtrpostlongdescription</span> +to the description’s plural form. +</p><!--l. 1358--><p class="indent" > The <span +class="cmtt-10">\newterm</span><a + id="dx1-5048"></a> command (defined through the <a +href="#styopt.index"><span +class="cmss-10">index</span></a><a + id="dx1-5049"></a> package option) is modified +so that the category defaults to <span +class="cmss-10">index</span><a + id="dx1-5050"></a>. The <span +class="cmtt-10">\newacronym</span><a + id="dx1-5051"></a> command is modified +to use the new abbreviation interface provided by <span +class="cmss-10">glossaries-extra</span>. (See <a +href="#sec:abbreviations"><span +class="cmsy-10">§</span>3 +</a><a +href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a>.) +</p><!--l. 1364--><p class="indent" > The <span +class="cmtt-10">\makeglossaries </span>command now has an optional argument. +</p><!--l. 1365--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\makeglossaries</span><span +class="cmtt-9"> </span></span><a + id="dx1-5052"></a> <span +class="cmtt-10">\makeglossaries[</span>⟨<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 1367--><p class="noindent" > +If ⟨<span +class="cmti-10">list</span>⟩ is empty, <span +class="cmtt-10">\makeglossaries </span>behaves as per its original definition in the +<span +class="cmss-10">glossaries </span>package, otherwise ⟨<span +class="cmti-10">list</span>⟩ can be a comma-separated list of glossaries that +need processing with an external indexing application. +</p><!--l. 1373--><p class="indent" > This command is not permitted with the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-5053"></a> package option. Without +the optional argument, it’s permitted with <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-5054"></a>. With the optional +argument, it’s only permitted with the default <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=off</span><a + id="dx1-5055"></a>. +</p><!--l. 1378--><p class="indent" > It should then be possible to use <span +class="cmtt-10">\printglossary </span>for those glossaries listed in ⟨<span +class="cmti-10">list</span>⟩ +and <span +class="cmtt-10">\printnoidxglossary </span>for the other glossaries. (See the accompanying file +<span +class="cmtt-10">sample-mixedsort.tex </span>for an example.) +</p><!--l. 1383--><p class="indent" > <div class="important" title="Important Note"> If you use the optional argument ⟨<span +class="cmti-10">list</span>⟩, you can’t define entries in the document +(even with the <a +href="#styopt.docdef"><span +class="cmss-10">docdef</span></a><a + id="dx1-5056"></a> option). </div> +</p><!--l. 1386--><p class="noindent" > +</p><!--l. 1388--><p class="indent" > You will need at least version 2.20 of <a + id="dx1-5057"></a><a +href="#glo:makeglossaries"><span +class="cmtt-10">makeglossaries</span></a> or at least version 1.3 of +the Lua alternative <a + id="dx1-5058"></a><a +href="#glo:makeglossaries-lite.lua"><span +class="cmtt-10">makeglossaries-lite</span><a + id="dx1-5059"></a></a> (both distributed with <span +class="cmss-10">glossaries </span>v4.27) to +allow for this use of <span +class="cmtt-10">\makeglossaries[</span>⟨<span +class="cmti-10">list</span>⟩<span +class="cmtt-10">]</span>. Alternatively, use the <a +href="#styopt.automake"><span +class="cmss-10">automake</span></a><a + id="dx1-5060"></a> +option. +</p> +<!--l. 1394--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.1 </span> <a + id="sec:wrglossary"></a>Entry Indexing</h3> +<!--l. 1397--><p class="noindent" >As from version 1.31, there is a new command like <span +class="cmtt-10">\glsadd </span>where the mandatory +argument is a comma-separated list of labels: + + + +</p><!--l. 1400--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaddeach</span><span +class="cmtt-9"> </span></span><a + id="dx1-6001"></a> <span +class="cmtt-10">\glsaddeach[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1402--><p class="noindent" > +This simply iterates over ⟨<span +class="cmti-10">list</span>⟩ and does <span +class="cmtt-10">\glsadd[</span>⟨<span +class="cmti-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>for each entry in the +list. +</p><!--l. 1406--><p class="indent" > As from version 1.37, you can make commands like <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glslink</span> +automatically use <span +class="cmtt-10">\glsadd </span>with specific options when a given format is used +(identified with <span +class="cmtt-10">format={</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">} </span>in the optional argument of the corresponding +<span +class="cmtt-10">\gls</span>, <span +class="cmtt-10">\glslink </span>etc). +</p><!--l. 1411--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrAutoAddOnFormat</span><span +class="cmtt-9"> </span></span><a + id="dx1-6002"></a> <span +class="cmtt-10">\GlsXtrAutoAddOnFormat[</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">format list</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">glsadd options</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1413--><p class="noindent" > +The optional argument ⟨<span +class="cmti-10">label</span>⟩ defaults to <span +class="cmtt-10">\glslabel </span>and indicates the label to use in +<span +class="cmtt-10">\glsadd </span>and so needs to be expandable. The ⟨<span +class="cmti-10">format list</span>⟩ is a comma-separated list of +format values that will trigger the automated adding. The ⟨<span +class="cmti-10">glsadd options</span>⟩ are +the options to pass to <span +class="cmtt-10">\glsadd </span>with <span +class="cmtt-10">format={</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">} </span>prepended to the +list. +</p><!--l. 1421--><p class="indent" > For example, with: + + + +</p> + <div class="verbatim" id="verbatim-31"> +\GlsXtrAutoAddOnFormat{hyperbf}{counter=chapter} +</div> +<!--l. 1424--><p class="nopar" > then <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[format=hyperbf]{sample}</span></span></span> will be equivalent to + + + +</p> + <div class="verbatim" id="verbatim-32"> +\glsadd[format=hyperbf,counter=chapter]{sample}\gls[format=hyperbf]{sample} +</div> +<!--l. 1428--><p class="nopar" > Note that the explicit range markers will prevent a match unless you include +them in ⟨<span +class="cmti-10">format list</span>⟩ (in which case, be sure to add both the start and end +formats). +</p><!--l. 1433--><p class="indent" > Here’s another example: + + + +</p> + <div class="verbatim" id="verbatim-33"> +\GlsXtrAutoAddOnFormat[dual.\glslabel]{hyperbf}{} +</div> +<!--l. 1436--><p class="nopar" > In this case <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[format=hyperbf]{sample}</span></span></span> will now be equivalent to: + + + +</p> + <div class="verbatim" id="verbatim-34"> +\glsadd[format=hyperbf]{dual.sample}\gls[format=hyperbf]{sample} +</div> +<!--l. 1441--><p class="nopar" > +</p><!--l. 1443--><p class="indent" > <div class="important" title="Important Note"> <span +class="cmtt-10">\GlsXtrAutoAddOnFormat </span>is not applied to <span +class="cmtt-10">\glsadd </span>as it could cause an infinite +loop. </div> +</p><!--l. 1446--><p class="noindent" > +The <span +class="cmss-10">glossaries-extra </span>package provides extra keys for commands like <span +class="cmtt-10">\gls </span>and +<span +class="cmtt-10">\glstext</span>: + </p><dl class="description"><dt class="description"> +<span +class="cmssbx-10">noindex</span><a + id="dx1-6003"></a> </dt><dd +class="description">This is a boolean key. If true, this suppresses the indexing. (That is, + it prevents <span +class="cmtt-10">\gls </span>or whatever from adding a line to the external glossary + file.) This is more useful than the <a +href="#styopt.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-6004"></a> package option provided + by <span +class="cmss-10">glossaries</span>, as the <a + id="dx1-6005"></a><a +href="#glo:firstuse">first use</a> might not be the most pertinent use. (If you + want to apply <a +href="#styopt.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-6006"></a> to selected entries, rather than all of them, you + can use the <a +href="#catattr.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-6007"></a> attribute, see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.) + Note that the <span +class="cmss-10">noindex</span><a + id="dx1-6008"></a> key isn’t available for <span +class="cmtt-10">\glsadd</span><a + id="dx1-6009"></a> (and <span +class="cmtt-10">\glsaddall</span><a + id="dx1-6010"></a>) + since the whole purpose of that command is to index an entry. + </dd><dt class="description"> +<span +class="cmssbx-10">wrgloss</span><a + id="dx1-6011"></a> </dt><dd +class="description">(New to v1.14.) This is may only take the values <span +class="cmss-10">before </span>or <span +class="cmss-10">after</span>. By + default, commands that both index and display link text (such as <span +class="cmtt-10">\gls</span>, + <span +class="cmtt-10">\glstext </span>and <span +class="cmtt-10">\glslink</span>), perform the indexing before the link text as the + indexing creates a whatsit that can cause problems if it occurs after the + link text. However, it may be that in some cases (such as long phrases) you + may actually want the indexing performed after the link text. In this case + you can use <span +class="cmtt-10">wrgloss=after </span>for specific instances. Note that this option + doesn’t have an effect if the indexing has been suppressed through other + settings (such as <span +class="cmss-10">noindex</span><a + id="dx1-6012"></a>). + <!--l. 1477--><p class="noindent" >The default value is set up using + </p><!--l. 1478--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrinitwrgloss</span><span +class="cmtt-9"> </span></span><a + id="dx1-6013"></a> <span +class="cmtt-10">\glsxtrinitwrgloss </span></div><hr> + </p><!--l. 1480--><p class="noindent" > + which is defined as: + + + +</p> + <div class="verbatim" id="verbatim-35"> + \newcommand*{\glsxtrinitwrgloss}{% +  <br /> \glsifattribute{\glslabel}{wrgloss}{after}% +  <br /> {% +  <br />   \glsxtrinitwrglossbeforefalse +  <br /> }% +  <br /> {% +  <br />   \glsxtrinitwrglossbeforetrue +  <br /> }% +  <br />} +</div> + <!--l. 1492--><p class="nopar" > This sets the conditional + </p><!--l. 1494--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\ifglsxtrinitwrglossbefore</span><span +class="cmtt-9"> </span></span><a + id="dx1-6014"></a> <span +class="cmtt-10">\ifglsxtrinitwrgloss </span></div><hr> + </p><!--l. 1496--><p class="noindent" > + which is used to determine where to perform the indexing. + </p><!--l. 1499--><p class="noindent" >This means you can set the <a +href="#catattr.wrgloss"><span +class="cmss-10">wrgloss</span></a><a + id="dx1-6015"></a> attribute to <span +class="cmss-10">after </span>to automatically use this + as the default for entries with that category attribute. (Note that adding + <span +class="cmss-10">wrgloss</span><a + id="dx1-6016"></a> to the default options in <span +class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span><a + id="dx1-6017"></a> will override + <span +class="cmtt-10">\glsxtrinitwrgloss</span>.) + </p></dd><dt class="description"> +<span +class="cmssbx-10">hyperoutside</span><a + id="dx1-6018"></a> </dt><dd +class="description">(New to v1.21.) This is a boolean key. The default is <span +class="cmtt-10">hyperoutside=true</span>, + which puts the hyperlink outside <span +class="cmtt-10">\glstextformat</span>, so that commands like <span +class="cmtt-10">\gls</span> + will effectively do <div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\hyperlink{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glstextformat{</span>⟨<span +class="cmitt-10">link</span><span +class="cmitt-10"> text</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">}</span> +</div> + </div> This is the same behaviour as with the base <span +class="cmss-10">glossaries </span>package. With + <span +class="cmtt-10">hyperoutside=false</span>, <span +class="cmtt-10">\hyperlink </span>is placed inside the argument of + <span +class="cmtt-10">\glstextformat</span>: <div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\glstextformat</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\hyperlink{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">link</span><span +class="cmitt-10"> text</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">}</span> +</div> + </div> You can use the <a +href="#catattr.hyperoutside"><span +class="cmss-10">hyperoutside</span></a><a + id="dx1-6019"></a> category attribute to set the default for a + given category. This can be combined with the use of the <a +href="#catattr.textformat"><span +class="cmss-10">textformat</span></a><a + id="dx1-6020"></a> + attribute to counteract any interference caused by <span +class="cmtt-10">\hyperlink</span>. For + example: + + + + <div class="verbatim" id="verbatim-36"> + \glssetcategoryattribute{mathrelation}{hyperoutside}{false} +</div> + <!--l. 1526--><p class="nopar" > will set <span +class="cmtt-10">hyperoutside=false </span>for all entries that are assigned to the category + <span +class="cmtt-10">mathrelation </span>and + + + +</p> + <div class="verbatim" id="verbatim-37"> + \glssetcategoryattribute{mathrelation}{textformat}{mathrel} +</div> + <!--l. 1531--><p class="nopar" > will use <span +class="cmtt-10">\mathrel </span>instead of <span +class="cmtt-10">\glstextformat </span>resulting in: </p><div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\mathrel</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\hyperlink{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">link</span><span +class="cmitt-10"> text</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">}</span> +</div> + </div> for entries with the <span +class="cmss-10">category</span><a + id="dx1-6021"></a> key set to <span +class="cmtt-10">mathrelation</span>. + </dd><dt class="description"> +<span +class="cmssbx-10">textformat</span><a + id="dx1-6022"></a> </dt><dd +class="description">This key must have a control sequence name as its value. The + command formed from this name must exist and must take one argument. + (Use <span +class="cmtt-10">relax </span>for default behaviour.) If set, this overrides the <a +href="#catattr.textformat"><span +class="cmss-10">textformat</span></a><a + id="dx1-6023"></a> + attribute and <span +class="cmtt-10">\glstextformat</span>. See the <span +class="cmss-10">soul</span><a + id="dx1-6024"></a> example in <a +href="#sec:glsunset"><span +class="cmsy-10">§</span>2.5 </a><a +href="#sec:glsunset">First Use + Flag<!--tex4ht:ref: sec:glsunset --></a>. + </dd><dt class="description"> +<span +class="cmssbx-10">prefix</span><a + id="dx1-6025"></a> </dt><dd +class="description">Locally redefines <span +class="cmtt-10">\glolinkprefix</span><a + id="dx1-6026"></a> to the given value. It should match the + prefix for the desired glossary. + </dd><dt class="description"> +<span +class="cmssbx-10">thevalue</span><a + id="dx1-6027"></a> </dt><dd +class="description">Explicitly set the location to this value (see below). + </dd><dt class="description"> +<span +class="cmssbx-10">theHvalue</span><a + id="dx1-6028"></a> </dt><dd +class="description">Set the corresponding hyperlink location (see below). + </dd></dl> +<!--l. 1558--><p class="indent" > There is a new hook that’s used each time indexing information is written to the +external glossary files: +</p><!--l. 1560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdowrglossaryhook</span><span +class="cmtt-9"> </span></span><a + id="dx1-6029"></a> <span +class="cmtt-10">\glsxtrdowrglossaryhook{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1562--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. This does nothing by default but may be redefined. +(See, for example, the accompanying sample file <span +class="cmtt-10">sample-indexhook.tex</span>, which uses +this hook to determine which entries haven’t been indexed.) +</p><!--l. 1569--><p class="indent" > There’s also a new hook (from v1.26) that’s used immediately before the options +are set by the <span +class="cmtt-10">\gls</span>-like and <span +class="cmtt-10">\glstext</span>-like commands: +</p><!--l. 1572--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslinkpresetkeys</span><span +class="cmtt-9"> </span></span><a + id="dx1-6030"></a> <span +class="cmtt-10">\glslinkpresetkeys </span></div><hr> +</p><!--l. 1574--><p class="noindent" > +(The base package provides <span +class="cmtt-10">\glslinkpostsetkeys</span><a + id="dx1-6031"></a> that’s used immediately after the +options are set.) + + + +</p><!--l. 1578--><p class="indent" > As from version 1.30 there are also similar hooks for <span +class="cmtt-10">\glsadd</span>: +</p><!--l. 1579--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaddpresetkeys</span><span +class="cmtt-9"> </span></span><a + id="dx1-6032"></a> <span +class="cmtt-10">\glsaddpresetkeys </span></div><hr> +</p><!--l. 1581--><p class="noindent" > +and +</p><!--l. 1583--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaddpostsetkeys</span><span +class="cmtt-9"> </span></span><a + id="dx1-6033"></a> <span +class="cmtt-10">\glsaddpostsetkeys </span></div><hr> +</p><!--l. 1585--><p class="noindent" > +For example, to default to using the <span +class="cmss-10">equation</span><a + id="dx1-6034"></a> counter in maths mode: + + + +</p> + <div class="verbatim" id="verbatim-38"> +\renewcommand{\glslinkpresetkeys}{% + <br /> \ifmmode \setkeys{glslink}{counter=equation}\fi} + <br />\renewcommand{\glsaddpresetkeys}{% + <br /> \ifmmode \setkeys{glossadd}{counter=equation}\fi} +</div> +<!--l. 1593--><p class="nopar" > In this case, the counter can be overridden with an explicit use of <span +class="cmss-10">counter</span><a + id="dx1-6035"></a> in the +optional argument of <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glsadd</span>. (As from version 1.37, a simpler method is to +just use the <a +href="#styopt.equations"><span +class="cmss-10">equations</span></a><a + id="dx1-6036"></a> package option.) +</p><!--l. 1599--><p class="indent" > Alternatively, to enforce this (overriding the option argument): + + + +</p> + <div class="verbatim" id="verbatim-39"> +\renewcommand{\glslinkpostsetkeys}{% + <br /> \ifmmode \setkeys{glslink}{counter=equation}\fi} + <br />\renewcommand{\glsaddpostsetkeys}{% + <br /> \ifmmode \setkeys{glossadd}{counter=equation}\fi} +</div> +<!--l. 1606--><p class="nopar" > +</p><!--l. 1608--><p class="indent" > As from version 1.14, there are two new keys for <span +class="cmtt-10">\glsadd</span>: <span +class="cmss-10">thevalue</span><a + id="dx1-6037"></a> and <span +class="cmss-10">theHvalue</span><a + id="dx1-6038"></a>. +These keys are designed for manually adding explicit locations rather than obtaining +the value from the associated counter. As from version 1.19, these two keys are also +available for commands like <span +class="cmtt-10">\gls </span>and <span +class="cmtt-10">\glslink</span>. The <span +class="cmss-10">thevalue</span><a + id="dx1-6039"></a> keys is intended +primarily for adding locations in supplementary material that can’t be obtained from +a counter. +</p><!--l. 1617--><p class="indent" > The principle key <span +class="cmss-10">thevalue</span><a + id="dx1-6040"></a> is for the location value. The other key <span +class="cmss-10">theHvalue</span><a + id="dx1-6041"></a> can +be used to extract a prefix value for the first argument of commands like +<span +class="cmtt-10">\glsnoidxdisplayloc</span><a + id="dx1-6042"></a>. Its value must be in the format ⟨<span +class="cmti-10">prefix</span>⟩⟨<span +class="cmti-10">location</span>⟩. 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. +</p><!--l. 1625--><p class="indent" > <div class="important" title="Important Note"> If you use <span +class="cmss-10">thevalue</span><a + id="dx1-6043"></a>, you must make sure that you use an indexing application +that will accept the given value. </div> +</p><!--l. 1628--><p class="noindent" > +</p><!--l. 1630--><p class="indent" > For example, <span +class="cmtt-10">makeindex</span><a + id="dx1-6044"></a> will only accept locations in the form [⟨<span +class="cmti-10">num</span>⟩⟨<span +class="cmti-10">sep</span>⟩]*⟨<span +class="cmti-10">num</span>⟩ +where ⟨<span +class="cmti-10">num</span>⟩ is an arabic number (0, 1, …), roman numeral (i, ii, … or I, II, …) or a +character from a, …, z or A, …, Z, and [⟨<span +class="cmti-10">num</span>⟩⟨<span +class="cmti-10">sep</span>⟩]* indicates zero or more +instances of a number followed by the recognised separator character (set +with <span +class="cmtt-10">\glsSetCompositor</span>). This means that <span +class="cmtt-10">makeindex</span><a + id="dx1-6045"></a> won’t accept, for +example, + + + +</p> + <div class="verbatim" id="verbatim-40"> +\glsadd[thevalue={Supplementary Material}]{sample} +</div> +<!--l. 1640--><p class="nopar" > This location value will be accepted by <a + id="dx1-6046"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, since it will allow any location and +will only try forming ranges if the location matches any of its numerical patterns. +In the case of <span +class="cmtt-10">xindy</span><a + id="dx1-6047"></a>, you’ll need to add a rule that can match the value. +If you’re using <span +class="cmss-10">hyperref</span><a + id="dx1-6048"></a>, you may need to use the <span +class="cmss-10">format</span><a + id="dx1-6049"></a> key to prevent a +hyperlink if one can’t naturally be formed from the prefix, counter and location +value. +</p><!--l. 1649--><p class="indent" > For example, suppose the file <span +class="cmtt-10">suppl.tex </span>contains: + + + +</p> + <div class="verbatim" id="verbatim-41"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\newglossaryentry{sample}{name={sample},description={an example}} + <br />\renewcommand{\thepage}{S.\arabic{page}} + <br />\begin{document} + <br />First page. + <br />\newpage + <br />\gls{sample}. + <br />\end{document} +</div> +<!--l. 1664--><p class="nopar" > This has an entry on page S.2. Suppose another document wants to include this +location in the glossary. Then this can be done by setting <span +class="cmss-10">thevalue</span><a + id="dx1-6050"></a> to <span +class="cmtt-10">S.2</span>. For +example: + + + +</p> + <div class="verbatim" id="verbatim-42"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\makeglossaries + <br />\newglossaryentry{sample}{name={sample},description={an example}} + <br />\begin{document} + <br />Some \gls{sample} text. + <br />\printglossaries + <br />\glsadd[thevalue={S.2}]{sample} + <br />\end{document} +</div> +<!--l. 1683--><p class="nopar" > This location value will be accepted by <span +class="cmtt-10">makeindex</span><a + id="dx1-6051"></a> as it’s in the form ⟨<span +class="cmti-10">num</span>⟩⟨<span +class="cmti-10">sep</span>⟩⟨<span +class="cmti-10">num</span>⟩. +</p><!--l. 1687--><p class="indent" > If you want hyperlinks, things are more complicated. First you need to set the +<a +href="#catattr.externallocation"><span +class="cmss-10">externallocation</span></a><a + id="dx1-6052"></a> attribute to the location of the PDF file. For example: + + + +</p> + <div class="verbatim" id="verbatim-43"> +\glssetcategoryattribute{supplemental}{externallocation}{suppl.pdf} + <br />\newglossaryentry{sample}{category=supplemental, + <br /> name={sample},description={an example}} +</div> +<!--l. 1695--><p class="nopar" > Next you need to add <span +class="cmtt-10">glsxtrsupphypernumber </span>as the format: + + + +</p> + <div class="verbatim" id="verbatim-44"> +\glsadd[thevalue={S.2},format=glsxtrsupphypernumber]{sample} +</div> +<!--l. 1699--><p class="nopar" > Both documents will need to use the <span +class="cmss-10">hyperref</span><a + id="dx1-6053"></a> package. Remember that the counter +used for the location also needs to match. If <span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter</span>⟩ is defined in the other +document and doesn’t match in the referencing document, then you need to use +<span +class="cmss-10">theHvalue</span><a + id="dx1-6054"></a> to set the appropriate value. See the accompanying sample files +<span +class="cmtt-10">sample-suppl-hyp.tex </span>and <span +class="cmtt-10">sample-suppl-main-hyp.tex </span>for an example that uses +<span +class="cmss-10">hyperref</span><a + id="dx1-6055"></a>. +</p><!--l. 1709--><p class="indent" > <div class="important" title="Important Note"> The hyperlink for the supplementary location may or <span +class="cmti-10">may not </span>take you to the +relevant place in the external PDF file <span +class="cmti-10">depending on your PDF viewer</span>. Some may not +support external links, and some may take you to the first page or last visited page. +</div> +</p><!--l. 1714--><p class="noindent" > +</p><!--l. 1716--><p class="indent" > For example, if both <span +class="cmtt-10">sample-suppl-hyp.pdf </span>and <span +class="cmtt-10">sample-suppl-main-hyp.pdf</span> +are in the same directory, then viewing <span +class="cmtt-10">sample-suppl-main-hyp.pdf </span>in Evince will +take you to the correct location in the linked document (when you click on the S.2 +external link), but Okular will take you to the top of the first page of the linked +document. +</p><!--l. 1723--><p class="indent" > This method can only be used where there is one external source for the +designated category (identified by the <a +href="#catattr.externallocation"><span +class="cmss-10">externallocation</span></a><a + id="dx1-6056"></a> attribute). For multiple +sources, you need to use <a + id="dx1-6057"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> version 1.7+, which is the better method in +general as it can automatically fetch the relevant locations from the <span +class="cmtt-10">.aux </span>files +of the designated external documents without the need to explicitly use +<span +class="cmtt-10">\glsadd</span>. +</p><!--l. 1731--><p class="noindent" > +</p> +<!--l. 1731--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.2 </span> <a + id="sec:see"></a>Cross-References (“see” and “see also”)</h3> +<!--l. 1734--><p class="noindent" >The value of the <span +class="cmss-10">see</span><a + id="dx1-7001"></a> key is now saved as a field. This isn’t the case with <span +class="cmss-10">glossaries</span>, +where the <span +class="cmss-10">see</span><a + id="dx1-7002"></a> value is simply used to directly write a line to the corresponding +glossary file and is then discarded. This is why the <span +class="cmss-10">see</span><a + id="dx1-7003"></a> key can’t be used +before <span +class="cmtt-10">\makeglossaries</span><a + id="dx1-7004"></a> (since the file hasn’t been opened yet). It’s also the +reason why the <span +class="cmss-10">see</span><a + id="dx1-7005"></a> key doesn’t have any effect when used in entries that +are defined in the <span +class="cmss-10">document</span><a + id="dx1-7006"></a><a + id="dx1-7007"></a> environment. Since the value isn’t saved, it’s +not available when the <span +class="cmtt-10">.glsdefs </span>file is created at the end of the document +and so isn’t available at the start of the <span +class="cmss-10">document</span><a + id="dx1-7008"></a><a + id="dx1-7009"></a> environment on the next +run. +</p><!--l. 1747--><p class="indent" > This modification allows <span +class="cmss-10">glossaries-extra </span>to provide +</p><!--l. 1748--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtraddallcrossrefs</span><span +class="cmtt-9"> </span></span><a + id="dx1-7010"></a> <span +class="cmtt-10">\glsxtraddallcrossrefs </span></div><hr> + + + +</p><!--l. 1750--><p class="noindent" > +which is used at the end of the document to automatically add any unused +cross-references unless the package option <a +href="#styopt.indexcrossrefs"><span +class="cmss-10">indexcrossrefs</span></a><a + id="dx1-7011"></a> was set to false. +</p><!--l. 1755--><p class="indent" > As a by-product of this enhancement, the <span +class="cmss-10">see</span><a + id="dx1-7012"></a> key will now work for entries +defined in the <span +class="cmss-10">document</span><a + id="dx1-7013"></a><a + id="dx1-7014"></a> environment, but it’s still best to define entries in the +preamble, and the <span +class="cmss-10">see</span><a + id="dx1-7015"></a> key still can’t perform any indexing before the file has been +opened by <span +class="cmtt-10">\makeglossaries</span>. Note that <span +class="cmss-10">glossaries </span>v4.24 introduced the <a +href="#styopt.seenoindex"><span +class="cmss-10">seenoindex</span></a><a + id="dx1-7016"></a> +package option, which can be used to suppress the error when the <span +class="cmss-10">see</span><a + id="dx1-7017"></a> key +is used before <span +class="cmtt-10">\makeglossaries</span>, so <a +href="#styopt.seenoindex"><span +class="cmss-10">seenoindex</span></a><span +class="cmss-10">=ignore</span><a + id="dx1-7018"></a> will allow the <span +class="cmss-10">see</span><a + id="dx1-7019"></a> +value to be stored even though it may not be possible to index it at that +point. +</p><!--l. 1766--><p class="indent" > As from version 1.06, you can display the cross-referenced information for a given +entry using +</p><!--l. 1768--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrusesee</span><span +class="cmtt-9"> </span></span><a + id="dx1-7020"></a> <span +class="cmtt-10">\glsxtrusesee{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1770--><p class="noindent" > +This internally uses +</p><!--l. 1772--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtruseseeformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-7021"></a> <span +class="cmtt-10">\glsxtruseseeformat{</span>⟨<span +class="cmitt-10">tag</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1774--><p class="noindent" > +where ⟨<span +class="cmti-10">tag</span>⟩ and ⟨<span +class="cmti-10">xr list</span>⟩ are obtained from the value of the entry’s <span +class="cmss-10">see</span><a + id="dx1-7022"></a> field (if +non-empty). By default, this just does <span +class="cmtt-10">\glsseeformat[</span>⟨<span +class="cmti-10">tag</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmti-10">xr list</span>⟩<span +class="cmtt-10">}</span><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">{}</span></span></span>, +which is how the cross-reference is displayed in the <a + id="dx1-7023"></a><a +href="#glo:numberlist">number list</a>. Note that +<span +class="cmtt-10">\glsxtrusesee </span>does nothing if the <span +class="cmss-10">see</span><a + id="dx1-7024"></a> field hasn’t been set for the entry given by +⟨<span +class="cmti-10">label</span>⟩. +</p><!--l. 1783--><p class="indent" > As with the base <span +class="cmss-10">glossaries</span><a + id="dx1-7025"></a> package, <span +class="cmtt-10">\glsseeformat </span>is defined to do <span +class="cmtt-10">\emph{</span>⟨<span +class="cmitt-10">tag</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">\glsseelist{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">}</span>. The third argument is always ignored and is present for +<span +class="cmtt-10">makeindex</span><a + id="dx1-7026"></a>, which always requires a final argument to encapsulate the associated +location. The command +</p><!--l. 1789--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsseelist</span><a + id="dx1-7027"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1790--><p class="noindent" > +used to iterate over the list of cross-reference labels is also unchanged from +the base <span +class="cmss-10">glossaries</span><a + id="dx1-7028"></a> package, with each item in the list formatted according +to: +</p><!--l. 1795--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsseeitem</span><a + id="dx1-7029"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1796--><p class="noindent" > +This is defined by the <span +class="cmss-10">glossaries</span><a + id="dx1-7030"></a> package to: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glshyperlink[\glsseeitemformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> So the actual formatting for each cross-referenced entry is performed by +<span +class="cmtt-10">\glsseeitemformat</span><a + id="dx1-7031"></a>, which is redefined by <span +class="cmss-10">glossaries-extra</span><a + id="dx1-7032"></a>, as described in <a +href="#sec:modifications"><span +class="cmsy-10">§</span>2 +</a><a +href="#sec:modifications">Modifications to Existing Commands and Styles<!--tex4ht:ref: sec:modifications --></a>. This now displays the value of the +<span +class="cmss-10">text</span><a + id="dx1-7033"></a> field for abbreviations and the value of the <span +class="cmss-10">name</span><a + id="dx1-7034"></a> field otherwise. There’s no +indication of the entry hierarchy, which could confuse the reader. Therefore, as from + + + +<span +class="cmss-10">glossaries-extra</span><a + id="dx1-7035"></a> v1.37, there are some new commands that include the hierarchical +information. You may prefer to redefine <span +class="cmtt-10">\glsseeitemformat </span>to use one of this if you +have sub-entries. For example: + + + + <div class="verbatim" id="verbatim-45"> +\renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}} +</div> +<!--l. 1814--><p class="nopar" > +</p><!--l. 1816--><p class="indent" > The command: +</p><!--l. 1817--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrhiername</span><span +class="cmtt-9"> </span></span><a + id="dx1-7036"></a> <span +class="cmtt-10">\glsxtrhiername{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1819--><p class="noindent" > +performs a recursive action: + </p><ol class="enumerate1" > + <li + class="enumerate" id="x1-7038x1">If the entry given by ⟨<span +class="cmti-10">label</span>⟩ has a parent, then <span +class="cmtt-10">\glsxtrhiername{</span>⟨<span +class="cmti-10">parent</span> + <span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>is done followed by <span +class="cmtt-10">\glsxtrhiernamesep </span>then: + </li> + <li + class="enumerate" id="x1-7040x2">If the entry given by ⟨<span +class="cmti-10">label</span>⟩ is an abbreviation (that is, it has the <span +class="cmss-10">short</span><a + id="dx1-7041"></a> field + set) then the short form is displayed (using <span +class="cmtt-10">\glsaccessshort</span>) otherwise + the name is displayed (using <span +class="cmtt-10">\glsaccessname</span>).</li></ol> +<!--l. 1830--><p class="noindent" >The first step above is skipped if the entry doesn’t have a parent. Each level is separated +by: +</p><!--l. 1832--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrhiernamesep</span><span +class="cmtt-9"> </span></span><a + id="dx1-7042"></a> <span +class="cmtt-10">\glsxtrhiernamesep </span></div><hr> +</p><!--l. 1834--><p class="noindent" > +which defaults to “ <span +class="cmmi-9">⊳ </span>”. This can be redefined as appropriate. +</p><!--l. 1838--><p class="indent" > There are some case-changing variants: +</p><!--l. 1839--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrhiername</span><span +class="cmtt-9"> </span></span><a + id="dx1-7043"></a> <span +class="cmtt-10">\Glsxtrhiername{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1841--><p class="noindent" > +The top-level has the first letter changed to upper case (either <span +class="cmtt-10">\Glsaccessshort </span>or +<span +class="cmtt-10">\Glsaccessname</span>). There’s no case-change for sub-entries. +</p><!--l. 1846--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrhiername</span><span +class="cmtt-9"> </span></span><a + id="dx1-7044"></a> <span +class="cmtt-10">\GlsXtrhiername{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1848--><p class="noindent" > +All levels have the first letter changed to upper case (either <span +class="cmtt-10">\Glsaccessshort </span>or +<span +class="cmtt-10">\Glsaccessname</span>). +</p><!--l. 1852--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrhiername</span><span +class="cmtt-9"> </span></span><a + id="dx1-7045"></a> <span +class="cmtt-10">\GLSxtrhiername{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1854--><p class="noindent" > +The top-level is converted to upper case (either <span +class="cmtt-10">\GLSaccessshort </span>or <span +class="cmtt-10">\GLSaccessname</span>). +There’s no case-change for sub-entries. +</p><!--l. 1859--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSXTRhiername</span><span +class="cmtt-9"> </span></span><a + id="dx1-7046"></a> <span +class="cmtt-10">\GLSXTRhiername{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1861--><p class="noindent" > +All levels are converted to upper case (either <span +class="cmtt-10">\GLSaccessshort </span>or <span +class="cmtt-10">\GLSaccessname</span>). +</p><!--l. 1865--><p class="indent" > Suppose you want to suppress the <a + id="dx1-7047"></a>number list using <a +href="#styopt.nonumberlist"><span +class="cmss-10">nonumberlist</span></a><a + id="dx1-7048"></a>. This +will automatically prevent the cross-references from being displayed. The +<a +href="#styopt.seeautonumberlist"><span +class="cmss-10">seeautonumberlist</span></a><a + id="dx1-7049"></a> package option will automatically enable the <a + id="dx1-7050"></a>number list for entries +that have the <span +class="cmss-10">see</span><a + id="dx1-7051"></a> key set, but this will also show the rest of the <a + id="dx1-7052"></a>number +list. + + + +</p><!--l. 1872--><p class="indent" > Another approach in this situation is to use the post description hook +with <span +class="cmtt-10">\glsxtrusesee </span>to append the cross-reference after the description. For +example: + + + +</p> + <div class="verbatim" id="verbatim-46"> +\renewcommand*{\glsxtrpostdescgeneral}{% + <br /> \ifglshasfield{see}{\glscurrententrylabel} + <br /> {, \glsxtrusesee{\glscurrententrylabel}}% + <br /> {}% + <br />} +</div> +<!--l. 1881--><p class="nopar" > Now the cross-references can appear even though the <a + id="dx1-7053"></a><a +href="#glo:numberlist">number list</a> has been +suppressed. +</p><!--l. 1885--><p class="indent" > As from v1.16, there’s a separate <span +class="cmss-10">seealso</span><a + id="dx1-7054"></a> key. Unlike <span +class="cmss-10">see</span><a + id="dx1-7055"></a>, this doesn’t have an +optional part for the textual tag. The syntax <span +class="cmtt-10">seealso={</span>⟨<span +class="cmitt-10">xr-labels</span>⟩<span +class="cmtt-10">} </span>works in +much the same way as using <span +class="cmtt-10">see=[\seealsoname]{</span>⟨<span +class="cmitt-10">xr-labels</span>⟩<span +class="cmtt-10">} </span>but the +information is stored in a separate field. If you need a different tag, use the <span +class="cmss-10">see</span><a + id="dx1-7056"></a> key +instead (or redefine <span +class="cmtt-10">\seealsoname </span>or <span +class="cmtt-10">\glsxtruseseealsoformat</span>, described +below). +</p><!--l. 1893--><p class="indent" > You can display the formatted list of cross-references stored in the <span +class="cmss-10">seealso</span><a + id="dx1-7057"></a> key +using: +</p><!--l. 1895--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtruseseealso</span><span +class="cmtt-9"> </span></span><a + id="dx1-7058"></a> <span +class="cmtt-10">\glsxtruseseealso{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1897--><p class="noindent" > +This works in much the same way as <span +class="cmtt-10">\glsxtrusesee </span>but it internally uses +</p><!--l. 1900--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtruseseeformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-7059"></a> <span +class="cmtt-10">\glsxtruseseealsoformat{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1902--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-47"> +\renewcommand*{\glsxtrpostdescgeneral}{% + <br /> \ifglshasfield{see}{\glscurrententrylabel} + <br /> {, \glsxtrusesee{\glscurrententrylabel}}% + <br /> {}% + <br /> \ifglshasfield{seealso}{\glscurrententrylabel} + <br /> { (\glsxtruseseealso{\glscurrententrylabel})}% + <br /> {}% + <br />} +</div> +<!--l. 1913--><p class="nopar" > +</p><!--l. 1915--><p class="indent" > The actual unformatted comma-separated list ⟨<span +class="cmti-10">xr-list</span>⟩ stored in the <span +class="cmss-10">seealso</span><a + id="dx1-7060"></a> field +can be accessed with: +</p><!--l. 1917--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrseealsolabels</span><span +class="cmtt-9"> </span></span><a + id="dx1-7061"></a> <span +class="cmtt-10">\glsxtrseealsolabels{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1919--><p class="noindent" > +This will just expand to the ⟨<span +class="cmti-10">xr-labels</span>⟩ provided in the value of the <span +class="cmss-10">seealso</span><a + id="dx1-7062"></a> key. There’s +no corresponding command to access the <span +class="cmss-10">see</span><a + id="dx1-7063"></a> field. If you really need to access it, you +can use commands like <span +class="cmtt-10">\glsxtrfielduse</span>, but remember that it may start with +<span +class="cmtt-10">[</span>⟨<span +class="cmti-10">tag</span>⟩<span +class="cmtt-10">]</span>, so it can’t be automatically treated as a simple comma-separated +list. +</p><!--l. 1927--><p class="indent" > As mentioned above, the base <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\glsseelist</span><a + id="dx1-7064"></a>, which +requires a comma-separated list of labels as the argument. The argument isn’t fully +expanded, so it’s not suitable to use, for example, <span +class="cmtt-10">\glsxtrseealsolabels{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>as +the argument. For convenience, <span +class="cmss-10">glossaries-extra </span>provides +</p><!--l. 1932--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrseelist</span><span +class="cmtt-9"> </span></span><a + id="dx1-7065"></a> <span +class="cmtt-10">\glsxtrseelist{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1934--><p class="noindent" > +which fully expands its argument and passes it to <span +class="cmtt-10">\glsseelist</span>. +</p><!--l. 1937--><p class="indent" > The <span +class="cmss-10">seealso</span><a + id="dx1-7066"></a> key implements the automatic indexing using +</p><!--l. 1938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrindexseealso</span><span +class="cmtt-9"> </span></span><a + id="dx1-7067"></a> <span +class="cmtt-10">\glsxtrindexseealso{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">xr list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1940--><p class="noindent" > +which just does </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glssee[\seealsoname]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">xr</span><span +class="cmitt-10"> list</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> unless the <a +href="#styopt.xindy"><span +class="cmss-10">xindy</span></a><a + id="dx1-7068"></a> option is used with <span +class="cmss-10">glossaries</span><a + id="dx1-7069"></a> v4.30+, in which case a distinct +<span +class="cmtt-10">seealso </span>cross-reference class is used instead. +<!--l. 1949--><p class="noindent" > +</p> + + + +<!--l. 1949--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.3 </span> <a + id="sec:entryfmtmods"></a>Entry Display Style Modifications</h3> +<!--l. 1952--><p class="noindent" >Recall from the <span +class="cmss-10">glossaries </span>package that commands such as <span +class="cmtt-10">\gls </span>display text at +that point in the document (optionally with a hyperlink to the relevant +line in the glossary). This text is referred to as the “<a + id="dx1-8001"></a><a +href="#glo:linktext">link-text</a>” 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 <span +class="cmtt-10">\gls</span>) and the entry +format. +</p><!--l. 1959--><p class="indent" > The default entry format (<span +class="cmtt-10">\glsentryfmt</span><a + id="dx1-8002"></a>) used in the <a + id="dx1-8003"></a><a +href="#glo:linktext">link-text</a> by commands like +<span +class="cmtt-10">\gls</span><a + id="dx1-8004"></a>, <span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-8005"></a>, <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-8006"></a> and <span +class="cmtt-10">\glsxtrlong</span><a + id="dx1-8007"></a> (but not commands like +<span +class="cmtt-10">\glslink</span><a + id="dx1-8008"></a>, <span +class="cmtt-10">\glsfirst</span><a + id="dx1-8009"></a> and <span +class="cmtt-10">\glstext</span>) is changed by <span +class="cmss-10">glossaries-extra </span>to test for regular +entries, which are determined as follows: +</p> + <ul class="itemize1"> + <li class="itemize">If an entry is assigned to a category that has the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-8010"></a> attribute set (see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 + </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>), the entry is considered a regular entry, even if it has a value + for the <span +class="cmss-10">short</span><a + id="dx1-8011"></a> key. In this case <span +class="cmtt-10">\glsentryfmt </span>uses <span +class="cmtt-10">\glsgenentryfmt</span><a + id="dx1-8012"></a> + (provided by <span +class="cmss-10">glossaries</span>), which uses the <span +class="cmss-10">first</span><a + id="dx1-8013"></a> (or <span +class="cmss-10">firstplural</span><a + id="dx1-8014"></a>) value on <a + id="dx1-8015"></a><a +href="#glo:firstuse">first + use</a> and the <span +class="cmss-10">text</span><a + id="dx1-8016"></a> (or <span +class="cmss-10">plural</span><a + id="dx1-8017"></a>) value on subsequent use. + </li> + <li class="itemize">An entry that doesn’t have a value for the <span +class="cmss-10">short</span><a + id="dx1-8018"></a> key is assumed to + be a regular entry, even if the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-8019"></a> attribute isn’t set to “true” + (since it can’t be an abbreviation without the short form). In this case + <span +class="cmtt-10">\glsentryfmt </span>uses <span +class="cmtt-10">\glsgenentryfmt</span><a + id="dx1-8020"></a>. + </li> + <li class="itemize">If an entry does has a value for the <span +class="cmss-10">short</span><a + id="dx1-8021"></a> key and hasn’t been marked as + a regular entry through the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-8022"></a> attribute, it’s not considered a regular + entry. In this case <span +class="cmtt-10">\glsentryfmt </span>uses <span +class="cmtt-10">\glsxtrgenabbrvfmt</span><a + id="dx1-8023"></a> (defined by + <span +class="cmss-10">glossaries-extra</span>) which is governed by the abbreviation style (see <a +href="#sec:abbrstyle"><span +class="cmsy-10">§</span>3.2 + </a><a +href="#sec:abbrstyle">Abbreviation Styles<!--tex4ht:ref: sec:abbrstyle --></a>). + </li></ul> +<!--l. 1989--><p class="indent" > This means that entries with a short form can be treated as regular entries rather +than abbreviations if it’s more appropriate for the desired style. +</p><!--l. 1993--><p class="indent" > As from version 1.04, <span +class="cmtt-10">\glsentryfmt</span><a + id="dx1-8024"></a> now puts <span +class="cmtt-10">\glsgenentry</span><a + id="dx1-8025"></a> in the argument of +the new command +</p><!--l. 1995--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrregularfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-8026"></a> <span +class="cmtt-10">\glsxtrregularfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 1997--><p class="noindent" > +This just does its argument ⟨<span +class="cmti-10">text</span>⟩ by default. This means that if you want regular +entries in a different font but don’t want that font to apply to abbreviations, then +you can redefine <span +class="cmtt-10">\glsxtrregularfont</span>. This is more precise than changing +<span +class="cmtt-10">\glstextformat</span><a + id="dx1-8027"></a> which is applied to all linking commands for all entries, unless +overridden by the <a +href="#catattr.textformat"><span +class="cmss-10">textformat</span></a><a + id="dx1-8028"></a> attribute. +</p><!--l. 2006--><p class="indent" > For example: + + + +</p> + <div class="verbatim" id="verbatim-48"> +\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}} +</div> +<!--l. 2009--><p class="nopar" > You can access the label through <span +class="cmtt-10">\glslabel</span>. For example, you can query the +category: + + + +</p> + <div class="verbatim" id="verbatim-49"> +\renewcommand*{\glsxtrregularfont}[1]{% + <br /> \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}} +</div> +<!--l. 2015--><p class="nopar" > or query the category attribute, for example, provide a custom attribute called +<span +class="cmtt-10">font</span>: + + + +</p> + <div class="verbatim" id="verbatim-50"> +\glssetcategoryattribute{general}{font}{sf} + <br />\renewcommand*{\glsxtrregularfont}[1]{% + <br /> \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}} +</div> +<!--l. 2023--><p class="nopar" > As from version 1.21, it’s simpler to just do, for example: + + + +</p> + <div class="verbatim" id="verbatim-51"> +\glssetcategoryattribute{general}{textformat}{textsf} +</div> +<!--l. 2027--><p class="nopar" > without redefining <span +class="cmtt-10">\glsxtrregularfont</span>. +</p><!--l. 2030--><p class="indent" > As from version 1.30, there is also a command for abbreviations that encapsulates +<span +class="cmtt-10">\glsxtrgenabbrvfmt</span>: +</p><!--l. 2032--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrabbreviationfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-8029"></a> <span +class="cmtt-10">\glsxtrabbreviationfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2034--><p class="noindent" > +This also just does its argument by default. Font changes made by abbreviation styles +are within ⟨<span +class="cmti-10">text</span>⟩. +</p><!--l. 2038--><p class="indent" > The <span +class="cmtt-10">\glspostlinkhook </span>provided by the <span +class="cmss-10">glossaries </span>package to insert information +after the <a + id="dx1-8030"></a><a +href="#glo:linktext">link-text</a> produced by commands like <span +class="cmtt-10">\gls </span>and <span +class="cmtt-10">\glstext </span>is redefined +to +</p><!--l. 2041--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlinkhook</span><span +class="cmtt-9"> </span></span><a + id="dx1-8031"></a> <span +class="cmtt-10">\glsxtrpostlinkhook </span></div><hr> +</p><!--l. 2043--><p class="noindent" > +This command will discard a following full stop (period) if the <a +href="#catattr.discardperiod"><span +class="cmss-10">discardperiod</span></a><a + id="dx1-8032"></a> attribute +is set to “true” for the current entry’s category. It will also do +</p><!--l. 2047--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlink</span><span +class="cmtt-9"> </span></span><a + id="dx1-8033"></a> <span +class="cmtt-10">\glsxtrpostlink </span></div><hr> +</p><!--l. 2049--><p class="noindent" > +if a full stop hasn’t be discarded and +</p><!--l. 2051--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlinkendsentence</span><span +class="cmtt-9"> </span></span><a + id="dx1-8034"></a> <span +class="cmtt-10">\glsxtrpostlinkendsentence </span></div><hr> +</p><!--l. 2053--><p class="noindent" > +if a full stop has been discarded. +</p><!--l. 2056--><p class="indent" > It may be that you want to check some other setting (rather than a category +attribute) to determine whether or not to discard a following full stop. In which case +you can redefine: +</p><!--l. 2059--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifcustomdiscardperiod</span><span +class="cmtt-9"> </span></span><a + id="dx1-8035"></a> <span +class="cmtt-10">\glsxtrifcustomdiscardperiod{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2061--><p class="noindent" > +You can access the field’s label using <span +class="cmtt-10">\glslabel</span>. This command should do ⟨<span +class="cmti-10">true</span>⟩ if the +post-link hook should check if a period follows and ⟨<span +class="cmti-10">false</span>⟩ otherwise. The default +definition is simply: + + + +</p> + <div class="verbatim" id="verbatim-52"> +\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2} +</div> +<!--l. 2068--><p class="nopar" > which means that no additional checks are performed. (Only the recognised category +attributes will be checked.) +</p><!--l. 2072--><p class="indent" > <div class="important" title="Important Note"> Avoid the use of <span +class="cmtt-10">\gls</span>-like and <span +class="cmtt-10">\glstext</span>-like commands within the +post-link hook as they will cause interference. Consider using commands like +<span +class="cmtt-10">\glsentrytext</span>, <span +class="cmtt-10">\glsaccesstext </span>or <span +class="cmtt-10">\glsxtrp </span>(<a +href="#sec:nested"><span +class="cmsy-10">§</span>2.7 </a><a +href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a>) instead. +</div> +</p><!--l. 2077--><p class="noindent" > +</p><!--l. 2079--><p class="indent" > By default <span +class="cmtt-10">\glsxtrpostlink </span>just does <span +class="cmtt-10">\glsxtrpostlink</span>⟨<span +class="cmti-10">category</span>⟩<a + id="dx1-8036"></a> if +it exists, where ⟨<span +class="cmti-10">category</span>⟩ is the category label for the current entry. (For +example, for the <span +class="cmss-10">general</span><a + id="dx1-8037"></a> category, <span +class="cmtt-10">\glsxtrpostlinkgeneral </span>if it has been +defined.) +</p><!--l. 2084--><p class="indent" > You can define the post-link hook command using <span +class="cmtt-10">\newcommand</span>, for +example: + + + +</p> + <div class="verbatim" id="verbatim-53"> +\newcommand*{\glsxtrpostlinkgeneral}{% + <br /> \glsxtrpostlinkAddDescOnFirstUse + <br />} +</div> +<!--l. 2090--><p class="nopar" > or, as from v1.31, you can use +</p><!--l. 2092--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsdefpostlink</span><span +class="cmtt-9"> </span></span><a + id="dx1-8038"></a> <span +class="cmtt-10">\glsdefpostlink{</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2094--><p class="noindent" > +This is simply a shortcut for: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\csdef</span><span +class="cmsy-10">{</span><span +class="cmtt-10">glsxtrpostlink</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> Note that it doesn’t check if the command has already been defined. +<!--l. 2102--><p class="indent" > The sentence-ending hook is slightly more complicated. If the command +<span +class="cmtt-10">\glsxtrpostlink</span>⟨<span +class="cmti-10">category</span>⟩<a + id="dx1-8039"></a> is defined the hook will do that and then insert a +full stop with the space factor adjusted to match the end of sentence. If +<span +class="cmtt-10">\glsxtrpostlink</span>⟨<span +class="cmti-10">category</span>⟩<a + id="dx1-8040"></a> 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. +</p><!--l. 2115--><p class="indent" > There are some convenient commands you might want to use when customizing +the post-<a + id="dx1-8041"></a><a +href="#glo:linktext">link-text</a> category hooks: +</p><!--l. 2117--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlinkAddDescOnFirstUse</span><span +class="cmtt-9"> </span></span><a + id="dx1-8042"></a> <span +class="cmtt-10">\glsxtrpostlinkAddDescOnFirstUse</span> +</div><hr> +</p><!--l. 2119--><p class="noindent" > +This will add the description in parentheses on <a + id="dx1-8043"></a><a +href="#glo:firstuse">first use</a>. +</p><!--l. 2122--><p class="indent" > For example, suppose you want to append the description in parentheses on <a + id="dx1-8044"></a>first +use for entries in the <span +class="cmss-10">symbol</span><a + id="dx1-8045"></a> category: + + + +</p> + <div class="verbatim" id="verbatim-54"> +\newcommand*{\glsxtrpostlinksymbol}{% + <br />  \glsxtrpostlinkAddDescOnFirstUse + <br />} +</div> +<!--l. 2129--><p class="nopar" > +</p><!--l. 2131--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlinkAddSymbolOnFirstUse</span><span +class="cmtt-9"> </span></span><a + id="dx1-8046"></a> <span +class="cmtt-10">\glsxtrpostlinkAddSymbolOnFirstUse</span> +</div><hr> +</p><!--l. 2133--><p class="noindent" > +This will append the symbol (if defined) in parentheses on <a + id="dx1-8047"></a><a +href="#glo:firstuse">first use</a>. (Does nothing if +the symbol hasn’t been set.) +</p><!--l. 2137--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostlinkAddSymbolDescOnFirstUse</span><span +class="cmtt-9"> </span></span><a + id="dx1-8048"></a> <span +class="cmtt-10">\glsxtrpostlinkAddSymbolDescOnFirstUse</span> +</div><hr> +</p><!--l. 2139--><p class="noindent" > +(New to v1.31.) On <a + id="dx1-8049"></a>first use, this will append <span +class="cmtt-10">\space</span>(⟨<span +class="cmti-10">symbol</span>⟩, ⟨<span +class="cmti-10">description</span>⟩) if the +symbol is defined otherwise it just appends <span +class="cmtt-10">\space</span>(⟨<span +class="cmti-10">description</span>⟩). +</p><!--l. 2145--><p class="indent" > If you want to provide your own custom format be aware that you can’t use +<span +class="cmtt-10">\ifglsused</span><a + id="dx1-8050"></a> within the post-<a + id="dx1-8051"></a><a +href="#glo:linktext">link-text</a> hook as by this point the <a + id="dx1-8052"></a><a +href="#glo:firstuseflag">first use flag</a> will have +been unset. Instead you can use +</p><!--l. 2148--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifwasfirstuse</span><span +class="cmtt-9"> </span></span><a + id="dx1-8053"></a> <span +class="cmtt-10">\glsxtrifwasfirstuse{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2150--><p class="noindent" > +This will do ⟨<span +class="cmti-10">true</span>⟩ if the last used entry was the <a + id="dx1-8054"></a>first use for that entry, otherwise it +will do ⟨<span +class="cmti-10">false</span>⟩. (Requires at least <span +class="cmss-10">glossaries </span>v4.19 to work properly.) This command is +locally set by commands like <span +class="cmtt-10">\gls</span>, so don’t rely on it outside of the post-<a + id="dx1-8055"></a>link-text +hook. +</p><!--l. 2158--><p class="indent" > <div class="important" title="Important Note"> Note that commands like <span +class="cmtt-10">\glsfirst</span><a + id="dx1-8056"></a> and <span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-8057"></a> fake <a + id="dx1-8058"></a>first use for the +benefit of the post-<a + id="dx1-8059"></a>link-text hooks by setting <span +class="cmtt-10">\glsxtrifwasfirstuse </span>to +<span +class="cmtt-10">\@firstoftwo</span>. (Although, depending on the styles in use, they may not exactly +match the text produced by <span +class="cmtt-10">\gls</span><a + id="dx1-8060"></a>-like commands on <a + id="dx1-8061"></a>first use.) However, the +<a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-8062"></a> style alters <span +class="cmtt-10">\glsxtrfull </span>so that it fakes non-<a + id="dx1-8063"></a>first use otherwise +the inline full format would include the footnote, which is inappropriate. +</div> +</p><!--l. 2167--><p class="noindent" > +</p><!--l. 2169--><p class="indent" > For example, if you want to place the description in a footnote after the <a + id="dx1-8064"></a>link-text +on <a + id="dx1-8065"></a>first use for the <span +class="cmss-10">general</span><a + id="dx1-8066"></a> category: + + + +</p> + <div class="verbatim" id="verbatim-55"> +\newcommand*{\glsxtrpostlinkgeneral}{% + <br />  \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}% + <br />} +</div> +<!--l. 2175--><p class="nopar" > +</p><!--l. 2177--><p class="indent" > The <a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-8067"></a> abbreviation style uses the post-<a + id="dx1-8068"></a><a +href="#glo:linktext">link-text</a> hook to place the +footnote after trailing punctuation characters. +</p><!--l. 2181--><p class="indent" > You can set the default options used by <span +class="cmtt-10">\glslink</span><a + id="dx1-8069"></a>, <span +class="cmtt-10">\gls</span><a + id="dx1-8070"></a> etc with: +</p><!--l. 2183--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetDefaultGlsOpts</span><span +class="cmtt-9"> </span></span><a + id="dx1-8071"></a> <span +class="cmtt-10">\GlsXtrSetDefaultGlsOpts{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2185--><p class="noindent" > +For example, if you mostly don’t want to index entries then you can do: + + + +</p> + <div class="verbatim" id="verbatim-56"> +\GlsXtrSetDefaultGlsOpts{noindex} +</div> +<!--l. 2190--><p class="nopar" > and then use, for example, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[noindex=false]{sample}</span></span></span> when you actually want +the location added to the <a + id="dx1-8072"></a><a +href="#glo:numberlist">number list</a>. These defaults may be overridden by other +settings (such as category attributes) in addition to any settings passed in the option +argument of commands like <span +class="cmtt-10">\glslink </span>and <span +class="cmtt-10">\gls</span>. +</p><!--l. 2197--><p class="indent" > Note that if you don’t want <span +class="cmti-10">any </span>indexing, just omit <span +class="cmtt-10">\makeglossaries </span>and +<span +class="cmtt-10">\printglossaries </span>(or analogous commands). If you want to adjust the +default for <span +class="cmss-10">wrgloss</span><a + id="dx1-8073"></a>, it’s better to do this by redefining <span +class="cmtt-10">\glsxtrinitwrgloss</span><a + id="dx1-8074"></a> +instead. +</p><!--l. 2203--><p class="indent" > <div class="important" title="Important Note"> <span +class="cmtt-10">\GlsXtrSetDefaultGlsOpts </span>doesn’t affect <span +class="cmtt-10">\glsadd</span>. </div> +</p><!--l. 2205--><p class="noindent" > +</p><!--l. 2207--><p class="indent" > If you want to change the default value of <span +class="cmss-10">format</span><a + id="dx1-8075"></a>, you can instead use: +</p><!--l. 2209--><p class="indent" > <hr><div title="Definition"> <span +class="cmtt-10">\GlsXtrSetDefaultNumberFormat{</span>⟨<span +class="cmti-10">format</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2211--><p class="noindent" > +This has the advantage of also working for <span +class="cmtt-10">\glsadd</span>. For example, if you +want all locations in the back matter to appear in italic (unless explicitly +overridden): + + + +</p> + <div class="verbatim" id="verbatim-57"> +\backmatter + <br />\GlsXtrSetDefaultNumberFormat{hyperit} +</div> +<!--l. 2218--><p class="nopar" > +</p><!--l. 2220--><p class="indent" > Commands like <span +class="cmtt-10">\gls</span><a + id="dx1-8076"></a> have star (<span +class="cmtt-10">*</span>) and plus (<span +class="cmtt-10">+</span>) modifiers as a short cut for +<span +class="cmtt-10">hyper=false </span>and <span +class="cmtt-10">hyper=true</span>. The <span +class="cmss-10">glossaries-extra </span>package provides a way to add a +third modifier, if required, using +</p><!--l. 2224--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetAltModifier</span><span +class="cmtt-9"> </span></span><a + id="dx1-8077"></a> <span +class="cmtt-10">\GlsXtrSetAltModifier{</span>⟨<span +class="cmitt-10">char</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2226--><p class="noindent" > +where ⟨<span +class="cmti-10">char</span>⟩ is the character used as the modifier and ⟨<span +class="cmti-10">options</span>⟩ is the default set of +options (which may be overridden). Note that ⟨<span +class="cmti-10">char</span>⟩ must be a single character (not a +UTF-8 character, unless you are using <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">Ǝ</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span> or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>). +</p><!--l. 2233--><p class="indent" > <div class="important" title="Important Note"> When choosing the character ⟨<span +class="cmti-10">char</span>⟩ take care of any changes in category code. +</div> +</p><!--l. 2236--><p class="noindent" > +</p><!--l. 2238--><p class="indent" > Example: + + + +</p> + <div class="verbatim" id="verbatim-58"> +\GlsXtrSetAltModifier{!}{noindex} +</div> +<!--l. 2241--><p class="nopar" > This means that <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls!{sample}</span></span></span> will be equivalent to <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[noindex]{sample}</span></span></span>. It’s +not possible to mix modifiers. For example, if you want to do + + + +</p> + <div class="verbatim" id="verbatim-59"> +\gls[noindex,hyper=false]{sample} +</div> +<!--l. 2247--><p class="nopar" > you can use <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls*[noindex]{sample}</span></span></span> or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls![hyper=false]{sample}</span></span></span> but you +can’t combine the <span +class="cmtt-10">* </span>and <span +class="cmtt-10">! </span>modifiers. +</p><!--l. 2252--><p class="indent" > <a + id="dx1-8078"></a><a +href="#glo:locationlist">Location lists</a> displayed with <span +class="cmtt-10">\printnoidxglossary </span>internally use +</p><!--l. 2254--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsnoidxdisplayloc</span><span +class="cmtt-9"> </span></span><a + id="dx1-8079"></a> <span +class="cmtt-10">\glsnoidxdisplayloc{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2256--><p class="noindent" > +This command is provided by <span +class="cmss-10">glossaries</span>, but is modified by <span +class="cmss-10">glossaries-extra </span>to check +for the start and end range formation identifiers <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">(</span></span></span> and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">)</span></span></span> which are discarded to +obtain the actual control sequence name that forms the location formatting +command. +</p><!--l. 2263--><p class="indent" > If the range identifiers aren’t present, this just uses +</p><!--l. 2264--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplaysingleloc</span><span +class="cmtt-9"> </span></span><a + id="dx1-8080"></a> <span +class="cmtt-10">\glsxtrdisplaysingleloc{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2266--><p class="noindent" > +otherwise it uses +</p><!--l. 2268--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplaystartloc</span><span +class="cmtt-9"> </span></span><a + id="dx1-8081"></a> <span +class="cmtt-10">\glsxtrdisplaystartloc{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2270--><p class="noindent" > +for the start of a range (where the identifier has been stripped from ⟨<span +class="cmti-10">format</span>⟩) +or +</p><!--l. 2273--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplayendloc</span><span +class="cmtt-9"> </span></span><a + id="dx1-8082"></a> <span +class="cmtt-10">\glsxtrdisplayendloc{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2275--><p class="noindent" > +for the end of a range (where the identifier has been stripped from ⟨<span +class="cmti-10">format</span>⟩). +</p><!--l. 2279--><p class="indent" > By default the start range command saves the format in +</p><!--l. 2280--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlocrangefmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-8083"></a> <span +class="cmtt-10">\glsxtrlocrangefmt </span></div><hr> +</p><!--l. 2282--><p class="noindent" > +and does <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmtt-10">\glsxtrdisplaysingleloc{</span>⟨<span +class="cmti-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">location</span>⟩<span +class="cmtt-10">}</span> + <br /><spacer type=vertical size=10></span> +(If the format is empty, it will be replaced with <span +class="cmtt-10">glsnumberformat</span>.) +</p><!--l. 2290--><p class="indent" > The end command checks that the format matches the start of the range, +does +</p><!--l. 2292--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplayendlochook</span><span +class="cmtt-9"> </span></span><a + id="dx1-8084"></a> <span +class="cmtt-10">\glsxtrdisplayendlochook{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2294--><p class="noindent" > +(which does nothing by default), followed by <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmtt-10">\glsxtrdisplaysingleloc{</span>⟨<span +class="cmti-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">location</span>⟩<span +class="cmtt-10">}</span> + <br /><spacer type=vertical size=10></span> +and then sets <span +class="cmtt-10">\glsxtrlocrangefmt </span>to empty. + + + +</p><!--l. 2301--><p class="indent" > This means that the list + + + +</p> + <div class="verbatim" id="verbatim-60"> +\glsnoidxdisplayloc{}{page}{(textbf}{1}, + <br />\glsnoidxdisplayloc{}{page}{textbf}{1}, + <br />\glsnoidxdisplayloc{}{page}{)textbf}{1}. +</div> +<!--l. 2306--><p class="nopar" > doesn’t display any differently from + + + +</p> + <div class="verbatim" id="verbatim-61"> +\glsnoidxdisplayloc{}{page}{textbf}{1}, + <br />\glsnoidxdisplayloc{}{page}{textbf}{1}, + <br />\glsnoidxdisplayloc{}{page}{textbf}{1}. +</div> +<!--l. 2312--><p class="nopar" > but it does make it easier to define your own custom list handler that can +accommodate the ranges. +</p><!--l. 2317--><p class="noindent" > +</p> +<!--l. 2317--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.4 </span> <a + id="sec:entrycountmods"></a>Entry Counting Modifications</h3> +<!--l. 2320--><p class="noindent" >If you are using <a + id="dx1-9001"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> you may find it more convenient to use the record +count commands described in <a +href="#sec:bib2gls"><span +class="cmsy-10">§</span>9 </a><a +href="#sec:bib2gls"><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a> +instead. +</p><!--l. 2324--><p class="indent" > The <span +class="cmtt-10">\glsenableentrycount</span><a + id="dx1-9002"></a> command is modified to allow for the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-9003"></a> +attribute. This means that you not only need to enable entry counting with +<span +class="cmtt-10">\glsenableentrycount</span>, but you also need to set the appropriate attribute (see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 +</a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>). +</p><!--l. 2330--><p class="indent" > For example, instead of just doing: + + + +</p> + <div class="verbatim" id="verbatim-62"> +\glsenableentrycount +</div> +<!--l. 2333--><p class="nopar" > you now need to do: + + + +</p> + <div class="verbatim" id="verbatim-63"> +\glsenableentrycount + <br />\glssetcategoryattribute{abbreviation}{entrycount}{1} +</div> +<!--l. 2338--><p class="nopar" > This will enable the entry counting for entries in the <span +class="cmss-10">abbreviation</span><a + id="dx1-9004"></a> category, but any +entries assigned to other categories will be unchanged. +</p><!--l. 2343--><p class="indent" > Further information about entry counting, including the new per-unit feature, is +described in <a +href="#sec:entrycount"><span +class="cmsy-10">§</span>6.1 </a><a +href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>. +</p><!--l. 2346--><p class="noindent" > +</p> +<!--l. 2346--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.5 </span> <a + id="sec:glsunset"></a>First Use Flag</h3> +<!--l. 2349--><p class="noindent" >The <span +class="cmss-10">glossaries </span>package provides +</p><!--l. 2351--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\ifglsused</span><a + id="dx1-10001"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2352--><p class="noindent" > +to determine whether or not an entry has been used. This requires the entry to have +been defined. If the entry is undefined, then the underlying boolean variable doesn’t +exist and so is neither true nor false. This command will produce an error with the +default <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=error</span><a + id="dx1-10002"></a> mode and a warning with <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-10003"></a> and, where +appropriate, displays ?? in the document text to denote an undefined reference. +With both modes, neither ⟨<span +class="cmti-10">true</span>⟩ nor ⟨<span +class="cmti-10">false</span>⟩ will be performed if ⟨<span +class="cmti-10">label</span>⟩ doesn’t +exist. +</p><!--l. 2363--><p class="indent" > The <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-10004"></a> option automatically implements <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-10005"></a> since no entries +will be defined until they have been selected by <a + id="dx1-10006"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. In this case, you may prefer +to use: +</p><!--l. 2367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfUnusedOrUndefined</span><span +class="cmtt-9"> </span></span><a + id="dx1-10007"></a> <span +class="cmtt-10">\GlsXtrIfUnusedOrUndefined{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2369--><p class="noindent" > +(new to v1.34) which does ⟨<span +class="cmti-10">true</span>⟩ if the entry given by ⟨<span +class="cmti-10">label</span>⟩ is undefined or if +the entry is marked as unused. Remember that neither <span +class="cmtt-10">\ifglsused </span>nor +<span +class="cmtt-10">\GlsXtrIfUnusedOrUndefined </span>should be used in the post-link hook as the +<a + id="dx1-10008"></a><a +href="#glo:firstuseflag">first use flag</a> will have already been unset before the hook is performed. +(Instead, <span +class="cmtt-10">\glsxtrifwasfirstuse</span><a + id="dx1-10009"></a> should be used, see <a +href="#sec:entryfmtmods"><span +class="cmsy-10">§</span>2.3 </a><a +href="#sec:entryfmtmods">Entry Display Style +Modifications<!--tex4ht:ref: sec:entryfmtmods --></a>.) +</p><!--l. 2378--><p class="indent" > There are two new commands provided with version 1.31+: +</p><!--l. 2379--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslocalreseteach</span><span +class="cmtt-9"> </span></span><a + id="dx1-10010"></a> <span +class="cmtt-10">\glslocalreseteach{</span>⟨<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2381--><p class="noindent" > +and +</p><!--l. 2383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslocalunseteach</span><span +class="cmtt-9"> </span></span><a + id="dx1-10011"></a> <span +class="cmtt-10">\glslocalunseteach{</span>⟨<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2385--><p class="noindent" > +These behave like <span +class="cmtt-10">\glslocalreset </span>and <span +class="cmtt-10">\glslocalunset </span>but the argument is a + + + +comma-separated list of labels. +</p><!--l. 2389--><p class="indent" > The internal command used by <span +class="cmtt-10">\glsunset </span>is modified first to allow for the +changing in entry counting, described above, but also to allow for buffering pending +unsets when commands like <span +class="cmtt-10">\gls </span>are used in a context where changing a boolean +variable can cause things to go wrong. One example of this is using <span +class="cmtt-10">\gls </span>in one of +the commands provided with the <a + id="dx1-10012"></a>package. For example: + + + +</p> + <div class="verbatim" id="verbatim-64"> +\ul{Some text about \gls{html}.} +</div> +<!--l. 2398--><p class="nopar" > This causes the confusing error: + + + +</p> + <div class="verbatim" id="verbatim-65"> +Glossary entry `{html}' has not been defined. +</div> +<!--l. 2402--><p class="nopar" > The simplest workaround is to put <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{html}</span></span></span> inside the argument of <span +class="cmtt-10">\mbox</span>. For +example: + + + +</p> + <div class="verbatim" id="verbatim-66"> +\ul{Some text about \mbox{\gls{html}}.} +</div> +<!--l. 2407--><p class="nopar" > 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: + + + +</p> + <div class="verbatim" id="verbatim-67"> +! Package soul Error: Reconstruction failed. +</div> +<!--l. 2413--><p class="nopar" > The <span +class="cmss-10">glossaries-extra </span>package provides a way of temporarily switching off <span +class="cmtt-10">\glsunset</span> +so that it just makes a note of the entry’s label but doesn’t actually perform the +change: +</p><!--l. 2417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrStartUnsetBuffering</span><span +class="cmtt-9"> </span></span><a + id="dx1-10013"></a> <span +class="cmtt-10">\GlsXtrStartUnsetBuffering </span></div><hr> +</p><!--l. 2419--><p class="noindent" > +The unstarred version doesn’t check for duplicates, so the internal list may +end up with multiple occurrences of the same label. The starred version +only adds a label to the internal list if it’s not already in it. Note that this +buffering only applies to the global <span +class="cmtt-10">\glsunset </span>and does not affect the local +<span +class="cmtt-10">\glslocalunset</span>. +</p><!--l. 2427--><p class="indent" > Later you can restore <span +class="cmtt-10">\glsunset </span>and unset all buffered labels using: +</p><!--l. 2429--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrStopUnsetBuffering</span><span +class="cmtt-9"> </span></span><a + id="dx1-10014"></a> <span +class="cmtt-10">\GlsXtrStopUnsetBuffering </span></div><hr> +</p><!--l. 2431--><p class="noindent" > +The starred form <span +class="cmtt-10">\GlsXtrStopUnsetBuffering* </span>uses <span +class="cmtt-10">\glslocalunset </span>instead. For +example: + + + +</p> + <div class="verbatim" id="verbatim-68"> +\documentclass{article} + <br />\usepackage[T1]{fontenc} + <br />\usepackage{soul} + <br />\usepackage{glossaries-extra} + <br />\newabbreviation{html}{HTML}{hypertext markup language} + <br />\begin{document} + <br />\GlsXtrStartUnsetBuffering + <br />\ul{Some text about \mbox{\gls{html}}.} + <br />\GlsXtrStopUnsetBuffering + <br />Next use: \gls{html}. + <br />\end{document} +</div> +<!--l. 2450--><p class="nopar" > Before you stop the unset buffering, you can iterate over the current buffer +using +</p><!--l. 2453--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrForUnsetBufferedList</span><span +class="cmtt-9"> </span></span><a + id="dx1-10015"></a> <span +class="cmtt-10">\GlsXtrForUnsetBufferedList{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 2455--><p class="noindent" > +where ⟨<span +class="cmti-10">cs</span>⟩ is a control sequence that takes a single argument (which is the entry label). +This is best used with the starred version <span +class="cmtt-10">\GlsXtrStartUnsetBuffering* </span>to avoid +duplicates. +</p><!--l. 2460--><p class="indent" > <div class="important" title="Important Note"> Note that since the change in the first use flag now doesn’t occur until +<span +class="cmtt-10">\GlsXtrStopUnsetBuffering</span>, multiple references of the same term within the +buffering zone will always be treated as first use (if the term wasn’t used before the +buffering started). </div> +</p><!--l. 2466--><p class="noindent" > +</p><!--l. 2468--><p class="indent" > There can still be a problem here as content within <span +class="cmtt-10">\mbox </span>can’t break across a +line so you may end up with an overfull line or excessive white space within the +paragraph. +</p><!--l. 2472--><p class="indent" > An alternative is to use <span +class="cmtt-10">\protect</span>: + + + +</p> + <div class="verbatim" id="verbatim-69"> +\GlsXtrStartUnsetBuffering + <br />\ul{Some text about \protect\gls{html}.} + <br />\GlsXtrStopUnsetBuffering +</div> +<!--l. 2477--><p class="nopar" > but the formatting (underlining in this example) won’t be applied. Another +possibility is: + + + +</p> + <div class="verbatim" id="verbatim-70"> +\usepackage[T1]{fontenc} + <br />\usepackage{soul} + <br />\usepackage{glossaries-extra} + <br />\newabbreviation{html}{HTML}{hypertext markup language} + <br />\newrobustcmd{\gul}[1]{% + <br />  {% + <br />   \def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + <br />   \def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + <br />   #1% + <br />  }% + <br />} + <br />\begin{document} + <br />\ul{Some text about }\gls[textformat=gul]{html}. + <br />Next use: \gls{html}. + <br />\end{document} +</div> +<!--l. 2500--><p class="nopar" > This moves <span +class="cmtt-10">\gls </span>outside of <span +class="cmtt-10">\ul </span>and uses <span +class="cmss-10">textformat</span><a + id="dx1-10016"></a> to locally change the formatting +command used by <span +class="cmtt-10">\gls </span>(which is normally given by <span +class="cmtt-10">\glstextformat </span>or the +<a +href="#catattr.textformat"><span +class="cmss-10">textformat</span></a><a + id="dx1-10017"></a> attribute) to a custom command <span +class="cmtt-10">\gul</span>, which locally changes the regular +font and the default abbreviation font to use <span +class="cmtt-10">\ul</span>. It then uses +</p><!--l. 2507--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrExpandedFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-10018"></a> <span +class="cmtt-10">\GlsXtrExpandedFmt{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2509--><p class="noindent" > +which (protected) fully expands ⟨<span +class="cmti-10">text</span>⟩ before applying ⟨<span +class="cmti-10">cs</span>⟩, which must be a control +sequence that takes a single argument. This allows <span +class="cmtt-10">\ul </span>to move much further inside +and increases its chances of working. It can still break if ⟨<span +class="cmti-10">text</span>⟩ expands to +something that <span +class="cmtt-10">\ul </span>can’t deal with. For example, if an abbreviation style is used +that contains complex formatting or if the field value contains problematic +content. +</p><!--l. 2519--><p class="noindent" > +</p> +<!--l. 2519--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.6 </span> <a + id="plurals"></a>Plurals</h3> +<!--l. 2521--><p class="noindent" >Some languages, such as English, have a general rule that plurals are formed from +the singular with a suffix appended. This isn’t an absolute rule. There are +plenty of exceptions (for example, geese, children, churches, elves, fairies, +sheep). The <span +class="cmss-10">glossaries</span><a + id="dx1-11001"></a> package allows the <span +class="cmss-10">plural</span><a + id="dx1-11002"></a> key to be optional when +defining entries. In some cases a plural may not make any sense (for example, + + + +the term is a symbol) and in some cases the plural may be identical to the +singular. +</p><!--l. 2530--><p class="indent" > To make life easier for languages where the majority of plurals can simply be +formed by appending a suffix to the singular, the <span +class="cmss-10">glossaries</span><a + id="dx1-11003"></a> package lets the <span +class="cmss-10">plural</span><a + id="dx1-11004"></a> +field default to the value of the <span +class="cmss-10">text</span><a + id="dx1-11005"></a> field with <span +class="cmtt-10">\glspluralsuffix</span><a + id="dx1-11006"></a> appended. This +command is defined to be just the letter “s”. This means that the majority of terms +don’t need to have the <span +class="cmss-10">plural</span><a + id="dx1-11007"></a> supplied as well, and you only need to use it for the +exceptions. +</p><!--l. 2539--><p class="indent" > For languages that don’t have this general rule, the <span +class="cmss-10">plural</span><a + id="dx1-11008"></a> field will always need to +be supplied, where needed. +</p><!--l. 2542--><p class="indent" > There are other plural fields, such as <span +class="cmss-10">firstplural</span><a + id="dx1-11009"></a>, <span +class="cmss-10">longplural</span><a + id="dx1-11010"></a> and <span +class="cmss-10">shortplural</span><a + id="dx1-11011"></a>. Again, if +you are using a language that doesn’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). +</p><!--l. 2548--><p class="indent" > If these fields are omitted, the <span +class="cmss-10">glossaries</span><a + id="dx1-11012"></a> package follows these rules: </p> + <ul class="itemize1"> + <li class="itemize">If <span +class="cmss-10">firstplural</span><a + id="dx1-11013"></a> is missing, then <span +class="cmtt-10">\glspluralsuffix </span>is appended to the <span +class="cmss-10">first</span><a + id="dx1-11014"></a> + field, if that field has been supplied. If the <span +class="cmss-10">first</span><a + id="dx1-11015"></a> field hasn’t been supplied + but the <span +class="cmss-10">plural</span><a + id="dx1-11016"></a> field has been supplied, then the <span +class="cmss-10">firstplural</span><a + id="dx1-11017"></a> field defaults to + the <span +class="cmss-10">plural</span><a + id="dx1-11018"></a> field. If the <span +class="cmss-10">plural</span><a + id="dx1-11019"></a> field hasn’t been supplied, then both the <span +class="cmss-10">plural</span><a + id="dx1-11020"></a> + and <span +class="cmss-10">firstplural</span><a + id="dx1-11021"></a> fields default to the <span +class="cmss-10">text</span><a + id="dx1-11022"></a> field (or <span +class="cmss-10">name</span><a + id="dx1-11023"></a>, if no <span +class="cmss-10">text</span><a + id="dx1-11024"></a> field) with + <span +class="cmtt-10">\glspluralsuffix </span>appended. + </li> + <li class="itemize">If the <span +class="cmss-10">longplural</span><a + id="dx1-11025"></a> field is missing, then <span +class="cmtt-10">\glspluralsuffix </span>is appended to + the <span +class="cmss-10">long</span><a + id="dx1-11026"></a> field, if the <span +class="cmss-10">long</span><a + id="dx1-11027"></a> field has been supplied. + </li> + <li class="itemize">If the <span +class="cmss-10">shortplural</span><a + id="dx1-11028"></a> field is missing then, <span +class="cmti-10">with the base </span><span +class="cmssi-10">glossaries</span><a + id="dx1-11029"></a> <span +class="cmti-10">acronym</span> + <span +class="cmti-10">mechanism</span>, <span +class="cmtt-10">\acrpluralsuffix</span><a + id="dx1-11030"></a> is appended to the <span +class="cmss-10">short</span><a + id="dx1-11031"></a> field. + </li></ul> +<!--l. 2571--><p class="indent" > This <span +class="cmti-10">last case is changed </span>with <span +class="cmss-10">glossaries-extra</span>. With this extension package, the +<span +class="cmss-10">shortplural</span><a + id="dx1-11032"></a> field defaults to the <span +class="cmss-10">short</span><a + id="dx1-11033"></a> field with <span +class="cmtt-10">\abbrvpluralsuffix</span><a + id="dx1-11034"></a> appended +unless overridden by category attributes. This suffix command is set by the +abbreviation styles. This means that every time an abbreviation style is +implemented, <span +class="cmtt-10">\abbrvpluralsuffix </span>is redefined. In most cases its redefined to +use +</p><!--l. 2579--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrabbrvpluralsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-11035"></a> <span +class="cmtt-10">\glsxtrabbrvpluralsuffix </span></div><hr> +</p><!--l. 2581--><p class="noindent" > +which defaults to just <span +class="cmtt-10">\glspluralsuffix</span>. Some of the abbreviation styles have their +own command for the plural suffix, such as <span +class="cmtt-10">\glsxtrscsuffix</span>, so if you want to +completely strip all the plural suffixes used for abbreviations then you need to +redefine <span +class="cmtt-10">\glsxtrabbrvpluralsuffix </span><span +class="cmti-10">not </span><span +class="cmtt-10">\abbrvpluralsuffix</span>, which changes with +the style. Redefining <span +class="cmtt-10">\acrpluralsuffix </span>will have no affect, since it’s not used by the +new abbreviation mechanism. + + + +</p><!--l. 2591--><p class="indent" > If you require a mixture (for example, in a multilingual document), there are two +attributes that affect the short plural suffix formation. The first is <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-11036"></a> which +uses the suffix + + + +</p> + <div class="verbatim" id="verbatim-71"> +'\abbrvpluralsuffix +</div> +<!--l. 2596--><p class="nopar" > That is, an apostrophe followed by <span +class="cmtt-10">\abbrvpluralsuffix </span>is appended. The second +attribute is <a +href="#catattr.noshortplural"><span +class="cmss-10">noshortplural</span></a><a + id="dx1-11037"></a> which suppresses the suffix and simply sets <span +class="cmss-10">shortplural</span><a + id="dx1-11038"></a> to the +same as <span +class="cmss-10">short</span><a + id="dx1-11039"></a>. +</p><!--l. 2602--><p class="noindent" > +</p> +<!--l. 2602--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.7 </span> <a + id="sec:nested"></a>Nested Links</h3> +<!--l. 2605--><p class="noindent" >Complications arise when you use <span +class="cmtt-10">\gls</span><a + id="dx1-12001"></a> in the value of the <span +class="cmss-10">name</span><a + id="dx1-12002"></a> field (or <span +class="cmss-10">text</span><a + id="dx1-12003"></a> or <span +class="cmss-10">first</span><a + id="dx1-12004"></a> +fields, if set). This tends to occur with abbreviations that extend other abbreviations. +For example, SHTML is an abbreviation for SSI enabled HTML, where SSI is an +abbreviation for Server Side Includes and HTML is an abbreviation for Hypertext +Markup Language. +</p><!--l. 2613--><p class="indent" > Things can go wrong if we try the following with the <span +class="cmss-10">glossaries </span>package: + + + +</p> + <div class="verbatim" id="verbatim-72"> +\newacronym{ssi}{SSI}{Server Side Includes} + <br />\newacronym{html}{HTML}{Hypertext Markup Language} + <br />\newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}} +</div> +<!--l. 2619--><p class="nopar" > +</p><!--l. 2621--><p class="indent" > The main problems are: + </p><ol class="enumerate1" > + <li + class="enumerate" id="x1-12006x1"><a + id="itm:nestedfirstucprob"></a> The first letter upper casing commands, such as <span +class="cmtt-10">\Gls</span><a + id="dx1-12007"></a>, won’t work for the + <span +class="cmtt-10">shtml </span>entry on <a + id="dx1-12008"></a><a +href="#glo:firstuse">first use</a> if the long form is displayed before the short + form (which is the default abbreviation style). This will attempt to + do + + + + <div class="verbatim" id="verbatim-73"> + \gls{\uppercase ssi} enabled \gls{html} +</div> + <!--l. 2629--><p class="nopar" > which just doesn’t work. Grouping the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{ssi}</span></span></span> doesn’t work either as this + will effectively try to do + + + +</p> + <div class="verbatim" id="verbatim-74"> + \uppercase{\gls{ssi}} enabled \gls{html} +</div> + <!--l. 2634--><p class="nopar" > This will upper case the label <span +class="cmtt-10">ssi </span>so the entry won’t be recognised. + This problem will also occur if you use the all capitals version, such as + <span +class="cmtt-10">\GLS</span><a + id="dx1-12009"></a>. + </p></li> + <li + class="enumerate" id="x1-12011x2"><a + id="itm:nonexpandprob"></a> The long and abbreviated forms accessed through <span +class="cmtt-10">\glsentrylong</span><a + id="dx1-12012"></a> and + <span +class="cmtt-10">\glsentryshort</span><a + id="dx1-12013"></a> are no longer expandable and so can’t be used be used in + contexts that require this, such as PDF bookmarks. + </li> + <li + class="enumerate" id="x1-12015x3"><a + id="itm:nestedsortprob"></a> The nested commands may end up in the <span +class="cmss-10">sort</span><a + id="dx1-12016"></a> key, which will confuse the + indexing. + </li> + <li + class="enumerate" id="x1-12018x4"><a + id="itm:inconsistentfirstuseprob"></a> The <span +class="cmtt-10">shtml </span>entry produces inconsistent results depending on whether the <span +class="cmtt-10">ssi</span> + or <span +class="cmtt-10">html </span>entries have been used. Suppose both <span +class="cmtt-10">ssi </span>and <span +class="cmtt-10">html </span>are used before + <span +class="cmtt-10">shtml</span>. For example: + + + + <div class="verbatim" id="verbatim-75"> + This section discusses \gls{ssi}, \gls{html} and \gls{shtml}. +</div> + <!--l. 2653--><p class="nopar" > This produces: + </p><div class="quote"> + <!--l. 2656--><p class="noindent" >This section discusses server side includes (SSI), hypertext + markup language (HTML) and SSI enabled HTML (SHTML).</p></div> + <!--l. 2659--><p class="noindent" >So the <a + id="dx1-12019"></a><a +href="#glo:firstuse">first use</a> of the <span +class="cmtt-10">shtml </span>entry produces “SSI enabled HTML (SHTML)”. + </p><!--l. 2662--><p class="noindent" >Now let’s suppose the <span +class="cmtt-10">html </span>entry is used before the <span +class="cmtt-10">shtml </span>but the <span +class="cmtt-10">ssi </span>entry is + used after the <span +class="cmtt-10">shtml </span>entry, for example: + + + +</p> + <div class="verbatim" id="verbatim-76"> + The sample files are either \gls{html} or \gls{shtml}, but let's +  <br />first discuss \gls{ssi}. +</div> + <!--l. 2668--><p class="nopar" > This produces: + </p><div class="quote"> + <!--l. 2671--><p class="noindent" >The sample files are either hypertext markup language (HTML) + or server side includes (SSI) enabled HTML (SHTML), but let’s + first discuss SSI.</p></div> + <!--l. 2676--><p class="noindent" >So the <a + id="dx1-12020"></a><a +href="#glo:firstuse">first use</a> of the <span +class="cmtt-10">shtml </span>entry now produces “server side includes (SSI) + enabled HTML (SHTML)”, which looks a bit strange. + </p><!--l. 2680--><p class="noindent" >Now let’s suppose the <span +class="cmtt-10">shtml </span>entry is used before (or without) the other two + entries: + + + +</p> + <div class="verbatim" id="verbatim-77"> + This article is an introduction to \gls{shtml}. +</div> + <!--l. 2684--><p class="nopar" > This produces: + </p><div class="quote"> + <!--l. 2687--><p class="noindent" >This article is an introduction to server side includes (SSI) + enabled hypertext markup language (HTML) (SHTML).</p></div> + <!--l. 2690--><p class="noindent" >So the <a + id="dx1-12021"></a><a +href="#glo:firstuse">first use</a> of the <span +class="cmtt-10">shtml </span>entry now produces “server side includes (SSI) + enabled hypertext markup language (HTML) (SHTML)”, which is even more + strange. + </p><!--l. 2694--><p class="noindent" >This is all aggravated by setting the style using the <span +class="cmss-10">glossaries </span>package’s + <span +class="cmtt-10">\setacronymstyle</span>. For example: + + + +</p> + <div class="verbatim" id="verbatim-78"> + \setacronymstyle{long-short} +</div> + <!--l. 2699--><p class="nopar" > as this references the label through the use of <span +class="cmtt-10">\glslabel </span>when displaying the + long and short forms, but this value changes with each use of <span +class="cmtt-10">\gls</span>, so + instead of displaying “(SHTML)” at the end of the <a + id="dx1-12022"></a><a +href="#glo:firstuse">first use</a>, it now + displays “(HTML)”, since <span +class="cmtt-10">\glslabel </span>has been changed to <span +class="cmtt-10">html </span>by + <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{html}</span></span></span>. + </p><!--l. 2707--><p class="noindent" >Another oddity occurs if you reset the <span +class="cmtt-10">html </span>entry between uses of the <span +class="cmtt-10">shtml</span> + entry. For example: + + + +</p> + <div class="verbatim" id="verbatim-79"> + \gls{shtml} ... \glsreset{html}\gls{shtml} +</div> + <!--l. 2711--><p class="nopar" > The next use of <span +class="cmtt-10">shtml </span>produces “Shypertext markup language (HTML)”, + which is downright weird. + </p><!--l. 2715--><p class="noindent" >Even without this, the short form has nested formatting commands, which + amount to <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\acronymfont{S\acronymfont{HTML}}</span></span></span>. This may not be a problem + for some styles, but if you use one of the “sm” styles (that use <span +class="cmtt-10">\textsmaller</span><a + id="dx1-12023"></a>), + this will produce an odd result. + </p></li> + <li + class="enumerate" id="x1-12025x5"><a + id="itm:indexingprob"></a> Each time the <span +class="cmtt-10">shtml </span>entry is used, the <span +class="cmtt-10">html </span>entry will also be indexed and + marked as used, and on <a + id="dx1-12026"></a><a +href="#glo:firstuse">first use</a> this will happen to both the <span +class="cmtt-10">ssi </span>and <span +class="cmtt-10">html</span> + entries. This kind of duplication in the location list isn’t usually particularly + helpful to the reader. + </li> + <li + class="enumerate" id="x1-12028x6"><a + id="itm:nestedhyplinkprob"></a> If <span +class="cmss-10">hyperref</span><a + id="dx1-12029"></a> is in use, you’ll get nested hyperlinks and there’s no consistent way + of dealing with this across the available PDF viewers. If on the <a + id="dx1-12030"></a>first + use case, the user clicks on the “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. + </li></ol> +<!--l. 2736--><p class="indent" > For these reasons it’s better to use the simple expandable commands +like <span +class="cmtt-10">\glsentrytext</span><a + id="dx1-12031"></a> or <span +class="cmtt-10">\glsentryshort</span><a + id="dx1-12032"></a> in the definition of other entries +(although that doesn’t fix the first problem). Alternatively use something +like: + + + +</p> + <div class="verbatim" id="verbatim-80"> +\newacronym + <br /> [description={\acrshort{ssi} enabled \acrshort{html}}] + <br /> {shtml}{SHTML}{SSI enabled HTML} +</div> +<!--l. 2744--><p class="nopar" > with <span +class="cmss-10">glossaries </span>or: + + + +</p> + <div class="verbatim" id="verbatim-81"> +\newabbreviation + <br /> [description={\glsxtrshort{ssi} enabled \glsxtrshort{html}}] + <br /> {shtml}{SHTML}{SSI enabled HTML} +</div> +<!--l. 2750--><p class="nopar" > with <span +class="cmss-10">glossaries-extra</span>. This fixes all the above listed problems (as long as you don’t +use <span +class="cmtt-10">\glsdesc</span><a + id="dx1-12033"></a>). Note that replacing <span +class="cmtt-10">\gls </span>with <span +class="cmtt-10">\acrshort </span>in the original example +may fix the <a + id="dx1-12034"></a><a +href="#glo:firstuse">first use</a> issue, but it doesn’t fix any of the other problems listed +above. +</p><!--l. 2757--><p class="indent" > If it’s simply that you want to use the abbreviation font, you can use +<span +class="cmtt-10">\glsabbrvfont</span>: + + + +</p> + <div class="verbatim" id="verbatim-82"> +\setabbreviationstyle{long-short-sc} + <br />\newabbreviation{ssi}{ssi}{server-side includes} + <br />\newabbreviation{html}{html}{hypertext markup language} + <br />\newabbreviation{shtml}{shtml}{\glsabbrvfont{ssi} enabled + <br />\glsabbrvfont{html}} +</div> +<!--l. 2766--><p class="nopar" > This will pick up the font style setting of the outer entry (shtml, in the above case). +This isn’t a problem in the above example as all the abbreviations use the same +style. +</p><!--l. 2771--><p class="indent" > However if you’re really determined to use <span +class="cmtt-10">\gls</span><a + id="dx1-12035"></a> in a field that may be included +within some <a + id="dx1-12036"></a><a +href="#glo:linktext">link-text</a>, <span +class="cmss-10">glossaries-extra </span>patches internals used by the linking commands +so that if <span +class="cmtt-10">\gls </span>(or plural or case changing variants) occurs in the <a + id="dx1-12037"></a>link-text it will +behave as though you used <span +class="cmtt-10">\glstext</span><a + id="dx1-12038"></a><span +class="cmtt-10">[hyper=false,noindex] </span>instead. Grouping is +also added so that, for example, when <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{shtml}</span></span></span> is used for the first time the long +form + + + +</p> + <div class="verbatim" id="verbatim-83"> +\gls{ssi} enabled \gls{html} +</div> +<!--l. 2782--><p class="nopar" > is treated as + + + +</p> + <div class="verbatim" id="verbatim-84"> +{\glstext[hyper=false,noindex]{ssi}} enabled + <br />{\glstext[hyper=false,noindex]{html}} +</div> +<!--l. 2787--><p class="nopar" > This overcomes problems <a +href="#itm:inconsistentfirstuseprob">4<!--tex4ht:ref: itm:inconsistentfirstuseprob --></a>, <a +href="#itm:indexingprob">5<!--tex4ht:ref: itm:indexingprob --></a> and <a +href="#itm:nestedhyplinkprob">6<!--tex4ht:ref: itm:nestedhyplinkprob --></a> listed above, but still doesn’t fix problems <a +href="#itm:nestedfirstucprob">1<!--tex4ht:ref: itm:nestedfirstucprob --></a> +and <a +href="#itm:nonexpandprob">2<!--tex4ht:ref: itm:nonexpandprob --></a>. Problem <a +href="#itm:nestedsortprob">3<!--tex4ht:ref: itm:nestedsortprob --></a> usually won’t be an issue as most abbreviation styles set the <span +class="cmss-10">sort</span><a + id="dx1-12039"></a> +key to the short form, so using these commands in the long form but not the short +form will only affect entries with a style that sorts according to the long form (such +as <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-12040"></a>). +</p><!--l. 2798--><p class="indent" > Additionally, any instance of the long form commands, such as <span +class="cmtt-10">\glsxtrlong</span><a + id="dx1-12041"></a> or +<span +class="cmtt-10">\acrlong</span><a + id="dx1-12042"></a> will be temporarily redefined to just use </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmsy-10">{</span><span +class="cmtt-10">\glsentrylong</span><a + id="dx1-12043"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmsy-10">}</span> +</div> +</div> (or case-changing versions). Similarly the short form commands, such as +<span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-12044"></a> or <span +class="cmtt-10">\acrshort</span><a + id="dx1-12045"></a> will use <span +class="cmtt-10">\glsentryshort</span><a + id="dx1-12046"></a> in the argument of either +<span +class="cmtt-10">\glsabbrvfont </span>(for <span +class="cmtt-10">\glsxtrshort</span>) or <span +class="cmtt-10">\acronymfont </span>(for <span +class="cmtt-10">\acrshort</span>). So if the +<span +class="cmtt-10">shtml </span>entry had instead been defined as: + + + + <div class="verbatim" id="verbatim-85"> +\newacronym{shtml}{SHTML}{\acrshort{ssi} enabled \acrshort{html}} +</div> +<!--l. 2811--><p class="nopar" > then (using the <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-12047"></a> style) the <a + id="dx1-12048"></a><a +href="#glo:firstuse">first use</a> will be like + + + +</p> + <div class="verbatim" id="verbatim-86"> +{\acronymfont{\glsentryshort{ssi}}} enabled + <br />{\acronymfont{\glsentryshort{html}}} (SHTML) +</div> +<!--l. 2817--><p class="nopar" > whereas if the entry is defined as: + + + +</p> + <div class="verbatim" id="verbatim-87"> +\newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi} enabled + <br />\glsxtrshort{html}} +</div> +<!--l. 2822--><p class="nopar" > then the <a + id="dx1-12049"></a><a +href="#glo:firstuse">first use</a> will be like: + + + +</p> + <div class="verbatim" id="verbatim-88"> +{\glsabbrvfont{\glsentryshort{ssi}}} enabled + <br />{\glsabbrvfont{\glsentryshort{html}}} (SHTML) +</div> +<!--l. 2827--><p class="nopar" > Note that the first optional argument of <span +class="cmtt-10">\acrshort </span>or <span +class="cmtt-10">\glsxtrshort </span>is ignored in +this context. (The final optional argument will be inserted, if present.) The +abbreviation style that governs <span +class="cmtt-10">\glsabbrvfont</span><a + id="dx1-12050"></a> will be set for <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-12051"></a>. Note +that <span +class="cmtt-10">\acrshort </span>doesn’t set the abbreviation style. +</p><!--l. 2835--><p class="indent" > Alternatively you can use: +</p><!--l. 2836--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrp</span><span +class="cmtt-9"> </span></span><a + id="dx1-12052"></a> <span +class="cmtt-10">\glsxtrp{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2838--><p class="noindent" > +where ⟨<span +class="cmti-10">field</span>⟩ is the field label and corresponds to a command in the form <span +class="cmtt-10">\gls</span>⟨<span +class="cmti-10">field</span>⟩ +(e.g. <span +class="cmtt-10">\glstext</span>) or in the form <span +class="cmtt-10">\glsxtr</span>⟨<span +class="cmti-10">field</span>⟩ (e.g. <span +class="cmtt-10">\glsxtrshort</span>). +</p><!--l. 2843--><p class="indent" > There’s a shortcut command for the most common fields: +</p><!--l. 2844--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsps</span><span +class="cmtt-9"> </span></span><a + id="dx1-12053"></a> <span +class="cmtt-10">\glsps{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2846--><p class="noindent" > +which is equivalent to <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrp{short}</span></span></span><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>, and +</p><!--l. 2848--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glspt</span><span +class="cmtt-9"> </span></span><a + id="dx1-12054"></a> <span +class="cmtt-10">\glspt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2850--><p class="noindent" > +which is equivalent to <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrp{text}</span></span></span><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. +</p><!--l. 2853--><p class="indent" > The <span +class="cmtt-10">\glsxtrp </span>command behaves much like the <span +class="cmtt-10">\glsfmt</span>⟨<span +class="cmti-10">field</span>⟩ commands described +in <a +href="#sec:headtitle"><span +class="cmsy-10">§</span>4 </a><a +href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and Contents<!--tex4ht:ref: sec:headtitle --></a> but the post-link +hook is also suppressed and extra grouping is added. It automatically sets +<span +class="cmss-10">hyper</span><a + id="dx1-12055"></a> to <span +class="cmtt-10">false </span>and <span +class="cmss-10">noindex</span><a + id="dx1-12056"></a> to <span +class="cmtt-10">true</span>. If you want to change this, you can +use +</p><!--l. 2860--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetpopts</span><span +class="cmtt-9"> </span></span><a + id="dx1-12057"></a> <span +class="cmtt-10">\glsxtrsetpopts{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2862--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-89"> +\glsxtrsetpopts{hyper=false} +</div> +<!--l. 2866--><p class="nopar" > will just switch off the hyperlinks but not the indexing. Be careful using +this command or you can end up back to the original problem of nested +links. +</p><!--l. 2871--><p class="indent" > The hyper link is re-enabled within glossaries. This is done through the +command: +</p><!--l. 2873--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glossxtrsetpopts</span><span +class="cmtt-9"> </span></span><a + id="dx1-12058"></a> <span +class="cmtt-10">\glossxtrsetpopts </span></div><hr> +</p><!--l. 2875--><p class="noindent" > +which by default just does + + + +</p> + <div class="verbatim" id="verbatim-90"> +\glsxtrsetpopts{noindex} +</div> +<!--l. 2879--><p class="nopar" > You can redefine this if you want to adjust the setting when <span +class="cmtt-10">\glsxtrp </span>is used in the +glossary. For example: + + + +</p> + <div class="verbatim" id="verbatim-91"> +\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}} +</div> +<!--l. 2884--><p class="nopar" > +</p><!--l. 2886--><p class="indent" > For example, + + + +</p> + <div class="verbatim" id="verbatim-92"> +\glsxtrp{short}{ssi} +</div> +<!--l. 2889--><p class="nopar" > is equivalent to + + + +</p> + <div class="verbatim" id="verbatim-93"> +{\let\glspostlinkhook\relax + <br /> \glsxtrshort[hyper=false,noindex]{ssi}[]% + <br />} +</div> +<!--l. 2895--><p class="nopar" > in the main body of the document or + + + +</p> + <div class="verbatim" id="verbatim-94"> +{\let\glspostlinkhook\relax + <br /> \glsxtrshort[noindex]{ssi}[]% + <br />} +</div> +<!--l. 2901--><p class="nopar" > inside the glossary. (Note the post-link hook is locally disabled.) +</p><!--l. 2904--><p class="indent" > If <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrp{short}{ssi}</span></span></span> occurs in a sectioning mark, it’s equivalent +to + + + +</p> + <div class="verbatim" id="verbatim-95"> +{\glsxtrheadshort{ssi}} +</div> +<!--l. 2908--><p class="nopar" > (which recognises the <a +href="#catattr.headuc"><span +class="cmss-10">headuc</span></a><a + id="dx1-12059"></a> attribute.) +</p><!--l. 2911--><p class="indent" > If <span +class="cmss-10">hyperref</span><a + id="dx1-12060"></a> has been loaded, then the bookmark will use <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmti-10">field</span>⟩ +(<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsentryshort{ssi}</span></span></span> in the above example). +</p><!--l. 2915--><p class="indent" > There are similar commands +</p><!--l. 2916--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrp</span><span +class="cmtt-9"> </span></span><a + id="dx1-12061"></a> <span +class="cmtt-10">\Glsxtrp{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2918--><p class="noindent" > +for first letter upper case and +</p><!--l. 2920--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrp</span><span +class="cmtt-9"> </span></span><a + id="dx1-12062"></a> <span +class="cmtt-10">\GLSxtrp{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 2922--><p class="noindent" > +for all upper case. +</p><!--l. 2925--><p class="indent" > <div class="important" title="Important Note"> If you use any of the case-changing commands, such as <span +class="cmtt-10">\Gls</span><a + id="dx1-12063"></a> or <span +class="cmtt-10">\Glstext</span><a + id="dx1-12064"></a>, (either +all caps or first letter upper casing) don’t use any of the linking commands, such as +<span +class="cmtt-10">\gls</span><a + id="dx1-12065"></a> or <span +class="cmtt-10">\glstext</span><a + id="dx1-12066"></a>, in the definition of entries for any of the fields that may be used +by those case-changing commands. </div> +</p><!--l. 2931--><p class="noindent" > +</p><!--l. 2933--><p class="indent" > You can, with care, protect against issue <a +href="#itm:nestedfirstucprob">1<!--tex4ht:ref: itm:nestedfirstucprob --></a> by inserting an empty group at the +start if the long form starts with a command that breaks the first letter uppercasing +commands like <span +class="cmtt-10">\Gls</span>, but you still won’t be able to use the all caps commands, such +as <span +class="cmtt-10">\GLS</span>. +</p><!--l. 2939--><p class="indent" > If you <span +class="cmti-10">really need </span>nested commands, the safest method is + + + +</p> + <div class="verbatim" id="verbatim-96"> +\newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi} enabled + <br />\glsxtrp{short}{html}} +</div> +<!--l. 2943--><p class="nopar" > but be aware that it may have some unexpected results occasionally. +</p><!--l. 2946--><p class="indent" > Example document: + + + +</p> + <div class="verbatim" id="verbatim-97"> +\documentclass{report} + <br />\usepackage[utf8]{inputenc} + <br />\usepackage[T1]{fontenc} + <br />\usepackage{slantsc} + <br />\usepackage[colorlinks]{hyperref} + <br />\usepackage[nopostdot=false]{glossaries-extra} + <br />\makeglossaries + <br />\setabbreviationstyle{long-short-sc} + <br />\newabbreviation{ssi}{ssi}{server-side includes} + <br />\newabbreviation{html}{html}{hypertext markup language} + <br />\newabbreviation{shtml}{shtml}{{}\glsps{ssi} enabled {}\glsps{html}} + <br />\pagestyle{headings} + <br />\glssetcategoryattribute{abbreviation}{headuc}{true} + <br />\glssetcategoryattribute{abbreviation}{glossdesc}{title} + <br />\begin{document} + <br />\tableofcontents + <br />\chapter{\glsfmtfull{shtml}} + <br />First use: \gls{shtml}, \gls{ssi} and \gls{html}. + <br />Next use: \gls{shtml}, \gls{ssi} and \gls{html}. + <br />\newpage + <br />Next page. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 2984--><p class="nopar" > +</p><!--l. 2986--><p class="noindent" > +</p> +<!--l. 2986--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.8 </span> <a + id="sec:acronymmods"></a>Acronym Style Modifications</h3> + + + +<!--l. 2989--><p class="noindent" >The <span +class="cmss-10">glossaries-extra </span>package provides a new way of dealing with abbreviations and +redefines <span +class="cmtt-10">\newacronym</span><a + id="dx1-13001"></a> to use <span +class="cmtt-10">\newabbreviation </span>(see <a +href="#sec:abbreviations"><span +class="cmsy-10">§</span>3 </a><a +href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a>). The +simplest way to update a document that uses <span +class="cmtt-10">\newacronym </span>from <span +class="cmss-10">glossaries </span>to +<span +class="cmss-10">glossaries-extra </span>is do just add + + + +</p> + <div class="verbatim" id="verbatim-98"> +\setabbreviationstyle[acronym]{long-short} +</div> +<!--l. 2997--><p class="nopar" > before you define any entries. For example, the following document using just +<span +class="cmss-10">glossaries</span> + + + +</p> + <div class="verbatim" id="verbatim-99"> +\documentclass{article} + <br />\usepackage[acronym,nopostdot,toc]{glossaries} + <br />\makeglossaries + <br />\setacronymstyle{long-short} + <br />\newacronym{html}{HTML}{hypertext markup language} + <br />\begin{document} + <br />\gls{html} + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 3010--><p class="nopar" > can be easily adapted to use <span +class="cmss-10">glossaries-extra</span>: + + + +</p> + <div class="verbatim" id="verbatim-100"> +\documentclass{article} + <br />\usepackage[acronym]{glossaries-extra} + <br />\makeglossaries + <br />\setabbreviationstyle[acronym]{long-short} + <br />\newacronym{html}{HTML}{hypertext markup language} + <br />\begin{document} + <br />\gls{html} + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 3022--><p class="nopar" > Table <a +href="#tab:acrabbrvstyles">2.1<!--tex4ht:ref: tab:acrabbrvstyles --></a> lists the nearest equivalent <span +class="cmss-10">glossaries-extra </span>abbreviation styles for the +predefined acronym styles provided by <span +class="cmss-10">glossaries</span>, but note that the new styles use +different formatting commands. See <a +href="#sec:predefabbrvstyles"><span +class="cmsy-10">§</span>3.4 </a><a +href="#sec:predefabbrvstyles">Predefined Abbreviation Styles<!--tex4ht:ref: sec:predefabbrvstyles --></a> for further +details. +</p> + <div class="table"> + + + +<!--l. 3029--><p class="indent" > <a + id="tab:acrabbrvstyles"></a></p><hr class="float" /><div class="float" +> + + + + <div class="caption" +><span class="id">Table 2.1: </span><span +class="content">Old Acronym Styles <span +class="cmtt-10">\setacronymstyle{</span>⟨<span +class="cmti-10">old-style-name</span>⟩<span +class="cmtt-10">} </span>Verses +New Abbreviation Styles <span +class="cmtt-10">\setabbreviationstyle[</span>⟨<span +class="cmti-10">category</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmti-10">new-style-name</span>⟩<span +class="cmtt-10">}</span></span></div><!--tex4ht:label?: x1-130021 --> +<div class="tabular"> <table id="TBL-2" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-2-1g"><col +id="TBL-2-1" /><col +id="TBL-2-2" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1" +class="td01"><!--l. 3036--><p class="noindent" ><span +class="cmbx-10">Old Style Name</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-1-2" +class="td10"><!--l. 3037--><p class="noindent" ><span +class="cmbx-10">New Style Name</span> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1" +class="td01"><!--l. 3038--><p class="noindent" ><span +class="cmss-10">long-sc-short</span><a + id="dx1-13003"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2" +class="td10"><!--l. 3038--><p class="noindent" ><a +href="#abbrstyle.long-short-sc"><span +class="cmss-10">long-short-sc</span></a><a + id="dx1-13004"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:wrap; text-align:left;" id="TBL-2-3-1" +class="td01"><!--l. 3039--><p class="noindent" ><span +class="cmss-10">long-sm-short</span><a + id="dx1-13005"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-3-2" +class="td10"><!--l. 3039--><p class="noindent" ><a +href="#abbrstyle.long-short-sm"><span +class="cmss-10">long-short-sm</span></a><a + id="dx1-13006"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1" +class="td01"><!--l. 3040--><p class="noindent" ><span +class="cmss-10">long-sp-short</span><a + id="dx1-13007"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2" +class="td10"><!--l. 3040--><p class="noindent" ><a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-13008"></a> <br +class="newline" />with <span +class="cmtt-10">\renewcommand</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsxtrfullsep</span><span +class="cmsy-10">}</span><span +class="cmtt-10">[1]</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsacspace</span><span +class="cmsy-10">{</span><span +class="cmtt-10">#1</span><span +class="cmsy-10">}}</span> </p> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1" +class="td01"><!--l. 3042--><p class="noindent" ><span +class="cmss-10">short-long</span><a + id="dx1-13009"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2" +class="td10"><!--l. 3042--><p class="noindent" ><a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-13010"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1" +class="td01"><!--l. 3043--><p class="noindent" ><span +class="cmss-10">sc-short-long</span><a + id="dx1-13011"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2" +class="td10"><!--l. 3043--><p class="noindent" ><a +href="#abbrstyle.short-sc-long"><span +class="cmss-10">short-sc-long</span></a><a + id="dx1-13012"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1" +class="td01"><!--l. 3044--><p class="noindent" ><span +class="cmss-10">sm-short-long</span><a + id="dx1-13013"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2" +class="td10"><!--l. 3044--><p class="noindent" ><a +href="#abbrstyle.short-sm-long"><span +class="cmss-10">short-sm-long</span></a><a + id="dx1-13014"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1" +class="td01"><!--l. 3045--><p class="noindent" ><span +class="cmss-10">long-short-desc</span><a + id="dx1-13015"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-8-2" +class="td10"><!--l. 3045--><p class="noindent" ><a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-13016"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:wrap; text-align:left;" id="TBL-2-9-1" +class="td01"><!--l. 3046--><p class="noindent" ><span +class="cmss-10">long-sc-short-desc</span><a + id="dx1-13017"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-9-2" +class="td10"><!--l. 3046--><p class="noindent" ><a +href="#abbrstyle.long-short-sc-desc"><span +class="cmss-10">long-short-sc-desc</span></a><a + id="dx1-13018"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:wrap; text-align:left;" id="TBL-2-10-1" +class="td01"><!--l. 3047--><p class="noindent" ><span +class="cmss-10">long-sm-short-desc</span><a + id="dx1-13019"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-10-2" +class="td10"><!--l. 3047--><p class="noindent" ><a +href="#abbrstyle.long-short-sm-desc"><span +class="cmss-10">long-short-sm-desc</span></a><a + id="dx1-13020"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:wrap; text-align:left;" id="TBL-2-11-1" +class="td01"><!--l. 3048--><p class="noindent" ><span +class="cmss-10">long-sp-short-desc</span><a + id="dx1-13021"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-11-2" +class="td10"><!--l. 3048--><p class="noindent" ><a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-13022"></a> <br +class="newline" />with <span +class="cmtt-10">\renewcommand</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsxtrfullsep</span><span +class="cmsy-10">}</span><span +class="cmtt-10">[1]</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsacspace</span><span +class="cmsy-10">{</span><span +class="cmtt-10">#1</span><span +class="cmsy-10">}}</span> </p> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-12-"><td style="white-space:wrap; text-align:left;" id="TBL-2-12-1" +class="td01"><!--l. 3050--><p class="noindent" ><span +class="cmss-10">short-long-desc</span><a + id="dx1-13023"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-12-2" +class="td10"><!--l. 3050--><p class="noindent" ><a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-13024"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-13-"><td style="white-space:wrap; text-align:left;" id="TBL-2-13-1" +class="td01"><!--l. 3051--><p class="noindent" ><span +class="cmss-10">sc-short-long-desc</span><a + id="dx1-13025"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-13-2" +class="td10"><!--l. 3051--><p class="noindent" ><a +href="#abbrstyle.short-sc-long-desc"><span +class="cmss-10">short-sc-long-desc</span></a><a + id="dx1-13026"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-14-"><td style="white-space:wrap; text-align:left;" id="TBL-2-14-1" +class="td01"><!--l. 3052--><p class="noindent" ><span +class="cmss-10">sm-short-long-desc</span><a + id="dx1-13027"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-14-2" +class="td10"><!--l. 3052--><p class="noindent" ><a +href="#abbrstyle.short-sm-long-desc"><span +class="cmss-10">short-sm-long-desc</span></a><a + id="dx1-13028"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-15-"><td style="white-space:wrap; text-align:left;" id="TBL-2-15-1" +class="td01"><!--l. 3053--><p class="noindent" ><span +class="cmss-10">dua</span><a + id="dx1-13029"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-15-2" +class="td10"><!--l. 3053--><p class="noindent" ><a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-13030"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-16-"><td style="white-space:wrap; text-align:left;" id="TBL-2-16-1" +class="td01"><!--l. 3054--><p class="noindent" ><span +class="cmss-10">dua-desc</span><a + id="dx1-13031"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-16-2" +class="td10"><!--l. 3054--><p class="noindent" ><a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-13032"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-17-"><td style="white-space:wrap; text-align:left;" id="TBL-2-17-1" +class="td01"><!--l. 3055--><p class="noindent" ><span +class="cmss-10">footnote</span><a + id="dx1-13033"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-17-2" +class="td10"><!--l. 3055--><p class="noindent" ><a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-13034"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-18-"><td style="white-space:wrap; text-align:left;" id="TBL-2-18-1" +class="td01"><!--l. 3056--><p class="noindent" ><span +class="cmss-10">footnote-sc</span><a + id="dx1-13035"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-18-2" +class="td10"><!--l. 3056--><p class="noindent" ><a +href="#abbrstyle.short-sc-footnote"><span +class="cmss-10">short-sc-footnote</span></a><a + id="dx1-13036"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-19-"><td style="white-space:wrap; text-align:left;" id="TBL-2-19-1" +class="td01"><!--l. 3057--><p class="noindent" ><span +class="cmss-10">footnote-sm</span><a + id="dx1-13037"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-19-2" +class="td10"><!--l. 3057--><p class="noindent" ><a +href="#abbrstyle.short-sm-footnote"><span +class="cmss-10">short-sm-footnote</span></a><a + id="dx1-13038"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-20-"><td style="white-space:wrap; text-align:left;" id="TBL-2-20-1" +class="td01"><!--l. 3058--><p class="noindent" ><span +class="cmss-10">footnote-desc</span><a + id="dx1-13039"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-20-2" +class="td10"><!--l. 3058--><p class="noindent" ><a +href="#abbrstyle.short-footnote-desc"><span +class="cmss-10">short-footnote-desc</span></a><a + id="dx1-13040"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-21-"><td style="white-space:wrap; text-align:left;" id="TBL-2-21-1" +class="td01"><!--l. 3059--><p class="noindent" ><span +class="cmss-10">footnote-sc-desc</span><a + id="dx1-13041"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-21-2" +class="td10"><!--l. 3059--><p class="noindent" ><a +href="#abbrstyle.short-sc-footnote-desc"><span +class="cmss-10">short-sc-footnote-desc</span></a><a + id="dx1-13042"></a> </p></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-2-22-"><td style="white-space:wrap; text-align:left;" id="TBL-2-22-1" +class="td01"><!--l. 3060--><p class="noindent" ><span +class="cmss-10">footnote-sm-desc</span><a + id="dx1-13043"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-22-2" +class="td10"><!--l. 3060--><p class="noindent" ><a +href="#abbrstyle.short-sm-footnote-desc"><span +class="cmss-10">short-sm-footnote-desc</span></a><a + id="dx1-13044"></a> </p></td></tr></table></div> + + + + </div><hr class="endfloat" /> + </div> +<!--l. 3064--><p class="indent" > The reason for introducing the new style of abbreviation commands provided by +<span +class="cmss-10">glossaries-extra </span>is because the original acronym commands provided by <span +class="cmss-10">glossaries </span>are +too restrictive to work with the internal modifications made by <span +class="cmss-10">glossaries-extra</span>. +However, if you really want to restore the generic acronym function provided by +<span +class="cmss-10">glossaries </span>you can use +</p><!--l. 3071--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\RestoreAcronyms</span><span +class="cmtt-9"> </span></span><a + id="dx1-13045"></a> <span +class="cmtt-10">\RestoreAcronyms </span></div><hr> +</p><!--l. 3073--><p class="noindent" > +(before any use of <span +class="cmtt-10">\newacronym</span>). +</p><!--l. 3076--><p class="indent" > <span +class="cmtt-10">\RestoreAcronyms </span>should not be used in combination with the newer +<span +class="cmss-10">glossaries-extra </span>abbreviations. Don’t combine old and new style entries with the same +<span +class="cmss-10">type</span><a + id="dx1-13046"></a>. The original <span +class="cmss-10">glossaries </span>acronym mechanism doesn’t work well with the newer +<span +class="cmss-10">glossaries-extra </span>commands. +</p><!--l. 3082--><p class="indent" > <div class="important" title="Important Note"> If you use <span +class="cmtt-10">\RestoreAcronyms</span>, don’t use any of the commands provided by +<span +class="cmss-10">glossaries-extra </span>intended for abbreviations (such as <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-13047"></a> or <span +class="cmtt-10">\glsfmtshort</span><a + id="dx1-13048"></a>) +with entries defined via <span +class="cmtt-10">\newacronym</span><a + id="dx1-13049"></a> as it will cause unexpected results. +</div> +</p><!--l. 3088--><p class="noindent" > +</p><!--l. 3090--><p class="indent" > In general, there’s rarely any need for <span +class="cmtt-10">\RestoreAcronyms</span>. If you have a +document that uses <span +class="cmtt-10">\newacronymstyle</span><a + id="dx1-13050"></a>, then it’s best to either stick with just +<span +class="cmss-10">glossaries </span>for that document or define an equivalent abbreviation style with +<span +class="cmtt-10">\newabbreviationstyle</span><a + id="dx1-13051"></a>. (See <a +href="#sec:newabbrvstyle"><span +class="cmsy-10">§</span>3.5 </a><a +href="#sec:newabbrvstyle">Defining New Abbreviation Styles<!--tex4ht:ref: sec:newabbrvstyle --></a> for further +details.) +</p><!--l. 3097--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsacspace</span><span +class="cmtt-9"> </span></span><a + id="dx1-13052"></a> <span +class="cmtt-10">\glsacspace{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3099--><p class="noindent" > +The space command <span +class="cmtt-10">\glsacspace </span>used by the <span +class="cmss-10">long-sp-short</span><a + id="dx1-13053"></a> acronym style provided +by <span +class="cmss-10">glossaries </span>is modified so that it uses +</p><!--l. 3103--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsacspacemax</span><span +class="cmtt-9"> </span></span><a + id="dx1-13054"></a> <span +class="cmtt-10">\glsacspacemax </span></div><hr> +</p><!--l. 3105--><p class="noindent" > +instead of the hard-coded 3em. This is a command not a length and so can be +changed using <span +class="cmtt-10">\renewcommand</span>. +</p><!--l. 3109--><p class="indent" > Any of the new abbreviation styles that use <span +class="cmtt-10">\glsxtrfullsep</span><a + id="dx1-13055"></a> (such as <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-13056"></a>) +can easily be changed to use <span +class="cmtt-10">\glsacspace </span>with + + + +</p> + <div class="verbatim" id="verbatim-101"> +\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}} +</div> +<!--l. 3114--><p class="nopar" > +</p><!--l. 3116--><p class="indent" > The <a + id="dx1-13057"></a><a +href="#glo:firstuse">first use</a> acronym font command +</p><!--l. 3117--><p class="indent" > <hr><div title="Definition"> <span +class="cmtt-10">\firstacronymfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3119--><p class="noindent" > +is redefined to use the <a + id="dx1-13058"></a>first use abbreviation font command <span +class="cmtt-10">\glsfirstabbrvfont</span><a + id="dx1-13059"></a>. +This will be reset if you use <span +class="cmtt-10">\RestoreAcronyms</span>. +</p><!--l. 3124--><p class="indent" > The subsequent use acronym font command +</p><!--l. 3125--><p class="indent" > <hr><div title="Definition"> <span +class="cmtt-10">\acronymfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3127--><p class="noindent" > +is redefined to use the subsequent use abbreviation font command <span +class="cmtt-10">\glsabbrvfont</span><a + id="dx1-13060"></a>. +This will be reset if you use <span +class="cmtt-10">\RestoreAcronyms</span>. +</p> +<!--l. 3132--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.9 </span> <a + id="x1-140002.9"></a><span +class="cmss-10">glossary-bookindex </span>package</h3> +<!--l. 3135--><p class="noindent" >As from v1.21, <span +class="cmss-10">glossaries-extra </span>has a new supplementary package <span +class="cmss-10">glossary-bookindex</span><a + id="dx1-14001"></a> +which provides the glossary style <span +class="cmss-10">bookindex</span><a + id="dx1-14002"></a>. This is very similar to the <span +class="cmss-10">mcolindexgroup</span><a + id="dx1-14003"></a> +style but is designed for indexes, so by default only the name and location list +are displayed. You can either load this package explicitly and then set the +style: + + + +</p> + <div class="verbatim" id="verbatim-102"> +\usepackage{glossaries-extra} + <br />\usepackage{glossary-bookindex} + <br />\setglossarystyle{bookindex} +</div> +<!--l. 3145--><p class="nopar" > or use both the <a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><a + id="dx1-14004"></a> and <span +class="cmss-10">style</span><a + id="dx1-14005"></a> options: + + + +</p> + <div class="verbatim" id="verbatim-103"> +\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} +</div> +<!--l. 3149--><p class="nopar" > The <span +class="cmss-10">bookindex</span><a + id="dx1-14006"></a> style only supports a maximum hierarchical level of 2 (top-level, +level 1 and level 2). It’s primarily designed for use with <a + id="dx1-14007"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. It may be used +with other indexing options, but some features may not be present and UTF-8 +characters may cause a problem with non-Unicode engines in letter group +headings or PDF bookmarks. (<a + id="dx1-14008"></a><span +class="cmtt-10">bib2gls </span>uses numeric identifies by default to +avoid these problems. If numbers show up in the group headings instead of +the appropriate characters, check that you have used the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-14009"></a> package +option.) +</p><!--l. 3160--><p class="indent" > The number of columns is given by +</p><!--l. 3161--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexcols</span><span +class="cmtt-9"> </span></span><a + id="dx1-14010"></a> <span +class="cmtt-10">\glsxtrbookindexcols </span></div><hr> +</p><!--l. 3163--><p class="noindent" > +which defaults to 2. +</p><!--l. 3166--><p class="indent" > This style uses the <span +class="cmss-10">multicols</span><a + id="dx1-14011"></a><a + id="dx1-14012"></a> environment. If the command +</p><!--l. 3168--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexcolspread</span><span +class="cmtt-9"> </span></span><a + id="dx1-14013"></a> <span +class="cmtt-10">\glsxtrbookindexcolspread </span></div><hr> +</p><!--l. 3170--><p class="noindent" > +isn’t empty then it’s supplied as the optional argument following <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\begin{multicols}</span></span></span> +<span +class="cmtt-10">{</span>⟨<span +class="cmti-10">n</span>⟩<span +class="cmtt-10">}</span>. You can switch from <span +class="cmss-10">multicols</span><a + id="dx1-14014"></a><a + id="dx1-14015"></a> to <span +class="cmss-10">multicols*</span><a + id="dx1-14016"></a><a + id="dx1-14017"></a> by redefining +</p><!--l. 3174--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexmulticolsenv</span><span +class="cmtt-9"> </span></span><a + id="dx1-14018"></a> <span +class="cmtt-10">\glsxtrbookindexmulticolsenv </span></div><hr> +</p><!--l. 3176--><p class="noindent" > +For example + + + +</p> + <div class="verbatim" id="verbatim-104"> +\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +</div> +<!--l. 3180--><p class="nopar" > +</p><!--l. 3182--><p class="indent" > Each top-level entry is displayed using +</p><!--l. 3183--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexname</span><span +class="cmtt-9"> </span></span><a + id="dx1-14019"></a> <span +class="cmtt-10">\glsxtrbookindexname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3185--><p class="noindent" > +where the entry is identified by ⟨<span +class="cmti-10">label</span>⟩. This just does <span +class="cmtt-10">\glossentryname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>by +default. For example, if you want the symbol to be included: + + + +</p> + <div class="verbatim" id="verbatim-105"> +\renewcommand*{\glsxtrbookindexname}[1]{% + <br /> \glossentryname{#1}% + <br /> \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% + <br />} +</div> +<!--l. 3194--><p class="nopar" > or if you want the description (if set): + + + +</p> + <div class="verbatim" id="verbatim-106"> +\renewcommand*{\glsxtrbookindexname}[1]{% + <br /> \glossentryname{#1}% + <br /> \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% + <br />} +</div> +<!--l. 3201--><p class="nopar" > (which picks up the post-description hook). +</p><!--l. 3204--><p class="indent" > Alternatively you can use the <span +class="cmtt-10">\glsxtrpostname</span>⟨<span +class="cmitt-10">category</span>⟩ hook to append +information after the name according to the entry’s category. +</p><!--l. 3208--><p class="indent" > Sub-entries are displayed using +</p><!--l. 3209--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubname</span><span +class="cmtt-9"> </span></span><a + id="dx1-14020"></a> <span +class="cmtt-10">\glsxtrbookindexsubname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3211--><p class="noindent" > +which just defaults to <span +class="cmtt-10">\glsxtrbookindexname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. +</p><!--l. 3214--><p class="indent" > The separator used before the location list for top-level entries is given +by +</p><!--l. 3216--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-14021"></a> <span +class="cmtt-10">\glsxtrbookindexprelocation{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3218--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. This checks if the <span +class="cmtt-10">location </span>field has been set. If it +has, it does + + + +</p> + <div class="verbatim" id="verbatim-107"> +,\glsxtrprelocation +</div> +<!--l. 3224--><p class="nopar" > otherwise it just does <span +class="cmtt-10">\glsxtrprelocation </span>(which defaults to <span +class="cmtt-10">\space</span>). If you’re not +using <a + id="dx1-14022"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, the <span +class="cmss-10">location</span><a + id="dx1-14023"></a> field won’t be set. +</p><!--l. 3229--><p class="indent" > The separator used before the location list for sub-entries is given by +</p><!--l. 3231--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-14024"></a> <span +class="cmtt-10">\glsxtrbookindexsubprelocation{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3233--><p class="noindent" > +which defaults to <span +class="cmtt-10">\glsxtrbookindexprelocation{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. +</p><!--l. 3236--><p class="indent" > The actual location list is encapsulated with: +</p><!--l. 3237--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexlocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-14025"></a> <span +class="cmtt-10">\glsxtrbookindexlocation{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span> +<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3239--><p class="noindent" > +for top-level entries and +</p><!--l. 3241--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsublocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-14026"></a> <span +class="cmtt-10">\glsxtrbookindexsublocation{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">location list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3243--><p class="noindent" > +for sub-entries. These both just do ⟨<span +class="cmti-10">location list</span>⟩ by default. +</p><!--l. 3246--><p class="indent" > The separator used between a top-level parent and child entry is given +by +</p><!--l. 3248--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexparentchildsep</span><span +class="cmtt-9"> </span></span><a + id="dx1-14027"></a> <span +class="cmtt-10">\glsxtrbookindexparentchildsep</span> +</div><hr> +</p><!--l. 3250--><p class="noindent" > +This defaults to <span +class="cmtt-10">\nopagebreak</span>. +</p><!--l. 3253--><p class="indent" > The separator used between a sub-level parent and child entry is given +by +</p><!--l. 3255--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexparentsubchildsep</span><span +class="cmtt-9"> </span></span><a + id="dx1-14028"></a> <span +class="cmtt-10">\glsxtrbookindexparentsubchildsep</span> +</div><hr> +</p><!--l. 3257--><p class="noindent" > +This defaults to <span +class="cmtt-10">\glsxtrbookindexparentchildsep</span>. +</p><!--l. 3260--><p class="indent" > The separator between top-level entries is given by +</p><!--l. 3261--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexbetween</span><span +class="cmtt-9"> </span></span><a + id="dx1-14029"></a> <span +class="cmtt-10">\glsxtrbookindexbetween{</span>⟨<span +class="cmitt-10">label1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label2</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3263--><p class="noindent" > +This comes after the entry given by ⟨<span +class="cmti-10">label1</span>⟩, if the entry has no children, or after the +last descendent otherwise, so it always comes immediately before the entry given by +⟨<span +class="cmti-10">label2</span>⟩ unless the entry occurs at the start of a group. This does nothing by +default. +</p><!--l. 3270--><p class="indent" > The separator between two level 1 entries is given by +</p><!--l. 3271--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubbetween</span><span +class="cmtt-9"> </span></span><a + id="dx1-14030"></a> <span +class="cmtt-10">\glsxtrbookindexsubbetween{</span>⟨<span +class="cmitt-10">label1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label2</span>⟩<span +class="cmtt-10">}</span> +</div><hr> + + + +</p><!--l. 3273--><p class="noindent" > +</p><!--l. 3275--><p class="indent" > The separator between two level 2 entries is given by +</p><!--l. 3276--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubsubbetween</span><span +class="cmtt-9"> </span></span><a + id="dx1-14031"></a> <span +class="cmtt-10">\glsxtrbookindexsubsubbetween{</span>⟨<span +class="cmitt-10">label1</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label2</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3278--><p class="noindent" > +At the end of each letter group, the following hooks are done in order: +</p><!--l. 3281--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubsubatendgroup</span><span +class="cmtt-9"> </span></span><a + id="dx1-14032"></a> <span +class="cmtt-10">\glsxtrbookindexsubsubatendgroup</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">sub-sub-label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3283--><p class="noindent" > +</p><!--l. 3284--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexsubatendgroup</span><span +class="cmtt-9"> </span></span><a + id="dx1-14033"></a> <span +class="cmtt-10">\glsxtrbookindexsubatendgroup{</span>⟨<span +class="cmitt-10">sub-label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3286--><p class="noindent" > +</p><!--l. 3287--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexatendgroup</span><span +class="cmtt-9"> </span></span><a + id="dx1-14034"></a> <span +class="cmtt-10">\glsxtrbookindexatendgroup{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3289--><p class="noindent" > +where ⟨<span +class="cmti-10">sub-sub-label</span>⟩ is the label of the last level 2 entry, ⟨<span +class="cmti-10">sub-label</span>⟩ is the label of the +last level 1 entry and ⟨<span +class="cmti-10">label</span>⟩ is the label of the last level 0 entry. +</p><!--l. 3295--><p class="indent" > For example, the resource option <span +class="cmtt-10">seealso=omit </span>instructs <a + id="dx1-14035"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> to omit the +<span +class="cmtt-10">seealso </span>cross-reference from the location list. (The <span +class="cmtt-10">see </span>cross-reference will still be +added unless you also have <span +class="cmtt-10">see=omit</span>.) The <span +class="cmtt-10">seealso </span>cross-reference can instead be +appended after the child entries using: + + + +</p> + <div class="verbatim" id="verbatim-108"> +\renewcommand{\glsxtrbookindexatendgroup}[1]{% + <br />  \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% + <br />} + <br />\renewcommand{\glsxtrbookindexbetween}[2]{% + <br />  \glsxtrbookindexatendgroup{#1}% + <br />}% + <br />\renewcommand{\glsxtrbookindexsubatendgroup}[1]{% + <br />  \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% + <br />} + <br />\renewcommand{\glsxtrbookindexsubbetween}[2]{% + <br />  \glsxtrbookindexsubatendgroup{#1}% + <br />} + <br />\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% + <br />  \glsxtrifhasfield{seealso}{#1}% + <br />  {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% + <br />} + <br />\renewcommand{\glsxtrbookindexsubsubbetween}[2]{% + <br />  \glsxtrbookindexsubsubatendgroup{#1}% + <br />} +</div> +<!--l. 3325--><p class="nopar" > This uses <span +class="cmtt-10">\glstreesubitem </span>and <span +class="cmtt-10">\glstreesubsubitem </span>to indent the cross-reference +according to the next level down, so the cross-reference for a top-level entry is aligned +with the sub-entries, and a level 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 <span +class="cmss-10">bookindex</span><a + id="dx1-14036"></a> +style only supports a maximum of two sub-levels). +</p><!--l. 3336--><p class="indent" > The <span +class="cmss-10">bookindex</span><a + id="dx1-14037"></a> style uses group headings. (If you use <a + id="dx1-14038"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> remember to invoke +it with the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">--group</span></span></span> or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">-g</span></span></span> switch.) The heading will use +</p><!--l. 3339--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexbookmark</span><span +class="cmtt-9"> </span></span><a + id="dx1-14039"></a> <span +class="cmtt-10">\glsxtrbookindexbookmark{</span>⟨<span +class="cmitt-10">group title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3341--><p class="noindent" > +If <span +class="cmtt-10">\pdfbookmark </span>has been defined, this will use that command to bookmark the +group title. If <a +href="#styopt.section"><span +class="cmss-10">section</span></a><span +class="cmss-10">=chapter</span><a + id="dx1-14040"></a> is set (default if chapters are defined) then this +uses level 1 otherwise it uses level 2. You can redefine this command if this +isn’t appropriate. If <span +class="cmtt-10">\pdfbookmark </span>hasn’t been defined, this command does +nothin. +</p><!--l. 3349--><p class="indent" > The group heading is formatted according to +</p><!--l. 3350--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexformatheader</span><span +class="cmtt-9"> </span></span><a + id="dx1-14041"></a> <span +class="cmtt-10">\glsxtrbookindexformatheader{</span>⟨<span +class="cmitt-10">group title</span>⟩<span +class="cmtt-10">}</span> +</div><hr> + + + +</p><!--l. 3352--><p class="noindent" > +which is defined as + + + +</p> + <div class="verbatim" id="verbatim-109"> +\newcommand*{\glsxtrbookindexformatheader}[1]{% + <br />  \par{\centering\glstreegroupheaderfmt{#1}\par}% + <br />} +</div> +<!--l. 3358--><p class="nopar" > where <span +class="cmtt-10">\glstreegroupheaderfmt </span>is provided by the <span +class="cmss-10">glossary-tree</span><a + id="dx1-14042"></a> package, which is +automatically loaded. Note that the entry names aren’t encapsulated with +<span +class="cmtt-10">\glstreenamefmt</span>. +</p><!--l. 3364--><p class="indent" > The <span +class="cmss-10">glossary-bookindex</span><a + id="dx1-14043"></a> package provides some supplementary commands that +aren’t used by default, but may be used when adjusting the style. These commands +should only be used within one of the <span +class="cmtt-10">\print</span><span +class="cmtt-10">…glossary </span>commands. (That is, they +should only be used in glossary styles.) +</p><!--l. 3369--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexmarkentry</span><span +class="cmtt-9"> </span></span><a + id="dx1-14044"></a> <span +class="cmtt-10">\glsxtrbookindexmarkentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3371--><p class="noindent" > +This writes information to the <span +class="cmtt-10">.aux </span>file that can be read on the next run to obtain +the first and last entry on each page of the glossary. +</p><!--l. 3376--><p class="indent" > You can display the first entry associated with the current page using: +</p><!--l. 3378--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexfirstmark</span><span +class="cmtt-9"> </span></span><a + id="dx1-14045"></a> <span +class="cmtt-10">\glsxtrbookindexfirstmark </span></div><hr> +</p><!--l. 3380--><p class="noindent" > +and the last entry associated with the current page using: +</p><!--l. 3383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexlastmark</span><span +class="cmtt-9"> </span></span><a + id="dx1-14046"></a> <span +class="cmtt-10">\glsxtrbookindexlastmark </span></div><hr> +</p><!--l. 3385--><p class="noindent" > +These do nothing if there are no entries marked on the current page (or if the +document build isn’t up to date). +</p><!--l. 3389--><p class="indent" > The entry is formatted using: +</p><!--l. 3390--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexfirstmarkfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-14047"></a> <span +class="cmtt-10">\glsxtrbookindexfirstmarkfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3392--><p class="noindent" > +for the first instance and +</p><!--l. 3394--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrbookindexlastmarkfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-14048"></a> <span +class="cmtt-10">\glsxtrbookindexlastmarkfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3396--><p class="noindent" > +for the last. +</p><!--l. 3399--><p class="indent" > These commands are designed for use in page headers or footers where the page +number is stable. For example, <span +class="cmtt-10">\glsxtrbookindexname </span>can be redefined to mark the +current entry: + + + +</p> + <div class="verbatim" id="verbatim-110"> +\renewcommand{\glsxtrbookindexname}[1]{% + <br />  \glsxtrbookindexmarkentry{#1}% + <br />  \glossentryname{#1}% + <br />} +</div> +<!--l. 3407--><p class="nopar" > If you only want to mark the top-level entries, remember to redefine +<span +class="cmtt-10">\glsxtrbookindexsubname </span>as it defaults to <span +class="cmtt-10">\glsxtrbookindexname</span>: + + + +</p> + <div class="verbatim" id="verbatim-111"> +\renewcommand{\glsxtrbookindexsubname}[1]{% + <br />  \glossentryname{#1}% + <br />} +</div> +<!--l. 3415--><p class="nopar" > +</p><!--l. 3417--><p class="indent" > Then if you’re using <span +class="cmss-10">fancyhdr</span><a + id="dx1-14049"></a> you can set the page style to show the first and last +entry for the current page with: + + + +</p> + <div class="verbatim" id="verbatim-112"> +  \pagestyle{fancy}% + <br />  \lhead{\thepage}% + <br />  \lfoot{\glsxtrbookindexfirstmark}% + <br />  \cfoot{}% + <br />  \rfoot{\glsxtrbookindexlastmark}% +</div> +<!--l. 3425--><p class="nopar" > +</p><!--l. 3427--><p class="noindent" > +</p> +<!--l. 3427--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.10 </span> <a + id="x1-150002.10"></a><span +class="cmss-10">glossary-longextra </span>package</h3> +<!--l. 3430--><p class="noindent" >As from version 1.37, the <span +class="cmss-10">glossaries-extra </span>package comes with the supplementary +package <span +class="cmss-10">glossary-longextra</span><a + id="dx1-15001"></a> that provides additional styles, listed below, that use the +<span +class="cmss-10">longtable</span><a + id="dx1-15002"></a><a + id="dx1-15003"></a> environment. If you know that your glossary won’t span more than a page +and you need to use it in a context that’s incompatible with <span +class="cmss-10">longtable</span><a + id="dx1-15004"></a><a + id="dx1-15005"></a>, you can +instead setup these styles to use <span +class="cmss-10">tabular</span><a + id="dx1-15006"></a><a + id="dx1-15007"></a> instead. In order to do this you must +use +</p><!--l. 3437--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsLongExtraUseTabulartrue</span><span +class="cmtt-9"> </span></span><a + id="dx1-15008"></a> <span +class="cmtt-10">\GlsLongExtraUseTabulartrue </span></div><hr> +</p><!--l. 3439--><p class="noindent" > +<span +class="cmti-10">before the style is set</span>. For example: + + + +</p> + <div class="verbatim" id="verbatim-113"> +\GlsLongExtraUseTabulartrue + <br />\setglossarystyle{long-name-desc} +</div> +<!--l. 3444--><p class="nopar" > or + + + +</p> + <div class="verbatim" id="verbatim-114"> +\GlsLongExtraUseTabulartrue + <br />\printunsrtglossary[style={long-name-desc}] +</div> +<!--l. 3449--><p class="nopar" > If you use this setting, you can change the default vertical alignment with: +</p><!--l. 3452--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraTabularVAlign</span><span +class="cmtt-9"> </span></span><a + id="dx1-15009"></a> <span +class="cmtt-10">\glslongextraTabularVAlign </span></div><hr> +</p><!--l. 3454--><p class="noindent" > +The default definition is <span +class="cmtt-10">c</span>. +</p><!--l. 3457--><p class="indent" > The column titles are formatted according to: +</p><!--l. 3458--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraHeaderFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15010"></a> <span +class="cmtt-10">\glslongextraHeaderFmt{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3460--><p class="noindent" > +which simply does <span +class="cmtt-10">\textbf{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>by default. +</p><!--l. 3463--><p class="indent" > The name column has the title given by <span +class="cmtt-10">\entryname</span><a + id="dx1-15011"></a> and the column alignment is +given by: +</p><!--l. 3465--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameAlign</span><span +class="cmtt-9"> </span></span><a + id="dx1-15012"></a> <span +class="cmtt-10">\glslongextraNameAlign </span></div><hr> +</p><!--l. 3467--><p class="noindent" > +which expands to <span +class="cmtt-10">l </span>(left) by default. +</p><!--l. 3470--><p class="indent" > The symbol column (where applicable) has the title given by <span +class="cmtt-10">\symbolname</span><a + id="dx1-15013"></a> and +the column alignment is given by: +</p><!--l. 3472--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymbolAlign</span><span +class="cmtt-9"> </span></span><a + id="dx1-15014"></a> <span +class="cmtt-10">\glslongextraSymbolAlign </span></div><hr> +</p><!--l. 3474--><p class="noindent" > +which expands to <span +class="cmtt-10">c </span>(centred) by default. +</p><!--l. 3477--><p class="indent" > The location list column (where applicable) has the title given by <span +class="cmtt-10">\pagelistname</span><a + id="dx1-15015"></a> +and the column alignment is given by: +</p><!--l. 3479--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationAlign</span><span +class="cmtt-9"> </span></span><a + id="dx1-15016"></a> <span +class="cmtt-10">\glslongextraLocationAlign </span></div><hr> +</p><!--l. 3481--><p class="noindent" > +which expands to + + + +</p> + <div class="verbatim" id="verbatim-115"> +>{\raggedright}p{\glspagelistwidth} +</div> +<!--l. 3485--><p class="nopar" > by default. (Ragged-right paragraph, <span +class="cmtt-10">\glspagelistwidth</span><a + id="dx1-15017"></a> is defined in <span +class="cmss-10">glossary-long</span><a + id="dx1-15018"></a>, +which is automatically loaded.) +</p><!--l. 3489--><p class="indent" > The description column has the title given by <span +class="cmtt-10">\descriptionname</span><a + id="dx1-15019"></a> and the column +alignment is given by: +</p><!--l. 3491--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescAlign</span><span +class="cmtt-9"> </span></span><a + id="dx1-15020"></a> <span +class="cmtt-10">\glslongextraDescAlign </span></div><hr> +</p><!--l. 3493--><p class="noindent" > +which expands to + + + +</p> + <div class="verbatim" id="verbatim-116"> +>{\raggedright}p{\glsdescwidth} +</div> +<!--l. 3497--><p class="nopar" > by default. (Ragged-right paragraph, <span +class="cmtt-10">\glsdescwidth</span><a + id="dx1-15021"></a> is defined in <span +class="cmss-10">glossary-long</span><a + id="dx1-15022"></a>, +which is automatically loaded.) +</p><!--l. 3501--><p class="indent" > Unlike the long styles provided by the base <span +class="cmss-10">glossaries </span>package, these new styles try +to determine the value of <span +class="cmtt-10">\glsdescwidth </span>at the start of the glossary according to the +number of columns provided by the style. The calculations are performed by the +following commands: +</p><!--l. 3506--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSetDescWidth</span><span +class="cmtt-9"> </span></span><a + id="dx1-15023"></a> <span +class="cmtt-10">\glslongextraSetDescWidth </span></div><hr> +</p><!--l. 3508--><p class="noindent" > +This is used by the styles that have a name and description column. The value of +<span +class="cmtt-10">\glsdescwidth </span>is computed as: +</p> + <center class="math-display" > +<img +src="glossaries-extra-manual0x.png" alt="\glsdescwidth = \linewidth- 4\tabcolsep- W +" class="math-display" /></center> +<!--l. 3513--><p class="nopar" > where <span +class="cmmi-10">W </span>is a guess at the width of the name column. This is first set to the width of +the name column header: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\settowidth{</span>⟨<span +class="cmitt-10">width</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glslongextraHeaderFmt\entryname</span><span +class="cmsy-10">}</span> +</div> +</div> If any names in that column are larger than this, then you need to specify the widest +name using: +<!--l. 3521--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSetWidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-15024"></a> <span +class="cmtt-10">\glslongextraSetWidest{</span>⟨<span +class="cmitt-10">widest name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3523--><p class="noindent" > +or +</p><!--l. 3525--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraUpdateWidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-15025"></a> <span +class="cmtt-10">\glslongextraUpdateWidest{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3527--><p class="noindent" > +These work like the analogous commands <span +class="cmtt-10">\glssetwidest </span>and <span +class="cmtt-10">\glsupdatewidest</span> +provided with the <span +class="cmss-10">alttree</span><a + id="dx1-15026"></a> style, but in this case there’s no hierarchy. The default +widest name is obtained from the <span +class="cmss-10">alttree</span><a + id="dx1-15027"></a> top-level name if set, otherwise it’s empty, +so you can use <a + id="dx1-15028"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span>’s</a> <span +class="cmtt-10">set-widest </span>option. If you have the entry counter enabled, +you will need to include this with the name for the extra material to be taken into +account. +</p><!--l. 3537--><p class="indent" > The name isn’t shown for child entries by default, but if you change this and you +want to use <a + id="dx1-15029"></a><span +class="cmtt-10">bib2gls</span>’s <span +class="cmtt-10">set-widest </span>option (for <a + id="dx1-15030"></a><span +class="cmtt-10">bib2gls </span>v1.8+) then you need to +redefine: + + + +</p><!--l. 3541--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraUpdateWidestChild</span><span +class="cmtt-9"> </span></span><a + id="dx1-15031"></a> <span +class="cmtt-10">\glslongextraUpdateWidestChild{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3543--><p class="noindent" > +This does nothing by default, but if you are including the child names then you need +to redefine this command: + + + +</p> + <div class="verbatim" id="verbatim-117"> +\renewcommand{\glslongextraUpdateWidestChild}[2]{% + <br /> \glslongextraUpdateWidest{#2}% + <br />} +</div> +<!--l. 3550--><p class="nopar" > +</p><!--l. 3552--><p class="indent" > If you prefer to set an explicit width for the description column then you need to +redefine <span +class="cmtt-10">\glslongextraSetDescWidth</span>. For example: + + + +</p> + <div class="verbatim" id="verbatim-118"> +\renewcommand{\glslongextraSetDescWidth}{% + <br />  \setlength{\glsdescwidth}{0.6\linewidth}% + <br />} +</div> +<!--l. 3559--><p class="nopar" > +</p><!--l. 3561--><p class="indent" > The styles that have a name, symbol and description, <span +class="cmtt-10">\glsdescwidth </span>is set +with: +</p><!--l. 3563--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymSetDescWidth</span><span +class="cmtt-9"> </span></span><a + id="dx1-15032"></a> <span +class="cmtt-10">\glslongextraSymSetDescWidth </span></div><hr> +</p><!--l. 3565--><p class="noindent" > +This first uses <span +class="cmtt-10">\glslongextraSetDescWidth </span>and then subtracts 2<span +class="cmtt-10">\tabcolsep </span>and +the width of the symbol column header from <span +class="cmtt-10">\glsdescwidth</span>. This assumes that the +symbol column header is larger than any of the symbols. If this isn’t appropriate then +you can redefine this command. For example: + + + +</p> + <div class="verbatim" id="verbatim-119"> +\renewcommand{\glslongextraSymSetDescWidth}{% + <br />  \glslongextraSetDescWidth + <br />  \addtolength{\glsdescwidth}{-3cm}% + <br />} +</div> +<!--l. 3576--><p class="nopar" > or + + + +</p> + <div class="verbatim" id="verbatim-120"> +\renewcommand{\glslongextraSymSetDescWidth}{% + <br />  \setlength{\glsdescwidth}{.5\linewidth}% + <br />} +</div> +<!--l. 3582--><p class="nopar" > +</p><!--l. 3584--><p class="indent" > For the styles that have a name, description and location column, <span +class="cmtt-10">\glsdescwidth</span> +is set using: +</p><!--l. 3586--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocSetDescWidth</span><span +class="cmtt-9"> </span></span><a + id="dx1-15033"></a> <span +class="cmtt-10">\glslongextraLocSetDescWidth </span></div><hr> +</p><!--l. 3588--><p class="noindent" > +This uses <span +class="cmtt-10">\glslongextraSetDescWidth </span>and then subtracts 2<span +class="cmtt-10">\tabcolsep </span>and +<span +class="cmtt-10">\glspagelistwidth </span>from <span +class="cmtt-10">\glsdescwidth</span>. You can redefine this command to set +both <span +class="cmtt-10">\glsdescwidth </span>and <span +class="cmtt-10">\glspagelistwidth </span>if appropriate. +</p><!--l. 3594--><p class="indent" > For the styles that have a name, description, symbol and location column, +<span +class="cmtt-10">\glsdescwidth </span>is set using: +</p><!--l. 3596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymLocSetDescWidth</span><span +class="cmtt-9"> </span></span><a + id="dx1-15034"></a> <span +class="cmtt-10">\glslongextraSymLocSetDescWidth</span> +</div><hr> +</p><!--l. 3598--><p class="noindent" > +This uses <span +class="cmtt-10">\glslongextraSymSetDescWidth </span>and then subtracts 2<span +class="cmtt-10">\tabcolsep </span>and +<span +class="cmtt-10">\glspagelistwidth </span>from <span +class="cmtt-10">\glsdescwidth</span>. Again, you can redefine this command to +explicitly set both lengths. +</p><!--l. 3604--><p class="indent" > In all cases, the top-level name is formatted according to: +</p><!--l. 3605--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15035"></a> <span +class="cmtt-10">\glslongextraNameFmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3607--><p class="noindent" > +This does </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsentryitem{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}\glstarget{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glossentryname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">}</span> +</div> +</div> which includes the entry counter (if enabled), the target and the post-name +link. +<!--l. 3614--><p class="indent" > The top-level description is formatted according to: +</p><!--l. 3615--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15036"></a> <span +class="cmtt-10">\glslongextraDescFmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3617--><p class="noindent" > +This does <span +class="cmtt-10">\glossentrydesc{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>followed by the post-description hook. +</p><!--l. 3621--><p class="indent" > The styles that have a symbol column format the symbol using: +</p><!--l. 3622--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymbolFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15037"></a> <span +class="cmtt-10">\glslongextraSymbolFmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3624--><p class="noindent" > +This just does <span +class="cmtt-10">\glossentrysymbol{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. +</p><!--l. 3627--><p class="indent" > The styles that have a location list column format the list using: +</p><!--l. 3628--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15038"></a> <span +class="cmtt-10">\glslongextraLocationFmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">locations</span>⟩<span +class="cmtt-10">}</span> +</div><hr> + + + +</p><!--l. 3630--><p class="noindent" > +This just does ⟨<span +class="cmti-10">locations</span>⟩ and ignores the label. +</p><!--l. 3633--><p class="indent" > The child entries have their name formatted according to: +</p><!--l. 3634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSubNameFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15039"></a> <span +class="cmtt-10">\glslongextraSubNameFmt{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3636--><p class="noindent" > +where ⟨<span +class="cmti-10">level</span>⟩ is the hierarchical level. This defaults to: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glssubentryitem{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}\glstarget{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\strut</span><span +class="cmsy-10">}</span> +</div> +</div> This includes the sub-entry counter (if enabled) and the target but doesn’t show the +name. The child description is formatted according to: +<!--l. 3643--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSubDescFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15040"></a> <span +class="cmtt-10">\glslongextraSubDescFmt{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3645--><p class="noindent" > +which defaults to just <span +class="cmtt-10">\glslongextraDescFmt{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span> +</p><!--l. 3648--><p class="indent" > The child symbol is formatted (where appropriate) according to: +</p><!--l. 3649--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSubSymbolFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15041"></a> <span +class="cmtt-10">\glslongextraSubSymbolFmt{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3651--><p class="noindent" > +This just does <span +class="cmtt-10">\glslongextraSymbolFmt{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>by default. +</p><!--l. 3654--><p class="indent" > The styles that have a location list column format the list for child entries +using: +</p><!--l. 3656--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationFmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-15042"></a> <span +class="cmtt-10">\glslongextraSubLocationFmt</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">locations</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3658--><p class="noindent" > +This just does ⟨<span +class="cmti-10">locations</span>⟩ and ignores the level and label. +</p><!--l. 3661--><p class="indent" > The letter group headings are formatted according to: +</p><!--l. 3662--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraGroupHeading</span><span +class="cmtt-9"> </span></span><a + id="dx1-15043"></a> <span +class="cmtt-10">\glslongextraGroupHeading{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 3664--><p class="noindent" > +which does nothing by default. The first argument ⟨<span +class="cmti-10">n</span>⟩ is the number of columns in the +table. The second argument ⟨<span +class="cmti-10">label</span>⟩ is the group label (not the title, although they may +happen to be the same). +</p><!--l. 3670--><p class="indent" > This can be redefined to show the group heading. For example: + + + +</p> + <div class="verbatim" id="verbatim-121"> +\renewcommand*{\glslongextraGroupHeading}[2]{% + <br />  \glsxtrgetgrouptitle{#2}{\thisgrptitle}% + <br />  \glslongextraHeaderFmt{\thisgrptitle}% + <br />  \tabularnewline + <br />  \noalign{\vskip\normalbaselineskip}% + <br />} +</div> +<!--l. 3678--><p class="nopar" > This ignores the first argument and just puts the group title in the first column +formatted according to <span +class="cmtt-10">\glslongextraHeaderFmt </span>(to match the column +header). +</p><!--l. 3683--><p class="indent" > Remember that you can also adjust the styles through category attributes. The +name column’s title is given by <span +class="cmtt-10">\entryname</span>, the description column’s title is given by +<span +class="cmtt-10">\descriptionname </span>and (where present) the symbol column’s title is given by +<span +class="cmtt-10">\symbolname</span>, as for the other long styles that have headers. + </p><dl class="description"><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-desc</span><a + id="dx1-15044"></a> This is like the <span +class="cmss-10">longragged-booktabs</span><a + id="dx1-15045"></a> style but doesn’t show the + location list (regardless of the <a +href="#styopt.nonumberlist"><span +class="cmss-10">nonumberlist</span></a><a + id="dx1-15046"></a> option). The name is shown in + the first column and the description in the second. + <!--l. 3696--><p class="noindent" >The symbol is not displayed. The header row is produced with: + </p><!--l. 3698--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15047"></a> <span +class="cmtt-10">\glslongextraNameDescHeader </span></div><hr> + </p><!--l. 3700--><p class="noindent" > + This essentially uses the same code as for <span +class="cmss-10">longragged-booktabs</span><a + id="dx1-15048"></a> but makes it + easier to adjust the header without having to define a new style. This is defined + as: + + + +</p> + <div class="verbatim" id="verbatim-122"> + \glslongextraNameDescTabularHeader\endhead +  <br />\glslongextraNameDescTabularFooter\endfoot +</div> + <!--l. 3707--><p class="nopar" > where: + </p><!--l. 3709--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15049"></a> <span +class="cmtt-10">\glslongextraNameDescTabularHeader</span> + </div><hr> + </p><!--l. 3711--><p class="noindent" > + sets up the header and + </p><!--l. 3713--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15050"></a> <span +class="cmtt-10">\glslongextraNameDescTabularFooter</span> + </div><hr> + </p><!--l. 3715--><p class="noindent" > + sets up the footer. If you have setup the <span +class="cmss-10">tabular</span><a + id="dx1-15051"></a><a + id="dx1-15052"></a> version of this style then the + above two commands are used at the start and end of the <span +class="cmss-10">tabular</span><a + id="dx1-15053"></a><a + id="dx1-15054"></a> environment + (and <span +class="cmtt-10">\glslongextraNameDescHeader </span>isn’t used). + </p><!--l. 3721--><p class="noindent" >For example, to simply remove the header and footer (for the default <span +class="cmss-10">longtable</span><a + id="dx1-15055"></a><a + id="dx1-15056"></a> + version of the style): + + + +</p> + <div class="verbatim" id="verbatim-123"> + \renewcommand{\glslongextraNameDescHeader}{} +</div> + <!--l. 3725--><p class="nopar" > Or to change the name alignment to centred: + + + +</p> + <div class="verbatim" id="verbatim-124"> + \renewcommand{\glslongextraNameAlign}{c} +</div> + <!--l. 3729--><p class="nopar" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-desc-loc</span><a + id="dx1-15057"></a> This is like the <span +class="cmss-10">long-name-desc</span><a + id="dx1-15058"></a> style but has a third column for + the location list. The <span +class="cmss-10">longtable</span><a + id="dx1-15059"></a><a + id="dx1-15060"></a> header is given by: + <!--l. 3734--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescLocationHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15061"></a> <span +class="cmtt-10">\glslongextraNameDescLocationHeader</span> + </div><hr> + </p><!--l. 3736--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15062"></a><a + id="dx1-15063"></a> + version: + </p><!--l. 3739--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescLocationTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15064"></a> <span +class="cmtt-10">\glslongextraNameDescLocationTabularHeader</span> + </div><hr> + </p><!--l. 3741--><p class="noindent" > + and + </p><!--l. 3743--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescLocationTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15065"></a> <span +class="cmtt-10">\glslongextraNameDescLocationTabularFooter</span> + </div><hr> + </p><!--l. 3745--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-desc-name</span><a + id="dx1-15066"></a> This is like the <span +class="cmss-10">long-name-desc</span><a + id="dx1-15067"></a> style but swaps the columns. Note + that if the entry counter is displayed it will appear at the start of the + second column by default. The <span +class="cmss-10">longtable</span><a + id="dx1-15068"></a><a + id="dx1-15069"></a> header is formatted according + to: + <!--l. 3752--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15070"></a> <span +class="cmtt-10">\glslongextraDescNameHeader </span></div><hr> + </p><!--l. 3754--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15071"></a><a + id="dx1-15072"></a> + version: + </p><!--l. 3757--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15073"></a> <span +class="cmtt-10">\glslongextraDescNameTabularHeader</span> + </div><hr> + </p><!--l. 3759--><p class="noindent" > + and + </p><!--l. 3761--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15074"></a> <span +class="cmtt-10">\glslongextraDescNameTabularFooter</span> + </div><hr> + </p><!--l. 3763--><p class="noindent" > + + + + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-loc-desc-name</span><a + id="dx1-15075"></a> This has three columns containing the location list, + description and name. The <span +class="cmss-10">longtable</span><a + id="dx1-15076"></a><a + id="dx1-15077"></a> header is formatted according + to: + <!--l. 3769--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15078"></a> <span +class="cmtt-10">\glslongextraLocationDescNameHeader</span> + </div><hr> + </p><!--l. 3771--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15079"></a><a + id="dx1-15080"></a> + version: + </p><!--l. 3774--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15081"></a> <span +class="cmtt-10">\glslongextraLocationDescNameTabularHeader</span> + </div><hr> + </p><!--l. 3776--><p class="noindent" > + and + </p><!--l. 3778--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15082"></a> <span +class="cmtt-10">\glslongextraLocationDescNameTabularFooter</span> + </div><hr> + </p><!--l. 3780--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-desc-sym</span><a + id="dx1-15083"></a> This is has three columns, with the name in the first, the + description in the second and the symbol in the third. + <!--l. 3786--><p class="noindent" >The <span +class="cmss-10">longtable</span><a + id="dx1-15084"></a><a + id="dx1-15085"></a> header row is produced with: + </p><!--l. 3787--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15086"></a> <span +class="cmtt-10">\glslongextraNameDescSymHeader</span> + </div><hr> + </p><!--l. 3789--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15087"></a><a + id="dx1-15088"></a> + version: + </p><!--l. 3792--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15089"></a> <span +class="cmtt-10">\glslongextraNameDescSymTabularHeader</span> + </div><hr> + </p><!--l. 3794--><p class="noindent" > + and + </p><!--l. 3796--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15090"></a> <span +class="cmtt-10">\glslongextraNameDescSymTabularFooter</span> + </div><hr> + </p><!--l. 3798--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-desc-sym-loc</span><a + id="dx1-15091"></a> This is has four columns, with the name in the first, the + description in the second, the symbol in the third and the location list in the + fourth. + <!--l. 3804--><p class="noindent" >The <span +class="cmss-10">longtable</span><a + id="dx1-15092"></a><a + id="dx1-15093"></a> header row is produced with: + + + + </p><!--l. 3805--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymLocationHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15094"></a> <span +class="cmtt-10">\glslongextraNameDescSymLocationHeader</span> + </div><hr> + </p><!--l. 3807--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15095"></a><a + id="dx1-15096"></a> + version: + </p><!--l. 3810--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymLocationTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15097"></a> + <span +class="cmtt-10">\glslongextraNameDescSymLocationTabularHeader </span></div><hr> + </p><!--l. 3812--><p class="noindent" > + and + </p><!--l. 3814--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameDescSymLocationTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15098"></a> + <span +class="cmtt-10">\glslongextraNameDescSymLocationTabularFooter </span></div><hr> + </p><!--l. 3816--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-sym-desc</span><a + id="dx1-15099"></a> This is like the <span +class="cmss-10">long-name-desc-sym</span><a + id="dx1-15100"></a> but the second and third + column are swapped. The <span +class="cmss-10">longtable</span><a + id="dx1-15101"></a><a + id="dx1-15102"></a> header row is given by: + <!--l. 3821--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15103"></a> <span +class="cmtt-10">\glslongextraNameSymDescHeader</span> + </div><hr> + </p><!--l. 3823--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15104"></a><a + id="dx1-15105"></a> + version: + </p><!--l. 3826--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15106"></a> <span +class="cmtt-10">\glslongextraNameSymDescTabularHeader</span> + </div><hr> + </p><!--l. 3828--><p class="noindent" > + and + </p><!--l. 3830--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15107"></a> <span +class="cmtt-10">\glslongextraNameSymDescTabularFooter</span> + </div><hr> + </p><!--l. 3832--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-name-sym-desc-loc</span><a + id="dx1-15108"></a> This is like the <span +class="cmss-10">long-name-desc-sym-loc</span><a + id="dx1-15109"></a> but the second and + third column are swapped. The <span +class="cmss-10">longtable</span><a + id="dx1-15110"></a><a + id="dx1-15111"></a> header row is given by: + <!--l. 3837--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescLocationHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15112"></a> <span +class="cmtt-10">\glslongextraNameSymDescLocationHeader</span> + </div><hr> + </p><!--l. 3839--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15113"></a><a + id="dx1-15114"></a> + version: + </p><!--l. 3842--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescLocationTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15115"></a> + <span +class="cmtt-10">\glslongextraNameSymDescLocationTabularHeader </span></div><hr> + + + + </p><!--l. 3844--><p class="noindent" > + and + </p><!--l. 3846--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraNameSymDescLocationTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15116"></a> + <span +class="cmtt-10">\glslongextraNameSymDescLocationTabularFooter </span></div><hr> + </p><!--l. 3848--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-sym-desc-name</span><a + id="dx1-15117"></a> This has the symbol in the first column, the description in the + second and the name in the third. The <span +class="cmss-10">longtable</span><a + id="dx1-15118"></a><a + id="dx1-15119"></a> header row is given + by: + <!--l. 3853--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymDescNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15120"></a> <span +class="cmtt-10">\glslongextraSymDescNameHeader</span> + </div><hr> + </p><!--l. 3855--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15121"></a><a + id="dx1-15122"></a> + version: + </p><!--l. 3858--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymDescNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15123"></a> <span +class="cmtt-10">\glslongextraSymDescNameTabularHeader</span> + </div><hr> + </p><!--l. 3860--><p class="noindent" > + and + </p><!--l. 3862--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraSymDescNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15124"></a> <span +class="cmtt-10">\glslongextraSymDescNameTabularFooter</span> + </div><hr> + </p><!--l. 3864--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-loc-sym-desc-name</span><a + id="dx1-15125"></a> This has the location list in the first column, symbol in the + second column, the description in the third and the name in the fourth. The + <span +class="cmss-10">longtable</span><a + id="dx1-15126"></a><a + id="dx1-15127"></a> header row is given by: + <!--l. 3870--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationSymDescNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15128"></a> <span +class="cmtt-10">\glslongextraLocationSymDescNameHeader</span> + </div><hr> + </p><!--l. 3872--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15129"></a><a + id="dx1-15130"></a> + version: + </p><!--l. 3875--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationSymDescNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15131"></a> + <span +class="cmtt-10">\glslongextraLocationSymDescNameTabularHeader </span></div><hr> + </p><!--l. 3877--><p class="noindent" > + and + </p><!--l. 3879--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationSymDescNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15132"></a> + <span +class="cmtt-10">\glslongextraLocationSymDescNameTabularFooter </span></div><hr> + </p><!--l. 3881--><p class="noindent" > + + + + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-desc-sym-name</span><a + id="dx1-15133"></a> This has the description in the first column, the symbol in the + second and the name in the third. The <span +class="cmss-10">longtable</span><a + id="dx1-15134"></a><a + id="dx1-15135"></a> header row is given + by: + <!--l. 3886--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescSymNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15136"></a> <span +class="cmtt-10">\glslongextraDescSymNameHeader</span> + </div><hr> + </p><!--l. 3888--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15137"></a><a + id="dx1-15138"></a> + version: + </p><!--l. 3891--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescSymNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15139"></a> <span +class="cmtt-10">\glslongextraDescSymNameTabularHeader</span> + </div><hr> + </p><!--l. 3893--><p class="noindent" > + and + </p><!--l. 3895--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraDescSymNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15140"></a> <span +class="cmtt-10">\glslongextraDescSymNameTabularFooter</span> + </div><hr> + </p><!--l. 3897--><p class="noindent" > + </p></dd><dt class="description"> + </dt><dd +class="description"><span +class="cmss-10">long-loc-desc-sym-name</span><a + id="dx1-15141"></a> This has the location list in the first column, the description + in the second column, the symbol in the third and the name in the fourth. The + <span +class="cmss-10">longtable</span><a + id="dx1-15142"></a><a + id="dx1-15143"></a> header row is given by: + <!--l. 3903--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescSymNameHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15144"></a> <span +class="cmtt-10">\glslongextraLocationDescSymNameHeader</span> + </div><hr> + </p><!--l. 3905--><p class="noindent" > + which similarly defined in terms of the commands used for the <span +class="cmss-10">tabular</span><a + id="dx1-15145"></a><a + id="dx1-15146"></a> + version: + </p><!--l. 3908--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescSymNameTabularHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-15147"></a> + <span +class="cmtt-10">\glslongextraLocationDescSymNameTabularHeader </span></div><hr> + </p><!--l. 3910--><p class="noindent" > + and + </p><!--l. 3912--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongextraLocationDescSymNameTabularFooter</span><span +class="cmtt-9"> </span></span><a + id="dx1-15148"></a> + <span +class="cmtt-10">\glslongextraLocationDescSymNameTabularFooter </span></div><hr> + </p><!--l. 3914--><p class="noindent" > +</p> + </dd></dl> + + + +<!--l. 3918--><p class="noindent" > +</p> +<!--l. 3918--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.11 </span> <a + id="x1-160002.11"></a><span +class="cmss-10">glossary-topic </span>package</h3> +<!--l. 3921--><p class="noindent" >As from version 1.40, the <span +class="cmss-10">glossaries-extra </span>package comes with the supplementary +package <span +class="cmss-10">glossary-topic</span><a + id="dx1-16001"></a> that provides glossary styles designed for hierarchical glossaries +where the top-level entries are topic titles. This package automatically loads the +<span +class="cmss-10">multicols</span><a + id="dx1-16002"></a> package. If the <span +class="cmss-10">glossary-tree</span><a + id="dx1-16003"></a> package is also loaded then commands like +<span +class="cmtt-10">\glssetwidest </span>can be used on these styles in much the same way as for the <span +class="cmss-10">alttree</span><a + id="dx1-16004"></a> +style. If a widest value isn’t set then these styles behave more like the <span +class="cmss-10">tree</span><a + id="dx1-16005"></a> +style. + </p><dl class="description"><dt class="description"> +<span +class="cmssbx-10">topic</span><a + id="dx1-16006"></a> </dt><dd +class="description">This style is similar to the <span +class="cmss-10">tree</span><a + id="dx1-16007"></a> style but the indentation doesn’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 <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-16008"></a> setting. + </dd><dt class="description"> +<span +class="cmssbx-10">topicmcols</span><a + id="dx1-16009"></a> </dt><dd +class="description">This style is like the <span +class="cmss-10">topic</span><a + id="dx1-16010"></a> style but the sub-entries are placed inside a + <span +class="cmss-10">multicols</span><a + id="dx1-16011"></a><a + id="dx1-16012"></a> environment. The environment name is supplied in the value of the + command: + <!--l. 3941--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicColsEnv</span><span +class="cmtt-9"> </span></span><a + id="dx1-16013"></a> <span +class="cmtt-10">\glstopicColsEnv </span></div><hr> + </p><!--l. 3943--><p class="noindent" > + You can change this to the starred form. For example: + + + +</p> + <div class="verbatim" id="verbatim-125"> + \renewcommand{\glstopicColsEnv}{multicols*} +</div> + <!--l. 3947--><p class="nopar" > The number of columns is given by the command: + </p><!--l. 3949--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicCols</span><span +class="cmtt-9"> </span></span><a + id="dx1-16014"></a> <span +class="cmtt-10">\glstopicCols </span></div><hr> + </p><!--l. 3951--><p class="noindent" > + The default value is 2.</p></dd></dl> +<!--l. 3954--><p class="noindent" >Both styles use the following commands. +</p><!--l. 3955--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicParIndent</span><span +class="cmtt-9"> </span></span><a + id="dx1-16015"></a> <span +class="cmtt-10">\glstopicParIndent </span></div><hr> +</p><!--l. 3957--><p class="noindent" > +This command is a length that’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. +</p><!--l. 3963--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubIndent</span><span +class="cmtt-9"> </span></span><a + id="dx1-16016"></a> <span +class="cmtt-10">\glstopicSubIndent </span></div><hr> +</p><!--l. 3965--><p class="noindent" > +This command is a length that’s used to calculate the hanging indentation for +sub-entries. The level 1 sub-entries don’t indent the name. Level <span +class="cmmi-10">n </span>sub-entries have +the name indented by (<span +class="cmmi-10">n</span><span +class="cmsy-10">- </span>1)<span +class="cmsy-10">×</span><span +class="cmtt-10">\glstopicSubIndent</span>. The hanging indent depends on +whether or not a widest name has been set for the level. +</p><!--l. 3972--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicInit</span><span +class="cmtt-9"> </span></span><a + id="dx1-16017"></a> <span +class="cmtt-10">\glstopicInit </span></div><hr> +</p><!--l. 3974--><p class="noindent" > +Hook used at the start of the glossary. Does nothing by default. +</p><!--l. 3977--><p class="indent" > Although the styles don’t support letter groups by default, if you have many +topics (top-level entries) and you feel that it would help the reader to divide them up +into headed letter groups, you can redefine: +</p><!--l. 3981--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicGroupHeading</span><span +class="cmtt-9"> </span></span><a + id="dx1-16018"></a> <span +class="cmtt-10">\glstopicGroupHeading{</span>⟨<span +class="cmitt-10">group label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3983--><p class="noindent" > +This does nothing by default. If you want to redefine it, you can fetch the +title corresponding to the group label with <span +class="cmtt-10">\glsxtrgetgrouptitle</span>. For +example: + + + +</p> + <div class="verbatim" id="verbatim-126"> +\renewcommand*{\glstopicGroupHeading}[1]{% + <br />  \glsxtrgetgrouptitle{#1}{\thisgrptitle}% + <br />  \section*{\thisgrptitle}% + <br />} +</div> +<!--l. 3992--><p class="nopar" > Remember that if you use <a + id="dx1-16019"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, you will need the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">--group</span></span></span> (or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">-g</span></span></span>) switch to +support this. +</p><!--l. 3996--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicItem</span><span +class="cmtt-9"> </span></span><a + id="dx1-16020"></a> <span +class="cmtt-10">\glstopicItem{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 3998--><p class="noindent" > +Used to format the name, symbol, description and location list for the top-level +entries. This starts with a paragraph break followed by: +</p><!--l. 4002--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicPreSkip</span><span +class="cmtt-9"> </span></span><a + id="dx1-16021"></a> <span +class="cmtt-10">\glstopicPreSkip </span></div><hr> +</p><!--l. 4004--><p class="noindent" > +which defaults to <span +class="cmtt-10">\medskip</span>. There is then a hook: +</p><!--l. 4006--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicMarker</span><span +class="cmtt-9"> </span></span><a + id="dx1-16022"></a> <span +class="cmtt-10">\glstopicMarker{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4008--><p class="noindent" > +which does nothing by default, but may be redefined. For example, to add a line to +the table of contents. The name and symbol are set in the form of a title +using: +</p><!--l. 4013--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicTitle</span><span +class="cmtt-9"> </span></span><a + id="dx1-16023"></a> <span +class="cmtt-10">\glstopicTitle{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4015--><p class="noindent" > +This uses <span +class="cmtt-10">\Glossentryname </span>which converts the first letter to upper case. If there’s a +symbol, this is added in parentheses. Both name and symbol (if present) are +encapsulated by +</p><!--l. 4019--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicTitleFont</span><span +class="cmtt-9"> </span></span><a + id="dx1-16024"></a> <span +class="cmtt-10">\glstopicTitleFont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4021--><p class="noindent" > +This uses a bold, large font by default. +</p><!--l. 4024--><p class="indent" > If the entry has the description key set (tested with <span +class="cmtt-10">\ifglshasdesc</span>) then a +paragraph break is inserted followed by: +</p><!--l. 4026--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicMidSkip</span><span +class="cmtt-9"> </span></span><a + id="dx1-16025"></a> <span +class="cmtt-10">\glstopicMidSkip </span></div><hr> +</p><!--l. 4028--><p class="noindent" > +which defaults to <span +class="cmtt-10">\smallskip</span>. This is followed by the description which is formatted +according to: +</p><!--l. 4031--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicDesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-16026"></a> <span +class="cmtt-10">\glstopicDesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4033--><p class="noindent" > +This just does <span +class="cmtt-10">\Glossentrydesc{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>followed by the post-description +hook. +</p><!--l. 4037--><p class="indent" > A paragraph break followed by: +</p><!--l. 4038--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicPostSkip</span><span +class="cmtt-9"> </span></span><a + id="dx1-16027"></a> <span +class="cmtt-10">\glstopicPostSkip </span></div><hr> +</p><!--l. 4040--><p class="noindent" > +comes next regardless of whether or not the description was displayed. This defaults +to <span +class="cmtt-10">\smallskip</span>. This is then followed by: + + + +</p><!--l. 4044--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicLoc</span><span +class="cmtt-9"> </span></span><a + id="dx1-16028"></a> <span +class="cmtt-10">\glstopicLoc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4046--><p class="noindent" > +which may be used to display the location list, but does nothing by default. +</p><!--l. 4050--><p class="indent" > The sub-entries first set up the paragraph and hanging indentations using: +</p><!--l. 4052--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicAssignSubIndent</span><span +class="cmtt-9"> </span></span><a + id="dx1-16029"></a> <span +class="cmtt-10">\glstopicAssignSubIndent{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4054--><p class="noindent" > +This uses: +</p><!--l. 4056--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicAssignWidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-16030"></a> <span +class="cmtt-10">\glstopicAssignWidest{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4058--><p class="noindent" > +to determine if a widest name has been set for the given level. +</p><!--l. 4061--><p class="indent" > The sub-entry has its information displayed using: +</p><!--l. 4062--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubItem</span><span +class="cmtt-9"> </span></span><a + id="dx1-16031"></a> <span +class="cmtt-10">\glstopicSubItem{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4064--><p class="noindent" > +This encapsulates the name with: +</p><!--l. 4066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubNameFont</span><span +class="cmtt-9"> </span></span><a + id="dx1-16032"></a> <span +class="cmtt-10">\glstopicSubNameFont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4068--><p class="noindent" > +By default this just uses <span +class="cmtt-10">\textbf</span>. This is followed by: +</p><!--l. 4070--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubItemSep</span><span +class="cmtt-9"> </span></span><a + id="dx1-16033"></a> <span +class="cmtt-10">\glstopicSubItemSep </span></div><hr> +</p><!--l. 4072--><p class="noindent" > +which defaults to <span +class="cmtt-10">\quad</span>. The name and separator are passed in the ⟨<span +class="cmti-10">text</span>⟩ argument +of: +</p><!--l. 4075--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubItemBox</span><span +class="cmtt-9"> </span></span><a + id="dx1-16034"></a> <span +class="cmtt-10">\glstopicSubItemBox{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4077--><p class="noindent" > +If a widest name was set for the given level, this will put ⟨<span +class="cmti-10">text</span>⟩ inside a box of that +width otherwise it just does ⟨<span +class="cmti-10">text</span>⟩. +</p><!--l. 4082--><p class="indent" > This is followed by the symbol in parentheses if set. Then, if the description is set, +the description and post-description hook are displayed followed by: +</p><!--l. 4085--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubPreLocSep</span><span +class="cmtt-9"> </span></span><a + id="dx1-16035"></a> <span +class="cmtt-10">\glstopicSubPreLocSep </span></div><hr> +</p><!--l. 4087--><p class="noindent" > +(This command isn’t used if the description isn’t set.) +</p><!--l. 4090--><p class="indent" > Finally the location list is displayed using: +</p><!--l. 4091--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstopicSubLoc</span><span +class="cmtt-9"> </span></span><a + id="dx1-16036"></a> <span +class="cmtt-10">\glstopicSubLoc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4093--><p class="noindent" > +which just does ⟨<span +class="cmti-10">location</span>⟩ by default. +</p><!--l. 4096--><p class="noindent" > +</p> +<!--l. 4096--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.12 </span> <a + id="sec:glosstylemods"></a>Glossary Style Modifications</h3> +<!--l. 4099--><p class="noindent" >The <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-17001"></a> package (more conveniently loaded through the +<span +class="cmss-10">glossaries-extra </span><a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><a + id="dx1-17002"></a> option) modifies some of the predefined styles that are +provided with the <span +class="cmss-10">glossaries </span>package. These modifications are described in more detail +in <a +href="#x1-200002.12.3"><span +class="cmsy-10">§</span>2.12.3 </a><a +href="#x1-200002.12.3">The <span +class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a>. + + + +</p><!--l. 4106--><p class="indent" > The <span +class="cmss-10">glossaries</span><a + id="dx1-17003"></a> package tries to determine the group title from its label by first +checking if <span +class="cmtt-10">\</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">groupname </span>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, <span +class="cmss-10">glossaries</span><a + id="dx1-17004"></a> +first checks if <span +class="cmtt-10">\Agroupname </span>exists. This could potentially cause conflict with another +package that may have some other meaning for <span +class="cmtt-10">\Agroupname</span>, so <span +class="cmss-10">glossaries-extra</span><a + id="dx1-17005"></a> first +checks for the existence of the internal command <span +class="cmtt-10">\glsxtr@grouptitle@</span>⟨<span +class="cmti-10">label</span>⟩ +which shouldn’t clash with another package. You can set the group title +using +</p><!--l. 4118--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetgrouptitle</span><span +class="cmtt-9"> </span></span><a + id="dx1-17006"></a> <span +class="cmtt-10">\glsxtrsetgrouptitle{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4120--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-127"> +\glsxtrsetgrouptitle{A}{A (a)} +</div> +<!--l. 4124--><p class="nopar" > This uses a global assignment. If you need to scope the change you can +use +</p><!--l. 4127--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlocalsetgrouptitle</span><span +class="cmtt-9"> </span></span><a + id="dx1-17007"></a> <span +class="cmtt-10">\glsxtrlocalsetgrouptitle{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4129--><p class="noindent" > +</p><!--l. 4131--><p class="noindent" > +</p> +<!--l. 4131--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.1 </span> <a + id="sec:stylehooks"></a>Style Hooks</h4> +<!--l. 4134--><p class="noindent" >The commands <span +class="cmtt-10">\glossentryname</span><a + id="dx1-18001"></a> and <span +class="cmtt-10">\glossentrydesc</span><a + id="dx1-18002"></a> are modified to take into +account the <a +href="#catattr.glossname"><span +class="cmss-10">glossname</span></a><a + id="dx1-18003"></a>, <a +href="#catattr.glossdesc"><span +class="cmss-10">glossdesc</span></a><a + id="dx1-18004"></a> and <a +href="#catattr.glossdescfont"><span +class="cmss-10">glossdescfont</span></a><a + id="dx1-18005"></a> attributes (see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>). This +means you can make simple case-changing modifications to the name and description +without defining a new glossary style. +</p><!--l. 4140--><p class="indent" > If you want to adapt a style to use another field instead of <span +class="cmss-10">name</span><a + id="dx1-18006"></a>, you can +use +</p><!--l. 4142--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glossentrynameother</span><span +class="cmtt-9"> </span></span><a + id="dx1-18007"></a> <span +class="cmtt-10">\glossentrynameother{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4144--><p class="noindent" > +This behaves just like <span +class="cmtt-10">\glossentryname </span>(that is, it obeys <a +href="#catattr.glossname"><span +class="cmss-10">glossname</span></a><a + id="dx1-18008"></a>, <a +href="#catattr.glossnamefont"><span +class="cmss-10">glossnamefont</span></a><a + id="dx1-18009"></a> or +<span +class="cmtt-10">\glsnamefont </span>and uses the post-name hook) but it uses the given ⟨<span +class="cmti-10">field</span>⟩ instead of +<span +class="cmss-10">name</span><a + id="dx1-18010"></a>. The ⟨<span +class="cmti-10">field</span>⟩ argument must be the internal field name (for example <span +class="cmtt-10">desc </span>rather +than <span +class="cmtt-10">description</span>). See the key to field mappings table in the <span +class="cmss-10">glossaries </span>user +manual. +</p><!--l. 4153--><p class="indent" > There is a hook after <span +class="cmtt-10">\glossentryname</span><a + id="dx1-18011"></a> and <span +class="cmtt-10">\Glossentryname</span><a + id="dx1-18012"></a>: +</p><!--l. 4155--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostnamehook</span><span +class="cmtt-9"> </span></span><a + id="dx1-18013"></a> <span +class="cmtt-10">\glsxtrpostnamehook{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4157--><p class="noindent" > +By default this checks the <a +href="#catattr.indexname"><span +class="cmss-10">indexname</span></a><a + id="dx1-18014"></a> attribute. If the attribute exists for the +category to which the label belongs, then the name is automatically indexed +using +</p><!--l. 4162--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsxtrdoautoindexname</span><a + id="dx1-18015"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">indexname</span><span +class="cmsy-10">} </span></div><hr> +</p><!--l. 4163--><p class="noindent" > +See <a +href="#sec:autoindex"><span +class="cmsy-10">§</span>7 </a><a +href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for further details. +</p><!--l. 4167--><p class="indent" > As from version 1.04, the post-name hook <span +class="cmtt-10">\glsxtrpostnamehook </span>will also use +<span +class="cmtt-10">\glsxtrpostname</span>⟨<span +class="cmti-10">category</span>⟩ if it exists. You can use <span +class="cmtt-10">\glscurrententrylabel</span><a + id="dx1-18016"></a> to +obtain the entry label with the definition of this command. For example, +suppose you are using a glossary style the doesn’t display the symbol, you can +insert the symbol after the name for a particular category, say, the “symbol” +category: + + + +</p> + <div class="verbatim" id="verbatim-128"> +\newcommand*{\glsxtrpostnamesymbol}{\space + <br /> (\glsentrysymbol{\glscurrententrylabel})} +</div> +<!--l. 4178--><p class="nopar" > For convenience, as from v1.31, you can use +</p><!--l. 4180--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsdefpostname</span><span +class="cmtt-9"> </span></span><a + id="dx1-18017"></a> <span +class="cmtt-10">\glsdefpostname{</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4182--><p class="noindent" > +This is simply a shortcut for: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\csdef</span><span +class="cmsy-10">{</span><span +class="cmtt-10">glsxtrpostname</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> Note that it doesn’t check if the command has already been defined. +<!--l. 4189--><p class="indent" > As from version 1.25, the post-name hook also does +</p><!--l. 4190--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsextrapostnamehook</span><span +class="cmtt-9"> </span></span><a + id="dx1-18018"></a> <span +class="cmtt-10">\glsextrapostnamehook{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4192--><p class="noindent" > +(before <span +class="cmtt-10">\glsxtrpostname</span>⟨<span +class="cmti-10">category</span>⟩) to allow for additional non-category related code. +This does nothing by default. +</p><!--l. 4197--><p class="indent" > The post-description code used within the glossary is modified so that it also +does +</p><!--l. 4199--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpostdescription</span><span +class="cmtt-9"> </span></span><a + id="dx1-18019"></a> <span +class="cmtt-10">\glsxtrpostdescription </span></div><hr> +</p><!--l. 4201--><p class="noindent" > +This occurs before the original <span +class="cmtt-10">\glspostdescription</span>, so if the <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><span +class="cmss-10">=false</span><a + id="dx1-18020"></a> +option is used, it will be inserted before the terminating full stop. +</p><!--l. 4206--><p class="indent" > This new command will do <span +class="cmtt-10">\glsxtrpostdesc</span>⟨<span +class="cmitt-10">category</span>⟩ if it exists, where +⟨<span +class="cmti-10">category</span>⟩ is the category label associated with the current entry. For example +<span +class="cmtt-10">\glsxtrpostdescgeneral </span>for entries with the category set to <span +class="cmss-10">general</span><a + id="dx1-18021"></a> or +<span +class="cmtt-10">\glsxtrpostdescacronym </span>for entries with the category set to <span +class="cmss-10">acronym</span><a + id="dx1-18022"></a>. For +convenience, as from v1.31, you can use +</p><!--l. 4213--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsdefpostdesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-18023"></a> <span +class="cmtt-10">\glsdefpostdesc{</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4215--><p class="noindent" > +This is simply a shortcut for: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\csdef</span><span +class="cmsy-10">{</span><span +class="cmtt-10">glsxtrpostdesc</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> Note that it doesn’t check if the command has already been defined. +<!--l. 4222--><p class="indent" > Since both <span +class="cmtt-10">\glossentry </span>and <span +class="cmtt-10">\subglossentry </span>set +</p><!--l. 4223--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glscurrententrylabel</span><span +class="cmtt-9"> </span></span><a + id="dx1-18024"></a> <span +class="cmtt-10">\glscurrententrylabel </span></div><hr> + + + +</p><!--l. 4225--><p class="noindent" > +to the label for the current entry, you can use this within the definition of these +post-description hooks if you need to reference the label. +</p><!--l. 4230--><p class="indent" > For example, suppose you want to insert the plural form in brackets after the +description in the glossary, but only for entries in the <span +class="cmss-10">general</span><a + id="dx1-18025"></a> category, then you could +do: + + + +</p> + <div class="verbatim" id="verbatim-129"> +\renewcommand{\glsxtrpostdescgeneral}{\space + <br /> (plural: \glsentryplural{\glscurrententrylabel})} +</div> +<!--l. 4236--><p class="nopar" > 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.) +</p><!--l. 4241--><p class="indent" > <div class="important" title="Important Note"> This feature can’t be used for glossary styles that ignore <span +class="cmtt-10">\glspostdescription </span>or if +you redefine <span +class="cmtt-10">\glspostdescription </span>without including <span +class="cmtt-10">\glsxtrpostdescription</span>. +(For example, if you redefine <span +class="cmtt-10">\glspostdescription </span>to do nothing instead of using +the <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><a + id="dx1-18026"></a> option to suppress the terminating full stop.) See <a +href="#x1-200002.12.3"><span +class="cmsy-10">§</span>2.12.3 </a><a +href="#x1-200002.12.3">The +<span +class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a> to patch the predefined styles provided by <span +class="cmss-10">glossaries</span> +that are missing <span +class="cmtt-10">\glspostdescription</span>. </div> +</p><!--l. 4250--><p class="noindent" > +</p><!--l. 4252--><p class="noindent" > +</p> +<!--l. 4252--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.2 </span> <a + id="sec:glosstylenumlist"></a>Number List</h4> +<!--l. 4255--><p class="noindent" >The <a + id="dx1-19001"></a><a +href="#glo:numberlist">number list</a> is now placed inside the argument of +</p><!--l. 4256--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrFormatLocationList</span><span +class="cmtt-9"> </span></span><a + id="dx1-19002"></a> <span +class="cmtt-10">\GlsXtrFormatLocationList{</span>⟨<span +class="cmitt-10">number list</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4258--><p class="noindent" > +This is internally used by <span +class="cmtt-10">\glossaryentrynumbers</span>. The <a +href="#styopt.nonumberlist"><span +class="cmss-10">nonumberlist</span></a><a + id="dx1-19003"></a> option +redefines <span +class="cmtt-10">\glossaryentrynumbers </span>so that it doesn’t display the <a + id="dx1-19004"></a>number list, but it +still saves the <a + id="dx1-19005"></a>number list in case it’s required. +</p><!--l. 4264--><p class="indent" > <div class="important" title="Important Note"> If you want to suppress the <a + id="dx1-19006"></a>number list always use the <a +href="#styopt.nonumberlist"><span +class="cmss-10">nonumberlist</span></a><a + id="dx1-19007"></a> option +instead of redefining <span +class="cmtt-10">\glossaryentrynumbers </span>to do nothing. </div> +</p><!--l. 4268--><p class="noindent" > +</p><!--l. 4270--><p class="indent" > If you want to, for example, change the font for the entire <a + id="dx1-19008"></a>number list +then redefine <span +class="cmtt-10">\GlsXtrFormatLocationList </span>as appropriate. Don’t modify +<span +class="cmtt-10">\glossaryentrynumbers</span>. +</p><!--l. 4274--><p class="indent" > Sometimes users like to insert “page” or “pages” in front of the <a + id="dx1-19009"></a>number list. This +is quite fiddly to do with the base <span +class="cmss-10">glossaries </span>package, but <span +class="cmss-10">glossaries-extra </span>provides a +way of doing this. First you need to enable this option and specify the text to display +using: +</p><!--l. 4279--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnablePreLocationTag</span><span +class="cmtt-9"> </span></span><a + id="dx1-19010"></a> <span +class="cmtt-10">\GlsXtrEnablePreLocationTag{</span>⟨<span +class="cmitt-10">page</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">pages</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4281--><p class="noindent" > +where ⟨<span +class="cmti-10">page</span>⟩ is the text to display if the <a + id="dx1-19011"></a>number list only contains a single location and +⟨<span +class="cmti-10">pages</span>⟩ is the text to display otherwise. For example: + + + +</p> + <div class="verbatim" id="verbatim-130"> +\GlsXtrEnablePreLocationTag{Page: }{Pages: } +</div> +<!--l. 4287--><p class="nopar" > An extra run is required when using this command. +</p><!--l. 4290--><p class="indent" > <div class="important" title="Important Note"> Use <span +class="cmtt-10">glsignore </span>not <span +class="cmtt-10">@gobble </span>as the format if you want to suppress the page +number (and only index the entry once). </div> +</p><!--l. 4293--><p class="noindent" > +</p><!--l. 4295--><p class="indent" > See the accompanying sample file <span +class="cmtt-10">sample-pages.tex</span>. +</p><!--l. 4297--><p class="indent" > Note that <a + id="dx1-19012"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> can be instructed to insert a prefix at the start of non-empty +location lists, which can be used as an alternative to <span +class="cmtt-10">\GlsXtrEnablePreLocationTag</span>. +</p><!--l. 4301--><p class="noindent" > +</p> +<!--l. 4301--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.3 </span> <a + id="x1-200002.12.3"></a>The <span +class="cmss-10">glossaries-extra-stylemods </span>Package</h4> +<!--l. 4304--><p class="noindent" >As from v1.02, <span +class="cmss-10">glossaries-extra </span>now includes the package <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-20001"></a> that +will redefine the predefined styles to include the post-description hook (for those that +are missing it). You will need to make sure the styles have already been defined +before loading <span +class="cmss-10">glossaries-extra</span>. For example: + + + +</p> + <div class="verbatim" id="verbatim-131"> +\usepackage{glossaries-extra} + <br />\usepackage{glossary-longragged} + <br />\usepackage{glossaries-extra-stylemods} +</div> +<!--l. 4313--><p class="nopar" > Alternatively you can load <span +class="cmtt-10">glossary-</span>⟨<span +class="cmti-10">name</span>⟩<span +class="cmtt-10">.sty </span>at the same time by passing ⟨<span +class="cmti-10">name</span>⟩ +as a package option to <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-20002"></a>. For example: + + + +</p> + <div class="verbatim" id="verbatim-132"> +\usepackage{glossaries-extra} + <br />\usepackage[longragged]{glossaries-extra-stylemods} +</div> +<!--l. 4321--><p class="nopar" > Another option is to use the <a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><a + id="dx1-20003"></a> key when you load <span +class="cmss-10">glossaries-extra</span>. You can +omit a value if you only want to use the predefined styles that are automatically +loaded by <span +class="cmss-10">glossaries </span>(for example, the <span +class="cmss-10">long3col</span><a + id="dx1-20004"></a> style): + + + +</p> + <div class="verbatim" id="verbatim-133"> +\usepackage[style=long3col,stylemods]{glossaries-extra} +</div> +<!--l. 4328--><p class="nopar" > Or the value of <a +href="#styopt.stylemods"><span +class="cmss-10">stylemods</span></a><a + id="dx1-20005"></a> may be a comma-separated list of the style package +identifiers. For example: + + + +</p> + <div class="verbatim" id="verbatim-134"> +\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra} +</div> +<!--l. 4333--><p class="nopar" > Remember to group the value if it contains any commas: + + + +</p> + <div class="verbatim" id="verbatim-135"> +\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} +</div> +<!--l. 4337--><p class="nopar" > +</p><!--l. 4339--><p class="indent" > Note that the <span +class="cmss-10">inline</span><a + id="dx1-20006"></a> style is dealt with slightly differently. The original definition +provided by the <span +class="cmss-10">glossary-inline</span><a + id="dx1-20007"></a> package uses <span +class="cmtt-10">\glspostdescription </span>at the end of the +glossary (not after each entry description) within the definition of <span +class="cmtt-10">\glspostinline</span>. +The style modification changes this so that <span +class="cmtt-10">\glspostinline </span>just does a full stop +followed by space factor adjustment, and the description <span +class="cmtt-10">\glsinlinedescformat </span>and +sub-entry description formats <span +class="cmtt-10">\glsinlinesubdescformat </span>are redefined to include +<span +class="cmtt-10">\glsxtrpostdescription </span>(not <span +class="cmtt-10">\glspostdescription</span>). This means that the +modified <span +class="cmss-10">inline</span><a + id="dx1-20008"></a> style isn’t affected by the <a +href="#styopt.nopostdot"><span +class="cmss-10">nopostdot</span></a><a + id="dx1-20009"></a> option, but the post-description +category hook can still be used. +</p><!--l. 4353--><p class="indent" > The <span +class="cmss-10">tabular</span><a + id="dx1-20010"></a><a + id="dx1-20011"></a>-like styles, such as <span +class="cmss-10">long</span><a + id="dx1-20012"></a> are adjusted so that the <span +class="cmtt-10">\ifglsnogroupskip</span><a + id="dx1-20013"></a> +conditional (set with <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-20014"></a>) is moved outside of the definition of +<span +class="cmtt-10">\glsgroupskip </span>to avoid problems that cause an “Incomplete <span +class="cmtt-10">\iftrue</span>” error with +<span +class="cmtt-10">\printunsrtglossary </span>and <span +class="cmtt-10">\printnoidxglossary</span>. This means that if you want to +change this conditional using <span +class="cmtt-10">\setupglossaries </span>or using the <span +class="cmss-10">nogroupskip</span><a + id="dx1-20015"></a> option in +<span +class="cmtt-10">\printglossary</span>, <span +class="cmtt-10">\printnoidxglossary </span>or <span +class="cmtt-10">\printunsrtglossary</span>, you must also +reset the glossary style. +</p><!--l. 4364--><p class="indent" > As from version 1.21, the hard-coded <span +class="cmtt-10">\space </span>before the <a + id="dx1-20016"></a><a +href="#glo:numberlist">number list</a> in many of +the predefined styles is replaced with +</p><!--l. 4367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20017"></a> <span +class="cmtt-10">\glsxtrprelocation </span></div><hr> +</p><!--l. 4369--><p class="noindent" > +This just defaults to <span +class="cmtt-10">\space </span>but may be redefined as required. For example: + + + +</p> + <div class="verbatim" id="verbatim-136"> +\renewcommand{\glsxtrprelocation}{\dotfill} +</div> +<!--l. 4374--><p class="nopar" > +</p><!--l. 4376--><p class="indent" > The <span +class="cmss-10">list</span><a + id="dx1-20018"></a> styles use +</p><!--l. 4377--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslistprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20019"></a> <span +class="cmtt-10">\glslistprelocation </span></div><hr> +</p><!--l. 4379--><p class="noindent" > +(which defaults to <span +class="cmtt-10">\glsxtrprelocation</span>) for top-level items and +</p><!--l. 4381--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslistchildprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20020"></a> <span +class="cmtt-10">\glslistchildprelocation </span></div><hr> +</p><!--l. 4383--><p class="noindent" > +(which defaults to <span +class="cmtt-10">\glslistprelocation</span>) for child items. +</p><!--l. 4386--><p class="indent" > As from v1.31, the description (including the post-description hook) is governed +by: +</p><!--l. 4388--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslistdesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20021"></a> <span +class="cmtt-10">\glslistdesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4390--><p class="noindent" > +for the <span +class="cmss-10">list</span><a + id="dx1-20022"></a> and <span +class="cmss-10">altlist</span><a + id="dx1-20023"></a> styles (but not the <span +class="cmss-10">listdotted</span><a + id="dx1-20024"></a> variations). +</p><!--l. 4394--><p class="indent" > For just the <span +class="cmss-10">list</span><a + id="dx1-20025"></a> style and its letter group variations (not the <span +class="cmss-10">altlist</span><a + id="dx1-20026"></a> or <span +class="cmss-10">listdotted</span><a + id="dx1-20027"></a> +variations) the <a + id="dx1-20028"></a><a +href="#glo:numberlist">number list</a> for child entries is followed by +</p><!--l. 4397--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslistchildpostlocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20029"></a> <span +class="cmtt-10">\glslistchildpostlocation </span></div><hr> +</p><!--l. 4399--><p class="noindent" > +which defaults to a full stop. +</p><!--l. 4402--><p class="indent" > The default value of <span +class="cmtt-10">\glslistdottedwidth</span><a + id="dx1-20030"></a> is changed so that it’s set at the start +of the document (if it hasn’t been changed in the preamble). This should +take into account situations where <span +class="cmtt-10">\hsize </span>isn’t set until the start of the +document. +</p><!--l. 4407--><p class="indent" > The separator between groups (if not <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-20031"></a>) is now given by: +</p><!--l. 4409--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslistgroupskip</span><span +class="cmtt-9"> </span></span><a + id="dx1-20032"></a> <span +class="cmtt-10">\glslistgroupskip </span></div><hr> +</p><!--l. 4411--><p class="noindent" > +This defaults to <span +class="cmtt-10">\indexspace </span>with penalties to deter page breaks. This command +isn’t used if <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-20033"></a> is set. +</p><!--l. 4416--><p class="indent" > The <span +class="cmss-10">glossary-tree</span><a + id="dx1-20034"></a> package introduced two new commands in <span +class="cmss-10">glossaries</span><a + id="dx1-20035"></a> version 4.22, +<span +class="cmtt-10">\glstreegroupheaderfmt</span><a + id="dx1-20036"></a> and <span +class="cmtt-10">\glstreenavigationfmt</span><a + id="dx1-20037"></a>, which are used to format +the letter group headings and the navigation elements for the appropriate styles. +These two new commands are defined in terms of <span +class="cmtt-10">\glstreenamefmt</span><a + id="dx1-20038"></a> since that was +the command originally used for the group headings and navigation. This +now allows these different elements to be defined independently, but the +most common redefinition is for <span +class="cmtt-10">\glstreenamefmt </span>to remove the bold in +the name. If the bold is still required for the group heading and navigation +elements, then both other commands also need redefining. To simplify matters, if +<span +class="cmtt-10">\glstreenamefmt </span>has been defined, as from v1.31 <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-20039"></a> +defines: +</p><!--l. 4429--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreedefaultnamefmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-20040"></a> <span +class="cmtt-10">\glstreedefaultnamefmt{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 4431--><p class="noindent" > +which simply does <span +class="cmtt-10">\textbf{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>and redefines <span +class="cmtt-10">\glstreenamefmt</span>, +<span +class="cmtt-10">\glstreegroupheaderfmt </span>and <span +class="cmtt-10">\glstreenavigationfmt </span>all in terms of +<span +class="cmtt-10">\glstreedefaultnamefmt</span>. This means that if you want to change all three to use a +particular style you only need to redefine <span +class="cmtt-10">\glstreedefaultnamefmt</span>, but if you only +want to redefine <span +class="cmtt-10">\glstreenamefmt </span>without affecting the other two commands, then +you now can. +</p><!--l. 4441--><p class="indent" > The separator between groups (if not <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-20041"></a>) is now given by: +</p><!--l. 4443--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreegroupskip</span><span +class="cmtt-9"> </span></span><a + id="dx1-20042"></a> <span +class="cmtt-10">\glstreegroupskip </span></div><hr> +</p><!--l. 4445--><p class="noindent" > +This defaults to <span +class="cmtt-10">\indexspace </span>with penalties to deter page breaks. This command +isn’t used if <a +href="#styopt.nogroupskip"><span +class="cmss-10">nogroupskip</span></a><a + id="dx1-20043"></a> is set (except for the styles that display the group +titles). +</p><!--l. 4451--><p class="indent" > The styles that display the group titles now use: +</p><!--l. 4452--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreePreHeader</span><span +class="cmtt-9"> </span></span><a + id="dx1-20044"></a> <span +class="cmtt-10">\glstreePreHeader{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4454--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the group label and ⟨<span +class="cmti-10">title</span>⟩ is the group title. This does nothing by +default and is inserted before the group title. You can redefine it to add the group +title to the PDF bookmarks. For example, if the glossary title uses <span +class="cmtt-10">\chapter</span> +then: + + + +</p> + <div class="verbatim" id="verbatim-137"> +\renewcommand{\glstreePreHeader}[2]{% + <br /> \pdfbookmark[1]{#2}{\currentglossary.#1}% + <br />} +</div> +<!--l. 4464--><p class="nopar" > will insert section-level bookmarks. The use of <span +class="cmtt-10">\currentglossary </span>helps to provide +unique bookmark labels in the event of multiple glossaries. +</p><!--l. 4469--><p class="indent" > The <span +class="cmss-10">index</span><a + id="dx1-20045"></a>-like and <span +class="cmss-10">tree</span><a + id="dx1-20046"></a>-like styles insert the pre-<a + id="dx1-20047"></a><a +href="#glo:numberlist">number list</a> space with +</p><!--l. 4471--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreeprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20048"></a> <span +class="cmtt-10">\glstreeprelocation </span></div><hr> +</p><!--l. 4473--><p class="noindent" > +(which defaults to <span +class="cmtt-10">\glsxtrprelocation</span>) for top-level items and +</p><!--l. 4475--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreechildprelocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20049"></a> <span +class="cmtt-10">\glstreechildprelocation </span></div><hr> +</p><!--l. 4477--><p class="noindent" > +(which defaults to <span +class="cmtt-10">\glstreeprelocation</span>) for child items. +</p><!--l. 4480--><p class="indent" > As from version 1.31, the <span +class="cmss-10">glossaries-extra-stylemods </span>package also provides: +</p><!--l. 4482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreenonamedesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20050"></a> <span +class="cmtt-10">\glstreenonamedesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4484--><p class="noindent" > +which is used by the <span +class="cmss-10">treenoname</span><a + id="dx1-20051"></a> styles to display the pre-description separator, the +description and the post-description hook. Similarly for the symbol: +</p><!--l. 4488--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreenonamesymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-20052"></a> <span +class="cmtt-10">\glstreenonamesymbol{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4490--><p class="noindent" > +The above are just used for top-level entries. Child entries don’t have the name or +symbol displayed for the <span +class="cmss-10">treenoname</span><a + id="dx1-20053"></a> styles, so there’s only a command for the child +description: +</p><!--l. 4494--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreenonamechilddesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20054"></a> <span +class="cmtt-10">\glstreenonamechilddesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4496--><p class="noindent" > +</p><!--l. 4498--><p class="indent" > For the <span +class="cmss-10">tree</span><a + id="dx1-20055"></a> styles (but not the <span +class="cmss-10">treenoname</span><a + id="dx1-20056"></a> or <span +class="cmss-10">alttree</span><a + id="dx1-20057"></a> styles), the description is +displayed using: +</p><!--l. 4500--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreedesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20058"></a> <span +class="cmtt-10">\glstreedesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4502--><p class="noindent" > +and the symbol with: +</p><!--l. 4504--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreesymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-20059"></a> <span +class="cmtt-10">\glstreesymbol{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4506--><p class="noindent" > +Again the above two commands are just for top-level entries. The child entries +use: +</p><!--l. 4509--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreechilddesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20060"></a> <span +class="cmtt-10">\glstreechilddesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4511--><p class="noindent" > +for the description and +</p><!--l. 4513--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreechildsymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-20061"></a> <span +class="cmtt-10">\glstreechildsymbol{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4515--><p class="noindent" > +for the symbol. + + + +</p><!--l. 4518--><p class="indent" > As from version 1.41, there are now wrapper commands for <span +class="cmtt-10">\glstreedesc </span>and +<span +class="cmtt-10">\glstreechilddesc </span>that check for the description and symbol to determine whether +or not to insert a space (<span +class="cmtt-10">\glstreeprelocation </span>or <span +class="cmtt-10">\glstreechildprelocation</span>) +before the page list. These are: +</p><!--l. 4523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreeDescLoc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20062"></a> <span +class="cmtt-10">\glstreeDescLoc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4525--><p class="noindent" > +for top-level entries and +</p><!--l. 4527--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glstreeChildDescLoc</span><span +class="cmtt-9"> </span></span><a + id="dx1-20063"></a> <span +class="cmtt-10">\glstreeChildDescLoc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4529--><p class="noindent" > +for sub-entries. This prevents a spurious space for terms that don’t have a symbol or +description but do have a location list (for example, aliases). +</p><!--l. 4534--><p class="indent" > As from version 1.05, the <span +class="cmss-10">glossaries-extra-stylemods </span>package provides some +additional commands for use with the <span +class="cmss-10">alttree</span><a + id="dx1-20064"></a> style to make it easier to modify. These +commands are only defined if the <span +class="cmss-10">glossary-tree</span><a + id="dx1-20065"></a> package has already been loaded, +which is typically the case unless the <a +href="#styopt.notree"><span +class="cmss-10">notree</span></a><a + id="dx1-20066"></a> option has been used when loading +<span +class="cmss-10">glossaries</span>. +</p><!--l. 4542--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\gglssetwidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20067"></a> <span +class="cmtt-10">\gglssetwidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4544--><p class="noindent" > +(New to version 1.21.) This is like <span +class="cmtt-10">\glssetwidest </span>(provided by <span +class="cmss-10">glossary-tree</span><a + id="dx1-20068"></a>) but +performs a global assignment. +</p><!--l. 4549--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\eglssetwidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20069"></a> <span +class="cmtt-10">\eglssetwidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4551--><p class="noindent" > +This is like <span +class="cmtt-10">\glssetwidest </span>but performs a protected expansion on ⟨<span +class="cmti-10">name</span>⟩. This has a +localised effect. For a global setting, use +</p><!--l. 4555--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\xglssetwidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20070"></a> <span +class="cmtt-10">\xglssetwidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4557--><p class="noindent" > +The following only set the value if ⟨<span +class="cmti-10">name</span>⟩ is wider than the current value (new to +version 1.23). Local update: +</p><!--l. 4560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsupdatewidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20071"></a> <span +class="cmtt-10">\glsupdatewidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4562--><p class="noindent" > +Global update: +</p><!--l. 4564--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\gglsupdatewidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20072"></a> <span +class="cmtt-10">\gglsupdatewidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4566--><p class="noindent" > +Locale update (expands ⟨<span +class="cmti-10">name</span>⟩): +</p><!--l. 4568--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\eglsupdatewidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20073"></a> <span +class="cmtt-10">\eglsupdatewidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4570--><p class="noindent" > +Global update (expands ⟨<span +class="cmti-10">name</span>⟩): +</p><!--l. 4572--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\xglsupdatewidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-20074"></a> <span +class="cmtt-10">\xglsupdatewidest[</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4574--><p class="noindent" > +</p><!--l. 4577--><p class="indent" > The widest entry value can later be retrieved using +</p><!--l. 4578--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsgetwidestname</span><span +class="cmtt-9"> </span></span><a + id="dx1-20075"></a> <span +class="cmtt-10">\glsgetwidestname </span></div><hr> +</p><!--l. 4580--><p class="noindent" > +for the top-level entries and +</p><!--l. 4582--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsgetwidestsubname</span><span +class="cmtt-9"> </span></span><a + id="dx1-20076"></a> <span +class="cmtt-10">\glsgetwidestsubname{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 4584--><p class="noindent" > +for sub-entries, where ⟨<span +class="cmti-10">level</span>⟩ is the level number. +</p><!--l. 4587--><p class="indent" > Note that if you are using <a + id="dx1-20077"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, you can use the resource option <span +class="cmtt-10">set-widest</span> +which will try to determine the widest name of all the selected entries. This isn’t +guaranteed to work as it may depend on fonts or commands that <a + id="dx1-20078"></a><span +class="cmtt-10">bib2gls</span> +can’t replicate, but it should be suitable for names that just consist of text, +and can be more efficient than iterating over all the defined entries using +<span class="TEX">T<span +class="E">E</span>X</span>. +</p><!--l. 4595--><p class="indent" > The command <span +class="cmtt-10">\glsfindwidesttoplevelname </span>provided by <span +class="cmss-10">glossary-tree</span><a + id="dx1-20079"></a> has a +CamelCase synonym: +</p><!--l. 4597--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestTopLevelName</span><span +class="cmtt-9"> </span></span><a + id="dx1-20080"></a> <span +class="cmtt-10">\glsFindWidestTopLevelName[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]</span> +</div><hr> +</p><!--l. 4599--><p class="noindent" > +Similar commands are also provided: +</p><!--l. 4601--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedTopLevelName</span><span +class="cmtt-9"> </span></span><a + id="dx1-20081"></a> <span +class="cmtt-10">\glsFindWidestUsedTopLevelName[</span>⟨<span +class="cmitt-10">glossary</span> +<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4603--><p class="noindent" > +This has an additional check that the entry has been used. Naturally this is only +useful if the glossaries that use the <span +class="cmss-10">alttree</span><a + id="dx1-20082"></a> style occur at the end of the document. +This command should be placed just before the start of the glossary. (Alternatively, +place it at the end of the document and save the value in the auxiliary file for the +next run.) +</p><!--l. 4611--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedAnyName</span><span +class="cmtt-9"> </span></span><a + id="dx1-20083"></a> <span +class="cmtt-10">\glsFindWidestUsedAnyName[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]</span> +</div><hr> +</p><!--l. 4613--><p class="noindent" > +This is like the previous command but if doesn’t check the <span +class="cmss-10">parent</span><a + id="dx1-20084"></a> key. This is useful if +all levels should have the same width for the name. +</p><!--l. 4618--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestAnyName</span><span +class="cmtt-9"> </span></span><a + id="dx1-20085"></a> <span +class="cmtt-10">\glsFindWidestAnyName[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4620--><p class="noindent" > +This is like the previous command but doesn’t check if the entry has been +used. +</p><!--l. 4624--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedLevelTwo</span><span +class="cmtt-9"> </span></span><a + id="dx1-20086"></a> <span +class="cmtt-10">\glsFindWidestUsedLevelTwo[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]</span> +</div><hr> +</p><!--l. 4626--><p class="noindent" > +This is like <span +class="cmtt-10">\glsFindWidestUsedTopLevelName </span>but also sets the first two sub-levels +as well. Any entry that has a great-grandparent is ignored. +</p><!--l. 4631--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestLevelTwo</span><span +class="cmtt-9"> </span></span><a + id="dx1-20087"></a> <span +class="cmtt-10">\glsFindWidestLevelTwo[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]</span> +</div><hr> +</p><!--l. 4633--><p class="noindent" > +This is like the previous command but doesn’t check if the entry has been +used. +</p><!--l. 4637--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedAnyNameSymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-20088"></a> <span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbol</span> +<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4640--><p class="noindent" > +This is like <span +class="cmtt-10">\glsFindWidestUsedAnyName </span>but also measures the symbol. The length +of the widest symbol is stored in ⟨<span +class="cmti-10">register</span>⟩. + + + +</p><!--l. 4645--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestAnyNameSymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-20089"></a> <span +class="cmtt-10">\glsFindWidestAnyNameSymbol[</span>⟨<span +class="cmitt-10">glossary</span> +<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4647--><p class="noindent" > +This is like the previous command but it doesn’t check if the entry has been +used. +</p><!--l. 4651--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedAnyNameSymbolLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20090"></a> <span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation</span> +<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">symbol register</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4654--><p class="noindent" > +This is like <span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbol </span>but also measures the <a + id="dx1-20091"></a><a +href="#glo:numberlist">number list</a>. +This requires <span +class="cmtt-10">\glsentrynumberlist</span><a + id="dx1-20092"></a> (see the <span +class="cmss-10">glossaries </span>user manual). The length of +the widest symbol is stored in ⟨<span +class="cmti-10">symbol register</span>⟩ and the length of the widest <a + id="dx1-20093"></a>number +list is stored in ⟨<span +class="cmti-10">location register</span>⟩. +</p><!--l. 4662--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestAnyNameSymbolLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20094"></a> <span +class="cmtt-10">\glsFindWidestAnyNameSymbolLocation</span> +<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">symbol register</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4665--><p class="noindent" > +This is like the previous command but it doesn’t check if the entry has been +used. +</p><!--l. 4669--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestUsedAnyNameLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20095"></a> <span +class="cmtt-10">\glsFindWidestUsedAnyNameLocation</span> +<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">glossary list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4672--><p class="noindent" > +This is like <span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation </span>but doesn’t measure the +symbol. The length of the widest <a + id="dx1-20096"></a>number list is stored in ⟨<span +class="cmti-10">register</span>⟩. +</p><!--l. 4677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsFindWidestAnyNameLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20097"></a> <span +class="cmtt-10">\glsFindWidestAnyNameLocation[</span>⟨<span +class="cmitt-10">glossary</span> +<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">register</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4680--><p class="noindent" > +This is like the previous command but doesn’t check if the entry has been +used. +</p><!--l. 4684--><p class="indent" > The layout of the symbol, description and <a + id="dx1-20098"></a>number list is governed by +</p><!--l. 4686--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtralttreeSymbolDescLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20099"></a> <span +class="cmtt-10">\glsxtralttreeSymbolDescLocation</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">number list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4688--><p class="noindent" > +for top-level entries and +</p><!--l. 4690--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtralttreeSubSymbolDescLocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-20100"></a> <span +class="cmtt-10">\glsxtralttreeSubSymbolDescLocation</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">number list</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4692--><p class="noindent" > +for sub-entries. +</p><!--l. 4695--><p class="indent" > There is now a user level command that performs the initialisation for the <span +class="cmss-10">alttree</span><a + id="dx1-20101"></a> +style: +</p><!--l. 4697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtralttreeInit</span><span +class="cmtt-9"> </span></span><a + id="dx1-20102"></a> <span +class="cmtt-10">\glsxtralttreeInit </span></div><hr> +</p><!--l. 4699--><p class="noindent" > +</p><!--l. 4701--><p class="indent" > The paragraph indent for subsequent paragraphs in multi-paragraph descriptions +is provided by the length +</p><!--l. 4703--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrAltTreeIndent</span><span +class="cmtt-9"> </span></span><a + id="dx1-20103"></a> <span +class="cmtt-10">\glsxtrAltTreeIndent </span></div><hr> +</p><!--l. 4705--><p class="noindent" > + + + +</p><!--l. 4707--><p class="indent" > For additional commands that are available with the <span +class="cmss-10">alttree</span><a + id="dx1-20104"></a> style, see the +documented code (<span +class="cmtt-10">glossaries-extra-code.pdf</span>). For examples, see the +accompanying sample files <span +class="cmtt-10">sample-alttree.tex</span>, <span +class="cmtt-10">sample-alttree-sym.tex </span>and +<span +class="cmtt-10">sample-alttree-marginpar.tex</span>. + + + +</p> +<!--l. 4714--><p class="indent" > </div> +</p><!--l. 4714--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">3. <a + id="sec:abbreviations"></a>Abbreviations</h2> +</p><!--l. 4717--><p class="indent" > The new abbreviation system provided by <span +class="cmss-10">glossaries-extra </span>is more flexible +than the acronym handling provided by the base <span +class="cmss-10">glossaries </span>package. The +<span +class="cmss-10">glossaries-extra </span>package modifies the underlying formatting used by <span +class="cmtt-10">\gls </span>(and +its variants) so that terms that are recognised as abbreviations can have +their formatting dealt with by the style. You therefore need to select an +abbreviation style that ensures that <span +class="cmtt-10">\gls </span>(and its variants) displays the desired +output. +</p><!--l. 4726--><p class="indent" > <div class="important" title="Important Note"> Don’t use commands like <span +class="cmtt-10">\glstext </span>or <span +class="cmtt-10">\glsfirst </span>with abbreviations as they +aren’t flexible enough to handle some abbreviation styles and unexpected +results may occur. Use commands like <span +class="cmtt-10">\glsfmtshort </span>or <span +class="cmtt-10">\glsfmtlong </span>in +section headings or captions instead of <span +class="cmtt-10">\gls</span>. If you don’t want the full form +to show on first use of <span +class="cmtt-10">\gls </span>use one of the “nolong” or “noshort” styles. +</div> +</p><!--l. 4734--><p class="noindent" > +</p><!--l. 4736--><p class="indent" > 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 +<span +class="cmss-10">glossaries </span>package is misnamed as it’s more often than not used for initialisms instead. +Acronyms tend not to be <span +class="cmti-10">expanded </span>on <a + id="dx1-21001"></a><a +href="#glo:firstuse">first use</a> (although they may need +to be <span +class="cmti-10">described </span>for readers unfamiliar with the term). They are therefore +more like a regular term, which may or may not require a description in the +glossary. +</p><!--l. 4748--><p class="indent" > The <span +class="cmss-10">glossaries-extra </span>package corrects this misnomer, and provides better +abbreviation handling, with +</p><!--l. 4750--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\newabbreviation</span><span +class="cmtt-9"> </span></span><a + id="dx1-21002"></a> <span +class="cmtt-10">\newabbreviation[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">short</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4752--><p class="noindent" > +</p><!--l. 4754--><p class="indent" > This sets the <span +class="cmss-10">category</span><a + id="dx1-21003"></a> key to <span +class="cmtt-10">abbreviation </span>by default, but that value may be +overridden in ⟨<span +class="cmti-10">options</span>⟩. The category may have attributes that modify the way +abbreviations are defined. For example, the <a +href="#catattr.insertdots"><span +class="cmss-10">insertdots</span></a><a + id="dx1-21004"></a> attribute will automatically +insert full stops (periods) into ⟨<span +class="cmti-10">short</span>⟩ or the <a +href="#catattr.noshortplural"><span +class="cmss-10">noshortplural</span></a><a + id="dx1-21005"></a> attribute will set the default +value of the <span +class="cmss-10">shortplural</span><a + id="dx1-21006"></a> key to just ⟨<span +class="cmti-10">short</span>⟩ (without appending the plural suffix). See <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 +</a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details. +</p><!--l. 4764--><p class="indent" > See <a +href="#sec:nested"><span +class="cmsy-10">§</span>2.7 </a><a +href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a> regarding the pitfalls of using commands like <span +class="cmtt-10">\gls</span><a + id="dx1-21007"></a> or +<span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-21008"></a> within ⟨<span +class="cmti-10">short</span>⟩ or ⟨<span +class="cmti-10">long</span>⟩. +</p><!--l. 4768--><p class="indent" > <div class="important" title="Important Note"> Make sure that you set the category attributes before defining new abbreviations +or they may not be correctly applied. </div> +</p><!--l. 4771--><p class="noindent" > +</p><!--l. 4773--><p class="indent" > The <span +class="cmtt-10">\newacronym</span><a + id="dx1-21009"></a> command provided by the <span +class="cmss-10">glossaries </span>package is redefined by + + + +<span +class="cmss-10">glossaries-extra </span>to use <span +class="cmtt-10">\newabbreviation </span>with the <span +class="cmss-10">category</span><a + id="dx1-21010"></a> set to <span +class="cmtt-10">acronym </span>(see also +<a +href="#sec:acronymmods"><span +class="cmsy-10">§</span>2.8 </a><a +href="#sec:acronymmods">Acronym Style Modifications<!--tex4ht:ref: sec:acronymmods --></a>) so +</p><!--l. 4777--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\newacronym</span><span +class="cmtt-9"> </span></span><a + id="dx1-21011"></a> <span +class="cmtt-10">\newacronym[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">short</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4779--><p class="noindent" > +is +now +equivalent +to +<spacer type=vertical size=10><span class="obeylines-h"> +<br /><span +class="cmtt-10">\newabbreviation[type=\acronymtype,category=acronym,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">short</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}</span> +<br /><spacer type=vertical size=10></span> +</p><!--l. 4786--><p class="indent" > The <span +class="cmtt-10">\newabbreviation </span>command is superficially similar to the <span +class="cmss-10">glossaries</span> +package’s <span +class="cmtt-10">\newacronym </span>but you can apply different styles to different categories. The +default style is <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-21012"></a> for entries in the <span +class="cmss-10">acronym</span><a + id="dx1-21013"></a> category and <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-21014"></a> for +entries in the <span +class="cmss-10">abbreviation</span><a + id="dx1-21015"></a> category. (These aren’t the same as the acronym +styles provided by the <span +class="cmss-10">glossaries </span>package, although they may produce similar +results.) +</p><!--l. 4796--><p class="indent" > The way the abbreviations are displayed by commands like <span +class="cmtt-10">\gls </span>varies according +to the abbreviation style. The styles are set according to the entry’s category so, +unlike the base <span +class="cmss-10">glossaries </span>package, you can have different abbreviation styles within +the same glossary. +</p><!--l. 4802--><p class="indent" > There are two types of full forms. The display full form, which is used on +<a + id="dx1-21016"></a><a +href="#glo:firstuse">first use</a> by commands like <span +class="cmtt-10">\gls</span><a + id="dx1-21017"></a> and the inline full form, which is used by +commands like <span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-21018"></a>. For some of the abbreviation styles, such as +<a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-21019"></a>, the display and inline forms are the same. In the case of styles +such as <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-21020"></a> or <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-21021"></a>, the display and inline full forms are +different. +</p><!--l. 4809--><p class="indent" > These formatting commands aren’t stored in the <span +class="cmss-10">short</span><a + id="dx1-21022"></a>, <span +class="cmss-10">shortplural</span><a + id="dx1-21023"></a>, <span +class="cmss-10">long</span><a + id="dx1-21024"></a> or +<span +class="cmss-10">longplural</span><a + id="dx1-21025"></a> fields, which means they won’t be used within commands like +<span +class="cmtt-10">\glsentryshort </span>(but they are used within commands like <span +class="cmtt-10">\glsxtrshort </span>and +<span +class="cmtt-10">\glsfmtshort</span>). Note that <span +class="cmtt-10">\glsxtrlong</span><a + id="dx1-21026"></a> and the case-changing variants don’t use +<span +class="cmtt-10">\glsfirstlongfont</span>. +</p><!--l. 4817--><p class="indent" > You can apply the formatting command used for the short form to some arbitrary +text using +</p><!--l. 4819--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsuseabbrvfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-21027"></a> <span +class="cmtt-10">\glsuseabbrvfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4821--><p class="noindent" > +where ⟨<span +class="cmti-10">category</span>⟩ is the category label that identifies the abbreviation style. Similarly +for the formatting command use by the long form: +</p><!--l. 4825--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsuselongfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-21028"></a> <span +class="cmtt-10">\glsuselongfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4827--><p class="noindent" > + + + +</p> +<!--l. 4829--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.1 </span> <a + id="sec:tagging"></a>Tagging Initials</h3> +<!--l. 4832--><p class="noindent" >If you would like to tag the initial letters in the long form such that those letters are +underlined in the glossary but not in the main part of the document, you can +use +</p><!--l. 4835--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableInitialTagging</span><span +class="cmtt-9"> </span></span><a + id="dx1-22001"></a> <span +class="cmtt-10">\GlsXtrEnableInitialTagging{</span>⟨<span +class="cmitt-10">categories</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4837--><p class="noindent" > +before you define your abbreviations. +</p><!--l. 4840--><p class="indent" > This command (robustly) defines ⟨<span +class="cmti-10">cs</span>⟩ (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 <a +href="#catattr.tagging"><span +class="cmss-10">tagging</span></a><a + id="dx1-22002"></a> attribute set to +“true”. For those cases it will use +</p><!--l. 4847--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrtagfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-22003"></a> <span +class="cmtt-10">\glsxtrtagfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 4849--><p class="noindent" > +This command defaults to <span +class="cmtt-10">\underline</span><a + id="dx1-22004"></a><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>but may be redefined as required. +</p><!--l. 4853--><p class="indent" > The control sequence ⟨<span +class="cmti-10">cs</span>⟩ can’t already be defined when used with the unstarred +version of <span +class="cmtt-10">\GlsXtrEnableInitialTagging </span>for safety reasons. The starred +version will overwrite any previous definition of ⟨<span +class="cmti-10">cs</span>⟩. 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. +</p><!--l. 4862--><p class="indent" > The first argument of <span +class="cmtt-10">\GlsXtrEnableInitialTagging </span>is a comma-separated list +of category names. The <a +href="#catattr.tagging"><span +class="cmss-10">tagging</span></a><a + id="dx1-22005"></a> attribute will automatically be set for those +categories. You can later set this attribute for other categories (see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>) but +this must be done before the glossary is displayed. +</p><!--l. 4869--><p class="indent" > The accompanying sample file <span +class="cmtt-10">sample-mixtures.tex </span>uses initial tagging for both +the <span +class="cmss-10">acronym</span><a + id="dx1-22006"></a> and <span +class="cmss-10">abbreviation</span><a + id="dx1-22007"></a> categories: + + + +</p> + <div class="verbatim" id="verbatim-138"> +\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag} +</div> +<!--l. 4874--><p class="nopar" > This defines the command <span +class="cmtt-10">\itag </span>which can be used in the definitions. For +example: + + + +</p> + <div class="verbatim" id="verbatim-139"> +\newacronym + <br /> [description={a system for detecting the location and + <br /> speed of ships, aircraft, etc, through the use of radio + <br /> waves}% description of this term + <br /> ] + <br /> {radar}% identifying label + <br /> {radar}% short form (i.e. the word) + <br /> {\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging} + <br />\newabbreviation{xml}{XML} + <br /> {e\itag{x}tensible \itag{m}arkup \itag{l}anguage} +</div> +<!--l. 4889--><p class="nopar" > The underlining of the tagged letters only occurs in the glossary and then only for +entries with the <a +href="#catattr.tagging"><span +class="cmss-10">tagging</span></a><a + id="dx1-22008"></a> attribute set. +</p><!--l. 4894--><p class="noindent" > +</p> +<!--l. 4894--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.2 </span> <a + id="sec:abbrstyle"></a>Abbreviation Styles</h3> +<!--l. 4897--><p class="noindent" >The abbreviation style must be set before abbreviations are defined using: +</p><!--l. 4899--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\setabbreviationstyle</span><span +class="cmtt-9"> </span></span><a + id="dx1-23001"></a> <span +class="cmtt-10">\setabbreviationstyle[</span>⟨<span +class="cmitt-10">category</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">style-name</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 4901--><p class="noindent" > +where ⟨<span +class="cmti-10">style-name</span>⟩ is the name of the style and ⟨<span +class="cmti-10">category</span>⟩ is the category label +(<span +class="cmtt-10">abbreviation </span>by default). New abbreviations will pick up the current style +according to their given category. If there is no style set for the category, the fallback +is the style for the <span +class="cmtt-10">abbreviation </span>category. Some styles may automatically +modify one or more of the attributes associated with the given category. For +example, the <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-23002"></a> and <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-23003"></a> styles set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-23004"></a> attribute to +<span +class="cmtt-10">true</span>. +</p><!--l. 4912--><p class="indent" > <div class="important" title="Important Note"> If you want to apply different styles to groups of abbreviations, assign a +different category to each group and set the style for the given category. +</div> +</p><!--l. 4916--><p class="noindent" > +</p><!--l. 4918--><p class="indent" > Note that <span +class="cmtt-10">\setacronymstyle</span><a + id="dx1-23005"></a> is disabled by <span +class="cmss-10">glossaries-extra</span>. Use </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\setabbreviationstyle[acronym]{</span>⟨<span +class="cmitt-10">style-name</span>⟩<span +class="cmtt-10">}</span> + + + +</div> +</div> instead. The original acronym interface can be restored with <span +class="cmtt-10">\RestoreAcronyms</span><a + id="dx1-23006"></a> (see +<a +href="#sec:acronymmods"><span +class="cmsy-10">§</span>2.8 </a><a +href="#sec:acronymmods">Acronym Style Modifications<!--tex4ht:ref: sec:acronymmods --></a>). However the original acronym interface is +incompatible with all the commands described here. +<!--l. 4928--><p class="indent" > Abbreviations can be used with the standard <span +class="cmss-10">glossaries </span>commands, such as <span +class="cmtt-10">\gls</span><a + id="dx1-23007"></a>, +but don’t use the acronym commands like <span +class="cmtt-10">\acrshort</span><a + id="dx1-23008"></a> (which use <span +class="cmtt-10">\acronymfont</span><a + id="dx1-23009"></a>). +The short form can be produced with: +</p><!--l. 4932--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-23010"></a> <span +class="cmtt-10">\glsxtrshort[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4934--><p class="noindent" > +(Use this instead of <span +class="cmtt-10">\acrshort</span><a + id="dx1-23011"></a>.) +</p><!--l. 4937--><p class="indent" > The long form can be produced with +</p><!--l. 4938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-23012"></a> <span +class="cmtt-10">\glsxtrlong[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4940--><p class="noindent" > +(Use this instead of <span +class="cmtt-10">\acrlong</span><a + id="dx1-23013"></a>.) +</p><!--l. 4943--><p class="indent" > The <span +class="cmti-10">inline </span>full form can be produced with +</p><!--l. 4944--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfull</span><span +class="cmtt-9"> </span></span><a + id="dx1-23014"></a> <span +class="cmtt-10">\glsxtrfull[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4946--><p class="noindent" > +(This this instead of <span +class="cmtt-10">\acrfull</span><a + id="dx1-23015"></a>.) +</p><!--l. 4949--><p class="indent" > <div class="important" title="Important Note"> In general, it’s best not to use commands like <span +class="cmtt-10">\glsfirst</span><a + id="dx1-23016"></a> for abbreviations, +especially if you use the ⟨<span +class="cmti-10">insert</span>⟩ optional argument. Use either <span +class="cmtt-10">\gls </span>(possibly with a +reset) or <span +class="cmtt-10">\glsxtrfull</span>. </div> +</p><!--l. 4954--><p class="noindent" > +</p><!--l. 4956--><p class="indent" > As mentioned earlier, the inline full form may not necessarily match the format +used on <a + id="dx1-23017"></a><a +href="#glo:firstuse">first use</a> with <span +class="cmtt-10">\gls</span>. For example, the <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-23018"></a> style only displays the +short form on <a + id="dx1-23019"></a>first use, but the full form will display the long form followed by the +short form in parentheses. +</p><!--l. 4963--><p class="indent" > <div class="important" title="Important Note"> If you want to use an abbreviation in a chapter or section title, use the +commands described in <a +href="#sec:headtitle"><span +class="cmsy-10">§</span>4 </a><a +href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and +Contents<!--tex4ht:ref: sec:headtitle --></a> instead. </div> +</p><!--l. 4967--><p class="noindent" > +</p><!--l. 4969--><p class="indent" > The arguments ⟨<span +class="cmti-10">options</span>⟩, ⟨<span +class="cmti-10">label</span>⟩ and ⟨<span +class="cmti-10">insert</span>⟩ are the same as for commands such as +<span +class="cmtt-10">\glstext</span>. There are also analogous case-changing commands: +</p><!--l. 4973--><p class="indent" > First letter upper case short form: +</p><!--l. 4974--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-23020"></a> <span +class="cmtt-10">\Glsxtrshort[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4976--><p class="noindent" > +</p><!--l. 4978--><p class="indent" > First letter upper case long form: +</p><!--l. 4979--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-23021"></a> <span +class="cmtt-10">\Glsxtrlong[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4981--><p class="noindent" > +</p><!--l. 4983--><p class="indent" > First letter upper case inline full form: +</p><!--l. 4984--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrfull</span><span +class="cmtt-9"> </span></span><a + id="dx1-23022"></a> <span +class="cmtt-10">\Glsxtrfull[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4986--><p class="noindent" > +</p><!--l. 4988--><p class="indent" > All upper case short form: + + + +</p><!--l. 4989--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-23023"></a> <span +class="cmtt-10">\GLSxtrshort[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4991--><p class="noindent" > +</p><!--l. 4993--><p class="indent" > All upper case long form: +</p><!--l. 4994--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-23024"></a> <span +class="cmtt-10">\GLSxtrlong[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 4996--><p class="noindent" > +</p><!--l. 4998--><p class="indent" > All upper case inline full form: +</p><!--l. 4999--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrfull</span><span +class="cmtt-9"> </span></span><a + id="dx1-23025"></a> <span +class="cmtt-10">\GLSxtrfull[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5001--><p class="noindent" > +</p><!--l. 5003--><p class="indent" > Plural forms are also available. +</p><!--l. 5005--><p class="indent" > Short form plurals: +</p><!--l. 5006--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23026"></a> <span +class="cmtt-10">\glsxtrshortpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5008--><p class="noindent" > +</p><!--l. 5009--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23027"></a> <span +class="cmtt-10">\Glsxtrshortpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5011--><p class="noindent" > +</p><!--l. 5012--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23028"></a> <span +class="cmtt-10">\GLSxtrshortpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5014--><p class="noindent" > +</p><!--l. 5016--><p class="indent" > Long form plurals: +</p><!--l. 5017--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23029"></a> <span +class="cmtt-10">\glsxtrlongpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5019--><p class="noindent" > +</p><!--l. 5020--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrlongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23030"></a> <span +class="cmtt-10">\Glsxtrlongpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5022--><p class="noindent" > +</p><!--l. 5023--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrlongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23031"></a> <span +class="cmtt-10">\GLSxtrlongpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5025--><p class="noindent" > +</p><!--l. 5027--><p class="indent" > Full form plurals: +</p><!--l. 5028--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfullpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23032"></a> <span +class="cmtt-10">\glsxtrfullpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5030--><p class="noindent" > +</p><!--l. 5031--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrfullpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23033"></a> <span +class="cmtt-10">\Glsxtrfullpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5033--><p class="noindent" > +</p><!--l. 5034--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrfullpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-23034"></a> <span +class="cmtt-10">\GLSxtrfullpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 5036--><p class="noindent" > +</p><!--l. 5038--><p class="indent" > <div class="important" title="Important Note"> Be careful about using <span +class="cmtt-10">\glsentryfull</span>, <span +class="cmtt-10">\Glsentryfull</span>, <span +class="cmtt-10">\glsentryfullpl </span>and +<span +class="cmtt-10">\Glsentryfullpl</span>. These commands will use the currently applied style rather +than the style in use when the entry was defined. If you have mixed styles, +you’ll need to use <span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-23035"></a> instead. Similarly for <span +class="cmtt-10">\glsentryshort </span>etc. + + + +</div> +</p><!--l. 5044--><p class="noindent" > +</p><!--l. 5046--><p class="noindent" > +</p> +<!--l. 5046--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.3 </span> <a + id="sec:abbrshortcuts"></a>Shortcut Commands</h3> +<!--l. 5049--><p class="noindent" >The abbreviation shortcut commands can be enabled using the package option +<a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=abbreviation</span><a + id="dx1-24001"></a> (or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=abbr</span><a + id="dx1-24002"></a>) or <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=ac</span><a + id="dx1-24003"></a>. (You can use +both settings at the same time.) The provided shortcut commands listed in +<a +href="#tab:abbrshortcuts">table 3.1</a>. +</p> + <div class="table"> + + + +<!--l. 5056--><p class="indent" > <a + id="tab:abbrshortcuts"></a></p><hr class="float" /><div class="float" +> + + + + <div class="caption" +><span class="id">Table 3.1: </span><span +class="content">Abbreviation Shortcut Commands</span></div><!--tex4ht:label?: x1-240041 --> +<div class="tabular"> <table id="TBL-3" class="tabular" +cellspacing="0" cellpadding="0" +><colgroup id="TBL-3-1g"><col +id="TBL-3-1" /><col +id="TBL-3-2" /><col +id="TBL-3-3" /></colgroup><tr + style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1" +class="td11"><span +class="cmbx-10">Shortcut </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2" +class="td11"><span +class="cmbx-10">Shortcut </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-3" +class="td11"><span +class="cmbx-10">Equivalent Command</span></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1" +class="td11"><span +class="cmbx-10">(</span><a +href="#styopt.shortcuts"><span +class="cmssbx-10">shortcuts</span></a><span +class="cmssbx-10">=abbreviation</span><a + id="dx1-24005"></a><span +class="cmbx-10">)</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2" +class="td11"><span +class="cmbx-10">(</span><a +href="#styopt.shortcuts"><span +class="cmssbx-10">shortcuts</span></a><span +class="cmssbx-10">=ac</span><a + id="dx1-24006"></a><span +class="cmbx-10">)</span></td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1" +class="td11"><span +class="cmtt-10">\ab</span><a + id="dx1-24007"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2" +class="td11"><span +class="cmtt-10">\ac</span><a + id="dx1-24008"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3" +class="td11"><span +class="cmtt-10">\cgls</span><a + id="dx1-24009"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1" +class="td11"><span +class="cmtt-10">\abp</span><a + id="dx1-24010"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2" +class="td11"><span +class="cmtt-10">\acp</span><a + id="dx1-24011"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-3" +class="td11"><span +class="cmtt-10">\cglspl</span><a + id="dx1-24012"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1" +class="td11"><span +class="cmtt-10">\as</span><a + id="dx1-24013"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2" +class="td11"><span +class="cmtt-10">\acs</span><a + id="dx1-24014"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-3" +class="td11"><span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-24015"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1" +class="td11"><span +class="cmtt-10">\asp</span><a + id="dx1-24016"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2" +class="td11"><span +class="cmtt-10">\acsp</span><a + id="dx1-24017"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-3" +class="td11"><span +class="cmtt-10">\glsxtrshortpl</span><a + id="dx1-24018"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1" +class="td11"><span +class="cmtt-10">\al</span><a + id="dx1-24019"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-2" +class="td11"><span +class="cmtt-10">\acl</span><a + id="dx1-24020"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-3" +class="td11"><span +class="cmtt-10">\glsxtrlong</span><a + id="dx1-24021"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-1" +class="td11"><span +class="cmtt-10">\alp</span><a + id="dx1-24022"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-2" +class="td11"><span +class="cmtt-10">\aclp</span><a + id="dx1-24023"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-3" +class="td11"><span +class="cmtt-10">\glsxtrlongpl</span><a + id="dx1-24024"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-1" +class="td11"><span +class="cmtt-10">\af</span><a + id="dx1-24025"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-2" +class="td11"><span +class="cmtt-10">\acf</span><a + id="dx1-24026"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-3" +class="td11"><span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-24027"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-1" +class="td11"><span +class="cmtt-10">\afp</span><a + id="dx1-24028"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-2" +class="td11"><span +class="cmtt-10">\acfp</span><a + id="dx1-24029"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-3" +class="td11"><span +class="cmtt-10">\glsxtrfullpl</span><a + id="dx1-24030"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-1" +class="td11"><span +class="cmtt-10">\Ab</span><a + id="dx1-24031"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-2" +class="td11"><span +class="cmtt-10">\Ac</span><a + id="dx1-24032"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-3" +class="td11"><span +class="cmtt-10">\cgls</span><a + id="dx1-24033"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-1" +class="td11"><span +class="cmtt-10">\Abp</span><a + id="dx1-24034"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-2" +class="td11"><span +class="cmtt-10">\Acp</span><a + id="dx1-24035"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-3" +class="td11"><span +class="cmtt-10">\cglspl</span><a + id="dx1-24036"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-1" +class="td11"><span +class="cmtt-10">\As</span><a + id="dx1-24037"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-2" +class="td11"><span +class="cmtt-10">\Acs</span><a + id="dx1-24038"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-3" +class="td11"><span +class="cmtt-10">\Glsxtrshort</span><a + id="dx1-24039"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-1" +class="td11"><span +class="cmtt-10">\Asp</span><a + id="dx1-24040"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-2" +class="td11"><span +class="cmtt-10">\Acsp</span><a + id="dx1-24041"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-3" +class="td11"><span +class="cmtt-10">\Glsxtrshortpl</span><a + id="dx1-24042"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-1" +class="td11"><span +class="cmtt-10">\Al</span><a + id="dx1-24043"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-2" +class="td11"><span +class="cmtt-10">\Acl</span><a + id="dx1-24044"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-3" +class="td11"><span +class="cmtt-10">\Glsxtrlong</span><a + id="dx1-24045"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-1" +class="td11"><span +class="cmtt-10">\Alp</span><a + id="dx1-24046"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-2" +class="td11"><span +class="cmtt-10">\Aclp</span><a + id="dx1-24047"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-3" +class="td11"><span +class="cmtt-10">\Glsxtrlongpl</span><a + id="dx1-24048"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-1" +class="td11"><span +class="cmtt-10">\Af</span><a + id="dx1-24049"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-2" +class="td11"><span +class="cmtt-10">\Acf</span><a + id="dx1-24050"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-3" +class="td11"><span +class="cmtt-10">\Glsxtrfull</span><a + id="dx1-24051"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-1" +class="td11"><span +class="cmtt-10">\Afp</span><a + id="dx1-24052"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-2" +class="td11"><span +class="cmtt-10">\Acfp</span><a + id="dx1-24053"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-3" +class="td11"><span +class="cmtt-10">\Glsxtrfullpl</span><a + id="dx1-24054"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-1" +class="td11"><span +class="cmtt-10">\AB</span><a + id="dx1-24055"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-2" +class="td11"><span +class="cmtt-10">\AC</span><a + id="dx1-24056"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-3" +class="td11"><span +class="cmtt-10">\cGLS</span><a + id="dx1-24057"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-1" +class="td11"><span +class="cmtt-10">\ABP</span><a + id="dx1-24058"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-2" +class="td11"><span +class="cmtt-10">\ACP</span><a + id="dx1-24059"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-3" +class="td11"><span +class="cmtt-10">\cGLSpl</span><a + id="dx1-24060"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-1" +class="td11"><span +class="cmtt-10">\AS</span><a + id="dx1-24061"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-2" +class="td11"><span +class="cmtt-10">\ACS</span><a + id="dx1-24062"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-3" +class="td11"><span +class="cmtt-10">\GLSxtrshort</span><a + id="dx1-24063"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-1" +class="td11"><span +class="cmtt-10">\ASP</span><a + id="dx1-24064"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-2" +class="td11"><span +class="cmtt-10">\ACSP</span><a + id="dx1-24065"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-3" +class="td11"><span +class="cmtt-10">\GLSxtrshortpl</span><a + id="dx1-24066"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-1" +class="td11"><span +class="cmtt-10">\AL</span><a + id="dx1-24067"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-2" +class="td11"><span +class="cmtt-10">\ACL</span><a + id="dx1-24068"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-3" +class="td11"><span +class="cmtt-10">\GLSxtrlong</span><a + id="dx1-24069"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-1" +class="td11"><span +class="cmtt-10">\ALP</span><a + id="dx1-24070"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-2" +class="td11"><span +class="cmtt-10">\ACLP</span><a + id="dx1-24071"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-3" +class="td11"><span +class="cmtt-10">\GLSxtrlongpl</span><a + id="dx1-24072"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-1" +class="td11"><span +class="cmtt-10">\AF</span><a + id="dx1-24073"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-2" +class="td11"><span +class="cmtt-10">\ACF</span><a + id="dx1-24074"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-3" +class="td11"><span +class="cmtt-10">\GLSxtrfull</span><a + id="dx1-24075"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-1" +class="td11"><span +class="cmtt-10">\AFP</span><a + id="dx1-24076"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-2" +class="td11"><span +class="cmtt-10">\ACFP</span><a + id="dx1-24077"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-3" +class="td11"><span +class="cmtt-10">\GLSxtrfullpl</span><a + id="dx1-24078"></a> </td> +</tr><tr + style="vertical-align:baseline;" id="TBL-3-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-1" +class="td11"><span +class="cmtt-10">\newabbr</span><a + id="dx1-24079"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-2" +class="td11"><span +class="cmtt-10">\newabbr</span><a + id="dx1-24080"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-3" +class="td11"><span +class="cmtt-10">\newabbreviation</span><a + id="dx1-24081"></a> </td></tr></table></div> + + + + </div><hr class="endfloat" /> + </div> +<!--l. 5094--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.4 </span> <a + id="sec:predefabbrvstyles"></a>Predefined Abbreviation Styles</h3> +<!--l. 5097--><p class="noindent" >There are two types of abbreviation styles: those that treat the abbreviation as a +regular entry (so that <span +class="cmtt-10">\gls</span><a + id="dx1-25001"></a> uses <span +class="cmtt-10">\glsgenentryfmt</span><a + id="dx1-25002"></a>) and those that don’t treat the +abbreviation as a regular entry (so that <span +class="cmtt-10">\gls</span><a + id="dx1-25003"></a> uses <span +class="cmtt-10">\glsxtrgenabbrvfmt</span><a + id="dx1-25004"></a>). +</p><!--l. 5102--><p class="indent" > The regular entry abbreviation styles set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-25005"></a> attribute to “true” for the +category assigned to each abbreviation with that style. This means that on <a + id="dx1-25006"></a><a +href="#glo:firstuse">first use</a>, +<span +class="cmtt-10">\gls</span><a + id="dx1-25007"></a> uses the value of the <span +class="cmss-10">first</span><a + id="dx1-25008"></a> field and on subsequent use <span +class="cmtt-10">\gls</span><a + id="dx1-25009"></a> uses the value of the +<span +class="cmss-10">text</span><a + id="dx1-25010"></a> field (and analogously for the plural and case-changing versions). The <span +class="cmss-10">short</span><a + id="dx1-25011"></a> and +<span +class="cmss-10">long</span><a + id="dx1-25012"></a> fields are set as appropriate and may be accessed through commands like +<span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-25013"></a>. +</p><!--l. 5111--><p class="indent" > The other abbreviation styles don’t modify the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-25014"></a> attribute. The <span +class="cmss-10">first</span><a + id="dx1-25015"></a> +and <span +class="cmss-10">text</span><a + id="dx1-25016"></a> fields (and their plural forms) are set and can be accessed through +commands like <span +class="cmtt-10">\glsfirst</span>, but they aren’t used by commands like <span +class="cmtt-10">\gls</span><a + id="dx1-25017"></a>, which +instead use the short form (stored in the <span +class="cmss-10">short</span><a + id="dx1-25018"></a> key) and the display full +format (through commands like <span +class="cmtt-10">\glsxtrfullformat</span><a + id="dx1-25019"></a> that are defined by the +style). +</p><!--l. 5119--><p class="indent" > In both cases, the <a + id="dx1-25020"></a>first use of <span +class="cmtt-10">\gls</span><a + id="dx1-25021"></a> may not match the text produced by +<span +class="cmtt-10">\glsfirst</span><a + id="dx1-25022"></a> (and likewise for the plural and case-changing versions). +</p><!--l. 5123--><p class="indent" > The sample file <span +class="cmtt-10">sample-abbr-styles.tex </span>demonstrates all predefined styles +described here. +</p><!--l. 5126--><p class="indent" > <div class="important" title="Important Note"> For the “sc” styles that use <span +class="cmtt-10">\textsc</span><a + id="dx1-25023"></a>, be careful about your choice of fonts as +some only have limited support. For example, you may not be able to combine bold +and small-caps. I recommend that you at least use the <span +class="cmss-10">fontenc</span><a + id="dx1-25024"></a> package with the <span +class="cmss-10">T1</span> +option or something similar. </div> +</p><!--l. 5132--><p class="noindent" > +</p><!--l. 5134--><p class="indent" > The parenthetical styles, such as <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-25025"></a>, use +</p><!--l. 5136--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrparen</span><span +class="cmtt-9"> </span></span><a + id="dx1-25026"></a> <span +class="cmtt-10">\glsxtrparen{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5138--><p class="noindent" > +to set the parenthetical material. This just puts parentheses around the text: +(⟨<span +class="cmti-10">text</span>⟩). +</p><!--l. 5142--><p class="indent" > The basic abbreviation styles, such as <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-25027"></a> and <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-25028"></a> use +</p><!--l. 5144--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvdefaultfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25029"></a> <span +class="cmtt-10">\glsabbrvdefaultfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5146--><p class="noindent" > +for the short form. This just does ⟨<span +class="cmti-10">text</span>⟩ by default. (That is, no font change is +applied.) On first use, +</p><!--l. 5149--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvdefaultfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25030"></a> <span +class="cmtt-10">\glsfirstabbrvdefaultfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5151--><p class="noindent" > +is used instead. By default, this just does <span +class="cmtt-10">\glsabbrvdefaultfont</span>. The long form is +formatted according to +</p><!--l. 5154--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongdefaultfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25031"></a> <span +class="cmtt-10">\glslongdefaultfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 5156--><p class="noindent" > +which again just does ⟨<span +class="cmti-10">text</span>⟩ (no font change). On first use, +</p><!--l. 5158--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlongdefaultfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25032"></a> <span +class="cmtt-10">\glsfirstlongdefaultfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5160--><p class="noindent" > +is used instead. This just does <span +class="cmtt-10">\glslongdefaultfont</span>. The plural suffix used for the +short form is given by +</p><!--l. 5163--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrabbrvpluralsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25033"></a> <span +class="cmtt-10">\glsxtrabbrvpluralsuffix </span></div><hr> +</p><!--l. 5165--><p class="noindent" > +which defaults to <span +class="cmtt-10">\glspluralsuffix</span><a + id="dx1-25034"></a>. +</p><!--l. 5168--><p class="indent" > The small-cap styles, such as <a +href="#abbrstyle.long-short-sc"><span +class="cmss-10">long-short-sc</span></a><a + id="dx1-25035"></a> and <a +href="#abbrstyle.short-sc-long"><span +class="cmss-10">short-sc-long</span></a><a + id="dx1-25036"></a>, use +</p><!--l. 5170--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvscfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25037"></a> <span +class="cmtt-10">\glsabbrvscfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5172--><p class="noindent" > +which uses <span +class="cmtt-10">\textsc</span>.<span class="footnote-mark"><a +href="#fn1x3" id="fn1x3-bk"><sup class="textsuperscript">3.1</sup></a></span><a + id="x1-25038f1"></a> +On first use +</p><!--l. 5178--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvdefaultfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25039"></a> <span +class="cmtt-10">\glsfirstabbrvscfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5180--><p class="noindent" > +is used instead. This uses <span +class="cmtt-10">\glsabbrvscfont </span>by default. So redefine, <span +class="cmtt-10">\glsabbrvscfont</span> +to change first and subsequent uses or <span +class="cmtt-10">\glsfirstabbrvscfont </span>to change just the +first use. +</p><!--l. 5185--><p class="indent" > The long form for the small-cap styles uses <span +class="cmtt-10">\glslongdefaultfont </span>or +<span +class="cmtt-10">\glsfirstlongdefaultfont</span>, as with the basic style. The suffix is given +by +</p><!--l. 5188--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrscsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25040"></a> <span +class="cmtt-10">\glsxtrscsuffix </span></div><hr> +</p><!--l. 5190--><p class="noindent" > +This is defined as + + + +</p> + <div class="verbatim" id="verbatim-140"> +\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}} +</div> +<!--l. 5194--><p class="nopar" > The <span +class="cmtt-10">\glstextup</span><a + id="dx1-25041"></a> command is provided by <span +class="cmss-10">glossaries </span>and is used to switch off the +small caps font for the suffix. If you override the default short plural using the +<span +class="cmss-10">shortplural</span><a + id="dx1-25042"></a> key when you define the abbreviation you will need to make the +appropriate adjustment if necessary. (Remember that the default plural suffix +behaviour can be modified through the use of the <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-25043"></a> and <a +href="#catattr.noshortplural"><span +class="cmss-10">noshortplural</span></a><a + id="dx1-25044"></a> +attributes. See <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.) +</p><!--l. 5205--><p class="indent" > The small styles, such as <a +href="#abbrstyle.long-short-sm"><span +class="cmss-10">long-short-sm</span></a><a + id="dx1-25045"></a> and <a +href="#abbrstyle.short-sm-long"><span +class="cmss-10">short-sm-long</span></a><a + id="dx1-25046"></a>, use +</p><!--l. 5207--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvsmfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25047"></a> <span +class="cmtt-10">\glsabbrvsmfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5209--><p class="noindent" > +which uses <span +class="cmtt-10">\textsmaller</span>. (This requires the <span +class="cmss-10">relsizes</span><a + id="dx1-25048"></a> package, which isn’t loaded by +<span +class="cmss-10">glossaries-extra</span>, so must be loaded explicitly.) On first use +</p><!--l. 5214--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvsmfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25049"></a> <span +class="cmtt-10">\glsfirstabbrvsmfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5216--><p class="noindent" > +is used instead. This uses <span +class="cmtt-10">\glsabbrvsmfont </span>by default. +</p><!--l. 5219--><p class="indent" > The long form for the smaller styles uses <span +class="cmtt-10">\glslongdefaultfont </span>or +<span +class="cmtt-10">\glsfirstlongdefaultfont</span>, as with the basic style. The suffix is given +by +</p><!--l. 5222--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsmsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25050"></a> <span +class="cmtt-10">\glsxtrsmsuffix </span></div><hr> +</p><!--l. 5224--><p class="noindent" > +which defaults to just <span +class="cmtt-10">\glsxtrabbrvpluralsuffix</span>. +</p><!--l. 5227--><p class="indent" > The “short-em” (emphasize short) styles, such as <a +href="#abbrstyle.long-short-em"><span +class="cmss-10">long-short-em</span></a><a + id="dx1-25051"></a> or <a +href="#abbrstyle.short-em-long"><span +class="cmss-10">short-em-long</span></a><a + id="dx1-25052"></a>, +use +</p><!--l. 5229--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvemfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25053"></a> <span +class="cmtt-10">\glsabbrvemfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5231--><p class="noindent" > +On first use +</p><!--l. 5233--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvemfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25054"></a> <span +class="cmtt-10">\glsfirstabbrvemfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5235--><p class="noindent" > +is used instead. This uses <span +class="cmtt-10">\glsabbrvemfont </span>by default. The suffix is given +by +</p><!--l. 5238--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtremsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25055"></a> <span +class="cmtt-10">\glsxtremsuffix </span></div><hr> +</p><!--l. 5240--><p class="noindent" > +which defaults to just <span +class="cmtt-10">\glsxtrabbrvpluralsuffix</span>. The long form is as for the basic +style unless the style is a “long-em” style. +</p><!--l. 5245--><p class="indent" > The “long-em” (emphasize long) styles, such as <a +href="#abbrstyle.long-em-short-em"><span +class="cmss-10">long-em-short-em</span></a><a + id="dx1-25056"></a> or <a +href="#abbrstyle.short-em-long-em"><span +class="cmss-10">short-em-long-em</span></a><a + id="dx1-25057"></a>, +use +</p><!--l. 5247--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlongemfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25058"></a> <span +class="cmtt-10">\glsfirstlongemfont{</span>⟨<span +class="cmitt-10">long-form</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5249--><p class="noindent" > +instead of <span +class="cmtt-10">\glsfirstlongdefaultfont{</span>⟨<span +class="cmti-10">long-form</span>⟩<span +class="cmtt-10">} </span>and +</p><!--l. 5251--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongemfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25059"></a> <span +class="cmtt-10">\glslongemfont{</span>⟨<span +class="cmitt-10">long-form</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 5253--><p class="noindent" > +instead of <span +class="cmtt-10">\glslongdefaultfont{</span>⟨<span +class="cmti-10">long-form</span>⟩<span +class="cmtt-10">}</span>. The first form <span +class="cmtt-10">\glsfirstlongemfont</span> +is initialised to use <span +class="cmtt-10">\glslongemfont</span>. +</p><!--l. 5257--><p class="indent" > The user styles have similar commands: +</p><!--l. 5258--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvuserfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25060"></a> <span +class="cmtt-10">\glsabbrvuserfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5260--><p class="noindent" > +for the short form, +</p><!--l. 5262--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvuserfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25061"></a> <span +class="cmtt-10">\glsfirstabbrvuserfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5264--><p class="noindent" > +for the first use short form, +</p><!--l. 5266--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslonguserfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25062"></a> <span +class="cmtt-10">\glslonguserfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5268--><p class="noindent" > +for the long form, +</p><!--l. 5270--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlonguserfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25063"></a> <span +class="cmtt-10">\glsfirstlonguserfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5272--><p class="noindent" > +for the first use long form, and +</p><!--l. 5274--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrusersuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25064"></a> <span +class="cmtt-10">\glsxtrusersuffix </span></div><hr> +</p><!--l. 5276--><p class="noindent" > +for the short plural suffix. +</p><!--l. 5279--><p class="indent" > Similarly for the hyphen styles: +</p><!--l. 5280--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvhyphenfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25065"></a> <span +class="cmtt-10">\glsabbrvhyphenfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5282--><p class="noindent" > +for the short form, +</p><!--l. 5284--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvhyphenfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25066"></a> <span +class="cmtt-10">\glsfirstabbrvhyphenfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5286--><p class="noindent" > +for the first use short form, +</p><!--l. 5288--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslonghyphenfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25067"></a> <span +class="cmtt-10">\glslonghyphenfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5290--><p class="noindent" > +for the long form, +</p><!--l. 5292--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlonghyphenfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25068"></a> <span +class="cmtt-10">\glsfirstlonghyphenfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5294--><p class="noindent" > +for the first use long form, and +</p><!--l. 5296--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrhyphensuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25069"></a> <span +class="cmtt-10">\glsxtrhyphensuffix </span></div><hr> +</p><!--l. 5298--><p class="noindent" > +for the short plural suffix. +</p><!--l. 5301--><p class="indent" > Similarly for the “only” styles, such as <a +href="#abbrstyle.long-only-short-only"><span +class="cmss-10">long-only-short-only</span></a><a + id="dx1-25070"></a>: +</p><!--l. 5303--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvonlyfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25071"></a> <span +class="cmtt-10">\glsabbrvonlyfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5305--><p class="noindent" > +for the short form, +</p><!--l. 5307--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvonlyfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25072"></a> <span +class="cmtt-10">\glsfirstabbrvonlyfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5309--><p class="noindent" > +for the first use short form, +</p><!--l. 5311--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongonlyfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25073"></a> <span +class="cmtt-10">\glslongonlyfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5313--><p class="noindent" > +for the long form, +</p><!--l. 5315--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlongonlyfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-25074"></a> <span +class="cmtt-10">\glsfirstlongonlyfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 5317--><p class="noindent" > +for the first use long form, and +</p><!--l. 5319--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtronlysuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-25075"></a> <span +class="cmtt-10">\glsxtronlysuffix </span></div><hr> +</p><!--l. 5321--><p class="noindent" > +for the short plural suffix. +</p><!--l. 5324--><p class="indent" > Note that by default inserted material (provided in the final optional argument of +commands like <span +class="cmtt-10">\gls</span>), is placed outside the font command in the predefined styles. To +move it inside, use: +</p><!--l. 5327--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrinsertinsidetrue</span><span +class="cmtt-9"> </span></span><a + id="dx1-25076"></a> <span +class="cmtt-10">\glsxtrinsertinsidetrue </span></div><hr> +</p><!--l. 5329--><p class="noindent" > +This applies to all the predefined styles. For example: + + + +</p> + <div class="verbatim" id="verbatim-141"> +\setabbreviationstyle{long-short} + <br />\renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}} + <br />\glsxtrinsertinsidetrue +</div> +<!--l. 5335--><p class="nopar" > This will make the long form and the inserted text emphasized, whereas the default +(without <span +class="cmtt-10">\glsxtrinsertinsidetrue</span>) would place the inserted text outside of the +emphasized font. +</p><!--l. 5340--><p class="indent" > Note that for some styles, such as the <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-25077"></a>, the inserted text would be +placed inside the font command for the short form (rather than the long form in the +above example). +</p><!--l. 5344--><p class="indent" > Remember that <span +class="cmtt-10">\textsc </span>renders <span +class="cmti-10">lowercase </span>letters as small capitals. Uppercase +letters are rendered as normal uppercase letters, so if you specify the short form in +uppercase, you won’t get small capitals unless you redefine <span +class="cmtt-10">\glsabbrvscfont </span>to +convert its argument to lowercase. For example: + + + +</p> + <div class="verbatim" id="verbatim-142"> +\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}} +</div> +<!--l. 5351--><p class="nopar" > +</p><!--l. 5353--><p class="indent" > If you want to easily switch between the “sc” and “sm” styles, you may find it +easier to redefine this command to convert case: + + + +</p> + <div class="verbatim" id="verbatim-143"> +\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}} + <br />\renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}} +</div> +<!--l. 5359--><p class="nopar" > +</p><!--l. 5361--><p class="indent" > Some of the styles use +</p><!--l. 5362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfullsep</span><span +class="cmtt-9"> </span></span><a + id="dx1-25078"></a> <span +class="cmtt-10">\glsxtrfullsep{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5364--><p class="noindent" > +as a separator between the long and short forms. This is defined as a space by +default, but may be changed as required. For example: + + + +</p> + <div class="verbatim" id="verbatim-144"> +\renewcommand*{\glsxtrfullsep}[1]{~} +</div> +<!--l. 5369--><p class="nopar" > or + + + +</p> + <div class="verbatim" id="verbatim-145"> +\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}} +</div> +<!--l. 5373--><p class="nopar" > +</p><!--l. 5375--><p class="indent" > The new naming scheme for abbreviation styles is as follows: </p> + <ul class="itemize1"> + <li class="itemize">⟨<span +class="cmti-10">field1</span>⟩[<span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier1</span>⟩]<span +class="cmtt-10">-</span>[post]⟨<span +class="cmti-10">field2</span>⟩[<span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier2</span>⟩][<span +class="cmtt-10">-user</span>] + <!--l. 5380--><p class="noindent" >This is for the parenthetical styles. The <span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier</span>⟩ parts may be omitted. + These styles display ⟨<span +class="cmti-10">field1</span>⟩ followed by ⟨<span +class="cmti-10">field2</span>⟩ in parentheses. If ⟨<span +class="cmti-10">field1</span>⟩ or + ⟨<span +class="cmti-10">field2</span>⟩ starts with “no” then that element is omitted from the display style + (no parenthetical part) but is included in the inline style. + </p><!--l. 5386--><p class="noindent" >If the <span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier</span>⟩ part is present, then the field has a font changing command + applied to it. The special modifier <span +class="cmtt-10">-only </span>indicates that field is only present + according to whether or not the entry has been used. + </p><!--l. 5391--><p class="noindent" >If <span +class="cmtt-10">post </span>is present then ⟨<span +class="cmti-10">field2</span>⟩ is placed after the <a + id="dx1-25079"></a><a +href="#glo:linktext">link-text</a> using the + post-link hook. + </p><!--l. 5394--><p class="noindent" >If the <span +class="cmtt-10">-user </span>part is present, then the <span +class="cmss-10">user1</span><a + id="dx1-25080"></a> value, if provided, is inserted + into the parenthetical material . (The field used for the inserted material + may be changed.) + </p><!--l. 5398--><p class="noindent" >Examples: </p> + <ul class="itemize2"> + <li class="itemize"><a +href="#abbrstyle.long-noshort-sc"><span +class="cmss-10">long-noshort-sc</span></a><a + id="dx1-25081"></a>: ⟨<span +class="cmti-10">field1</span>⟩ is the long form, the short form is set in + smallcaps but omitted in the display style. + </li> + <li class="itemize"><a +href="#abbrstyle.long-em-short-em"><span +class="cmss-10">long-em-short-em</span></a><a + id="dx1-25082"></a>: both the long form and the short form are + emphasized. The short form is in parentheses. + </li> + <li class="itemize"><a +href="#abbrstyle.long-short-em"><span +class="cmss-10">long-short-em</span></a><a + id="dx1-25083"></a>: the short form is emphasized but not the long form. + The short form is in parentheses. + </li> + <li class="itemize"><a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-25084"></a>: if the <span +class="cmss-10">user1</span><a + id="dx1-25085"></a> key has been set, this produces the style + ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩, ⟨<span +class="cmti-10">user1</span>⟩) otherwise it just produces ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). + </li> + <li class="itemize"><a +href="#abbrstyle.long-hyphen-postshort-hyphen"><span +class="cmss-10">long-hyphen-postshort-hyphen</span></a><a + id="dx1-25086"></a>: the short form and the inserted + material (provided by the final optional argument of commands like + <span +class="cmtt-10">\gls</span>) is moved to the post-link hook. The long form is formatted + according to <span +class="cmtt-10">\glslonghyphenfont </span>(or <span +class="cmtt-10">\glsfirstlonghyphenfont</span> + on first use). The short form is formatted according to + <span +class="cmtt-10">\glsabbrvhyphenfont </span>(or <span +class="cmtt-10">\glsfirstabbrvhyphenfont </span>on first + use).</li></ul> + + + + </li> + <li class="itemize">⟨<span +class="cmti-10">style</span>⟩<span +class="cmtt-10">-noreg</span> + <!--l. 5422--><p class="noindent" >Some styles set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-25087"></a> attribute. In some cases, there’s a version of the + style that doesn’t set this attribute. For example, <a +href="#abbrstyle.long-em-noshort-em"><span +class="cmss-10">long-em-noshort-em</span></a><a + id="dx1-25088"></a> sets the + <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-25089"></a> attribute. The <a +href="#abbrstyle.long-em-noshort-em-noreg"><span +class="cmss-10">long-em-noshort-em-noreg</span></a><a + id="dx1-25090"></a> style is a minor variation that + style that doesn’t set the attribute. + </p><!--l. 5429--><p class="noindent" >There are a few “noshort” styles, such as <a +href="#abbrstyle.long-hyphen-noshort-noreg"><span +class="cmss-10">long-hyphen-noshort-noreg</span></a><a + id="dx1-25091"></a>, that have + “-noreg” version without a regular version. This is because the style won’t work + properly with the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-25092"></a> set, but the naming scheme is maintained for + consistency with the other “noshort” styles. + </p></li> + <li class="itemize">⟨<span +class="cmti-10">field1</span>⟩[<span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier1</span>⟩]<span +class="cmtt-10">-</span>[<span +class="cmtt-10">post</span>]<span +class="cmtt-10">footnote</span> + <!--l. 5439--><p class="noindent" >The display style uses ⟨<span +class="cmti-10">field1</span>⟩ followed by a footnote with the other field in it. If + <span +class="cmtt-10">post </span>is present then the footnote is placed after the <a + id="dx1-25093"></a><a +href="#glo:linktext">link-text</a> using the + post-link hook. The inline style does ⟨<span +class="cmti-10">field1</span>⟩ followed by the other field in + parentheses. + </p><!--l. 5445--><p class="noindent" >If <span +class="cmtt-10">-</span>⟨<span +class="cmti-10">modifier1</span>⟩ is present, ⟨<span +class="cmti-10">field1</span>⟩ has a font-changing command applied to + it. + </p><!--l. 5448--><p class="noindent" >Examples: </p> + <ul class="itemize2"> + <li class="itemize"><a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-25094"></a>: short form in the text with the long form in the + footnote. + </li> + <li class="itemize"><a +href="#abbrstyle.short-sc-postfootnote"><span +class="cmss-10">short-sc-postfootnote</span></a><a + id="dx1-25095"></a>: short form in smallcaps with the long form in + the footnote outside of the <a + id="dx1-25096"></a>link-text.</li></ul> + <!--l. 5456--><p class="noindent" ><div class="important" title="Important Note"> Take care with the footnote styles. Remember that there are some situations + where <span +class="cmtt-10">\footnote</span><a + id="dx1-25097"></a> doesn’t work. </div> + </p><!--l. 5459--><p class="noindent" > + </p></li> + <li class="itemize">⟨<span +class="cmti-10">style</span>⟩<span +class="cmtt-10">-desc</span> + <!--l. 5463--><p class="noindent" >Like ⟨<span +class="cmti-10">style</span>⟩ but the <span +class="cmss-10">description</span><a + id="dx1-25098"></a> key must be provided when defining abbreviations + with this style. + </p><!--l. 5466--><p class="noindent" >Examples: </p> + <ul class="itemize2"> + <li class="itemize"><a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-25099"></a>: like <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-25100"></a> but requires a description. + </li> + <li class="itemize"><a +href="#abbrstyle.short-em-footnote-desc"><span +class="cmss-10">short-em-footnote-desc</span></a><a + id="dx1-25101"></a>: like <a +href="#abbrstyle.short-em-footnote"><span +class="cmss-10">short-em-footnote</span></a><a + id="dx1-25102"></a> but requires a + description.</li></ul> + + + + </li></ul> +<!--l. 5476--><p class="indent" > Not all combinations that fit the above syntax are provided. Pre-version 1.04 +styles that didn’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: +</p><!--l. 5482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrWarnDeprecatedAbbrStyle</span><span +class="cmtt-9"> </span></span><a + id="dx1-25103"></a> <span +class="cmtt-10">\GlsXtrWarnDeprecatedAbbrStyle</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">old-name</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">new-name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 5484--><p class="noindent" > +where ⟨<span +class="cmti-10">old-name</span>⟩ is the deprecated name and ⟨<span +class="cmti-10">new-name</span>⟩ is the preferred name. You +can suppress these warnings by redefining this command to do nothing. +</p><!--l. 5490--><p class="noindent" > +</p> +<!--l. 5490--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.4.1 </span> <a + id="sec:predefregabbrvstyles"></a>Predefined Abbreviation Styles that Set the Regular Attribute</h4> +<!--l. 5493--><p class="noindent" >The following abbreviation styles set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-26001"></a> attribute to “true” for all categories +that have abbreviations defined with any of these styles. + </p><dl class="description"><dt class="description"> +<a + id="abbrstyle.short-nolong"></a><span +class="cmssbx-10">short-nolong</span><a + id="dx1-26002"></a> </dt><dd +class="description">This only displays the short form on <a + id="dx1-26003"></a><a +href="#glo:firstuse">first use</a>. The <span +class="cmss-10">name</span><a + id="dx1-26004"></a> is set to the + short form through the command + <!--l. 5501--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortnolongname</span><span +class="cmtt-9"> </span></span><a + id="dx1-26005"></a> <span +class="cmtt-10">\glsxtrshortnolongname </span></div><hr> + </p><!--l. 5503--><p class="noindent" > + (Similarly for the other <span +class="cmtt-10">short</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-nolong</span>⟨<span +class="cmti-10">modifier</span>⟩ styles, unless indicated + otherwise.) This command is expanded as the entry is defined, so any + redefinition must be done before <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>) for it to + take effect. Make sure to <span +class="cmtt-10">\protect </span>any formatting commands (or anything else + that shouldn’t be expanded). + </p><!--l. 5512--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-26006"></a> is set to the long form. The inline full form displays ⟨<span +class="cmti-10">short</span>⟩ + (⟨<span +class="cmti-10">long</span>⟩). The long form on its own can be displayed through commands like + <span +class="cmtt-10">\glsxtrlong</span><a + id="dx1-26007"></a>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short"></a><span +class="cmssbx-10">short</span><a + id="dx1-26008"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26009"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.nolong-short"></a><span +class="cmssbx-10">nolong-short</span><a + id="dx1-26010"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26011"></a> but the inline full form displays ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-nolong"></a><span +class="cmssbx-10">short-sc-nolong</span><a + id="dx1-26012"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26013"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-26014"></a> (which defaults to <span +class="cmtt-10">\textsc</span>). + </dd><dt class="description"> +<a + id="abbrstyle.short-sc"></a><span +class="cmssbx-10">short-sc</span><a + id="dx1-26015"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-sc-nolong"><span +class="cmss-10">short-sc-nolong</span></a><a + id="dx1-26016"></a> + + + + </dd><dt class="description"> +<a + id="abbrstyle.nolong-short-sc"></a><span +class="cmssbx-10">nolong-short-sc</span><a + id="dx1-26017"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-sc-nolong"><span +class="cmss-10">short-sc-nolong</span></a><a + id="dx1-26018"></a> but the inline full form displays ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). + The name is still obtained from <span +class="cmtt-10">\glsxtrshortnolongname </span>(similarly for the + other styles in the form <span +class="cmtt-10">nolong</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-short</span>⟨<span +class="cmti-10">modifier</span>⟩ unless indicated + otherwise). + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-nolong"></a><span +class="cmssbx-10">short-sm-nolong</span><a + id="dx1-26019"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26020"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-26021"></a> (which defaults to <span +class="cmtt-10">\textsmaller</span>). + </dd><dt class="description"> +<a + id="abbrstyle.short-sm"></a><span +class="cmssbx-10">short-sm</span><a + id="dx1-26022"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-sm-nolong"><span +class="cmss-10">short-sm-nolong</span></a><a + id="dx1-26023"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.nolong-short-sm"></a><span +class="cmssbx-10">nolong-short-sm</span><a + id="dx1-26024"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-sm-nolong"><span +class="cmss-10">short-sm-nolong</span></a><a + id="dx1-26025"></a> but the inline full form displays ⟨<span +class="cmti-10">long</span>⟩ + (⟨<span +class="cmti-10">short</span>⟩). + </dd><dt class="description"> +<a + id="abbrstyle.short-em-nolong"></a><span +class="cmssbx-10">short-em-nolong</span><a + id="dx1-26026"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26027"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26028"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em"></a><span +class="cmssbx-10">short-em</span><a + id="dx1-26029"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-em-nolong"><span +class="cmss-10">short-em-nolong</span></a><a + id="dx1-26030"></a> + </dd><dt class="description"> +<a + id="abbrstyle.nolong-short-em"></a><span +class="cmssbx-10">nolong-short-em</span><a + id="dx1-26031"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-em-nolong"><span +class="cmss-10">short-em-nolong</span></a><a + id="dx1-26032"></a> but the inline full form displays ⟨<span +class="cmti-10">long</span>⟩ + (⟨<span +class="cmti-10">short</span>⟩). + </dd><dt class="description"> +<a + id="abbrstyle.short-nolong-desc"></a><span +class="cmssbx-10">short-nolong-desc</span><a + id="dx1-26033"></a> </dt><dd +class="description">Like the <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26034"></a> style, but the <span +class="cmss-10">name</span><a + id="dx1-26035"></a> is set to the full form + obtained by expanding + <!--l. 5559--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-26036"></a> <span +class="cmtt-10">\glsxtrshortdescname </span></div><hr> + </p><!--l. 5561--><p class="noindent" > + (Similarly for the other <span +class="cmtt-10">short</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-nolong</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-desc </span>styles, unless + indicated otherwise.) This command is expanded when the entry is defined, so + <span +class="cmtt-10">\protect </span>fragile and formatting commands and only redefine this command + before <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>). + </p><!--l. 5568--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-26037"></a> must be supplied by the user. You may prefer to use + the <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26038"></a> style with the post-description hook set to display + the long form and override the <span +class="cmss-10">description</span><a + id="dx1-26039"></a> key. (See the sample file + <span +class="cmtt-10">sample-acronym-desc.tex</span>.) + </p></dd><dt class="description"> +<a + id="abbrstyle.short-desc"></a><span +class="cmssbx-10">short-desc</span><a + id="dx1-26040"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-nolong-desc"><span +class="cmss-10">short-nolong-desc</span></a><a + id="dx1-26041"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-nolong-desc"></a><span +class="cmssbx-10">short-sc-nolong-desc</span><a + id="dx1-26042"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-26043"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-26044"></a> (which defaults to <span +class="cmtt-10">\textsc</span>). + + + + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-desc"></a><span +class="cmssbx-10">short-sc-desc</span><a + id="dx1-26045"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-sc-nolong-desc"><span +class="cmss-10">short-sc-nolong-desc</span></a><a + id="dx1-26046"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-nolong-desc"></a><span +class="cmssbx-10">short-sm-nolong-desc</span><a + id="dx1-26047"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong-desc"><span +class="cmss-10">short-nolong-desc</span></a><a + id="dx1-26048"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-26049"></a> (which defaults to <span +class="cmtt-10">\textsmaller</span>). + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-desc"></a><span +class="cmssbx-10">short-sm-desc</span><a + id="dx1-26050"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-sm-nolong-desc"><span +class="cmss-10">short-sm-nolong-desc</span></a><a + id="dx1-26051"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-nolong-desc"></a><span +class="cmssbx-10">short-em-nolong-desc</span><a + id="dx1-26052"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-nolong-desc"><span +class="cmss-10">short-nolong-desc</span></a><a + id="dx1-26053"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26054"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-desc"></a><span +class="cmssbx-10">short-em-desc</span><a + id="dx1-26055"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-em-nolong-desc"><span +class="cmss-10">short-em-nolong-desc</span></a><a + id="dx1-26056"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-desc"></a><span +class="cmssbx-10">long-noshort-desc</span><a + id="dx1-26057"></a> </dt><dd +class="description">This style only displays the long form, regardless of first or + subsequent use of commands <span +class="cmtt-10">\gls</span><a + id="dx1-26058"></a>. The short form may be accessed + through commands like <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-26059"></a>. The inline full form displays ⟨<span +class="cmti-10">long</span>⟩ + (⟨<span +class="cmti-10">short</span>⟩). + <!--l. 5604--><p class="noindent" >The <span +class="cmss-10">sort</span><a + id="dx1-26060"></a> key are set to the long form. The <span +class="cmss-10">name</span><a + id="dx1-26061"></a> key is also set to the long form, + but this is done by expanding + </p><!--l. 5607--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongnoshortdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-26062"></a> <span +class="cmtt-10">\glsxtrlongnoshortdescname </span></div><hr> + </p><!--l. 5609--><p class="noindent" > + (Similarly for the other <span +class="cmtt-10">long</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-noshort</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-desc </span>styles, unless + indicated otherwise.) This command should only be redefined before + abbreviations are defined, and any fragile or formatting commands within it + need protecting. + </p><!--l. 5615--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-26063"></a> must be provided by the user. The predefined glossary styles + won’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 ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). + </p></dd><dt class="description"> +<a + id="abbrstyle.long-desc"></a><span +class="cmssbx-10">long-desc</span><a + id="dx1-26064"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26065"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-sc-desc"></a><span +class="cmssbx-10">long-noshort-sc-desc</span><a + id="dx1-26066"></a> </dt><dd +class="description">Like the <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26067"></a> style but the short form (accessed + through commands like <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-26068"></a>) use <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-26069"></a>. (This style was + originally called <span +class="cmss-10">long-desc-sc</span><a + id="dx1-26070"></a>. Renamed in version 1.04, but original name + retained as a deprecated synonym for backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-sm-desc"></a><span +class="cmssbx-10">long-noshort-sm-desc</span><a + id="dx1-26071"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26072"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-26073"></a>. (This style was originally called <span +class="cmss-10">long-desc-sm</span><a + id="dx1-26074"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + + + + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-em-desc"></a><span +class="cmssbx-10">long-noshort-em-desc</span><a + id="dx1-26075"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26076"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26077"></a>. The long form isn’t emphasized. (This style was originally + called <span +class="cmss-10">long-desc-em</span><a + id="dx1-26078"></a>. Renamed in version 1.04, but original name retained as a + deprecated synonym for backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.long-em-noshort-em-desc"></a><span +class="cmssbx-10">long-em-noshort-em-desc</span><a + id="dx1-26079"></a> </dt><dd +class="description">New to version 1.04, like <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26080"></a> but + redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26081"></a>. The long form uses + <span +class="cmtt-10">\glsfirstlongemfont</span><a + id="dx1-26082"></a> and <span +class="cmtt-10">\glslongemfont</span><a + id="dx1-26083"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort"></a><span +class="cmssbx-10">long-noshort</span><a + id="dx1-26084"></a> </dt><dd +class="description">This style doesn’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 <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-26085"></a> style, but the <span +class="cmss-10">sort</span><a + id="dx1-26086"></a> key is set to the short + form. The <span +class="cmss-10">name</span><a + id="dx1-26087"></a> key is also set to the short form, but this is done by + expanding + <!--l. 5656--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongnoshortname</span><span +class="cmtt-9"> </span></span><a + id="dx1-26088"></a> <span +class="cmtt-10">\glsxtrlongnoshortname </span></div><hr> + </p><!--l. 5658--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">long</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-noshort</span>⟨<span +class="cmti-10">modifier</span>⟩ styles, unless indicated + otherwise.) This command should only be redefined before abbreviations are + defined, and fragile or formatting commands should be protected. + </p><!--l. 5665--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-26089"></a> is set to the long form. + </p></dd><dt class="description"> +<a + id="abbrstyle.long"></a><span +class="cmssbx-10">long</span><a + id="dx1-26090"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-26091"></a> + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-sc"></a><span +class="cmssbx-10">long-noshort-sc</span><a + id="dx1-26092"></a> </dt><dd +class="description">Like the <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-26093"></a> style but the short form (accessed through + commands like <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-26094"></a>) use <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-26095"></a>. (This style was originally + called <span +class="cmss-10">long-sc</span><a + id="dx1-26096"></a>. Renamed in version 1.04, but original name retained as a + deprecated synonym for backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-sm"></a><span +class="cmssbx-10">long-noshort-sm</span><a + id="dx1-26097"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-26098"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-26099"></a>. (This style was originally called <span +class="cmss-10">long-sm</span><a + id="dx1-26100"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-em"></a><span +class="cmssbx-10">long-noshort-em</span><a + id="dx1-26101"></a> </dt><dd +class="description">This style is like <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-26102"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26103"></a>. The long form isn’t emphasized. (This style was originally + called <span +class="cmss-10">long-em</span><a + id="dx1-26104"></a>. Renamed in version 1.04, but original name retained as a + deprecated synonym for backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.long-em-noshort-em"></a><span +class="cmssbx-10">long-em-noshort-em</span><a + id="dx1-26105"></a> </dt><dd +class="description">New to version 1.04, this style is like <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-26106"></a> but redefines + + + + <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-26107"></a>, <span +class="cmtt-10">\glsfirstlongfont </span>to use + <span +class="cmtt-10">\glsfirstlongemfont </span>and <span +class="cmtt-10">\glslongfont </span>to use <span +class="cmtt-10">\glslongemfont</span>. The short + form isn’t used by commands like <span +class="cmtt-10">\gls</span><a + id="dx1-26108"></a>, but can be obtained using + <span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-26109"></a>. The related style <a + id="abbrstyle.long-em-noshort-em-noreg"></a><span +class="cmss-10">long-em-noshort-em-noreg</span><a + id="dx1-26110"></a> doesn’t set the + <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-26111"></a> attribute. + </dd></dl> +<!--l. 5702--><p class="noindent" > +</p> +<!--l. 5702--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.4.2 </span> <a + id="sec:predefnonregabbrvstyles"></a>Predefined Abbreviation Styles that Don’t Set the Regular Attribute</h4> +<!--l. 5705--><p class="noindent" >The following abbreviation styles will set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27001"></a> attribute to “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. + </p><dl class="description"><dt class="description"> +<a + id="abbrstyle.long-short"></a><span +class="cmssbx-10">long-short</span><a + id="dx1-27002"></a> </dt><dd +class="description">On <a + id="dx1-27003"></a><a +href="#glo:firstuse">first use</a>, this style uses the format ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). The inline and + display full forms are the same. The <span +class="cmss-10">sort</span><a + id="dx1-27004"></a> key is set to the short form. The <span +class="cmss-10">name</span><a + id="dx1-27005"></a> + is also set to the short form through + <!--l. 5716--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongshortname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27006"></a> <span +class="cmtt-10">\glsxtrlongshortname </span></div><hr> + </p><!--l. 5718--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">long</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-short</span>⟨<span +class="cmti-10">modifier</span>⟩ styles, unless indicated + otherwise.) Any redefinition of this command must come before the + abbreviations are defined as it expands on definition. Make sure you protect + any commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p><!--l. 5728--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-27007"></a> is set to the long form. The long and short forms are separated + by <span +class="cmtt-10">\glsxtrfullsep</span>. If you want to insert material within the parentheses + (such as a translation), try the <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27008"></a> style. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-short-sc"></a><span +class="cmssbx-10">long-short-sc</span><a + id="dx1-27009"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27010"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27011"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-sm"></a><span +class="cmssbx-10">long-short-sm</span><a + id="dx1-27012"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27013"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27014"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-em"></a><span +class="cmssbx-10">long-short-em</span><a + id="dx1-27015"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27016"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27017"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-em-short-em"></a><span +class="cmssbx-10">long-em-short-em</span><a + id="dx1-27018"></a> </dt><dd +class="description">New to version 1.04, this style is like <a +href="#abbrstyle.long-short-em"><span +class="cmss-10">long-short-em</span></a><a + id="dx1-27019"></a> but redefines + <span +class="cmtt-10">\glsfirstlongfont </span>to use <span +class="cmtt-10">\glsfirstlongemfont</span><a + id="dx1-27020"></a>. + + + + </dd><dt class="description"> +<a + id="abbrstyle.long-only-short-only"></a><span +class="cmssbx-10">long-only-short-only</span><a + id="dx1-27021"></a> </dt><dd +class="description">New to version 1.17, this style only shows the long form on first + use and only shows the short form on subsequent use. The inline full form + <span +class="cmtt-10">\glsxtrfull </span>shows the long form followed by the short form in parentheses. + The <span +class="cmss-10">name</span><a + id="dx1-27022"></a> field is obtained from + <!--l. 5755--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtronlyname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27023"></a> <span +class="cmtt-10">\glsxtronlyname </span></div><hr> + </p><!--l. 5757--><p class="noindent" > + Any redefinition of this command must come before the abbreviations + are defined as it expands on definition. Make sure you protect any + commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-only-short-only-desc"></a><span +class="cmssbx-10">long-only-short-only-desc</span><a + id="dx1-27024"></a> </dt><dd +class="description">New to version 1.17, this style is like <a +href="#abbrstyle.long-only-short-only"><span +class="cmss-10">long-only-short-only</span></a><a + id="dx1-27025"></a> + but the user must supply the description. The <span +class="cmss-10">name</span><a + id="dx1-27026"></a> field is obtained + from + <!--l. 5769--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtronlydescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27027"></a> <span +class="cmtt-10">\glsxtronlydescname </span></div><hr> + </p><!--l. 5771--><p class="noindent" > + Any redefinition of this command must come before the abbreviations + are defined as it expands on definition. Make sure you protect any + commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-em-noshort-em-noreg"></a><span +class="cmssbx-10">long-em-noshort-em-noreg</span><a + id="dx1-27028"></a> </dt><dd +class="description">New to version 1.17, this style is like <a +href="#abbrstyle.long-em-noshort-em"><span +class="cmss-10">long-em-noshort-em</span></a><a + id="dx1-27029"></a> + but doesn’t set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27030"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-user"></a><span +class="cmssbx-10">long-short-user</span><a + id="dx1-27031"></a> </dt><dd +class="description">This style was introduced in version 1.04. It’s like the <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27032"></a> style + but additional information can be inserted into the parenthetical material. This + checks the value of the field given by + <!--l. 5788--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtruserfield</span><span +class="cmtt-9"> </span></span><a + id="dx1-27033"></a> <span +class="cmtt-10">\glsxtruserfield </span></div><hr> + </p><!--l. 5790--><p class="noindent" > + (which defaults to <span +class="cmtt-10">useri</span>) using <span +class="cmtt-10">\ifglshasfield</span><a + id="dx1-27034"></a> (provided by <span +class="cmss-10">glossaries</span>). If the + field hasn’t been set, the style behaves like the <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27035"></a> style and produces + ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩) but if the field has been set, the contents of that field are inserted + within the parentheses in the form ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩, ⟨<span +class="cmti-10">field-value</span>⟩). The format is + governed by + </p><!--l. 5798--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtruserparen</span><span +class="cmtt-9"> </span></span><a + id="dx1-27036"></a> <span +class="cmtt-10">\glsxtruserparen{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 5800--><p class="noindent" > + where ⟨<span +class="cmti-10">text</span>⟩ is the short form (for the <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27037"></a> style) or the long form (for + the <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27038"></a> style). This command first inserts a space using + + + + <span +class="cmtt-10">\glsxtrfullsep </span>and then the parenthetical content (using <span +class="cmtt-10">\glsxtrparen</span><a + id="dx1-27039"></a>). + The <span +class="cmss-10">description</span><a + id="dx1-27040"></a> is set to + </p><!--l. 5807--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsuserdescription</span><span +class="cmtt-9"> </span></span><a + id="dx1-27041"></a> <span +class="cmtt-10">\glsuserdescription{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 5809--><p class="noindent" > + The default definition ignores the ⟨<span +class="cmti-10">label</span>⟩ and encapsulates ⟨<span +class="cmti-10">long</span>⟩ with + <span +class="cmtt-10">\glslonguserfont</span>. + </p><!--l. 5813--><p class="noindent" >The <span +class="cmss-10">name</span><a + id="dx1-27042"></a> is obtained by expanding <span +class="cmtt-10">\glsxtrlongshortname </span>(see above). The + ⟨<span +class="cmti-10">text</span>⟩ argument includes the font formatting command, <span +class="cmtt-10">\glsfirstabbrvfont</span> + <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">short</span>⟩<span +class="cmtt-10">} </span>in the case of the <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27043"></a> style and <span +class="cmtt-10">\glsfirstlongfont{</span>⟨<span +class="cmti-10">long</span>⟩<span +class="cmtt-10">}</span> + in the case of the <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27044"></a> style. + </p><!--l. 5821--><p class="noindent" >For example: + + + +</p> + <div class="verbatim" id="verbatim-146"> + \setabbreviationstyle[acronym]{long-short-user} +  <br />\newacronym{tug}{TUG}{\TeX\ User Group} +  <br />\newacronym +  <br /> [user1={German Speaking \TeX\ User Group}] +  <br /> {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V} +</div> + <!--l. 5831--><p class="nopar" > On first use, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{tug}</span></span></span> will appear as: + </p><div class="quote"> + <!--l. 5834--><p class="noindent" ><span class="TEX">T<span +class="E">E</span>X</span> User Group (TUG)</p></div> + <!--l. 5836--><p class="noindent" >whereas <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{dante}</span></span></span> will appear as: + </p><div class="quote"> + <!--l. 5838--><p class="noindent" >Deutschsprachige Anwendervereinigung <span class="TEX">T<span +class="E">E</span>X</span> e.V (DANTE, + German Speaking <span class="TEX">T<span +class="E">E</span>X</span> User Group)</p></div> + <!--l. 5841--><p class="noindent" >The short form is formatted according to + </p><!--l. 5842--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvuserfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-27045"></a> <span +class="cmtt-10">\glsabbrvuserfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 5844--><p class="noindent" > + and the plural suffix is given by + </p><!--l. 5846--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrusersuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-27046"></a> <span +class="cmtt-10">\glsxtrusersuffix </span></div><hr> + </p><!--l. 5848--><p class="noindent" > + </p><!--l. 5850--><p class="noindent" >These may be redefined as appropriate. For example, if you want a smallcaps + style, you can just set these commands to those used by the <a +href="#abbrstyle.long-short-sc"><span +class="cmss-10">long-short-sc</span></a><a + id="dx1-27047"></a> + style: + + + +</p> + <div class="verbatim" id="verbatim-147"> + \renewcommand{\glsabbruserfont}[1]{\glsabbrvscfont{#1}} +  <br />\renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix} +</div> + <!--l. 5856--><p class="nopar" > + </p></dd><dt class="description"> +<a + id="abbrstyle.long-noshort-noreg"></a><span +class="cmssbx-10">long-noshort-noreg</span><a + id="dx1-27048"></a> </dt><dd +class="description">This style is like <a +href="#abbrstyle.long-noshort"><span +class="cmss-10">long-noshort</span></a><a + id="dx1-27049"></a> but it doesn’t set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27050"></a> + attribute. + </dd><dt class="description"> +<a + id="abbrstyle.long-noshort-desc-noreg"></a><span +class="cmssbx-10">long-noshort-desc-noreg</span><a + id="dx1-27051"></a> </dt><dd +class="description">This style is like <a +href="#abbrstyle.long-noshort-desc"><span +class="cmss-10">long-noshort-desc</span></a><a + id="dx1-27052"></a> but it doesn’t set the + <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27053"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-desc"></a><span +class="cmssbx-10">long-short-desc</span><a + id="dx1-27054"></a> </dt><dd +class="description">On <a + id="dx1-27055"></a><a +href="#glo:firstuse">first use</a>, this style uses the format ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). The + inline and display full forms are the same. The <span +class="cmss-10">name</span><a + id="dx1-27056"></a> is set to the full + form. The <span +class="cmss-10">sort</span><a + id="dx1-27057"></a> key is set to ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩). Before version 1.04, this was + incorrectly set to the short form. If you want to revert back to this you can + redefine + <!--l. 5873--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongshortdescsort</span><span +class="cmtt-9"> </span></span><a + id="dx1-27058"></a> <span +class="cmtt-10">\glsxtrlongshortdescsort </span></div><hr> + </p><!--l. 5875--><p class="noindent" > + For example: + + + +</p> + <div class="verbatim" id="verbatim-148"> + \renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok} +</div> + <!--l. 5879--><p class="nopar" > The <span +class="cmss-10">description</span><a + id="dx1-27059"></a> must be supplied by the user. The long and short + forms are separated by <span +class="cmtt-10">\glsxtrfullsep</span>. The <span +class="cmss-10">name</span><a + id="dx1-27060"></a> field is obtained + from + </p><!--l. 5883--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongshortdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27061"></a> <span +class="cmtt-10">\glsxtrlongshortdescname </span></div><hr> + </p><!--l. 5885--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">long</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-short</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-desc </span>styles, unless indicated + otherwise.) Any redefinition of this command must come before the + abbreviations are defined as it expands on definition. Make sure you protect + any commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-short-sc-desc"></a><span +class="cmssbx-10">long-short-sc-desc</span><a + id="dx1-27062"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-27063"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27064"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-sm-desc"></a><span +class="cmssbx-10">long-short-sm-desc</span><a + id="dx1-27065"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-27066"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27067"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-em-desc"></a><span +class="cmssbx-10">long-short-em-desc</span><a + id="dx1-27068"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-27069"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27070"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-em-short-em-desc"></a><span +class="cmssbx-10">long-em-short-em-desc</span><a + id="dx1-27071"></a> </dt><dd +class="description">New to version 1.04, this style is like <a +href="#abbrstyle.long-short-em-desc"><span +class="cmss-10">long-short-em-desc</span></a><a + id="dx1-27072"></a> but + redefines <span +class="cmtt-10">\glsfirstlongfont </span>to use <span +class="cmtt-10">\glsfirstlongemfont</span><a + id="dx1-27073"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.long-em-noshort-em-desc-noreg"></a><span +class="cmssbx-10">long-em-noshort-em-desc-noreg</span><a + id="dx1-27074"></a> </dt><dd +class="description">New to version 1.17, this style is like + <a +href="#abbrstyle.long-em-noshort-em-desc"><span +class="cmss-10">long-em-noshort-em-desc</span></a><a + id="dx1-27075"></a> but doesn’t set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27076"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.long-short-user-desc"></a><span +class="cmssbx-10">long-short-user-desc</span><a + id="dx1-27077"></a> </dt><dd +class="description">New to version 1.04, this style is like a cross between the + <a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-27078"></a> style and the <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27079"></a> style. The display and + inline forms are as for <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27080"></a> and the <span +class="cmss-10">name</span><a + id="dx1-27081"></a> key is obtained + from + <!--l. 5923--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlongshortuserdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27082"></a> <span +class="cmtt-10">\glsxtrlongshortuserdescname </span></div><hr> + + + + </p><!--l. 5925--><p class="noindent" > + Again, this should only be redefined before <span +class="cmtt-10">\newabbreviation </span>(or + <span +class="cmtt-10">\newacronym</span>), and fragile and formatting commands need protecting. + </p><!--l. 5929--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-27083"></a> key must be supplied in the optional argument of + <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>). The <span +class="cmss-10">sort</span><a + id="dx1-27084"></a> key is set to ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩) as per + the <a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-27085"></a> style. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-nolong-noreg"></a><span +class="cmssbx-10">short-nolong-noreg</span><a + id="dx1-27086"></a> </dt><dd +class="description">This is like <a +href="#abbrstyle.short-nolong"><span +class="cmss-10">short-nolong</span></a><a + id="dx1-27087"></a> but doesn’t set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27088"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.nolong-short-noreg"></a><span +class="cmssbx-10">nolong-short-noreg</span><a + id="dx1-27089"></a> </dt><dd +class="description">This is like <a +href="#abbrstyle.nolong-short"><span +class="cmss-10">nolong-short</span></a><a + id="dx1-27090"></a> but doesn’t set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27091"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.short-long"></a><span +class="cmssbx-10">short-long</span><a + id="dx1-27092"></a> </dt><dd +class="description">On <a + id="dx1-27093"></a><a +href="#glo:firstuse">first use</a>, this style uses the format ⟨<span +class="cmti-10">short</span>⟩ (⟨<span +class="cmti-10">long</span>⟩). The inline and + display full forms are the same. The <span +class="cmss-10">name</span><a + id="dx1-27094"></a> and <span +class="cmss-10">sort</span><a + id="dx1-27095"></a> keys are set to the + short form. The <span +class="cmss-10">description</span><a + id="dx1-27096"></a> is set to the long form. The short and long + forms are separated by <span +class="cmtt-10">\glsxtrfullsep</span>. If you want to insert material + within the parentheses (such as a translation), try the <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27097"></a> + style. + <!--l. 5952--><p class="noindent" >The <span +class="cmss-10">name</span><a + id="dx1-27098"></a> field is obtained from + </p><!--l. 5953--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortlongname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27099"></a> <span +class="cmtt-10">\glsxtrshortlongname </span></div><hr> + </p><!--l. 5955--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">short</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-long</span>⟨<span +class="cmti-10">modifier</span>⟩ styles, unless indicated + otherwise.) Any redefinition of this command must come before the + abbreviations are defined as it expands on definition. Make sure you protect + any commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-sc-long"></a><span +class="cmssbx-10">short-sc-long</span><a + id="dx1-27100"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-27101"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27102"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-long"></a><span +class="cmssbx-10">short-sm-long</span><a + id="dx1-27103"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-27104"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27105"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-long"></a><span +class="cmssbx-10">short-em-long</span><a + id="dx1-27106"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-27107"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27108"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-long-em"></a><span +class="cmssbx-10">short-em-long-em</span><a + id="dx1-27109"></a> </dt><dd +class="description">New to version 1.04, this style is like <a +href="#abbrstyle.short-em-long"><span +class="cmss-10">short-em-long</span></a><a + id="dx1-27110"></a> but redefines + <span +class="cmtt-10">\glsfirstlongfont </span>to use <span +class="cmtt-10">\glsfirstlongemfont</span><a + id="dx1-27111"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-long-user"></a><span +class="cmssbx-10">short-long-user</span><a + id="dx1-27112"></a> </dt><dd +class="description">New to version 1.04. This style is like the <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27113"></a> style but + with the long and short forms switched. The parenthetical material is governed + by the same command <span +class="cmtt-10">\glsxtruserparen</span><a + id="dx1-27114"></a>, but the first argument supplied to it + + + + is the long form instead of the short form. The <span +class="cmss-10">name</span><a + id="dx1-27115"></a> field is obtained by + expanding + <!--l. 5989--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortlongname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27116"></a> <span +class="cmtt-10">\glsxtrshortlongname </span></div><hr> + </p><!--l. 5991--><p class="noindent" > + Again, this should only be redefined before <span +class="cmtt-10">\newabbreviation </span>(or + <span +class="cmtt-10">\newacronym</span>) and commands that should be expanded need to be protected. + The <span +class="cmss-10">description</span><a + id="dx1-27117"></a> is set to <span +class="cmtt-10">\glsuserdescription{</span>⟨<span +class="cmti-10">long</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-nolong-desc-noreg"></a><span +class="cmssbx-10">short-nolong-desc-noreg</span><a + id="dx1-27118"></a> </dt><dd +class="description">This style is like <a +href="#abbrstyle.short-nolong-desc"><span +class="cmss-10">short-nolong-desc</span></a><a + id="dx1-27119"></a> but it doesn’t set the + <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-27120"></a> attribute. + </dd><dt class="description"> +<a + id="abbrstyle.short-long-desc"></a><span +class="cmssbx-10">short-long-desc</span><a + id="dx1-27121"></a> </dt><dd +class="description">On <a + id="dx1-27122"></a><a +href="#glo:firstuse">first use</a>, this style uses the format ⟨<span +class="cmti-10">short</span>⟩ (⟨<span +class="cmti-10">long</span>⟩). The + inline and display full forms are the same. The <span +class="cmss-10">name</span><a + id="dx1-27123"></a> is set to the full + form. The <span +class="cmss-10">description</span><a + id="dx1-27124"></a> must be supplied by the user. The short and long + forms are separated by <span +class="cmtt-10">\glsxtrfullsep</span>. The <span +class="cmss-10">name</span><a + id="dx1-27125"></a> field is obtained + from + <!--l. 6008--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortlongdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27126"></a> <span +class="cmtt-10">\glsxtrshortlongdescname </span></div><hr> + </p><!--l. 6010--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">short</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-long</span>⟨<span +class="cmti-10">modifier</span>⟩<span +class="cmtt-10">-desc </span>styles, unless indicated + otherwise.) Any redefinition of this command must come before the + abbreviations are defined as it expands on definition. Make sure you protect + any commands that shouldn’t be expanded. The long form can be referenced + with <span +class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with + <span +class="cmtt-10">\the\glsshorttok</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-sc-long-desc"></a><span +class="cmssbx-10">short-sc-long-desc</span><a + id="dx1-27127"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-27128"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27129"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-long-desc"></a><span +class="cmssbx-10">short-sm-long-desc</span><a + id="dx1-27130"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-27131"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27132"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-long-desc"></a><span +class="cmssbx-10">short-em-long-desc</span><a + id="dx1-27133"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-27134"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27135"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-em-long-em-desc"></a><span +class="cmssbx-10">short-em-long-em-desc</span><a + id="dx1-27136"></a> </dt><dd +class="description">New to version 1.04, this style is like <a +href="#abbrstyle.short-em-long-desc"><span +class="cmss-10">short-em-long-desc</span></a><a + id="dx1-27137"></a> but + redefines <span +class="cmtt-10">\glsfirstlongfont </span>to use <span +class="cmtt-10">\glsfirstlongemfont</span><a + id="dx1-27138"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-long-user-desc"></a><span +class="cmssbx-10">short-long-user-desc</span><a + id="dx1-27139"></a> </dt><dd +class="description">New to version 1.04, this style is like a cross between the + <a +href="#abbrstyle.short-long-desc"><span +class="cmss-10">short-long-desc</span></a><a + id="dx1-27140"></a> style and the <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27141"></a> style. The display and + inline forms are as for <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27142"></a>, but the <span +class="cmss-10">name</span><a + id="dx1-27143"></a> key is obtained + from + + + + <!--l. 6042--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshortlonguserdescname</span><span +class="cmtt-9"> </span></span><a + id="dx1-27144"></a> <span +class="cmtt-10">\glsxtrshortlonguserdescname </span></div><hr> + </p><!--l. 6044--><p class="noindent" > + Again, this should only be redefined before <span +class="cmtt-10">\newabbreviation </span>(or + <span +class="cmtt-10">\newacronym</span>), and fragile and formatting commands need protecting. + </p><!--l. 6048--><p class="noindent" >The <span +class="cmss-10">description</span><a + id="dx1-27145"></a> key must be supplied in the optional argument of + <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>). + </p></dd><dt class="description"> +<a + id="abbrstyle.short-footnote"></a><span +class="cmssbx-10">short-footnote</span><a + id="dx1-27146"></a> </dt><dd +class="description">On <a + id="dx1-27147"></a><a +href="#glo:firstuse">first use</a>, this style displays the short form with the long form as + a footnote. This style automatically sets the <a +href="#catattr.nohyperfirst"><span +class="cmss-10">nohyperfirst</span></a><a + id="dx1-27148"></a> attribute to “true” for + the supplied category, so the <a + id="dx1-27149"></a>first use won’t be hyperlinked (but the footnote + marker may be, if the <span +class="cmss-10">hyperref</span><a + id="dx1-27150"></a> package is used). + <!--l. 6059--><p class="noindent" >The inline full form uses the ⟨<span +class="cmti-10">short</span>⟩ (⟨<span +class="cmti-10">long</span>⟩) style. The <span +class="cmss-10">name</span><a + id="dx1-27151"></a> is set to the short + form. The <span +class="cmss-10">description</span><a + id="dx1-27152"></a> is set to the long form. The <span +class="cmss-10">name</span><a + id="dx1-27153"></a> key is obtained by + expanding + </p><!--l. 6063--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfootnotename</span><span +class="cmtt-9"> </span></span><a + id="dx1-27154"></a> <span +class="cmtt-10">\glsxtrfootnotename </span></div><hr> + </p><!--l. 6065--><p class="noindent" > + (Similarly for other <span +class="cmtt-10">short</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">-</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">footnote </span>styles, unless + indicated otherwise.) Again, this command should only be redefined before + <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>), and fragile or formatting commands + should be protected from expansion. + </p><!--l. 6072--><p class="noindent" >As from version 1.05, all the footnote styles use: + </p><!--l. 6073--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlongfootnotefont</span><span +class="cmtt-9"> </span></span><a + id="dx1-27155"></a> <span +class="cmtt-10">\glsfirstlongfootnotefont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}</span> + </div><hr> + </p><!--l. 6075--><p class="noindent" > + to format the long form on <a + id="dx1-27156"></a>first use or for the full form and + </p><!--l. 6077--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongfootnotefont</span><span +class="cmtt-9"> </span></span><a + id="dx1-27157"></a> <span +class="cmtt-10">\glslongfootnotefont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 6079--><p class="noindent" > + to format the long form elsewhere (for example, when used with <span +class="cmtt-10">\glsxtrlong</span>). + </p><!--l. 6083--><p class="noindent" >As from version 1.07, all the footnote styles use: + </p><!--l. 6084--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrabbrvfootnote</span><span +class="cmtt-9"> </span></span><a + id="dx1-27158"></a> <span +class="cmtt-10">\glsxtrabbrvfootnote{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 6086--><p class="noindent" > + By default, this just does <span +class="cmtt-10">\footnote</span><a + id="dx1-27159"></a><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">long</span>⟩<span +class="cmtt-10">} </span>(the first argument is ignored). For + example, to make the footnote text link to the relevant place in the + glossary: + + + +</p> + <div class="verbatim" id="verbatim-149"> + \renewcommand{\glsxtrabbrvfootnote}[2]{% +  <br />  \footnote{\glshyperlink[#2]{#1}}% +  <br />} +</div> + <!--l. 6094--><p class="nopar" > or to include the short form with a hyperlink: + + + +</p> + <div class="verbatim" id="verbatim-150"> + \renewcommand{\glsxtrabbrvfootnote}[2]{% +  <br />  \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}% +  <br />} +</div> + <!--l. 6100--><p class="nopar" > Note that I haven’t used commands like <span +class="cmtt-10">\glsxtrshort </span>to avoid interference + (see <a +href="#sec:entryfmtmods"><span +class="cmsy-10">§</span>2.3 </a><a +href="#sec:entryfmtmods">Entry Display Style Modifications<!--tex4ht:ref: sec:entryfmtmods --></a> and <a +href="#sec:nested"><span +class="cmsy-10">§</span>2.7 </a><a +href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a>). + </p></dd><dt class="description"> +<a + id="abbrstyle.footnote"></a><span +class="cmssbx-10">footnote</span><a + id="dx1-27160"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-27161"></a>. + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-footnote"></a><span +class="cmssbx-10">short-sc-footnote</span><a + id="dx1-27162"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-27163"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27164"></a>. (This style was originally called <span +class="cmss-10">footnote-sc</span><a + id="dx1-27165"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-footnote"></a><span +class="cmssbx-10">short-sc-footnote</span><a + id="dx1-27166"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-27167"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27168"></a>. (This style was originally called <span +class="cmss-10">footnote-sm</span><a + id="dx1-27169"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-em-footnote"></a><span +class="cmssbx-10">short-em-footnote</span><a + id="dx1-27170"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-27171"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27172"></a>. (This style was originally called <span +class="cmss-10">footnote-em</span><a + id="dx1-27173"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-postfootnote"></a><span +class="cmssbx-10">short-postfootnote</span><a + id="dx1-27174"></a> </dt><dd +class="description">This is similar to the <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-27175"></a> style but doesn’t modify the + category attribute. Instead it changes <span +class="cmtt-10">\glsxtrpostlink</span>⟨<span +class="cmti-10">category</span>⟩<a + id="dx1-27176"></a> to insert the + footnote after the <a + id="dx1-27177"></a><a +href="#glo:linktext">link-text</a> on <a + id="dx1-27178"></a><a +href="#glo:firstuse">first use</a>. This will also defer the footnote + until after any following punctuation character that’s recognised by + <span +class="cmtt-10">\glsxtrifnextpunc</span><a + id="dx1-27179"></a>. + <!--l. 6137--><p class="noindent" >The inline full form uses the ⟨<span +class="cmti-10">short</span>⟩ (⟨<span +class="cmti-10">long</span>⟩) style. The <span +class="cmss-10">name</span><a + id="dx1-27180"></a> is set to the short + form. The <span +class="cmss-10">description</span><a + id="dx1-27181"></a> is set to the long form. Note that this style will change + <span +class="cmtt-10">\glsxtrfull </span>(and its variants) so that it fakes non-<a + id="dx1-27182"></a>first use. (Otherwise the + footnote would appear after the inline form.) + </p></dd><dt class="description"> +<a + id="abbrstyle.postfootnote"></a><span +class="cmssbx-10">postfootnote</span><a + id="dx1-27183"></a> </dt><dd +class="description">A synonym for <a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-27184"></a>. + + + + </dd><dt class="description"> +<a + id="abbrstyle.short-sc-postfootnote"></a><span +class="cmssbx-10">short-sc-postfootnote</span><a + id="dx1-27185"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-27186"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvscfont</span><a + id="dx1-27187"></a>. (This style was originally called <span +class="cmss-10">postfootnote-sc</span><a + id="dx1-27188"></a>. Renamed in + version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-sm-postfootnote"></a><span +class="cmssbx-10">short-sm-postfootnote</span><a + id="dx1-27189"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-27190"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvsmfont</span><a + id="dx1-27191"></a>. (This style was originally called <span +class="cmss-10">postfootnote-sm</span><a + id="dx1-27192"></a>. Renamed + in version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-em-postfootnote"></a><span +class="cmssbx-10">short-em-postfootnote</span><a + id="dx1-27193"></a> </dt><dd +class="description">Like <a +href="#abbrstyle.short-postfootnote"><span +class="cmss-10">short-postfootnote</span></a><a + id="dx1-27194"></a> but redefines <span +class="cmtt-10">\glsabbrvfont </span>to use + <span +class="cmtt-10">\glsabbrvemfont</span><a + id="dx1-27195"></a>. (This style was originally called <span +class="cmss-10">postfootnote-em</span><a + id="dx1-27196"></a>. Renamed + in version 1.04, but original name retained as a deprecated synonym for + backward-compatibility.) + </dd><dt class="description"> +<a + id="abbrstyle.short-postlong-user"></a><span +class="cmssbx-10">short-postlong-user</span><a + id="dx1-27197"></a> </dt><dd +class="description">This style was introduced in version 1.12. It’s like the + <a +href="#abbrstyle.short-long-user"><span +class="cmss-10">short-long-user</span></a><a + id="dx1-27198"></a> style but defers the parenthetical material to after the link-text. + This means that you don’t have such a long hyperlink (which can cause + problems for the DVI <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> format) and it also means that the user supplied + material can include a hyperlink to another location. The <span +class="cmss-10">name</span><a + id="dx1-27199"></a> key is obtained + from <span +class="cmtt-10">\glsxtrshortlongname</span>. + </dd><dt class="description"> +<a + id="abbrstyle.short-postlong-user-desc"></a><span +class="cmssbx-10">short-postlong-user-desc</span><a + id="dx1-27200"></a> </dt><dd +class="description">This style was introduced in version 1.12. It’s like the + above <a +href="#abbrstyle.short-postlong-user"><span +class="cmss-10">short-postlong-user</span></a><a + id="dx1-27201"></a> style but the <span +class="cmss-10">description</span><a + id="dx1-27202"></a> must be specified. The <span +class="cmss-10">name</span><a + id="dx1-27203"></a> + is obtained from <span +class="cmtt-10">\glsxtrshortlonguserdescname</span>. + </dd><dt class="description"> +<a + id="abbrstyle.long-postshort-user"></a><span +class="cmssbx-10">long-postshort-user</span><a + id="dx1-27204"></a> </dt><dd +class="description">This style was introduced in version 1.12. It’s like the + above <a +href="#abbrstyle.short-postlong-user"><span +class="cmss-10">short-postlong-user</span></a><a + id="dx1-27205"></a> style but the long form is shown first and + the short form is in the parenthetical material (as for <a +href="#abbrstyle.long-short-user"><span +class="cmss-10">long-short-user</span></a><a + id="dx1-27206"></a>) + style. + </dd><dt class="description"> +<a + id="abbrstyle.long-postshort-user-desc"></a><span +class="cmssbx-10">long-postshort-user-desc</span><a + id="dx1-27207"></a> </dt><dd +class="description">This style was introduced in version 1.12. It’s like the + above <a +href="#abbrstyle.long-postshort-user"><span +class="cmss-10">long-postshort-user</span></a><a + id="dx1-27208"></a> style but the <span +class="cmss-10">description</span><a + id="dx1-27209"></a> must be specified. The <span +class="cmss-10">name</span><a + id="dx1-27210"></a> + is obtained from <span +class="cmtt-10">\glsxtrlongshortuserdescname</span>. + </dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-short-hyphen"></a><span +class="cmssbx-10">long-hyphen-short-hyphen</span><a + id="dx1-27211"></a> </dt><dd +class="description">This style (new to v1.17) is designed to work + with the <a +href="#catattr.markwords"><span +class="cmss-10">markwords</span></a><a + id="dx1-27212"></a> category attribute. The full form is formatted + using + <!--l. 6198--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlonghyphenshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-27213"></a> <span +class="cmtt-10">\glsxtrlonghyphenshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">short</span>⟩<span +class="cmtt-10">}</span> + <span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + + </p><!--l. 6200--><p class="noindent" > + where ⟨<span +class="cmti-10">insert</span>⟩ is the inserted material provided in the final optional argument of + commands like <span +class="cmtt-10">\insert</span>. If ⟨<span +class="cmti-10">insert</span>⟩ start with a hyphen, then this locally + redefines <span +class="cmtt-10">\glsxtrwordsep</span><a + id="dx1-27214"></a> to a hyphen, which means that if the <a +href="#catattr.markwords"><span +class="cmss-10">markwords</span></a><a + id="dx1-27215"></a> + attribute is set then the long form will become hyphenated. (If this attribute + isn’t set, there’s no alteration to the way the long form is displayed.) The <span +class="cmss-10">name</span><a + id="dx1-27216"></a> + key is obtained from <span +class="cmtt-10">\glsxtrlongshortname</span>. + </p><!--l. 6210--><p class="noindent" >Unlike the other ⟨<span +class="cmti-10">long</span>⟩ (⟨<span +class="cmti-10">short</span>⟩) type of styles, such as <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-27217"></a>, this style also + repeats the insertion in the parenthetical part, so that the first use form + is: + </p><div class="quote"> + <!--l. 6215--><p class="noindent" ><span +class="cmtt-10">\glsfirstlonghyphenfont{</span>⟨<span +class="cmti-10">long</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmti-10">insert</span>⟩ + (<span +class="cmtt-10">\glsfirstabbrvhyphenfont{</span>⟨<span +class="cmti-10">short</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmti-10">insert</span>⟩)</p></div> + <!--l. 6218--><p class="noindent" >The space before the parenthetical material is actually given by + <span +class="cmtt-10">\glsxtrfullsep{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>which defaults to a space. The ⟨<span +class="cmti-10">insert</span>⟩ may be + moved into the formatting commands according to the conditional + <span +class="cmtt-10">\ifglsxtrinsertinside</span>. + </p><!--l. 6223--><p class="noindent" >For example, if <span +class="cmtt-10">ip </span>is defined using: + + + +</p> + <div class="verbatim" id="verbatim-151"> + \glssetcategoryattribute{english}{markwords}{true} +  <br />\setabbreviationstyle[english]{long-hyphen-short-hyphen} +  <br />\newabbreviation[category=english]{ip}{IP}{Internet Protocol} +</div> + <!--l. 6228--><p class="nopar" > then + + + +</p> + <div class="verbatim" id="verbatim-152"> + \gls{ip}[-Adressen] +</div> + <!--l. 6232--><p class="nopar" > will do + </p><div class="quote"> + <!--l. 6235--><p class="noindent" >Internet-Protocol-Adressen (IP-Adressen)</p></div> + <!--l. 6237--><p class="noindent" >on first use, whereas + + + +</p> + <div class="verbatim" id="verbatim-153"> + \gls{ip}[ Address] +</div> + <!--l. 6240--><p class="nopar" > will do + </p><div class="quote"> + <!--l. 6243--><p class="noindent" >Internet Protocol Address (IP Address)</p></div> + <!--l. 6245--><p class="noindent" >on first use. + </p><!--l. 6247--><p class="noindent" ><div class="important" title="Important Note"> Note that the hyphenation isn’t applied when using commands like + <span +class="cmtt-10">\glsxtrlong</span>. This means that + + + +</p> + <div class="verbatim" id="verbatim-154"> + \glsxtrlong{ip}[-Adressen] +</div> + <!--l. 6252--><p class="nopar" > will do + </p><div class="quote"> + <!--l. 6255--><p class="noindent" >Internet Protocol-Adressen</p></div> + </div> + <!--l. 6257--><p class="noindent" > + </p><!--l. 6259--><p class="noindent" >If the <a +href="#catattr.markwords"><span +class="cmss-10">markwords</span></a><a + id="dx1-27218"></a> attribute hadn’t been set, then the first use of + + + +</p> + <div class="verbatim" id="verbatim-155"> + \gls{ip}[-Adressen] +</div> + <!--l. 6263--><p class="nopar" > would do + </p><div class="quote"> + <!--l. 6266--><p class="noindent" >Internet Protocol-Adressen (IP-Adressen)</p></div> + <!--l. 6268--><p class="noindent" >instead. + </p><!--l. 6270--><p class="noindent" ><div class="important" title="Important Note"> If the inserted material ⟨<span +class="cmti-10">insert</span>⟩ is likely to contain commands like <span +class="cmtt-10">\gls</span>, + then use <a +href="#abbrstyle.long-hyphen-postshort-hyphen"><span +class="cmss-10">long-hyphen-postshort-hyphen</span></a><a + id="dx1-27219"></a> instead to avoid nested links. + </div> + </p><!--l. 6274--><p class="noindent" > + </p><!--l. 6276--><p class="noindent" >If you want the short version in small-caps, you can just redefine + <span +class="cmtt-10">\glsabbrvhyphenfont </span>and <span +class="cmtt-10">\glsxtrhyphensuffix </span>to use the small-caps + versions. For example: + + + +</p> + <div class="verbatim" id="verbatim-156"> + \renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont} +  <br />\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix} +</div> + <!--l. 6282--><p class="nopar" > Similarly for other font-changing variations. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-noshort-desc-noreg"></a><span +class="cmssbx-10">long-hyphen-noshort-desc-noreg</span><a + id="dx1-27220"></a> </dt><dd +class="description">New to version 1.17, this style is like + <a +href="#abbrstyle.long-hyphen-short-hyphen-desc"><span +class="cmss-10">long-hyphen-short-hyphen-desc</span></a><a + id="dx1-27221"></a> except that the parenthetical part is omitted and + the long form is displayed on subsequent use. The short form can be accessed + with <span +class="cmtt-10">\glsxtrshort </span>but just uses the default abbreviation font. There’s + no regular version of this style as the regular form doesn’t have the + flexibility to deal with the hyphen switch. The <span +class="cmss-10">name</span><a + id="dx1-27222"></a> is obtained from + <span +class="cmtt-10">\glsxtrlongnoshortdescname</span>. + </dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-noshort-noreg"></a><span +class="cmssbx-10">long-hyphen-noshort-noreg</span><a + id="dx1-27223"></a> </dt><dd +class="description">New to version 1.17, this style is like + <a +href="#abbrstyle.long-hyphen-noshort-desc-noreg"><span +class="cmss-10">long-hyphen-noshort-desc-noreg</span></a><a + id="dx1-27224"></a> but the name is set to the short form and the + description is set to the long form. + </dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-short-hyphen-desc"></a><span +class="cmssbx-10">long-hyphen-short-hyphen-desc</span><a + id="dx1-27225"></a> </dt><dd +class="description"> + <!--l. 6303--><p class="noindent" >New to version 1.17. This is similar to <a +href="#abbrstyle.long-hyphen-short-hyphen"><span +class="cmss-10">long-hyphen-short-hyphen</span></a><a + id="dx1-27226"></a> but the user + supplies the description. The <span +class="cmss-10">name</span><a + id="dx1-27227"></a> is obtained from <span +class="cmtt-10">\glsxtrlongshortdescname</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-postshort-hyphen"></a><span +class="cmssbx-10">long-hyphen-postshort-hyphen</span><a + id="dx1-27228"></a> </dt><dd +class="description"> + <!--l. 6310--><p class="noindent" >New to version 1.17. This is similar to <a +href="#abbrstyle.long-hyphen-short-hyphen"><span +class="cmss-10">long-hyphen-short-hyphen</span></a><a + id="dx1-27229"></a> but the + inserted and parenthetical material are moved to the post-link hook. On first + use, <span +class="cmtt-10">\gls{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmti-10">insert</span>⟩<span +class="cmtt-10">] </span>will do <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmtt-10">\glsxtrlonghyphen{</span>⟨<span +class="cmti-10">long</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">insert</span>⟩<span +class="cmtt-10">}\glsxtrposthyphenshort</span> + <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmti-10">insert</span>⟩ + <br /><spacer type=vertical size=10></span> + where + </p><!--l. 6318--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrposthyphenshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-27230"></a> <span +class="cmtt-10">\glsxtrposthyphenshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmitt-10">insert</span>⟩ + </div><hr> + </p><!--l. 6320--><p class="noindent" > + is in the post-link hook. This uses the format: <spacer type=vertical size=10><span class="obeylines-h"> + <br />⟨<span +class="cmti-10">insert</span>⟩ (<span +class="cmtt-10">\glsfirstabbrvhyphenfont{</span>⟨<span +class="cmti-10">short</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmti-10">isnert</span>⟩) + <br /><spacer type=vertical size=10></span> + + + + </p><!--l. 6326--><p class="noindent" ><div class="important" title="Important Note"> The singular short form is always used here, even with <span +class="cmtt-10">\glspl</span>. (Unlike + <a +href="#abbrstyle.long-hyphen-long-hyphen"><span +class="cmss-10">long-hyphen-long-hyphen</span></a><a + id="dx1-27231"></a>.) </div> + </p><!--l. 6329--><p class="noindent" > + </p><!--l. 6331--><p class="noindent" >The part in the link-text on first use: + </p><!--l. 6332--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrlonghyphen</span><span +class="cmtt-9"> </span></span><a + id="dx1-27232"></a> <span +class="cmtt-10">\glsxtrlonghyphen{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> + </div><hr> + </p><!--l. 6334--><p class="noindent" > + checks if ⟨<span +class="cmti-10">insert</span>⟩ starts with a hyphen. If it does, then <span +class="cmtt-10">\glsxtrwordsep </span>is locally + redefined to a hyphen. This command only uses ⟨<span +class="cmti-10">insert</span>⟩ to test if it starts with a + hyphen. The actual insertion code isn’t typeset until the post-link hook and it’s + also localised, which means that you can use commands like <span +class="cmtt-10">\gls </span>in ⟨<span +class="cmti-10">insert</span>⟩ for + this style without causing nested hyperlinks, but only for commands like + <span +class="cmtt-10">\gls</span>. + </p><!--l. 6343--><p class="noindent" ><div class="important" title="Important Note"> Don’t use <span +class="cmtt-10">\gls </span>in the ⟨<span +class="cmti-10">insert</span>⟩ part for commands like <span +class="cmtt-10">\glsxtrfull</span>, + <span +class="cmtt-10">\glsxtrshort </span>or <span +class="cmtt-10">\glsxtrlong</span>. </div> + </p><!--l. 6346--><p class="noindent" > + </p><!--l. 6348--><p class="noindent" >The inline full display format used by commands like <span +class="cmtt-10">\glsxtrfull</span> + behaves differently to the first use of <span +class="cmtt-10">\gls </span>with this style. It’s better + to use <span +class="cmtt-10">\glsreset{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}\gls{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>if you want to ensure the full + format. + </p></dd><dt class="description"> +<a + id="abbrstyle.long-hyphen-postshort-hyphen-desc"></a><span +class="cmssbx-10">long-hyphen-postshort-hyphen-desc</span><a + id="dx1-27233"></a> </dt><dd +class="description"> + <!--l. 6355--><p class="noindent" >New to version 1.17. This is similar to <a +href="#abbrstyle.long-hyphen-postshort-hyphen"><span +class="cmss-10">long-hyphen-postshort-hyphen</span></a><a + id="dx1-27234"></a> + but the user supplies the description. The <span +class="cmss-10">name</span><a + id="dx1-27235"></a> is obtained from + <span +class="cmtt-10">\glsxtrlongshortdescname</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-hyphen-long-hyphen"></a><span +class="cmssbx-10">short-hyphen-long-hyphen</span><a + id="dx1-27236"></a> </dt><dd +class="description">This style (new to v1.17) is like <a +href="#abbrstyle.long-hyphen-short-hyphen"><span +class="cmss-10">long-hyphen-short-hyphen</span></a><a + id="dx1-27237"></a>, + except that the short form is displayed first followed by the long form in + parentheses. The full form is formatted using + <!--l. 6365--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrshorthyphenlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-27238"></a> <span +class="cmtt-10">\glsxtrshorthyphenlong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">short</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">long</span>⟩<span +class="cmtt-10">}</span> + <span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 6367--><p class="noindent" > + which behaves in an analogous way to <span +class="cmtt-10">\glsxtrlonghyphenshort</span>. The <span +class="cmss-10">name</span><a + id="dx1-27239"></a> is + obtained from <span +class="cmtt-10">\glsxtrshortlongname</span>. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-hyphen-long-hyphen-desc"></a><span +class="cmssbx-10">short-hyphen-long-hyphen-desc</span><a + id="dx1-27240"></a> </dt><dd +class="description"> + <!--l. 6373--><p class="noindent" >New to version 1.17. This is similar to <a +href="#abbrstyle.short-hyphen-long-hyphen"><span +class="cmss-10">short-hyphen-long-hyphen</span></a><a + id="dx1-27241"></a> but the user + supplies the description. The <span +class="cmss-10">name</span><a + id="dx1-27242"></a> is obtained from <span +class="cmtt-10">\glsxtrshortlongdescname</span>. + + + + </p></dd><dt class="description"> +<a + id="abbrstyle.short-hyphen-postlong-hyphen"></a><span +class="cmssbx-10">short-hyphen-postlong-hyphen</span><a + id="dx1-27243"></a> </dt><dd +class="description">This style (new to v1.17) is like + <a +href="#abbrstyle.long-hyphen-postshort-hyphen"><span +class="cmss-10">long-hyphen-postshort-hyphen</span></a><a + id="dx1-27244"></a>, but the short form is displayed first followed by + the long form in parentheses. On first use, <span +class="cmtt-10">\gls{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmti-10">insert</span>⟩<span +class="cmtt-10">] </span>will do + <spacer type=vertical size=10><span class="obeylines-h"> + <br /><span +class="cmtt-10">\glsxtrshorthyphen{</span>⟨<span +class="cmti-10">short</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">insert</span>⟩<span +class="cmtt-10">}\glsxtrposthyphenlong</span> + <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmti-10">insert</span>⟩ + <br /><spacer type=vertical size=10></span> + where + <!--l. 6388--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrposthyphenlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-27245"></a> <span +class="cmtt-10">\glsxtrposthyphenlong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmitt-10">insert</span>⟩ + </div><hr> + </p><!--l. 6390--><p class="noindent" > + is in the post-link hook. These commands behave in an analogous manner to + those used with <a +href="#abbrstyle.long-hyphen-postshort-hyphen"><span +class="cmss-10">long-hyphen-postshort-hyphen</span></a><a + id="dx1-27246"></a>. The <span +class="cmss-10">name</span><a + id="dx1-27247"></a> is obtained from + <span +class="cmtt-10">\glsxtrshortlongname</span>. + </p><!--l. 6395--><p class="noindent" ><div class="important" title="Important Note"> Don’t use <span +class="cmtt-10">\gls </span>in the ⟨<span +class="cmti-10">insert</span>⟩ part for commands like <span +class="cmtt-10">\glsxtrfull</span>, + <span +class="cmtt-10">\glsxtrshort </span>or <span +class="cmtt-10">\glsxtrlong</span>. </div> + </p><!--l. 6398--><p class="noindent" > + </p><!--l. 6400--><p class="noindent" >The inline full display format used by commands like <span +class="cmtt-10">\glsxtrfull</span> + behaves differently to the first use of <span +class="cmtt-10">\gls </span>with this style. It’s better + to use <span +class="cmtt-10">\glsreset{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}\gls{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>if you want to ensure the full + format. + </p></dd><dt class="description"> +<a + id="abbrstyle.short-hyphen-postlong-hyphen-desc"></a><span +class="cmssbx-10">short-hyphen-postlong-hyphen-desc</span><a + id="dx1-27248"></a> </dt><dd +class="description"> + <!--l. 6407--><p class="noindent" >New to version 1.17. This is similar to <a +href="#abbrstyle.short-hyphen-postlong-hyphen"><span +class="cmss-10">short-hyphen-postlong-hyphen</span></a><a + id="dx1-27249"></a> + but the user supplies the description. The <span +class="cmss-10">name</span><a + id="dx1-27250"></a> is obtained from + <span +class="cmtt-10">\glsxtrshortlongdescname</span>. +</p> + </dd></dl> +<!--l. 6414--><p class="noindent" > +</p> +<!--l. 6414--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.5 </span> <a + id="sec:newabbrvstyle"></a>Defining New Abbreviation Styles</h3> +<!--l. 6417--><p class="noindent" >New abbreviation styles may be defined using: +</p><!--l. 6418--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\newabbreviationstyle</span><span +class="cmtt-9"> </span></span><a + id="dx1-28001"></a> <span +class="cmtt-10">\newabbreviationstyle{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">setup</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">fmts</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6420--><p class="noindent" > + + + +</p><!--l. 6421--><p class="noindent" >where ⟨<span +class="cmti-10">name</span>⟩ is the name of the new style (as used in the mandatory argument of +<span +class="cmtt-10">\setabbreviationstyle</span><a + id="dx1-28002"></a>). This is similar but not identical to the <span +class="cmss-10">glossaries </span>package’s +<span +class="cmtt-10">\newacronymstyle</span><a + id="dx1-28003"></a> command. +</p><!--l. 6428--><p class="indent" > <div class="important" title="Important Note"> You can’t use styles defined by <span +class="cmtt-10">\newacronymstyle </span>with <span +class="cmss-10">glossaries-extra</span> +unless you have reverted <span +class="cmtt-10">\newacronym</span><a + id="dx1-28004"></a> back to its generic definition from +<span +class="cmss-10">glossaries </span>(using <span +class="cmtt-10">\RestoreAcronyms</span><a + id="dx1-28005"></a>). The acronym styles from the <span +class="cmss-10">glossaries</span> +package can’t be used with abbreviations defined with <span +class="cmtt-10">\newabbreviation</span>. +</div> +</p><!--l. 6435--><p class="noindent" > +</p><!--l. 6437--><p class="indent" > The ⟨<span +class="cmti-10">setup</span>⟩ argument deals with the way the entry is defined and may +set attributes for the given abbreviation category. This argument should +redefine +</p><!--l. 6440--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\CustomAbbreviationFields</span><span +class="cmtt-9"> </span></span><a + id="dx1-28006"></a> <span +class="cmtt-10">\CustomAbbreviationFields </span></div><hr> +</p><!--l. 6442--><p class="noindent" > +to set the entry fields including the <span +class="cmss-10">name</span><a + id="dx1-28007"></a> (defaults to the short form if omitted), +<span +class="cmss-10">sort</span><a + id="dx1-28008"></a>, <span +class="cmss-10">first</span><a + id="dx1-28009"></a>, <span +class="cmss-10">firstplural</span><a + id="dx1-28010"></a>. Other fields may also be set, such as <span +class="cmss-10">text</span><a + id="dx1-28011"></a>, <span +class="cmss-10">plural</span><a + id="dx1-28012"></a> and +<span +class="cmss-10">description</span><a + id="dx1-28013"></a>. +</p><!--l. 6449--><p class="indent" > <div class="important" title="Important Note"> <span +class="cmtt-10">\CustomAbbreviationFields </span>is expanded by <span +class="cmtt-10">\newabbreviation </span>so take care to +protect commands that shouldn’t be expanded. </div> +</p><!--l. 6452--><p class="noindent" > +</p><!--l. 6454--><p class="indent" > For example, the <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-28014"></a> style has the following in ⟨<span +class="cmti-10">setup</span>⟩: + + + +</p> + <div class="verbatim" id="verbatim-157"> +  \renewcommand*{\CustomAbbreviationFields}{% + <br />    name={\protect\glsabbrvfont{\the\glsshorttok}}, + <br />    sort={\the\glsshorttok}, + <br />    first={\protect\glsfirstlongfont{\the\glslongtok}% + <br />     \protect\glsxtrfullsep{\the\glslabeltok}% + <br />     \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% + <br />    firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + <br />     \protect\glsxtrfullsep{\the\glslabeltok}% + <br />     \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% + <br />    plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + <br />    description={\the\glslongtok}}% +</div> +<!--l. 6468--><p class="nopar" > Note that the <span +class="cmss-10">first</span><a + id="dx1-28015"></a> and <span +class="cmss-10">firstplural</span><a + id="dx1-28016"></a> are set even though they’re not used by +<span +class="cmtt-10">\gls</span>. +</p><!--l. 6472--><p class="indent" > The basic styles, such as <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-28017"></a>, use commands like <span +class="cmtt-10">\glsabbrvfont </span>(which are +redefined whenever the style formatting is set) within <span +class="cmtt-10">\CustomAbbreviationFields</span>. +Other styles, such as <a +href="#abbrstyle.long-em-short-em"><span +class="cmss-10">long-em-short-em</span></a><a + id="dx1-28018"></a> directly use their own custom commands, such +as <span +class="cmtt-10">\glsabbrvemfont</span>. With these styles, commands like <span +class="cmtt-10">\glsabbrvfont </span>still need to +be defined as appropriate in the ⟨<span +class="cmti-10">fmts</span>⟩ argument even if they’re not used within +<span +class="cmtt-10">\CustomAbbreviationFields</span>. +</p><!--l. 6481--><p class="indent" > The ⟨<span +class="cmti-10">setup</span>⟩ argument may also redefine +</p><!--l. 6482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrPostNewAbbreviation</span><span +class="cmtt-9"> </span></span><a + id="dx1-28019"></a> <span +class="cmtt-10">\GlsXtrPostNewAbbreviation </span></div><hr> +</p><!--l. 6484--><p class="noindent" > +which can be used to assign attributes. (This will automatically be initialised to do +nothing.) +</p><!--l. 6488--><p class="indent" > For example, the <a +href="#abbrstyle.short-footnote"><span +class="cmss-10">short-footnote</span></a><a + id="dx1-28020"></a> includes the following in ⟨<span +class="cmti-10">setup</span>⟩: + + + +</p> + <div class="verbatim" id="verbatim-158"> +  \renewcommand*{\GlsXtrPostNewAbbreviation}{% + <br />    \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + <br />    \glshasattribute{\the\glslabeltok}{regular}% + <br />    {% + <br />      \glssetattribute{\the\glslabeltok}{regular}{false}% + <br />    }% + <br />    {}% + <br />  }% +</div> +<!--l. 6499--><p class="nopar" > This sets the <a +href="#catattr.nohyperfirst"><span +class="cmss-10">nohyperfirst</span></a><a + id="dx1-28021"></a> attribute to “true”. It also unsets the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28022"></a> attribute if it +has previously been set. Note that the <a +href="#catattr.nohyperfirst"><span +class="cmss-10">nohyperfirst</span></a><a + id="dx1-28023"></a> attribute doesn’t get unset by +other styles, so take care not to switch styles for the same category. +</p><!--l. 6506--><p class="indent" > You can access the short, long, short plural and long plural values through the +following token registers. +</p><!--l. 6509--><p class="indent" > Short value (defined by <span +class="cmss-10">glossaries</span>): +</p><!--l. 6510--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsshorttok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28024"></a> <span +class="cmtt-10">\glsshorttok </span></div><hr> +</p><!--l. 6512--><p class="noindent" > +</p><!--l. 6514--><p class="indent" > Short plural value (defined by <span +class="cmss-10">glossaries-extra</span>): +</p><!--l. 6515--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsshortpltok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28025"></a> <span +class="cmtt-10">\glsshortpltok </span></div><hr> +</p><!--l. 6517--><p class="noindent" > +(This may be the default value or, if provided, the value provided by the user +through the <span +class="cmss-10">shortplural</span><a + id="dx1-28026"></a> key in the optional argument of <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-28027"></a>.) +</p><!--l. 6522--><p class="indent" > Long value (defined by <span +class="cmss-10">glossaries</span>): +</p><!--l. 6523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongtok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28028"></a> <span +class="cmtt-10">\glslongtok </span></div><hr> +</p><!--l. 6525--><p class="noindent" > +</p><!--l. 6527--><p class="indent" > Long plural value (defined by <span +class="cmss-10">glossaries-extra</span>): +</p><!--l. 6528--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongpltok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28029"></a> <span +class="cmtt-10">\glslongpltok </span></div><hr> +</p><!--l. 6530--><p class="noindent" > +(This may be the default value or, if provided, the value provided by the user +through the <span +class="cmss-10">longplural</span><a + id="dx1-28030"></a> key in the optional argument of <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-28031"></a>.) +</p><!--l. 6535--><p class="indent" > The short or long values may be modified by attributes (such as <a +href="#catattr.markwords"><span +class="cmss-10">markwords</span></a><a + id="dx1-28032"></a>). The +above registers reflect the modification. If you want to access the original +(unmodified) short or long form (as provided in the final two arguments of +<span +class="cmtt-10">\newabbreviation</span>), then use the commands: +</p><!--l. 6540--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrorgshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-28033"></a> <span +class="cmtt-10">\glsxtrorgshort </span></div><hr> +</p><!--l. 6542--><p class="noindent" > +for the short form and +</p><!--l. 6544--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrorglong</span><span +class="cmtt-9"> </span></span><a + id="dx1-28034"></a> <span +class="cmtt-10">\glsxtrorglong </span></div><hr> +</p><!--l. 6546--><p class="noindent" > +for the long form. (These may be useful for the <span +class="cmss-10">sort</span><a + id="dx1-28035"></a> key to avoid any formatting that + + + +may be added by the attribute setting.) +</p><!--l. 6550--><p class="indent" > There are two other registers available that are defined by <span +class="cmss-10">glossaries</span>: +</p><!--l. 6553--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslabeltok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28036"></a> <span +class="cmtt-10">\glslabeltok </span></div><hr> +</p><!--l. 6555--><p class="noindent" > +which contains the entry’s label and +</p><!--l. 6557--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glskeylisttok</span><span +class="cmtt-9"> </span></span><a + id="dx1-28037"></a> <span +class="cmtt-10">\glskeylisttok </span></div><hr> +</p><!--l. 6559--><p class="noindent" > +which contains the values provided in the optional argument of <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-28038"></a>. +</p><!--l. 6563--><p class="indent" > Remember put <span +class="cmtt-10">\the </span>in front of the register command as in the examples above. +The category label can be access through the command (not a register): +</p><!--l. 6566--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glscategorylabel</span><span +class="cmtt-9"> </span></span><a + id="dx1-28039"></a> <span +class="cmtt-10">\glscategorylabel </span></div><hr> +</p><!--l. 6568--><p class="noindent" > +This may be used inside the definition of <span +class="cmtt-10">\GlsXtrPostNewAbbreviation</span>. +</p><!--l. 6572--><p class="indent" > If you want to base a style on an existing style, you can use +</p><!--l. 6573--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrUseAbbrStyleSetup</span><span +class="cmtt-9"> </span></span><a + id="dx1-28040"></a> <span +class="cmtt-10">\GlsXtrUseAbbrStyleSetup{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6575--><p class="noindent" > +where ⟨<span +class="cmti-10">name</span>⟩ is the name of the existing style. For example, the <a +href="#abbrstyle.long-noshort-sc-desc"><span +class="cmss-10">long-noshort-sc-desc</span></a><a + id="dx1-28041"></a> +style simply does + + + +</p> + <div class="verbatim" id="verbatim-159"> +\GlsXtrUseAbbrStyleSetup{long-noshort-desc} +</div> +<!--l. 6580--><p class="nopar" > within ⟨<span +class="cmti-10">setup</span>⟩. +</p><!--l. 6583--><p class="indent" > The ⟨<span +class="cmti-10">fmts</span>⟩ argument deals with the way the entry is displayed in the document. +This argument should redefine the following commands. +</p><!--l. 6587--><p class="indent" > The default suffix for the plural short form (if not overridden by the <span +class="cmss-10">shortplural</span><a + id="dx1-28042"></a> +key): +</p><!--l. 6589--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\abbrvpluralsuffix</span><span +class="cmtt-9"> </span></span><a + id="dx1-28043"></a> <span +class="cmtt-10">\abbrvpluralsuffix </span></div><hr> +</p><!--l. 6591--><p class="noindent" > +(Note that this isn’t used for the plural long form, which just uses the regular +<span +class="cmtt-10">\glspluralsuffix</span>.) +</p><!--l. 6595--><p class="indent" > The font used for the short form on <a + id="dx1-28044"></a><a +href="#glo:firstuse">first use</a> or in the full forms: +</p><!--l. 6596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstabbrvfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-28045"></a> <span +class="cmtt-10">\glsfirstabbrvfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6598--><p class="noindent" > +</p><!--l. 6600--><p class="indent" > The font used for the short form on subsequent use or through commands like +<span +class="cmtt-10">\glsxtrshort</span><a + id="dx1-28046"></a>: +</p><!--l. 6602--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsabbrvfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-28047"></a> <span +class="cmtt-10">\glsabbrvfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6604--><p class="noindent" > +</p><!--l. 6606--><p class="indent" > The font used for the long form on <a + id="dx1-28048"></a>first use or in the full forms: +</p><!--l. 6607--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfirstlongfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-28049"></a> <span +class="cmtt-10">\glsfirstlongfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6609--><p class="noindent" > +</p><!--l. 6611--><p class="indent" > The font used for the long form in commands like <span +class="cmtt-10">\glsxtrlong </span>use: +</p><!--l. 6613--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslongfont</span><span +class="cmtt-9"> </span></span><a + id="dx1-28050"></a> <span +class="cmtt-10">\glslongfont{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6615--><p class="noindent" > +</p><!--l. 6617--><p class="indent" > Display full form singular no case-change (used by <span +class="cmtt-10">\gls</span><a + id="dx1-28051"></a> on <a + id="dx1-28052"></a>first use for +abbreviations without the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28053"></a> attribute set): +</p><!--l. 6620--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfullformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28054"></a> <span +class="cmtt-10">\glsxtrfullformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6622--><p class="noindent" > +</p><!--l. 6624--><p class="indent" > Display full form singular first letter converted to upper case (used by <span +class="cmtt-10">\Gls</span><a + id="dx1-28055"></a> on +<a + id="dx1-28056"></a>first use for abbreviations without the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28057"></a> attribute set): +</p><!--l. 6627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrfullformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28058"></a> <span +class="cmtt-10">\Glsxtrfullformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6629--><p class="noindent" > +</p><!--l. 6631--><p class="indent" > Display full form plural no case-change (used by <span +class="cmtt-10">\glspl</span><a + id="dx1-28059"></a> on <a + id="dx1-28060"></a>first use for +abbreviations without the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28061"></a> attribute set): +</p><!--l. 6634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfullplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28062"></a> <span +class="cmtt-10">\glsxtrfullplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 6636--><p class="noindent" > +</p><!--l. 6638--><p class="indent" > Display full form plural first letter converted to upper case (used by <span +class="cmtt-10">\Glspl</span><a + id="dx1-28063"></a> on +<a + id="dx1-28064"></a><a +href="#glo:firstuse">first use</a> for abbreviations without the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28065"></a> attribute set): +</p><!--l. 6641--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrfullplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28066"></a> <span +class="cmtt-10">\Glsxtrfullplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6643--><p class="noindent" > +</p><!--l. 6645--><p class="indent" > In addition ⟨<span +class="cmti-10">fmts</span>⟩ 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. +</p><!--l. 6649--><p class="indent" > Inline singular no case-change (used by <span +class="cmtt-10">\glsentryfull</span><a + id="dx1-28067"></a>, <span +class="cmtt-10">\glsxtrfull</span><a + id="dx1-28068"></a> and +<span +class="cmtt-10">\GLSxtrfull</span><a + id="dx1-28069"></a>): +</p><!--l. 6651--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrinlinefullformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28070"></a> <span +class="cmtt-10">\glsxtrinlinefullformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6653--><p class="noindent" > +</p><!--l. 6655--><p class="indent" > Inline singular first letter converted to upper case (used by <span +class="cmtt-10">\Glsentryfull</span><a + id="dx1-28071"></a> and +<span +class="cmtt-10">\Glsxtrfull</span><a + id="dx1-28072"></a>): +</p><!--l. 6657--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrinlinefullformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28073"></a> <span +class="cmtt-10">\Glsxtrinlinefullformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6659--><p class="noindent" > +</p><!--l. 6661--><p class="indent" > Inline plural no case-change (used by <span +class="cmtt-10">\glsentryfullpl</span><a + id="dx1-28074"></a>, <span +class="cmtt-10">\glsxtrfullpl</span><a + id="dx1-28075"></a> and +<span +class="cmtt-10">\GLSxtrfullpl</span><a + id="dx1-28076"></a>): +</p><!--l. 6663--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrinlinefullplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28077"></a> <span +class="cmtt-10">\glsxtrinlinefullplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6665--><p class="noindent" > +</p><!--l. 6667--><p class="indent" > Inline plural first letter converted to upper case (used by <span +class="cmtt-10">\Glsentryfullpl</span><a + id="dx1-28078"></a> and +<span +class="cmtt-10">\Glsxtrfullpl</span><a + id="dx1-28079"></a>): +</p><!--l. 6669--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrinlinefullplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-28080"></a> <span +class="cmtt-10">\Glsxtrinlinefullplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6671--><p class="noindent" > +</p><!--l. 6673--><p class="indent" > (New to version 1.17.) You can also modify the way the subsequent use is +formatted by redefining the following four commands, but these won’t be used for +abbreviations with the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-28081"></a> attribute set. If the style doesn’t redefine these +commands, the default values are used. +</p><!--l. 6679--><p class="indent" > Singular with no case-change: +</p><!--l. 6680--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsubsequentfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-28082"></a> <span +class="cmtt-10">\glsxtrsubsequentfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6682--><p class="noindent" > +</p><!--l. 6684--><p class="indent" > Singular with first letter upper case: +</p><!--l. 6685--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrsubsequentfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-28083"></a> <span +class="cmtt-10">\Glsxtrsubsequentfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6687--><p class="noindent" > + + + +</p><!--l. 6689--><p class="indent" > Plural with no case-change: +</p><!--l. 6690--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsubsequentplfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-28084"></a> <span +class="cmtt-10">\glsxtrsubsequentplfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6692--><p class="noindent" > +</p><!--l. 6694--><p class="indent" > Plural with first letter upper case: +</p><!--l. 6695--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrsubsequentplfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-28085"></a> <span +class="cmtt-10">\Glsxtrsubsequentplfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 6697--><p class="noindent" > +</p><!--l. 6699--><p class="indent" > If you want to provide support for <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-28086"></a> use the following +<span +class="cmtt-10">\glsaccess</span>⟨<span +class="cmitt-10">xxx</span>⟩ commands (<a +href="#sec:accsupp"><span +class="cmsy-10">§</span>11.2 </a><a +href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a>) within the definitions of +<span +class="cmtt-10">\glsxtrfullformat </span>etc instead of the analogous <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmti-10">xxx</span>⟩ commands. (If you +don’t use <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-28087"></a>, they will just do the corresponding <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmti-10">xxx</span>⟩ +command.) +</p><!--l. 6707--><p class="indent" > For example, the <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-28088"></a> style has the following in ⟨<span +class="cmti-10">fmts</span>⟩: + + + +</p> + <div class="verbatim" id="verbatim-160"> +  \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + <br />  \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% + <br />  \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + <br />  \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + <br />  \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + <br />  \renewcommand*{\glsxtrfullformat}[2]{% + <br />    \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + <br />    \ifglsxtrinsertinside\else##2\fi + <br />    \glsxtrfullsep{##1}% + <br />    \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + <br />  }% + <br />  \renewcommand*{\glsxtrfullplformat}[2]{% + <br />    \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + <br />    \ifglsxtrinsertinside\else##2\fi + <br />    \glsxtrfullsep{##1}% + <br />    \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + <br />  }% + <br />  \renewcommand*{\Glsxtrfullformat}[2]{% + <br />    \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + <br />    \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + <br />    \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + <br />  }% + <br />  \renewcommand*{\Glsxtrfullplformat}[2]{% + <br />    \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + <br />     \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + <br />    \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + <br />  }% +</div> +<!--l. 6737--><p class="nopar" > Since the inline full commands aren’t redefined, they default to the same as the +display versions. +</p><!--l. 6741--><p class="indent" > If you want to base a style on an existing style, you can use +</p><!--l. 6742--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrUseAbbrStyleFmts</span><span +class="cmtt-9"> </span></span><a + id="dx1-28089"></a> <span +class="cmtt-10">\GlsXtrUseAbbrStyleFmts{</span>⟨<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6744--><p class="noindent" > +within ⟨<span +class="cmti-10">fmts</span>⟩, where ⟨<span +class="cmti-10">name</span>⟩ is the name of the existing style. For example, the +<a +href="#abbrstyle.long-short-desc"><span +class="cmss-10">long-short-desc</span></a><a + id="dx1-28090"></a> style has the following in ⟨<span +class="cmti-10">fmts</span>⟩: + + + +</p> + <div class="verbatim" id="verbatim-161"> +  \GlsXtrUseAbbrStyleFmts{long-short}% +</div> +<!--l. 6750--><p class="nopar" > +</p><!--l. 6752--><p class="indent" > Here’s an example of an abbreviation style that’s based on <a +href="#abbrstyle.long-short"><span +class="cmss-10">long-short</span></a><a + id="dx1-28091"></a> that displays +the short form within <span +class="cmtt-10">\textsf</span>: + + + +</p> + <div class="verbatim" id="verbatim-162"> +\newabbreviationstyle + <br />{custom-sf}% label + <br />{% setup + <br />  \GlsXtrUseAbbrStyleSetup{short-long}% + <br />}% + <br />{% fmts + <br />  \GlsXtrUseAbbrStyleFmts{short-long}% + <br />  \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}% + <br />} +</div> +<!--l. 6765--><p class="nopar" > Note that this wouldn’t work if it was instead based on one of the modified versions +such as <a +href="#abbrstyle.short-sc-long"><span +class="cmss-10">short-sc-long</span></a><a + id="dx1-28092"></a> as they explicitly use their own formatting commands, such as +<span +class="cmtt-10">\glsabbrvemfont</span>. The base styles, such as <a +href="#abbrstyle.short-long"><span +class="cmss-10">short-long</span></a><a + id="dx1-28093"></a>, use the more generic +<span +class="cmtt-10">\glsabbrvfont </span>etc which makes them easier to adapt than the modified +styles. +</p><!--l. 6773--><p class="indent" > For further details, see the “Abbreviations” section in the documented code +(<span +class="cmtt-10">glossaries-extra-code.pdf</span>). + + + +</p> +<!--l. 6776--><p class="indent" > </div> +</p><!--l. 6776--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">4. <a + id="sec:headtitle"></a>Entries in Sectioning Titles, Headers, Captions and Contents</h2> +</p><!--l. 6779--><p class="indent" > The <span +class="cmss-10">glossaries </span>user manual cautions against using commands like <span +class="cmtt-10">\gls </span>in chapter +or section titles. The principle problems are: </p> + <ul class="itemize1"> + <li class="itemize">if you have a table of contents, the <a + id="dx1-29001"></a><a +href="#glo:firstuseflag">first use flag</a> will be unset in the contents + rather than later in the document; + </li> + <li class="itemize">if you have the location lists displayed in the glossary, unwanted locations + will be added to it corresponding to the table of contents (if present) and + every page that contains the entry in the page header (if the page style in + use adds the chapter or section title to the header); + </li> + <li class="itemize">if the page style in use adds the chapter or section title to the header and + attempts to convert it to upper case, the entry label (in the argument + of <span +class="cmtt-10">\gls </span>etc) will be converted to upper case and the entry won’t be + recognised; + </li> + <li class="itemize">if you use <span +class="cmss-10">hyperref</span><a + id="dx1-29002"></a>, commands like <span +class="cmtt-10">\gls </span>can’t be expanded to a simple + string and only the label will appear in the PDF bookmark (with a warning + from <span +class="cmss-10">hyperref</span><a + id="dx1-29003"></a>); + </li> + <li class="itemize">if you use <span +class="cmss-10">hyperref</span><a + id="dx1-29004"></a>, you will end up with nested hyperlinks in the table of + contents.</li></ul> +<!--l. 6800--><p class="noindent" >Similar problems can also occur with captions (except for the page header and bookmark +issues). +</p><!--l. 6803--><p class="indent" > To get around all these problems, the <span +class="cmss-10">glossaries </span>user manual recommends +using the expandable non-hyperlink commands, such as <span +class="cmtt-10">\glsentrytext</span><a + id="dx1-29005"></a> +(for regular entries) or <span +class="cmtt-10">\glsentryshort</span><a + id="dx1-29006"></a> (for abbreviations). This is the +simplest solution, but doesn’t allow for special formatting that’s applied to +the entry through commands like <span +class="cmtt-10">\glstext </span>or <span +class="cmtt-10">\glsxtrshort</span>. This means +that if, for example, you are using one of the abbreviation styles that uses +<span +class="cmtt-10">\textsc</span><a + id="dx1-29007"></a> then the short form displayed with <span +class="cmtt-10">\glsentryshort </span>won’t use +small caps. If you only have one abbreviation style in use, you can explicitly +enclose <span +class="cmtt-10">\glsentryshort{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>in the argument of <span +class="cmtt-10">\glsabbrvfont</span>, like +this: + + + +</p> + <div class="verbatim" id="verbatim-163"> +\chapter{A Chapter about \glsabbrvfont{\glsentryshort{html}}} +</div> +<!--l. 6816--><p class="nopar" > Or, if you are using <span +class="cmss-10">hyperref</span><a + id="dx1-29008"></a>: + + + +</p> + <div class="verbatim" id="verbatim-164"> +\chapter{A Chapter about + <br />\texorpdfstring{\glsabbrvfont{\glsentryshort{html}}}{\glsentryshort{html}}} +</div> +<!--l. 6821--><p class="nopar" > +</p><!--l. 6823--><p class="indent" > Since this is a bit cumbersome, you might want to define a new command to do +this for you. However, if you have mixed styles this won’t work as commands like +<span +class="cmtt-10">\gls </span>and <span +class="cmtt-10">\glsxtrshort </span>redefine <span +class="cmtt-10">\glsabbrvfont </span>to match the entry’s style before +displaying it. In this case, the above example doesn’t take into account the shifting +definitions of <span +class="cmtt-10">\glsabbrvfont </span>and will use whatever happens to be the last +abbreviation style in use. More complicated solutions interfere with the upper casing +used by the standard page styles that display the chapter or section title in the page +header using <span +class="cmtt-10">\MakeUppercase</span><a + id="dx1-29009"></a>. +</p><!--l. 6834--><p class="indent" > The <span +class="cmss-10">glossaries-extra </span>package tries to resolve this by modifying <span +class="cmtt-10">\markright</span><a + id="dx1-29010"></a> and +<span +class="cmtt-10">\markboth</span><a + id="dx1-29011"></a> and <span +class="cmtt-10">\@starttoc</span>. If you don’t like this change, you can restore their +former definitions using +</p><!--l. 6837--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrRevertMarks</span><span +class="cmtt-9"> </span></span><a + id="dx1-29012"></a> <span +class="cmtt-10">\glsxtrRevertMarks </span></div><hr> +</p><!--l. 6839--><p class="noindent" > +If you only want to restore <span +class="cmtt-10">\@starttoc </span>you can use: +</p><!--l. 6841--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrRevertTocMarks</span><span +class="cmtt-9"> </span></span><a + id="dx1-29013"></a> <span +class="cmtt-10">\glsxtrRevertTocMarks </span></div><hr> +</p><!--l. 6843--><p class="noindent" > +If you restore the header or table of contents commands, you’ll have to use the +<span +class="cmss-10">glossaries </span>manual’s recommendations of either simply using <span +class="cmtt-10">\glsentryshort </span>(as +above) or use the sectioning command’s option argument to provide an alternative +for the table of contents and page header. For example: + + + +</p> + <div class="verbatim" id="verbatim-165"> +\chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}} +</div> +<!--l. 6850--><p class="nopar" > Alternatively, you need to find a way to insert <span +class="cmtt-10">\glsxtrmarkhook </span>and <span +class="cmtt-10">\@glsxtrinmark</span> +at the start of the header or table of contents either scoped or afterwards cancelled +with <span +class="cmtt-10">\@glsxtrnotinmark </span>and <span +class="cmtt-10">\glsxtrrestoremarkhook</span>. +</p><!--l. 6856--><p class="indent" > If you don’t revert the mark commands back with <span +class="cmtt-10">\glsxtrRevertMarks</span>, you can +use the commands described below in the argument of sectioning commands. You can +still use them even if the mark commands have been reverted, but only where they +don’t conflict with the page style. +</p><!--l. 6862--><p class="indent" > The commands listed below all use <span +class="cmtt-10">\texorpdfstring</span><a + id="dx1-29014"></a> if <span +class="cmss-10">hyperref</span><a + id="dx1-29015"></a> has been +loaded so that the expandable non-formatted version is added to the PDF +bookmarks. Note that since the commands that convert the first letter to +upper case aren’t expandable, the non-case-changing version is used for the +bookmarks. +</p><!--l. 6868--><p class="indent" > These commands essentially behave as though you have used <span +class="cmtt-10">\glsxtrshort </span>(or +equivalent) with the options <span +class="cmss-10">noindex</span><a + id="dx1-29016"></a> and <span +class="cmss-10">hyper=false</span><a + id="dx1-29017"></a>. The text produced won’t be +converted to upper case in the page headings by default. If you want the text +converted to upper case you need to set the <a +href="#catattr.headuc"><span +class="cmss-10">headuc</span></a><a + id="dx1-29018"></a> attribute to “true” for the +appropriate category. +</p><!--l. 6876--><p class="indent" > <div class="important" title="Important Note"> If you use one of the <span +class="cmtt-10">\textsc</span><a + id="dx1-29019"></a> styles, be aware that the default fonts don’t +provide bold small-caps or italic small-caps. This means that if the chapter +or section title style uses bold, this may override the small-caps setting, +in which case the abbreviation will just appear as lower case bold. If the +heading style uses italic, the abbreviation may appear in upright small-caps, +<span +class="cmti-10">even if you have set the </span><a +href="#catattr.headuc"><span +class="cmssi-10">headuc</span></a><a + id="dx1-29020"></a> <span +class="cmti-10">attribute </span>since the all-capitals form still uses +<span +class="cmtt-10">\glsabbrvfont</span>. You may want to consider using the <span +class="cmss-10">slantsc</span><a + id="dx1-29021"></a> package in this case. +</div> +</p><!--l. 6887--><p class="noindent" > +</p><!--l. 6889--><p class="indent" > Display the short form: +</p><!--l. 6890--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-29022"></a> <span +class="cmtt-10">\glsfmtshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6892--><p class="noindent" > +</p><!--l. 6894--><p class="indent" > Display the plural short form: +</p><!--l. 6895--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29023"></a> <span +class="cmtt-10">\glsfmtshortpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6897--><p class="noindent" > +</p><!--l. 6899--><p class="indent" > First letter upper case singular short form: +</p><!--l. 6900--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-29024"></a> <span +class="cmtt-10">\Glsfmtshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6902--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6905--><p class="indent" > First letter upper case plural short form: + + + +</p><!--l. 6906--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29025"></a> <span +class="cmtt-10">\Glsfmtshortpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6908--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6911--><p class="indent" > Display the long form: +</p><!--l. 6912--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-29026"></a> <span +class="cmtt-10">\glsfmtlong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6914--><p class="noindent" > +</p><!--l. 6916--><p class="indent" > Display the plural long form: +</p><!--l. 6917--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtlongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29027"></a> <span +class="cmtt-10">\glsfmtlongpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6919--><p class="noindent" > +</p><!--l. 6921--><p class="indent" > First letter upper case singular long form: +</p><!--l. 6922--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtlong</span><span +class="cmtt-9"> </span></span><a + id="dx1-29028"></a> <span +class="cmtt-10">\Glsfmtlong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6924--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6927--><p class="indent" > First letter upper case plural long form: +</p><!--l. 6928--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtlongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29029"></a> <span +class="cmtt-10">\Glsfmtlongpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6930--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6933--><p class="indent" > There are similar commands for the full form, but note that these use the <span +class="cmti-10">inline</span> +full form, which may be different from the full form used by <span +class="cmtt-10">\gls</span>. +</p><!--l. 6937--><p class="indent" > Display the full form: +</p><!--l. 6938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtfull</span><span +class="cmtt-9"> </span></span><a + id="dx1-29030"></a> <span +class="cmtt-10">\glsfmtfull{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6940--><p class="noindent" > +</p><!--l. 6942--><p class="indent" > Display the plural full form: +</p><!--l. 6943--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtfullpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29031"></a> <span +class="cmtt-10">\glsfmtfullpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6945--><p class="noindent" > +</p><!--l. 6947--><p class="indent" > First letter upper case singular full form: +</p><!--l. 6948--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtfull</span><span +class="cmtt-9"> </span></span><a + id="dx1-29032"></a> <span +class="cmtt-10">\Glsfmtfull{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6950--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6953--><p class="indent" > First letter upper case plural full form: +</p><!--l. 6954--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtfullpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29033"></a> <span +class="cmtt-10">\Glsfmtfullpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6956--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6959--><p class="indent" > There are also equivalent commands for the value of the <span +class="cmss-10">text</span><a + id="dx1-29034"></a> field: +</p><!--l. 6961--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmttext</span><span +class="cmtt-9"> </span></span><a + id="dx1-29035"></a> <span +class="cmtt-10">\glsfmttext{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6963--><p class="noindent" > +</p><!--l. 6965--><p class="indent" > First letter converted to upper case: +</p><!--l. 6966--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmttext</span><span +class="cmtt-9"> </span></span><a + id="dx1-29036"></a> <span +class="cmtt-10">\Glsfmttext{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6968--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6971--><p class="indent" > The plural equivalents: + + + +</p><!--l. 6972--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-29037"></a> <span +class="cmtt-10">\glsfmtplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6974--><p class="noindent" > +and +</p><!--l. 6976--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-29038"></a> <span +class="cmtt-10">\Glsfmtplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6978--><p class="noindent" > +</p><!--l. 6980--><p class="indent" > Likewise for the value of the <span +class="cmss-10">name</span><a + id="dx1-29039"></a> field: +</p><!--l. 6982--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtname</span><span +class="cmtt-9"> </span></span><a + id="dx1-29040"></a> <span +class="cmtt-10">\glsfmtname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6984--><p class="noindent" > +</p><!--l. 6986--><p class="indent" > First letter converted to upper case: +</p><!--l. 6987--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtname</span><span +class="cmtt-9"> </span></span><a + id="dx1-29041"></a> <span +class="cmtt-10">\Glsfmtname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6989--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 6992--><p class="indent" > Similarly for the value of the <span +class="cmss-10">first</span><a + id="dx1-29042"></a> field: +</p><!--l. 6994--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtfirst</span><span +class="cmtt-9"> </span></span><a + id="dx1-29043"></a> <span +class="cmtt-10">\glsfmtfirst{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 6996--><p class="noindent" > +</p><!--l. 6998--><p class="indent" > First letter converted to upper case: +</p><!--l. 6999--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtfirst</span><span +class="cmtt-9"> </span></span><a + id="dx1-29044"></a> <span +class="cmtt-10">\Glsfmtfirst{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7001--><p class="noindent" > +(No case-change applied to PDF bookmarks.) +</p><!--l. 7004--><p class="indent" > The plural equivalents: +</p><!--l. 7005--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsfmtfirstpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29045"></a> <span +class="cmtt-10">\glsfmtfirstpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7007--><p class="noindent" > +and +</p><!--l. 7009--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsfmtfirstpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-29046"></a> <span +class="cmtt-10">\Glsfmtfirstpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7011--><p class="noindent" > + + + +</p> +<!--l. 7013--><p class="indent" > </div> +</p><!--l. 7013--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">5. <a + id="sec:categories"></a>Categories</h2> +</p><!--l. 7016--><p class="indent" > Each entry defined by <span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-30001"></a> (or commands that internally use it +such as <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-30002"></a>) is assigned a category through the <span +class="cmss-10">category</span><a + id="dx1-30003"></a> key. You may +add any category that you like, but since the category is a label used in the creation +of some control sequences, avoid problematic characters within the category label. +(So take care if you have <span +class="cmss-10">babel</span><a + id="dx1-30004"></a> shorthands on that make some characters +active.) +</p><!--l. 7025--><p class="indent" > The use of categories can give you more control over the way entries are displayed +in the text or glossary. Note that an entry’s category is independent of the glossary +type. Be careful not to confuse <span +class="cmss-10">category</span><a + id="dx1-30005"></a> with <span +class="cmss-10">type</span><a + id="dx1-30006"></a>. +</p><!--l. 7030--><p class="indent" > The default category assumed by <span +class="cmtt-10">\newglossaryentry </span>is labelled <span +class="cmss-10">general</span><a + id="dx1-30007"></a>. +Abbreviations defined with <span +class="cmtt-10">\newabbreviation </span>have the category set to <span +class="cmss-10">abbreviation</span><a + id="dx1-30008"></a> +by default. Abbreviations defined with <span +class="cmtt-10">\newacronym </span>have the category set to +<span +class="cmss-10">acronym</span><a + id="dx1-30009"></a> by default. +</p><!--l. 7037--><p class="indent" > Additionally, if you have enabled <span +class="cmtt-10">\newterm</span><a + id="dx1-30010"></a> with the <a +href="#styopt.index"><span +class="cmss-10">index</span></a><a + id="dx1-30011"></a> package option +that command will set the category to <span +class="cmss-10">index</span><a + id="dx1-30012"></a> by default. If you have enabled +<span +class="cmtt-10">\glsxtrnewsymbol</span><a + id="dx1-30013"></a> with the <a +href="#styopt.symbols"><span +class="cmss-10">symbols</span></a><a + id="dx1-30014"></a> package option, that command will set the +category to <span +class="cmss-10">symbol</span><a + id="dx1-30015"></a>. If you have enabled <span +class="cmtt-10">\glsxtrnewnumber</span><a + id="dx1-30016"></a> with the <a +href="#styopt.numbers"><span +class="cmss-10">numbers</span></a><a + id="dx1-30017"></a> package +option, that command will set the category to <span +class="cmss-10">number</span><a + id="dx1-30018"></a>. +</p><!--l. 7045--><p class="indent" > You can obtain the category label for a given entry using +</p><!--l. 7046--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glscategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30019"></a> <span +class="cmtt-10">\glscategory{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7048--><p class="noindent" > +This is equivalent to commands like <span +class="cmtt-10">\glsentryname </span>and so may be used in an +expandable context. No error is generated if the entry doesn’t exist. +</p><!--l. 7053--><p class="indent" > You can test the category for a given entry using +</p><!--l. 7054--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifcategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30020"></a> <span +class="cmtt-10">\glsifcategory{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span> +<span +class="cmitt-10">part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false part</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7057--><p class="noindent" > +This is equivalent to </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\ifglsfieldeq</span><a + id="dx1-30021"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">category</span><span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span> +<br /><span +class="cmitt-10">part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span><span +class="cmitt-10"> part</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> so any restrictions that apply to <span +class="cmtt-10">\ifglsfieldeq </span>also apply to <span +class="cmtt-10">\glsifcategory</span>. +<!--l. 7066--><p class="indent" > Each category may have a set of attributes. For example, the <span +class="cmss-10">general</span><a + id="dx1-30022"></a> and <span +class="cmss-10">acronym</span><a + id="dx1-30023"></a> +categories have the attribute <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30024"></a> set to “true” to indicate that all entries with +either of those categories are regular entries (as opposed to abbreviations). +This attribute is accessed by <span +class="cmtt-10">\glsentryfmt </span>to determine whether to use +<span +class="cmtt-10">\glsgenentryfmt </span>or <span +class="cmtt-10">\glsxtrgenabbrvfmt</span>. +</p><!--l. 7074--><p class="indent" > Other attributes recognised by <span +class="cmss-10">glossaries-extra </span>are: + </p><dl class="description"><dt class="description"> +<a + id="catattr.nohyperfirst"></a><span +class="cmssbx-10">nohyperfirst</span><a + id="dx1-30025"></a> </dt><dd +class="description">When using commands like <span +class="cmtt-10">\gls</span><a + id="dx1-30026"></a> this will automatically suppress the + + + + hyperlink on <a + id="dx1-30027"></a><a +href="#glo:firstuse">first use</a> for entries with a category that has this attribute set to + “true”. (This settings can be overridden by explicitly setting the <span +class="cmss-10">hyper</span><a + id="dx1-30028"></a> + key on or off in the optional argument of commands like <span +class="cmtt-10">\gls</span>.) As + from version 1.07, <span +class="cmtt-10">\glsfirst</span>, <span +class="cmtt-10">\Glsfirst</span>, <span +class="cmtt-10">\GLSfirst </span>and their plural + versions (which should ideally behave in a similar way to the <a + id="dx1-30029"></a>first use of + <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glspl</span>) now honour this attribute (but not the package-wide + <a +href="#styopt.hyperfirst"><span +class="cmss-10">hyperfirst</span></a><span +class="cmss-10">=false</span><a + id="dx1-30030"></a> option, which matches the behaviour of <span +class="cmss-10">glossaries</span><a + id="dx1-30031"></a>). If you want + commands like <span +class="cmtt-10">\glsfirst </span>to ignore the <a +href="#catattr.nohyperfirst"><span +class="cmss-10">nohyperfirst</span></a><a + id="dx1-30032"></a> attribute then just + redefine + <!--l. 7091--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrchecknohyperfirst</span><span +class="cmtt-9"> </span></span><a + id="dx1-30033"></a> <span +class="cmtt-10">\glsxtrchecknohyperfirst{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 7093--><p class="noindent" > + to do nothing. + </p></dd><dt class="description"> +<a + id="catattr.nohyper"></a><span +class="cmssbx-10">nohyper</span><a + id="dx1-30034"></a> </dt><dd +class="description">When using commands like <span +class="cmtt-10">\gls</span><a + id="dx1-30035"></a> this will automatically suppress the + hyperlink for entries with a category that has this attribute set to “true”. (This + settings can be overridden by explicitly setting the <span +class="cmss-10">hyper</span><a + id="dx1-30036"></a> key on or off in the + optional argument of commands like <span +class="cmtt-10">\gls</span>.) + </dd><dt class="description"> +<a + id="catattr.indexonlyfirst"></a><span +class="cmssbx-10">indexonlyfirst</span><a + id="dx1-30037"></a> </dt><dd +class="description">This is similar to the <a +href="#styopt.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-30038"></a> package option but only for entries + that have a category with this attribute set to “true”. + </dd><dt class="description"> +<a + id="catattr.wrgloss"></a><span +class="cmssbx-10">wrgloss</span><a + id="dx1-30039"></a> </dt><dd +class="description">When using commands like <span +class="cmtt-10">\gls</span><a + id="dx1-30040"></a>, if this attribute is set to “after”, it will + automatically implement <span +class="cmss-10">wrgloss</span><a + id="dx1-30041"></a><span +class="cmss-10">=after</span>. (New to v1.14.) + </dd><dt class="description"> +<a + id="catattr.discardperiod"></a><span +class="cmssbx-10">discardperiod</span><a + id="dx1-30042"></a> </dt><dd +class="description">If set to “true”, the post-<a + id="dx1-30043"></a><a +href="#glo:linktext">link-text</a> hook will discard a full stop + (period) that follows <span +class="cmti-10">non-plural </span>commands like <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glstext</span>. (Provided + for entries such as abbreviations that end with a full stop.) This attribute is + only applicable to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if + it’s using <span +class="cmtt-10">\newabbreviation</span>.) This attribute doesn’t apply to the accessibility + fields. + <!--l. 7120--><p class="noindent" >Note that this can cause a problem if you access a field that doesn’t end with a + full stop. For example: + + + +</p> + <div class="verbatim" id="verbatim-166"> + \newabbreviation +  <br /> [user1={German Speaking \TeX\ User Group}] +  <br /> {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ +  <br />e.V.} +</div> + <!--l. 7127--><p class="nopar" > Here the <span +class="cmss-10">short</span><a + id="dx1-30044"></a> and <span +class="cmss-10">long</span><a + id="dx1-30045"></a> fields end with a full stop, but the <span +class="cmss-10">user1</span><a + id="dx1-30046"></a> field doesn’t. + The simplest solution in this situation is to put the sentence terminator in the + final optional argument. For example: + + + +</p> + <div class="verbatim" id="verbatim-167"> + \glsuseri{dante}[.] +</div> + <!--l. 7134--><p class="nopar" > This will bring the punctuation character inside the <a + id="dx1-30047"></a><a +href="#glo:linktext">link-text</a> and it won’t be + discarded. + </p></dd><dt class="description"> +<a + id="catattr.pluraldiscardperiod"></a><span +class="cmssbx-10">pluraldiscardperiod</span><a + id="dx1-30048"></a> </dt><dd +class="description">If this attribute is set to “true” <span +class="cmti-10">and </span>the <a +href="#catattr.discardperiod"><span +class="cmss-10">discardperiod</span></a><a + id="dx1-30049"></a> attribute is + set to “true”, this will behave as above for the plural commands like <span +class="cmtt-10">\glspl </span>or + <span +class="cmtt-10">\glsplural</span>. This attribute is only applicable to entries defined using + <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using <span +class="cmtt-10">\newabbreviation</span>.) + </dd><dt class="description"> +<a + id="catattr.retainfirstuseperiod"></a><span +class="cmssbx-10">retainfirstuseperiod</span><a + id="dx1-30050"></a> </dt><dd +class="description">If this attribute is set to “true” then the full stop won’t be + discarded for <a + id="dx1-30051"></a><a +href="#glo:firstuse">first use</a> instances, even if <a +href="#catattr.discardperiod"><span +class="cmss-10">discardperiod</span></a><a + id="dx1-30052"></a> or <a +href="#catattr.pluraldiscardperiod"><span +class="cmss-10">pluraldiscardperiod</span></a><a + id="dx1-30053"></a> are + set. This is useful for ⟨<span +class="cmti-10">short</span>⟩ (⟨<span +class="cmti-10">long</span>⟩) abbreviation styles where only the + short form has a trailing full stop. This attribute is only applicable to + entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) This attribute doesn’t apply to the accessibility + fields. + </dd><dt class="description"> +<a + id="catattr.markwords"></a><span +class="cmssbx-10">markwords</span><a + id="dx1-30054"></a> </dt><dd +class="description">If this attribute is set to “true” any entry defined using <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-30055"></a> + will automatically have spaces in the long form replaced with + <!--l. 7158--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrwordsep</span><span +class="cmtt-9"> </span></span><a + id="dx1-30056"></a> <span +class="cmtt-10">\glsxtrwordsep </span></div><hr> + </p><!--l. 7160--><p class="noindent" > + and each word is encapsulated with + </p><!--l. 7162--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrword</span><span +class="cmtt-9"> </span></span><a + id="dx1-30057"></a> <span +class="cmtt-10">\glsxtrword{</span>⟨<span +class="cmitt-10">word</span>⟩<span +class="cmtt-10">} </span></div><hr> + </p><!--l. 7164--><p class="noindent" > + For example: + + + +</p> + <div class="verbatim" id="verbatim-168"> + \glssetcategoryattribute{abbreviation}{markwords}{true} +  <br />\newabbreviation{ip}{IP}{Internet Protocol} +</div> + <!--l. 7169--><p class="nopar" > is essentially the same as + + + +</p> + <div class="verbatim" id="verbatim-169"> + \newabbreviation{ip}{IP} +  <br />{\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}} +</div> + <!--l. 7174--><p class="nopar" > The “hyphen” styles, such as <a +href="#abbrstyle.long-hyphen-short-hyphen"><span +class="cmss-10">long-hyphen-short-hyphen</span></a><a + id="dx1-30058"></a>, take advantage of this + markup. If the inserted material (provided in the final argument of commands + like <span +class="cmtt-10">\gls</span><a + id="dx1-30059"></a>) starts with a hyphen then <span +class="cmtt-10">\glsxtrwordsep </span>is locally redefined to a + hyphen. (The default value is a space). Note that this only applies to + commands like <span +class="cmtt-10">\gls </span>and not like <span +class="cmtt-10">\glsxtrlong</span>. You can provide your own + localised switch, if required. For example: + + + +</p> + <div class="verbatim" id="verbatim-170"> + \newcommand{\hyplong}[2][]{% +  <br /> {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}} +</div> + <!--l. 7186--><p class="nopar" > + </p><!--l. 7188--><p class="noindent" >This setting will also adjust the long plural. This attribute is only applicable to + entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + </p><!--l. 7192--><p class="noindent" ><div class="important" title="Important Note"> This setting may result in the <span +class="cmtt-10">\glsxtrword </span>and <span +class="cmtt-10">\glsxtrwordsep </span>markup + ending up in the <span +class="cmss-10">sort</span><a + id="dx1-30060"></a> field, depending on the style in use. </div> + </p><!--l. 7196--><p class="noindent" > + </p></dd><dt class="description"> +<a + id="catattr.markshortwords"></a><span +class="cmssbx-10">markshortwords</span><a + id="dx1-30061"></a> </dt><dd +class="description">This is similar to <a +href="#catattr.markwords"><span +class="cmss-10">markwords</span></a><a + id="dx1-30062"></a> but applies to the short form. (Only + useful for abbreviations that contain spaces.) This attribute is only applicable + to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + <!--l. 7204--><p class="noindent" >This setting will only adjust the short plural if the <span +class="cmss-10">shortplural</span><a + id="dx1-30063"></a> key isn’t used. + This setting will take precedence over <a +href="#catattr.insertdots"><span +class="cmss-10">insertdots</span></a><a + id="dx1-30064"></a>. + </p><!--l. 7208--><p class="noindent" ><div class="important" title="Important Note"> This setting may result in the <span +class="cmtt-10">\glsxtrword </span>and <span +class="cmtt-10">\glsxtrwordsep </span>markup + ending up in the <span +class="cmss-10">sort</span><a + id="dx1-30065"></a> field, depending on the style in use. </div> + </p><!--l. 7212--><p class="noindent" > + </p></dd><dt class="description"> +<a + id="catattr.insertdots"></a><span +class="cmssbx-10">insertdots</span><a + id="dx1-30066"></a> </dt><dd +class="description">If this attribute is set to “true” any entry defined using <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-30067"></a> + will automatically have full stops (periods) inserted after each letter. The entry + will be defined with those dots present as though they had been present in the + ⟨<span +class="cmti-10">short</span>⟩ argument of <span +class="cmtt-10">\newabbreviation </span>(rather than inserting them every time + the entry is used). The short plural form defaults to the new dotted version of + the original ⟨<span +class="cmti-10">short</span>⟩ form with the plural suffix appended. <span +class="cmti-10">This setting is</span> + <span +class="cmti-10">incompatible with </span><a +href="#catattr.markshortwords"><span +class="cmssi-10">markshortwords</span></a><a + id="dx1-30068"></a><span +class="cmti-10">. </span>This attribute is only applicable to + entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + <!--l. 7226--><p class="noindent" ><div class="important" title="Important Note"> If you explicitly override the short plural using the <span +class="cmss-10">shortplural</span><a + id="dx1-30069"></a> key, you must + explicitly insert the dots yourself (since there’s no way for the code to + determine if the plural has a suffix that shouldn’t be followed by a dot). + </div> + </p><!--l. 7232--><p class="noindent" > + + + + </p><!--l. 7234--><p class="noindent" >This attribute is best used with the <a +href="#catattr.discardperiod"><span +class="cmss-10">discardperiod</span></a><a + id="dx1-30070"></a> attribute set to “true”. + </p></dd><dt class="description"> +<a + id="catattr.aposplural"></a><span +class="cmssbx-10">aposplural</span><a + id="dx1-30071"></a> </dt><dd +class="description">If this attribute is set to “true”, <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-30072"></a> will insert an + apostrophe (’) before the plural suffix for the <span +class="cmti-10">short </span>plural form (unless + explicitly overridden with the <span +class="cmss-10">shortplural</span><a + id="dx1-30073"></a> key). The long plural form is + unaffected by this setting. This setting overrides <a +href="#catattr.noshortplural"><span +class="cmss-10">noshortplural</span></a><a + id="dx1-30074"></a>. This + attribute is only applicable to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or + <span +class="cmtt-10">\newacronym </span>if it’s using <span +class="cmtt-10">\newabbreviation</span>.) Check with your supervisor, + publisher or editor if you want to use this attribute as this usage is + controversial. + </dd><dt class="description"> +<a + id="catattr.noshortplural"></a><span +class="cmssbx-10">noshortplural</span><a + id="dx1-30075"></a> </dt><dd +class="description">If this attribute is set to “true”, <span +class="cmtt-10">\newabbreviation</span><a + id="dx1-30076"></a> won’t append + the plural suffix for the short plural form. This means the <span +class="cmss-10">short</span><a + id="dx1-30077"></a> and + <span +class="cmss-10">shortplural</span><a + id="dx1-30078"></a> values will be the same unless explicitly overridden. <span +class="cmti-10">This setting</span> + <span +class="cmti-10">is incompatible with </span><a +href="#catattr.aposplural"><span +class="cmssi-10">aposplural</span></a><a + id="dx1-30079"></a><span +class="cmti-10">. </span>This attribute is only applicable to + entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + </dd><dt class="description"> +<a + id="catattr.accessinsertdots"></a><span +class="cmssbx-10">accessinsertdots</span><a + id="dx1-30080"></a> </dt><dd +class="description">If this attribute is set to “true” and the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-30081"></a> package + has been loaded (with the <a +href="#styopt.accsupp"><span +class="cmss-10">accsupp</span></a><a + id="dx1-30082"></a> option), then this behaves like <a +href="#catattr.insertdots"><span +class="cmss-10">insertdots</span></a><a + id="dx1-30083"></a> but + for the <span +class="cmss-10">shortaccess</span><a + id="dx1-30084"></a> field instead of the <span +class="cmss-10">short</span><a + id="dx1-30085"></a> field. This can be used to assist the + screen reader for initialisms that should be read out letter by letter rather than + as a word. For example: + + + + <div class="verbatim" id="verbatim-171"> + \glssetcategoryattribute{initialism}{accessinsertdots}{true} +  <br />\newabbreviation[category=initialism]{pi}{PI}{Private Investigator} +</div> + <!--l. 7268--><p class="nopar" > This setting will be overridden by an explicit use of the <span +class="cmss-10">shortaccess</span><a + id="dx1-30086"></a> key in the + optional argument of <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym</span>). This attribute is + only applicable to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if + it’s using <span +class="cmtt-10">\newabbreviation</span>.) + </p></dd><dt class="description"> +<a + id="catattr.nameshortaccess"></a><span +class="cmssbx-10">nameshortaccess</span><a + id="dx1-30087"></a> </dt><dd +class="description">If this attribute is set to “true”, the <span +class="cmss-10">access</span><a + id="dx1-30088"></a> field (used for the <span +class="cmss-10">name</span><a + id="dx1-30089"></a> + field’s accessibility support) is set to the <span +class="cmss-10">shortaccess</span><a + id="dx1-30090"></a> value. This attribute has no + effect if there’s no accessibility support or if the <span +class="cmss-10">shortaccess</span><a + id="dx1-30091"></a> field hasn’t been + assigned or if the <span +class="cmss-10">access</span><a + id="dx1-30092"></a> field is used explicitly. This attribute is only applicable + to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + </dd><dt class="description"> +<a + id="catattr.textshortaccess"></a><span +class="cmssbx-10">textshortaccess</span><a + id="dx1-30093"></a> </dt><dd +class="description">Like <span +class="cmss-10">nameshortaccess</span><a + id="dx1-30094"></a> but applies to the <span +class="cmss-10">textaccess</span><a + id="dx1-30095"></a> field (for use with + regular abbreviations). + </dd><dt class="description"> +<a + id="catattr.firstshortaccess"></a><span +class="cmssbx-10">firstshortaccess</span><a + id="dx1-30096"></a> </dt><dd +class="description">Like <span +class="cmss-10">nameshortaccess</span><a + id="dx1-30097"></a> but applies to the <span +class="cmss-10">firstaccess</span><a + id="dx1-30098"></a> field (for use with + regular abbreviations). + </dd><dt class="description"> +<a + id="catattr.accessaposplural"></a><span +class="cmssbx-10">accessaposplural</span><a + id="dx1-30099"></a> </dt><dd +class="description">This boolean attribute overrides <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-30100"></a> for the <span +class="cmss-10">shortpluralaccess</span><a + id="dx1-30101"></a> + key. Has no effect if there’s no accessibility support or if the <span +class="cmss-10">shortaccess</span><a + id="dx1-30102"></a> key + hasn’t been set or if the <span +class="cmss-10">shortpluralaccess</span><a + id="dx1-30103"></a> key is explicitly set. If the <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-30104"></a> is + set and this attribute isn’t set and the <span +class="cmss-10">shortaccess</span><a + id="dx1-30105"></a> key is set, then the + <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-30106"></a> setting governs the default <span +class="cmss-10">shortpluralaccess</span><a + id="dx1-30107"></a> setting. If you want + <a +href="#catattr.aposplural"><span +class="cmss-10">aposplural</span></a><a + id="dx1-30108"></a> but don’t want it applied to the accessibility support, set the + <a +href="#catattr.accessaposplural"><span +class="cmss-10">accessaposplural</span></a><a + id="dx1-30109"></a> attribute to “false”. This attribute is only applicable to + entries defined using <span +class="cmtt-10">\newabbreviation </span>(or <span +class="cmtt-10">\newacronym </span>if it’s using + <span +class="cmtt-10">\newabbreviation</span>.) + </dd><dt class="description"> +<a + id="catattr.accessnoshortplural"></a><span +class="cmssbx-10">accessnoshortplural</span><a + id="dx1-30110"></a> </dt><dd +class="description">This boolean attribute overrides <a +href="#catattr.noshortplural"><span +class="cmss-10">noshortplural</span></a><a + id="dx1-30111"></a> for the + <span +class="cmss-10">shortpluralaccess</span><a + id="dx1-30112"></a> key. The same conditions apply as for <a +href="#catattr.accessaposplural"><span +class="cmss-10">accessaposplural</span></a><a + id="dx1-30113"></a>. This + attribute is only applicable to entries defined using <span +class="cmtt-10">\newabbreviation </span>(or + <span +class="cmtt-10">\newacronym </span>if it’s using <span +class="cmtt-10">\newabbreviation</span>.) + </dd><dt class="description"> +<a + id="catattr.headuc"></a><span +class="cmssbx-10">headuc</span><a + id="dx1-30114"></a> </dt><dd +class="description">If this attribute is set to “true”, commands like <span +class="cmtt-10">\glsfmtshort</span><a + id="dx1-30115"></a> will use the + upper case version in the page headers. + + + + </dd><dt class="description"> +<a + id="catattr.tagging"></a><span +class="cmssbx-10">tagging</span><a + id="dx1-30116"></a> </dt><dd +class="description">If this attribute is set to “true”, the tagging command defined by + <span +class="cmtt-10">\GlsXtrEnableInitialTagging</span><a + id="dx1-30117"></a> will be activated to use <span +class="cmtt-10">\glsxtrtagfont</span><a + id="dx1-30118"></a> in + the glossary (see <a +href="#sec:tagging"><span +class="cmsy-10">§</span>3.1 </a><a +href="#sec:tagging">Tagging Initials<!--tex4ht:ref: sec:tagging --></a>). + </dd><dt class="description"> +<a + id="catattr.entrycount"></a><span +class="cmssbx-10">entrycount</span><a + id="dx1-30119"></a> </dt><dd +class="description">Unlike the above attributes, this attribute isn’t boolean but instead must + be an integer value and is used in combination with <span +class="cmtt-10">\glsenableentrycount</span><a + id="dx1-30120"></a> + (see <a +href="#sec:entrycountmods"><span +class="cmsy-10">§</span>2.4 </a><a +href="#sec:entrycountmods">Entry Counting Modifications<!--tex4ht:ref: sec:entrycountmods --></a>). Leave blank or undefined for + categories that shouldn’t have this facility enabled. The value of this attribute + is used by <span +class="cmtt-10">\glsxtrifcounttrigger</span><a + id="dx1-30121"></a> to determine how commands such as <span +class="cmtt-10">\cgls</span><a + id="dx1-30122"></a> + should behave. + <!--l. 7329--><p class="noindent" >With <span +class="cmss-10">glossaries</span>, commands like <span +class="cmtt-10">\cgls </span>use <span +class="cmtt-10">\cglsformat </span>only if the previous + usage count for that entry was equal to 1. With <span +class="cmss-10">glossaries-extra </span>the test is now + for entries that have the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-30123"></a> attribute set and where the previous + usage count for that entry is less than or equal to the value of that + attribute. + </p></dd><dt class="description"> +<a + id="catattr.linkcount"></a><span +class="cmssbx-10">linkcount</span><a + id="dx1-30124"></a> </dt><dd +class="description">This attribute is set to <span +class="cmtt-10">true </span>by <span +class="cmtt-10">\GlsXtrEnableLinkCounting</span><a + id="dx1-30125"></a> (see <a +href="#sec:linkcount"><span +class="cmsy-10">§</span>6.2 + </a><a +href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>). + </dd><dt class="description"> +<a + id="catattr.linkcountmaster"></a><span +class="cmssbx-10">linkcountmaster</span><a + id="dx1-30126"></a> </dt><dd +class="description">This attribute is set to the name of the master counter by + <span +class="cmtt-10">\GlsXtrEnableLinkCounting</span><a + id="dx1-30127"></a> if the optional argument is provided (see <a +href="#sec:linkcount"><span +class="cmsy-10">§</span>6.2 + </a><a +href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>). + </dd><dt class="description"> +<a + id="catattr.glossdesc"></a><span +class="cmssbx-10">glossdesc</span><a + id="dx1-30128"></a> </dt><dd +class="description">The <span +class="cmtt-10">\glossentrydesc</span><a + id="dx1-30129"></a> command (used in the predefined glossary styles) is + modified by <span +class="cmss-10">glossaries-extra </span>to check for this attribute. The attribute may have + one of the following values: + <ul class="itemize1"> + <li class="itemize"><span +class="cmtt-10">firstuc</span>: the first letter of the description will be converted to upper + case (using <span +class="cmtt-10">\Glsentrydesc</span><a + id="dx1-30130"></a>). + </li> + <li class="itemize"><span +class="cmtt-10">title</span>: the description will be used in the argument of the title casing + command <span +class="cmtt-10">\capitalisewords</span><a + id="dx1-30131"></a> (provided by <span +class="cmss-10">mfirstuc</span><a + id="dx1-30132"></a>). If you want to use a + different command you can redefine: + <!--l. 7357--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldtitlecasecs</span><span +class="cmtt-9"> </span></span><a + id="dx1-30133"></a> <span +class="cmtt-10">\glsxtrfieldtitlecasecs{</span>⟨<span +class="cmitt-10">phrase cs</span>⟩<span +class="cmtt-10">}</span> + </div><hr> + </p><!--l. 7359--><p class="noindent" > + For example: + + + +</p> + <div class="verbatim" id="verbatim-172"> + \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}} +</div> + <!--l. 7363--><p class="nopar" > (Note that the argument to <span +class="cmtt-10">\glsxtrfieldtitlecasecs </span>will be a control + sequence whose replacement text is the entry’s description, which is why + <span +class="cmtt-10">\xcapitalisefmtwords </span>is needed instead of <span +class="cmtt-10">\capitalisefmtwords</span>.) +</p> + </li></ul> + <!--l. 7370--><p class="noindent" >Any other values of this attribute are ignored. Remember that there are design + limitations for both the first letter uppercasing and the title casing commands. + See the <span +class="cmss-10">mfirstuc</span><a + id="dx1-30134"></a> user manual for further details. + </p></dd><dt class="description"> +<a + id="catattr.glossdescfont"></a><span +class="cmssbx-10">glossdescfont</span><a + id="dx1-30135"></a> </dt><dd +class="description">(New to version 1.04) In addition to the above, the modified + <span +class="cmtt-10">\glossentrydesc</span><a + id="dx1-30136"></a> command also checks this attribute. If set, it should be the + name of a control sequence (without the leading backslash) that takes one + argument. This control sequence will be applied to the description text. For + example: + + + + <div class="verbatim" id="verbatim-173"> + \glssetcategoryattribute{general}{glossdescfont}{emph} +</div> + <!--l. 7383--><p class="nopar" > + </p></dd><dt class="description"> +<a + id="catattr.glossname"></a><span +class="cmssbx-10">glossname</span><a + id="dx1-30137"></a> </dt><dd +class="description">As <a +href="#catattr.glossdesc"><span +class="cmss-10">glossdesc</span></a><a + id="dx1-30138"></a> but applies to <span +class="cmtt-10">\glossentryname</span><a + id="dx1-30139"></a>. Additionally, if this + attribute is set to “uc” the name is converted to all capitals. + </dd><dt class="description"> +<a + id="catattr.indexname"></a><span +class="cmssbx-10">indexname</span><a + id="dx1-30140"></a> </dt><dd +class="description">If set, the <span +class="cmtt-10">\glsxtrpostnamehook </span>hook used at the end of <span +class="cmtt-10">\glossentryname</span><a + id="dx1-30141"></a> + will index the entry using <span +class="cmtt-10">\index</span><a + id="dx1-30142"></a>. See <a +href="#sec:autoindex"><span +class="cmsy-10">§</span>7 </a><a +href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for further + details. + </dd><dt class="description"> +<a + id="catattr.glossnamefont"></a><span +class="cmssbx-10">glossnamefont</span><a + id="dx1-30143"></a> </dt><dd +class="description">(New to version 1.04) In addition to the above, the modified + <span +class="cmtt-10">\glossentryname</span><a + id="dx1-30144"></a> command also checks this attribute. If set, it should be the + name of a control sequence (without the leading backslash) that takes one + argument. This control sequence will be applied to the name text. For + example: + + + + <div class="verbatim" id="verbatim-174"> + \glssetcategoryattribute{general}{glossnamefont}{emph} +</div> + <!--l. 7403--><p class="nopar" > Note that this overrides <span +class="cmtt-10">\glsnamefont </span>which will only be used if this attribute + hasn’t been set. + </p><!--l. 7407--><p class="noindent" >Remember that glossary styles may additionally apply a font change, + such as the list styles which put the name in the optional argument of + <span +class="cmtt-10">\item</span>. + </p></dd><dt class="description"> +<a + id="catattr.textformat"></a><span +class="cmssbx-10">textformat</span><a + id="dx1-30145"></a> </dt><dd +class="description">(New to version 1.21.) Commands like <span +class="cmtt-10">\gls </span>and <span +class="cmtt-10">\glstext </span>have the link + text encapsulated in the argument of <span +class="cmtt-10">\glstextformat </span>by default. If this + attribute is set, the control sequence given by the attribute value will be used + instead. As with the above, the attribute value should be the name (without + the leading backslash) of a command that takes a single argument (the link + text). Remember that the abbreviation styles may apply an additional font + change. + </dd><dt class="description"> +<a + id="catattr.hyperoutside"></a><span +class="cmssbx-10">hyperoutside</span><a + id="dx1-30146"></a> </dt><dd +class="description">(New to v1.21.) The attribute value may be <span +class="cmtt-10">false</span>, <span +class="cmtt-10">true </span>or unset. If + unset, <span +class="cmtt-10">true </span>is assumed. This indicates the default setting of the <span +class="cmss-10">hyperoutside</span><a + id="dx1-30147"></a> + key, described in <a +href="#sec:wrglossary"><span +class="cmsy-10">§</span>2.1 </a><a +href="#sec:wrglossary">Entry Indexing<!--tex4ht:ref: sec:wrglossary --></a>. + </dd><dt class="description"> +<a + id="catattr.dualindex"></a><span +class="cmssbx-10">dualindex</span><a + id="dx1-30148"></a> </dt><dd +class="description">If set, whenever a glossary entry has information written to the external + glossary file through commands like <span +class="cmtt-10">\gls</span><a + id="dx1-30149"></a> and <span +class="cmtt-10">\glsadd</span><a + id="dx1-30150"></a>, a corresponding line + will be written to the indexing file using <span +class="cmtt-10">\index</span><a + id="dx1-30151"></a>. See <a +href="#sec:autoindex"><span +class="cmsy-10">§</span>7 </a><a +href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for + further details. + </dd><dt class="description"> +<a + id="catattr.targeturl"></a><span +class="cmssbx-10">targeturl</span><a + id="dx1-30152"></a> </dt><dd +class="description">If set, the hyperlink generated by commands like <span +class="cmtt-10">\gls </span>will be set to the + URL provided by this attributes value. For example: + + + + <div class="verbatim" id="verbatim-175"> + \glssetcategoryattribute{general}{targeturl}{master-doc.pdf} +</div> + <!--l. 7437--><p class="nopar" > (See also the accompanying sample file <span +class="cmtt-10">sample-external.tex</span>.) If the URL + contains awkward characters (such as <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">%</span></span></span> or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">~</span></span></span>) remember that the base <span +class="cmss-10">glossaries</span> + package provides commands like <span +class="cmtt-10">\glspercentchar</span><a + id="dx1-30153"></a> and <span +class="cmtt-10">\glstildechar </span>that + expand to literal characters. + </p><!--l. 7445--><p class="noindent" >If you want to a named anchor within the target URL (notionally adding + <span +class="cmtt-10">#</span>⟨<span +class="cmti-10">name</span>⟩ to the URL), then you also need to set <a +href="#catattr.targetname"><span +class="cmss-10">targetname</span></a><a + id="dx1-30154"></a> to the anchor ⟨<span +class="cmti-10">name</span>⟩. + You may use <span +class="cmtt-10">\glslabel </span>within ⟨<span +class="cmti-10">name</span>⟩ which is set by commands like <span +class="cmtt-10">\gls </span>to + the entry’s label. + </p><!--l. 7451--><p class="noindent" >All the predefined glossary styles start each entry listing with <span +class="cmtt-10">\glstarget</span> + which sets the anchor to <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glolinkprefix\glslabel</span></span></span>, so if you want + entries to link to glossaries in the URL given by <a +href="#catattr.targeturl"><span +class="cmss-10">targeturl</span></a><a + id="dx1-30155"></a>, you can just + do: + + + +</p> + <div class="verbatim" id="verbatim-176"> + \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} +</div> + <!--l. 7458--><p class="nopar" > (If the target document changed <span +class="cmtt-10">\glolinkprefix </span>then you will need to adjust + the above as appropriate.) + </p><!--l. 7462--><p class="noindent" >If the anchor is in the form ⟨<span +class="cmti-10">name1</span>⟩<span +class="cmtt-10">.</span>⟨<span +class="cmti-10">name2</span>⟩ then use <a +href="#catattr.targetname"><span +class="cmss-10">targetname</span></a><a + id="dx1-30156"></a> for the ⟨<span +class="cmti-10">name2</span>⟩ + part and <a +href="#catattr.targetcategory"><span +class="cmss-10">targetcategory</span></a><a + id="dx1-30157"></a> for the ⟨<span +class="cmti-10">name1</span>⟩ part. + </p><!--l. 7466--><p class="noindent" >For example: + + + +</p> + <div class="verbatim" id="verbatim-177"> + \glssetcategoryattribute{general}{targeturl}{master-doc.pdf} +  <br />\glssetcategoryattribute{general}{targetcategory}{page} +  <br />\glssetcategoryattribute{general}{targetname}{7} +</div> + <!--l. 7471--><p class="nopar" > will cause all link text for <span +class="cmtt-10">general </span>entries to link to <span +class="cmtt-10">master-doc.pdf#page.7</span> + (page 7 of that PDF). + </p><!--l. 7475--><p class="noindent" >If you want a mixture in your document of entries that link to an internal + glossary and entries that link to an external URL then you can use + the starred form of <span +class="cmtt-10">\newignoredglossary</span><a + id="dx1-30158"></a> for the external list. For + example: + + + +</p> + <div class="verbatim" id="verbatim-178"> + \newignoredglossary*{external} +  <br />\glssetcategoryattribute{external}{targeturl}{master-doc.pdf} +  <br />\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} +  <br />\newglossaryentry{sample}{name={sample},description={local example}} +  <br />\newglossaryentry{sample2}{name={sample2}, +  <br />  type=external, +  <br />  category=external, +  <br />  description={external example}} +</div> + <!--l. 7491--><p class="nopar" > + </p></dd><dt class="description"> +<a + id="catattr.externallocation"></a><span +class="cmssbx-10">externallocation</span><a + id="dx1-30159"></a> </dt><dd +class="description">The value should be the file name of the target document when + manually indexing an external location (see <a +href="#sec:wrglossary"><span +class="cmsy-10">§</span>2.1 </a><a +href="#sec:wrglossary">Entry Indexing<!--tex4ht:ref: sec:wrglossary --></a>). In general, + it’s better to use <a + id="dx1-30160"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> v1.7+ which can handle multiple external sources + and doesn’t require this attribute. + </dd></dl> +<!--l. 7501--><p class="indent" > An attribute can be set using: +</p><!--l. 7502--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glssetcategoryattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30161"></a> <span +class="cmtt-10">\glssetcategoryattribute{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7504--><p class="noindent" > +where ⟨<span +class="cmti-10">category-label</span>⟩ is the category label, ⟨<span +class="cmti-10">attribute-label</span>⟩ is the attribute label and +⟨<span +class="cmti-10">value</span>⟩ is the new value for the attribute. +</p><!--l. 7509--><p class="indent" > There is a shortcut version to set the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30162"></a> attribute to “true”: +</p><!--l. 7511--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glssetregularcategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30163"></a> <span +class="cmtt-10">\glssetregularcategory{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7513--><p class="noindent" > +</p><!--l. 7515--><p class="indent" > If you need to lookup the category label for a particular entry, you can use the +shortcut command: +</p><!--l. 7517--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glssetattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30164"></a> <span +class="cmtt-10">\glssetattribute{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7519--><p class="noindent" > +This uses <span +class="cmtt-10">\glssetcategoryattribute </span>with <span +class="cmtt-10">\glscategory </span>to set the attribute. Note +that this will affect all other entries that share this entry’s category. +</p><!--l. 7524--><p class="indent" > You can fetch the value of an attribute for a particular category using: +</p><!--l. 7526--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsgetcategoryattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30165"></a> <span +class="cmtt-10">\glsgetcategoryattribute{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 7528--><p class="noindent" > +Again there is a shortcut if you need to lookup the category label for a given +entry: +</p><!--l. 7531--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsgetattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30166"></a> <span +class="cmtt-10">\glsgetattribute{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7533--><p class="noindent" > +</p><!--l. 7535--><p class="indent" > You can test if an attribute has been assigned to a given category using: +</p><!--l. 7537--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glshascategoryattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30167"></a> <span +class="cmtt-10">\glshascategoryattribute{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true code</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7540--><p class="noindent" > +This uses <span +class="cmss-10">etoolbox</span><a + id="dx1-30168"></a>’s <span +class="cmtt-10">\ifcsvoid </span>and does ⟨<span +class="cmti-10">true code</span>⟩ if the attribute has been set and +isn’t blank and isn’t <span +class="cmtt-10">\relax</span>. The shortcut if you need to lookup the category label +from an entry is: +</p><!--l. 7545--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glshasattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30169"></a> <span +class="cmtt-10">\glshasattribute{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span> +<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7548--><p class="noindent" > +</p><!--l. 7550--><p class="indent" > You can test the value of an attribute for a particular category using: +</p><!--l. 7552--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifcategoryattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30170"></a> <span +class="cmtt-10">\glsifcategoryattribute{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} {</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7554--><p class="noindent" > +This tests if the attribute (given by ⟨<span +class="cmti-10">attribute-label</span>⟩) for the category (given by +⟨<span +class="cmti-10">category-label</span>⟩) is set and equal to ⟨<span +class="cmti-10">value</span>⟩. If true, ⟨<span +class="cmti-10">true-part</span>⟩ is done. If the attribute +isn’t set or is set but isn’t equal to ⟨<span +class="cmti-10">value</span>⟩, ⟨<span +class="cmti-10">false part</span>⟩ is done. +</p><!--l. 7561--><p class="indent" > For example: + + + +</p> + <div class="verbatim" id="verbatim-179"> +\glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER} +</div> +<!--l. 7564--><p class="nopar" > This does “NO HYPER” if the <span +class="cmss-10">general</span><a + id="dx1-30171"></a> category has the <a +href="#catattr.nohyper"><span +class="cmss-10">nohyper</span></a><a + id="dx1-30172"></a> attribute set to +<span +class="cmtt-10">true </span>otherwise if does “HYPER”. +</p><!--l. 7569--><p class="indent" > With boolean-style attributes like <a +href="#catattr.nohyper"><span +class="cmss-10">nohyper</span></a><a + id="dx1-30173"></a>, make sure you always test for <span +class="cmtt-10">true</span> +not <span +class="cmtt-10">false </span>in case the attribute hasn’t been set. +</p><!--l. 7572--><p class="indent" > Again there’s a shortcut if you need to lookup the category label from a particular +entry: +</p><!--l. 7574--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30174"></a> <span +class="cmtt-10">\glsifattribute{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">} {</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7576--><p class="noindent" > +</p><!--l. 7578--><p class="indent" > There’s also a shortcut to determine if a particular category has the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30175"></a> +attribute set to “true”: +</p><!--l. 7580--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifregularcategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30176"></a> <span +class="cmtt-10">\glsifregularcategory{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7582--><p class="noindent" > +Alternatively, if you need to lookup the category for a particular entry: +</p><!--l. 7585--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifregular</span><span +class="cmtt-9"> </span></span><a + id="dx1-30177"></a> <span +class="cmtt-10">\glsifregular{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7587--><p class="noindent" > +Note that if the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30178"></a> attribute hasn’t be set, the above do ⟨<span +class="cmti-10">false-part</span>⟩. There +are also reverse commands that test if the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30179"></a> attribute has been set to +“false”: +</p><!--l. 7591--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifnotregularcategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30180"></a> <span +class="cmtt-10">\glsifnotregularcategory{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7593--><p class="noindent" > +or for a particular entry: +</p><!--l. 7595--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsifnotregular</span><span +class="cmtt-9"> </span></span><a + id="dx1-30181"></a> <span +class="cmtt-10">\glsifnotregular{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true-part</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false-part</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7597--><p class="noindent" > +Again, if the <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-30182"></a> attribute hasn’t been set, the above do ⟨<span +class="cmti-10">false-part</span>⟩, so these +reverse commands aren’t logically opposite in the strict sense. +</p><!--l. 7602--><p class="indent" > You can iterate through all entries with a given category using: +</p><!--l. 7604--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsforeachincategory[</span>⟨<span +class="cmitt-10">glossary-labels</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">} {</span>⟨<span +class="cmitt-10">glossary-cs</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label-cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">body</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7605--><p class="noindent" > +This iterates through all entries in the glossaries identified by the comma-separated +list ⟨<span +class="cmti-10">glossary-labels</span>⟩ that have the category given by ⟨<span +class="cmti-10">category-label</span>⟩ and performs ⟨<span +class="cmti-10">body</span>⟩ +for each match. Within ⟨<span +class="cmti-10">body</span>⟩, you can use ⟨<span +class="cmti-10">glossary-cs</span>⟩ and ⟨<span +class="cmti-10">label-cs</span>⟩ (which much be +control sequences) to access the current glossary and entry label. If ⟨<span +class="cmti-10">glossary-labels</span>⟩ is +omitted, all glossaries are assumed. + + + +</p><!--l. 7615--><p class="indent" > Similarly, you can iterate through all entries that have a category with a given +attribute using: +</p><!--l. 7617--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsforeachwithattribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-30183"></a> <span +class="cmtt-10">\glsforeachwithattribute[</span>⟨<span +class="cmitt-10">glossary-labels</span>⟩<span +class="cmtt-10">]</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">} {</span>⟨<span +class="cmitt-10">attribute-value</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">glossary-cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label-cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">body</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7619--><p class="noindent" > +This will do ⟨<span +class="cmti-10">body</span>⟩ for each entry that has a category with the attribute ⟨<span +class="cmti-10">attribute-label</span>⟩ +set to ⟨<span +class="cmti-10">attribute-value</span>⟩. The remaining arguments are as the previous command. +</p><!--l. 7624--><p class="indent" > You can change the category for a particular entry using the standard glossary +field changing commands, such as <span +class="cmtt-10">\glsfielddef</span><a + id="dx1-30184"></a>. Alternatively, you can +use +</p><!--l. 7627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetcategory</span><span +class="cmtt-9"> </span></span><a + id="dx1-30185"></a> <span +class="cmtt-10">\glsxtrsetcategory{</span>⟨<span +class="cmitt-10">entry-labels</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 7629--><p class="noindent" > +This will change the category to ⟨<span +class="cmti-10">category-label</span>⟩ for each entry listed in the +comma-separated list ⟨<span +class="cmti-10">entry-labels</span>⟩. This command uses <span +class="cmtt-10">\glsfieldxdef</span><a + id="dx1-30186"></a> so it will +expand ⟨<span +class="cmti-10">category-label</span>⟩ and make the change global. +</p><!--l. 7635--><p class="indent" > You can also change the category for all entries with a glossary or glossaries +using: +</p><!--l. 7637--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetcategoryforall</span><span +class="cmtt-9"> </span></span><a + id="dx1-30187"></a> <span +class="cmtt-10">\glsxtrsetcategoryforall{</span>⟨<span +class="cmitt-10">glossary-labels</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">category-label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7639--><p class="noindent" > +where ⟨<span +class="cmti-10">glossary-labels</span>⟩ is a comma-separated list of glossary labels. + + + +</p> +<!--l. 7643--><p class="indent" > </div> +</p><!--l. 7643--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">6. <a + id="sec:countref"></a>Counting References</h2> +</p><!--l. 7646--><p class="indent" > There are three basic ways of counting entry references: + </p><ol class="enumerate1" > + <li + class="enumerate" id="x1-31002x1">Counting the total number of times <span +class="cmtt-10">\glsunset </span>is used (<span +class="cmtt-10">\glsreset </span>resets + the count and is best avoided). This is provided by the base <span +class="cmss-10">glossaries</span> + package and is intended for documents where the term should be displayed + differently if it’s only been used a certain number of times. The information + has to be written to the <span +class="cmtt-10">.aux </span>file so that it’s available on the next + <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run. + <!--l. 7656--><p class="noindent" >This method is extended by <span +class="cmss-10">glossaries-extra </span>and is described in <a +href="#sec:entrycount"><span +class="cmsy-10">§</span>6.1 </a><a +href="#sec:entrycount">Entry + Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>. + </p></li> + <li + class="enumerate" id="x1-31004x2">Counting the total number of records. This method is only available with + <a + id="dx1-31005"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> and is intended for documents where the term should be displayed + differently if it’s only been recorded (indexed) a certain number of times. + See <a +href="#sec:recordcount"><span +class="cmsy-10">§</span>9.5 </a><a +href="#sec:recordcount">Record Counting<!--tex4ht:ref: sec:recordcount --></a> for further details. + </li> + <li + class="enumerate" id="x1-31007x3">Counting the number of times the <span +class="cmtt-10">\gls</span>-like or <span +class="cmtt-10">\glstext</span>-like + commands are used. (That is, those commands that internally use + <span +class="cmtt-10">\@gls@link</span>.) Unlike the other two methods, this just provides a + running total rather than the total from the previous <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run. + This method is intended to make it more convenient to work with + hooks like <span +class="cmtt-10">\glslinkcheckfirsthyperhook</span>, <span +class="cmtt-10">\glslinkpostsetkeys </span>or + <span +class="cmtt-10">\glslinkpresetkeys</span>. See <a +href="#sec:linkcount"><span +class="cmsy-10">§</span>6.2 </a><a +href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a> for further details.</li></ol> +<!--l. 7675--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.1 </span> <a + id="sec:entrycount"></a>Entry Counting (First Use Flag)</h3> +<!--l. 7678--><p class="noindent" >As mentioned in <a +href="#sec:entrycountmods"><span +class="cmsy-10">§</span>2.4 </a><a +href="#sec:entrycountmods">Entry Counting Modifications<!--tex4ht:ref: sec:entrycountmods --></a>, <span +class="cmss-10">glossaries-extra </span>modifies the +<span +class="cmtt-10">\glsenableentrycount</span><a + id="dx1-32001"></a> command to allow for the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32002"></a> attribute. This means +that you not only need to enable entry counting with <span +class="cmtt-10">\glsenableentrycount</span><a + id="dx1-32003"></a>, but +you also need to set the appropriate attribute (see <a +href="#sec:categories"><span +class="cmsy-10">§</span>5 </a><a +href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>). +</p><!--l. 7685--><p class="indent" > <div class="important" title="Important Note"> Remember that entry counting only counts the number of times an entry is used +by commands that change the <a + id="dx1-32004"></a><a +href="#glo:firstuseflag">first use flag</a>. (That is, all those commands +that mark the entry as having been used.) There are many commands that +don’t modify this flag and they won’t contribute to the entry use count. +</div> +</p><!--l. 7691--><p class="noindent" > +</p><!--l. 7693--><p class="indent" > With <span +class="cmss-10">glossaries-extra</span>, you may use <span +class="cmtt-10">\cgls</span><a + id="dx1-32005"></a> instead of <span +class="cmtt-10">\gls</span><a + id="dx1-32006"></a> even if you haven’t enabled +entry counting. You will only get a warning if you use <span +class="cmtt-10">\glsenableentrycount</span> +without setting the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32007"></a> attribute. (With <span +class="cmss-10">glossaries</span>, commands like <span +class="cmtt-10">\cgls</span><a + id="dx1-32008"></a> +will generate a warning if <span +class="cmtt-10">\glsenableentrycount </span>hasn’t been used.) The + + + +abbreviation shortcut <span +class="cmtt-10">\ab</span><a + id="dx1-32009"></a> uses <span +class="cmtt-10">\cgls </span>(see <a +href="#sec:abbrshortcuts"><span +class="cmsy-10">§</span>3.3 </a><a +href="#sec:abbrshortcuts">Shortcut Commands<!--tex4ht:ref: sec:abbrshortcuts --></a>). The +acronym shortcut <span +class="cmtt-10">\ac</span><a + id="dx1-32010"></a> uses <span +class="cmtt-10">\cgls </span>if it’s been defined with <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=ac</span><a + id="dx1-32011"></a> (or +<a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=all</span><a + id="dx1-32012"></a>) but uses <span +class="cmtt-10">\gls </span>if it’s been defined with <a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=acronyms</span><a + id="dx1-32013"></a> (or +<a +href="#styopt.shortcuts"><span +class="cmss-10">shortcuts</span></a><span +class="cmss-10">=acro</span><a + id="dx1-32014"></a>). +</p><!--l. 7706--><p class="indent" > All upper case versions (not provided by <span +class="cmss-10">glossaries</span>) are also available: +</p><!--l. 7708--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\cGLS</span><span +class="cmtt-9"> </span></span><a + id="dx1-32015"></a> <span +class="cmtt-10">\cGLS[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 7710--><p class="noindent" > +and +</p><!--l. 7712--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\cGLSpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-32016"></a> <span +class="cmtt-10">\cGLSpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 7714--><p class="noindent" > +These are analogous to <span +class="cmtt-10">\cgls </span>and <span +class="cmtt-10">\cglspl </span>but they use +</p><!--l. 7717--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\cGLSformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-32017"></a> <span +class="cmtt-10">\cGLSformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7719--><p class="noindent" > +and +</p><!--l. 7721--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\cGLSplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-32018"></a> <span +class="cmtt-10">\cGLSplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7723--><p class="noindent" > +which convert the analogous <span +class="cmtt-10">\cglsformat </span>and <span +class="cmtt-10">\cglsplformat </span>to upper +case. +</p><!--l. 7727--><p class="indent" > Just using <span +class="cmss-10">glossaries</span>: + + + +</p> + <div class="verbatim" id="verbatim-180"> +\documentclass{article} + <br />\usepackage{glossaries} + <br />\makeglossaries + <br />\glsenableentrycount + <br />\newacronym{html}{HTML}{hypertext markup language} + <br />\newacronym{xml}{XML}{extensible markup language} + <br />\begin{document} + <br />Used once: \cgls{html}. + <br />Used twice: \cgls{xml} and \cgls{xml}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 7749--><p class="nopar" > +</p><!--l. 7751--><p class="indent" > If you switch to <span +class="cmss-10">glossaries-extra </span>you must set the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32019"></a> attribute: + + + +</p> + <div class="verbatim" id="verbatim-181"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\makeglossaries + <br />\glsenableentrycount + <br />\glssetcategoryattribute{abbreviation}{entrycount}{1} + <br />\newabbreviation{html}{HTML}{hypertext markup language} + <br />\newabbreviation{xml}{XML}{extensible markup language} + <br />\begin{document} + <br />Used once: \cgls{html}. + <br />Used twice: \cgls{xml} and \cgls{xml}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 7776--><p class="nopar" > +</p><!--l. 7778--><p class="indent" > When activated with <span +class="cmtt-10">\glsenableentrycount</span>, commands such as <span +class="cmtt-10">\cgls</span><a + id="dx1-32020"></a> now +use +</p><!--l. 7780--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifcounttrigger</span><span +class="cmtt-9"> </span></span><a + id="dx1-32021"></a> <span +class="cmtt-10">\glsxtrifcounttrigger{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">trigger code</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">normal code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7783--><p class="noindent" > +to determine if the entry trips the entry count trigger. The ⟨<span +class="cmti-10">trigger code</span>⟩ uses +commands like <span +class="cmtt-10">\cglsformat </span>and unsets the <a + id="dx1-32022"></a><a +href="#glo:firstuseflag">first use flag</a>. The ⟨<span +class="cmti-10">normal code</span>⟩ is the +code that would ordinarily be performed by whatever the equivalent command is (for +example, <span +class="cmtt-10">\cgls </span>will use <span +class="cmtt-10">\cglsformat </span>in ⟨<span +class="cmti-10">trigger code</span>⟩ but the usual <span +class="cmtt-10">\gls </span>behaviour in +⟨<span +class="cmti-10">normal code</span>⟩). +</p><!--l. 7792--><p class="indent" > The default definition is: + + + +</p> + <div class="verbatim" id="verbatim-182"> +\newcommand*{\glsxtrifcounttrigger}[3]{% + <br /> \glshasattribute{#1}{entrycount}% + <br /> {% + <br />   \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax + <br />    #3% + <br />   \else + <br />    #2% + <br />   \fi + <br /> }% + <br /> {#3}% + <br />} +</div> +<!--l. 7805--><p class="nopar" > This means that if an entry is assigned to a category that has the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32023"></a> +attribute then the ⟨<span +class="cmti-10">trigger code</span>⟩ will be used if the previous count value (the number of +times the entry was used on the last run) is greater than the value of the +attribute. +</p><!--l. 7812--><p class="indent" > For example, to trigger normal use if the previous count value is greater than +four: + + + +</p> + <div class="verbatim" id="verbatim-183"> +\glssetcategoryattribute{abbreviation}{entrycount}{4} +</div> +<!--l. 7816--><p class="nopar" > +</p><!--l. 7818--><p class="indent" > There is a convenient command provided to enable entry counting, set the +<a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32024"></a> attribute and redefine <span +class="cmtt-10">\gls</span><a + id="dx1-32025"></a>, etc to use <span +class="cmtt-10">\cgls</span><a + id="dx1-32026"></a> etc: +</p><!--l. 7821--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableEntryCounting</span><span +class="cmtt-9"> </span></span><a + id="dx1-32027"></a> <span +class="cmtt-10">\GlsXtrEnableEntryCounting{</span>⟨<span +class="cmitt-10">categories</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7823--><p class="noindent" > +The first argument ⟨<span +class="cmti-10">categories</span>⟩ is a comma-separated list of categories. For each +category, the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32028"></a> attribute is set to ⟨<span +class="cmti-10">value</span>⟩. In addition, this does: + + + +</p> + <div class="verbatim" id="verbatim-184"> +\renewcommand*{\gls}{\cgls}% + <br />\renewcommand*{\Gls}{\cGls}% + <br />\renewcommand*{\glspl}{\cglspl}% + <br />\renewcommand*{\Glspl}{\cGlspl}% + <br />\renewcommand*{\GLS}{\cGLS}% + <br />\renewcommand*{\GLSpl}{\cGLSpl}% +</div> +<!--l. 7834--><p class="nopar" > This makes it easier to enable entry-counting on existing documents. +</p><!--l. 7838--><p class="indent" > If you use <span +class="cmtt-10">\GlsXtrEnableEntryCounting </span>more than once, subsequent uses will +just set the <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32029"></a> attribute for each listed category. +</p><!--l. 7842--><p class="indent" > The above example document can then become: + + + +</p> + <div class="verbatim" id="verbatim-185"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\makeglossaries + <br />\GlsXtrEnableEntryCounting{abbreviation}{1} + <br />\newabbreviation{html}{HTML}{hypertext markup language} + <br />\newabbreviation{xml}{XML}{extensible markup language} + <br />\begin{document} + <br />Used once: \gls{html}. + <br />Used twice: \gls{xml} and \gls{xml}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 7864--><p class="nopar" > +</p><!--l. 7866--><p class="indent" > The standard entry-counting function describe above counts the number of times +an entry has been marked as used throughout the document. (The reset commands +will reset the total back to zero.) If you prefer to count per sectional-unit, you can +use +</p><!--l. 7871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableEntryUnitCounting</span><span +class="cmtt-9"> </span></span><a + id="dx1-32030"></a> <span +class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">categories</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter-name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7873--><p class="noindent" > +where ⟨<span +class="cmti-10">categories</span>⟩ is a comma-separated list of categories to which this feature should +be applied, ⟨<span +class="cmti-10">value</span>⟩ is the trigger value and ⟨<span +class="cmti-10">counter-name</span>⟩ is the name of the counter +used by the sectional unit. +</p><!--l. 7879--><p class="indent" > <div class="important" title="Important Note"> Due to the asynchronous nature of <span class="TEX">T<span +class="E">E</span>X</span>’s output routine, discrepancies will +occur in page spanning paragraphs if you use the <span +class="cmss-10">page</span><a + id="dx1-32031"></a> counter. </div> +</p><!--l. 7883--><p class="noindent" > +</p><!--l. 7885--><p class="indent" > Note that you can’t use both the document-wide counting and the per-unit +counting in the same document. +</p><!--l. 7888--><p class="indent" > The counter value is used as part of a label, which means that <span +class="cmtt-10">\the</span>⟨<span +class="cmti-10">counter-name</span>⟩ +needs to be expandable. Since <span +class="cmss-10">hyperref</span><a + id="dx1-32032"></a> also has a similar requirement and provides +<span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter-name</span>⟩ as an expandable alternative, <span +class="cmss-10">glossaries-extra </span>will use +<span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter-name</span>⟩ if it exists otherwise it will use <span +class="cmtt-10">\the</span>⟨<span +class="cmti-10">counter-name</span>⟩. +</p><!--l. 7895--><p class="indent" > The per-unit counting function uses two attributes: <a +href="#catattr.entrycount"><span +class="cmss-10">entrycount</span></a><a + id="dx1-32033"></a> (as before) and + + + +<a +href="#catattr.unitcount"><span +class="cmss-10">unitcount</span></a><a + id="dx1-32034"></a> (the name of the counter). +</p><!--l. 7898--><p class="indent" > Both the original document-wide counting mechanism and the per-unit counting +mechanism provide a command that can be used to access the current count value for +this run: +</p><!--l. 7901--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsentrycurrcount</span><span +class="cmtt-9"> </span></span><a + id="dx1-32035"></a> <span +class="cmtt-10">\glsentrycurrcount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7903--><p class="noindent" > +and the final value from the previous run: +</p><!--l. 7905--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsentryprevcount</span><span +class="cmtt-9"> </span></span><a + id="dx1-32036"></a> <span +class="cmtt-10">\glsentryprevcount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7907--><p class="noindent" > +In the case of the per-unit counting, this is the final value <span +class="cmti-10">for the current unit</span>. In +both commands ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. +</p><!--l. 7912--><p class="indent" > The per-unit counting mechanism additionally provides: +</p><!--l. 7913--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsentryprevtotalcount</span><span +class="cmtt-9"> </span></span><a + id="dx1-32037"></a> <span +class="cmtt-10">\glsentryprevtotalcount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7915--><p class="noindent" > +which gives the sum of all the per-unit totals from the previous run for the entry +given by ⟨<span +class="cmti-10">label</span>⟩, and +</p><!--l. 7918--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsentryprevmaxcount</span><span +class="cmtt-9"> </span></span><a + id="dx1-32038"></a> <span +class="cmtt-10">\glsentryprevmaxcount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 7920--><p class="noindent" > +which gives the maximum per-unit total from the previous run. +</p><!--l. 7923--><p class="indent" > The above two commands are unavailable for the document-wide counting. +</p><!--l. 7925--><p class="indent" > Example of per-unit counting, where the unit is the chapter: + + + +</p> + <div class="verbatim" id="verbatim-186"> +\documentclass{report} + <br />\usepackage{glossaries-extra} + <br />\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter} + <br />\makeglossaries + <br />\newabbreviation{html}{HTML}{hypertext markup language} + <br />\newabbreviation{css}{CSS}{cascading style sheet} + <br />\newglossaryentry{sample}{name={sample},description={sample}} + <br />\begin{document} + <br />\chapter{Sample} + <br />Used once: \gls{html}. + <br />Used three times: \gls{css} and \gls{css} and \gls{css}. + <br />Used once: \gls{sample}. + <br />\chapter{Another Sample} + <br />Used once: \gls{css}. + <br />Used twice: \gls{html} and \gls{html}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 7956--><p class="nopar" > In this document, the <span +class="cmtt-10">css </span>entry is used three times in the first chapter. This is +more than the trigger value of 2, so <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{css}</span></span></span> is expanded on <a + id="dx1-32039"></a><a +href="#glo:firstuse">first use</a> +with the short form used on subsequent use, and the <span +class="cmtt-10">css </span>entries in that +chapter are added to the glossary. In the second chapter, the <span +class="cmtt-10">css </span>entry is +only used once, which trips the suppression trigger, so in that chapter, the +long form is used and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{css}</span></span></span> doesn’t get a line added to the glossary +file. +</p><!--l. 7967--><p class="indent" > The <span +class="cmtt-10">html </span>is used a total of three times, but the expansion and indexing +suppression trigger is tripped in both chapters because the per-unit total (1 for the +first chapter and 2 for the second chapter) is less than or equal to the trigger +value. +</p><!--l. 7973--><p class="indent" > The <span +class="cmtt-10">sample </span>entry has only been used once, but it doesn’t trip the indexing +suppression because it’s in the <span +class="cmss-10">general</span><a + id="dx1-32040"></a> category, which hasn’t been listed in +<span +class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span>. + + + +</p><!--l. 7978--><p class="indent" > The per-unit entry counting can be used for other purposes. In the following +example document the trigger value is set to zero, which means the index suppression +won’t be triggered, but the unit entry count is used to automatically suppress the +hyperlink for commands like <span +class="cmtt-10">\gls</span><a + id="dx1-32041"></a> by modifying the hook +</p><!--l. 7984--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glslinkcheckfirsthyperhook</span><span +class="cmtt-9"> </span></span><a + id="dx1-32042"></a> <span +class="cmtt-10">\glslinkcheckfirsthyperhook </span></div><hr> +</p><!--l. 7986--><p class="noindent" > +which is used at the end of the macro the determines whether or not to suppress the +hyperlink. + + + +</p> + <div class="verbatim" id="verbatim-187"> +\documentclass{article} + <br />\usepackage[colorlinks]{hyperref} + <br />\usepackage{glossaries-extra} + <br />\makeglossaries + <br />\GlsXtrEnableEntryUnitCounting{general}{0}{page} + <br />\newglossaryentry{sample}{name={sample},description={an example}} + <br />\renewcommand*{\glslinkcheckfirsthyperhook}{% + <br />  \ifnum\glsentrycurrcount\glslabel>0 + <br />   \setkeys{glslink}{hyper=false}% + <br />  \fi + <br />} + <br />\begin{document} + <br />A \gls{sample} entry. + <br />Next use: \gls{sample}. + <br />\newpage + <br />Next page: \gls{sample}. + <br />Again: \gls{sample}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 8021--><p class="nopar" > This only produces a hyperlink for the first instance of <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{sample}</span></span></span> on each +page. +</p><!--l. 8025--><p class="indent" > The earlier warning about using the <span +class="cmss-10">page</span><a + id="dx1-32043"></a> counter still applies. If the +first instance of <span +class="cmtt-10">\gls </span>occurs at the top of the page within a paragraph that +started on the previous page, then the count will continue from the previous +page. +</p><!--l. 8030--><p class="noindent" > +</p> +<!--l. 8030--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.2 </span> <a + id="sec:linkcount"></a>Link Counting</h3> +<!--l. 8033--><p class="noindent" >As from version 1.26, an alternative method of entry counting is to count the number + + + +of times the <span +class="cmtt-10">\gls</span>-like or <span +class="cmtt-10">\glstext</span>-like commands are used. (The “link” in this +method’s name refers to the use of the internal command <span +class="cmtt-10">\@gls@link </span>not to +<span +class="cmtt-10">\hyperlink </span>although <span +class="cmtt-10">\@gls@link </span>may use <span +class="cmtt-10">\hyperlink </span>when displaying the +<a + id="dx1-33001"></a><a +href="#glo:linktext">link-text</a>.) +</p><!--l. 8040--><p class="indent" > To enable link counting use the preamble-only command: +</p><!--l. 8041--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableLinkCounting</span><span +class="cmtt-9"> </span></span><a + id="dx1-33002"></a> <span +class="cmtt-10">\GlsXtrEnableLinkCounting[</span>⟨<span +class="cmitt-10">master counter</span>⟩<span +class="cmtt-10">]</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">categories</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8043--><p class="noindent" > +where ⟨<span +class="cmti-10">categories</span>⟩ is a list of category labels. The optional argument ⟨<span +class="cmti-10">master</span> +<span +class="cmti-10">counter</span>⟩ may be used to identify a master counter (which must be defined). If +present, the associated link counter will be reset when the master counter is +incremented. This command automatically sets the <a +href="#catattr.linkcount"><span +class="cmss-10">linkcount</span></a><a + id="dx1-33003"></a> attribute for the given +categories. If the optional argument is present, it also sets the <a +href="#catattr.linkcountmaster"><span +class="cmss-10">linkcountmaster</span></a><a + id="dx1-33004"></a> +attribute. +</p><!--l. 8052--><p class="indent" > When enabled, commands like <span +class="cmtt-10">\gls </span>and <span +class="cmtt-10">\glstext </span>increment the associated +counter using +</p><!--l. 8054--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrinclinkcounter</span><span +class="cmtt-9"> </span></span><a + id="dx1-33005"></a> <span +class="cmtt-10">\glsxtrinclinkcounter{</span>⟨<span +class="cmitt-10">counter name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8056--><p class="noindent" > +This just does <span +class="cmtt-10">\stepcounter{</span>⟨<span +class="cmitt-10">counter name</span>⟩<span +class="cmtt-10">} </span>by default but if you need +<span +class="cmtt-10">\refstepcounter </span>instead, just redefine this command: + + + +</p> + <div class="verbatim" id="verbatim-188"> +\renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}} +</div> +<!--l. 8062--><p class="nopar" > +</p><!--l. 8064--><p class="indent" > You can access the internal count register using +</p><!--l. 8065--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLinkCounterValue</span><span +class="cmtt-9"> </span></span><a + id="dx1-33006"></a> <span +class="cmtt-10">\GlsXtrLinkCounterValue{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8067--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. This will expand to 0 if the counter hasn’t been +defined. +</p><!--l. 8071--><p class="indent" > It’s also possible to access the display value (<span +class="cmtt-10">\the</span>⟨<span +class="cmti-10">counter</span>⟩) using +</p><!--l. 8073--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrTheLinkCounter</span><span +class="cmtt-9"> </span></span><a + id="dx1-33007"></a> <span +class="cmtt-10">\GlsXtrTheLinkCounter{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8075--><p class="noindent" > +(This will expand to 0 if the counter hasn’t been defined.) +</p><!--l. 8078--><p class="indent" > <div class="important" title="Important Note"> In order to conserve resources, the counter is only defined when it first +needs to be incremented so terms that have been defined but haven’t been +used in the document won’t have the associated count register allocated. +</div> +</p><!--l. 8083--><p class="noindent" > +</p><!--l. 8085--><p class="indent" > You can test if the counter has been defined using: +</p><!--l. 8086--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfLinkCounterDef</span><span +class="cmtt-9"> </span></span><a + id="dx1-33008"></a> <span +class="cmtt-10">\GlsXtrIfLinkCounterDef{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8088--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. +</p><!--l. 8091--><p class="indent" > The counter name can be obtained using +</p><!--l. 8092--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLinkCounterName</span><span +class="cmtt-9"> </span></span><a + id="dx1-33009"></a> <span +class="cmtt-10">\GlsXtrLinkCounterName{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8094--><p class="noindent" > +This simply expands to the counter name associated with the entry given by ⟨<span +class="cmti-10">label</span>⟩ +without any check for existence. For example, to change the display command +(<span +class="cmtt-10">\the</span>⟨<span +class="cmti-10">counter</span>⟩) using <span +class="cmss-10">etoolbox</span><a + id="dx1-33010"></a>: + + + +</p> + <div class="verbatim" id="verbatim-189"> +\csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}} +</div> +<!--l. 8101--><p class="nopar" > This is useful if you just want to change the display for specific entries but isn’t +convenient if you want to change the display for all entries. Instead, it’s simpler to +redefine <span +class="cmtt-10">\GlsXtrTheLinkCounter</span>. For example: + + + +</p> + <div class="verbatim" id="verbatim-190"> +\renewcommand*{\GlsXtrTheLinkCounter}[1]{% + <br /> \GlsXtrIfLinkCounterDef{#1}% + <br /> {\Roman{\GlsXtrLinkCounterName{#1}}}% + <br /> {0}% + <br />} +</div> +<!--l. 8112--><p class="nopar" > In both cases, the redefinition should be implemented after <span +class="cmtt-10">\GlsXtrEnableLinkCounting</span>. +</p><!--l. 8116--><p class="indent" > Here’s an example document that uses link counting to disable the hyperlink after +the first reference. This redefines <span +class="cmtt-10">\glslinkpresetkeys</span><a + id="dx1-33011"></a> (which is used by both <span +class="cmtt-10">\gls</span> +and <span +class="cmtt-10">\glstext</span>) instead of <span +class="cmtt-10">\glslinkcheckfirsthyperhook </span>(which is used by <span +class="cmtt-10">\gls</span> +but not by <span +class="cmtt-10">\glstext</span>). + + + +</p> + <div class="verbatim" id="verbatim-191"> +\documentclass{article} + <br />\usepackage[colorlinks]{hyperref} + <br />\usepackage{glossaries-extra} + <br />\makeglossaries + <br />\renewcommand*{\glslinkpresetkeys}{% + <br /> \ifnum\GlsXtrLinkCounterValue{\glslabel}>1 + <br />  \setkeys{glslink}{hyper=false}% + <br /> \fi + <br />} + <br />\GlsXtrEnableLinkCounting{general} + <br />\newglossaryentry{sample1}{name={sample1},description={an example}} + <br />\newglossaryentry{sample2}{name={sample2},description={another example}} + <br />\newabbreviation{ex}{ex}{example} + <br />\begin{document} + <br />\section{Sample Section} + <br />\Gls{sample1}, \gls{sample2} and \gls{ex}. + <br />\Glstext{sample1} and \gls{ex} again. + <br />\section{Another Sample Section} + <br />\Gls{sample1}, \gls{sample2} and \gls{ex}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 8158--><p class="nopar" > The use of <span +class="cmtt-10">\glslinkpresetkeys</span><a + id="dx1-33012"></a> means that the options can override this. For +example + + + +</p> + <div class="verbatim" id="verbatim-192"> +\gls[hyper=true]{sample1} +</div> +<!--l. 8163--><p class="nopar" > will override the <span +class="cmtt-10">hyper=false </span>setting in <span +class="cmtt-10">\glslinkpresetkeys</span><a + id="dx1-33013"></a>. If <span +class="cmtt-10">\glslinkpostsetkeys</span><a + id="dx1-33014"></a> +is used instead, the <span +class="cmtt-10">hyper=false </span>setting will override the setting provided in the +optional argument. +</p><!--l. 8169--><p class="indent" > The <span +class="cmss-10">abbreviation</span><a + id="dx1-33015"></a> category doesn’t have the <a +href="#catattr.linkcount"><span +class="cmss-10">linkcount</span></a><a + id="dx1-33016"></a> attribute set (since it’s not +listed in the argument of <span +class="cmtt-10">\GlsXtrEnableLinkCounting</span>). This means that +<span +class="cmtt-10">\GlsXtrLinkCounterValue </span>always expands to 0 for the abbreviation (<span +class="cmtt-10">ex</span>), so the +inequality test + + + +</p> + <div class="verbatim" id="verbatim-193"> +\ifnum\GlsXtrLinkCounterValue{\glslabel}>1 +</div> +<!--l. 8177--><p class="nopar" > will always be false. This means that the abbreviation won’t have <span +class="cmtt-10">hyper=false</span> +applied. If the test is changed to + + + +</p> + <div class="verbatim" id="verbatim-194"> +\ifnum\GlsXtrLinkCounterValue{\glslabel}=1 + <br />\else + <br /> \setkeys{glslink}{hyper=false}% + <br />\fi +</div> +<!--l. 8185--><p class="nopar" > Then the abbreviation will always have <span +class="cmtt-10">hyper=false </span>applied. +</p><!--l. 8189--><p class="indent" > To reset the counter every section use the optional argument to set the master +counter: + + + +</p> + <div class="verbatim" id="verbatim-195"> +\GlsXtrEnableLinkCounting[section]{general} +</div> +<!--l. 8193--><p class="nopar" > + + + +</p> +<!--l. 8195--><p class="indent" > </div> +</p><!--l. 8195--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">7. <a + id="sec:autoindex"></a>Auto-Indexing</h2> +</p><!--l. 8198--><p class="indent" > It’s possible that you may also want a normal index as well as the glossary, +and you may want entries to automatically be added to the index (as in +this document). There are two attributes that govern this: <a +href="#catattr.indexname"><span +class="cmss-10">indexname</span></a><a + id="dx1-34001"></a> and +<a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-34002"></a>. +</p><!--l. 8204--><p class="indent" > <div class="important" title="Important Note"> The auto-indexing is designed for <a + id="dx1-34003"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> syntax. If you’ve used the <a +href="#styopt.xindy"><span +class="cmss-10">xindy</span></a><a + id="dx1-34004"></a> +package option, the automatic escaping of <a + id="dx1-34005"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> special characters in the <span +class="cmss-10">sort</span><a + id="dx1-34006"></a> field +may result in an incorrect sort value for the <span +class="cmtt-10">\index </span>command used by the +auto-indexing. Note also that <span +class="cmtt-10">texindy</span><a + id="dx1-34007"></a> has a fixed set of special characters +(corresponding to <a + id="dx1-34008"></a><span +class="cmtt-10">makeindex</span>’s defaults) that can’t be customized. You may want +to consider using <a + id="dx1-34009"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> and its dual entries as an alternative approach. +</div> +</p><!--l. 8213--><p class="noindent" > +</p><!--l. 8216--><p class="indent" > The <span +class="cmtt-10">\glsxtrpostnamehook</span><a + id="dx1-34010"></a> macro, used at the end of <span +class="cmtt-10">\glossentryname</span><a + id="dx1-34011"></a> and +<span +class="cmtt-10">\Glossentryname</span><a + id="dx1-34012"></a>, checks the <a +href="#catattr.indexname"><span +class="cmss-10">indexname</span></a><a + id="dx1-34013"></a> attribute for the category associated with +that entry. Since <span +class="cmtt-10">\glossentryname </span>is used in the default glossary styles, this +makes a convenient way of automatically indexing each entry name at its +location in the glossary without fiddling around with the value of the <span +class="cmss-10">name</span><a + id="dx1-34014"></a> +key. +</p><!--l. 8226--><p class="indent" > The internal macro used by the <span +class="cmss-10">glossaries </span>package to write the information to the +external glossary file is modified to check for the <a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-34015"></a> attribute. +</p><!--l. 8230--><p class="indent" > In both cases, the indexing is done through +</p><!--l. 8231--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdoautoindexname</span><span +class="cmtt-9"> </span></span><a + id="dx1-34016"></a> <span +class="cmtt-10">\glsxtrdoautoindexname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">attribute-label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8233--><p class="noindent" > +This uses the standard <span +class="cmtt-10">\index</span><a + id="dx1-34017"></a> command with the sort value taken from the entry’s +<span +class="cmss-10">sort</span><a + id="dx1-34018"></a> key and the actual value set to <span +class="cmtt-10">\glsentryname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. As from v1.16, there are +user-level commands available to change the sort and actual value used by the +automated index. +</p><!--l. 8240--><p class="indent" > The actual value is given by +</p><!--l. 8241--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrautoindexentry</span><span +class="cmtt-9"> </span></span><a + id="dx1-34019"></a> <span +class="cmtt-10">\glsxtrautoindexentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8243--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. The default definition is: + + + +</p> + <div class="verbatim" id="verbatim-196"> +\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}} +</div> +<!--l. 8248--><p class="nopar" > Note the use of <span +class="cmtt-10">\string </span>to prevent <span +class="cmtt-10">\glsentryname </span>from being expanded as it’s +written to the index file. +</p><!--l. 8252--><p class="indent" > The sort value is assigned using: +</p><!--l. 8253--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrautoindexassignsort</span><span +class="cmtt-9"> </span></span><a + id="dx1-34020"></a> <span +class="cmtt-10">\glsxtrautoindexassignsort{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8255--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry label and ⟨<span +class="cmti-10">cs</span>⟩ is the command which needs to be set to the +sort value. The default definition is: + + + +</p> + <div class="verbatim" id="verbatim-197"> +\newcommand*{\glsxtrautoindexassignsort}[2]{% + <br />  \glsletentryfield{#1}{#2}{sort}% + <br />} +</div> +<!--l. 8262--><p class="nopar" > After this macro is called, ⟨<span +class="cmti-10">cs</span>⟩ is then processed to escape any of <span +class="cmtt-10">makeindex</span><a + id="dx1-34021"></a>’s special +characters. Note that this escaping is only performed on the sort not on the actual +value. The escaping of the sort value is performed by +</p><!--l. 8267--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrautoindexesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-34022"></a> <span +class="cmtt-10">\glsxtrautoindexesc </span></div><hr> +</p><!--l. 8269--><p class="noindent" > +You can redefine this to do nothing if you want to omit the escaping. You may want +to consider providing another field to obtain the appropriate sort value if the one +provided in the <span +class="cmss-10">sort</span><a + id="dx1-34023"></a> field isn’t suitable (because it may already have had special +characters escaped or it may be a numeric value in the case of sort by use or +definition). +</p><!--l. 8277--><p class="indent" > The command used to perform the actual indexing is: +</p><!--l. 8278--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrautoindex</span><span +class="cmtt-9"> </span></span><a + id="dx1-34024"></a> <span +class="cmtt-10">\glsxtrautoindex{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8280--><p class="noindent" > +This just does <span +class="cmtt-10">\index{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>by default. +</p><!--l. 8283--><p class="indent" > <div class="important" title="Important Note"> The entry’s <span +class="cmss-10">parent</span><a + id="dx1-34025"></a> field isn’t referenced in this automated indexing. +</div> +</p><!--l. 8286--><p class="noindent" > +</p><!--l. 8288--><p class="indent" > For example, to index the value of the <span +class="cmss-10">first</span><a + id="dx1-34026"></a> key, instead of the <span +class="cmss-10">name</span><a + id="dx1-34027"></a> key: + + + +</p> + <div class="verbatim" id="verbatim-198"> +\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}} +</div> +<!--l. 8292--><p class="nopar" > and if the sort value also needs to be set to the <span +class="cmss-10">long</span><a + id="dx1-34028"></a> field, if present, otherwise the +<span +class="cmss-10">sort</span><a + id="dx1-34029"></a> field: + + + +</p> + <div class="verbatim" id="verbatim-199"> +\renewcommand*{\glsxtrautoindexassignsort}[2]{% + <br />  \ifglshaslong{#2}% + <br />  {\glsletentryfield{#1}{#2}{long}}% + <br />  {\glsletentryfield{#1}{#2}{sort}}% + <br />} +</div> +<!--l. 8301--><p class="nopar" > +</p><!--l. 8303--><p class="indent" > If the value of the attribute given by ⟨<span +class="cmti-10">attribute-label</span>⟩ is “true”, no encap will be +added, otherwise the encap will be the attribute value. For example: + + + +</p> + <div class="verbatim" id="verbatim-200"> +\glssetcategoryattribute{general}{indexname}{textbf} +</div> +<!--l. 8309--><p class="nopar" > will set the encap to <span +class="cmtt-10">textbf </span>which will display the relevant page number in bold +whereas + + + +</p> + <div class="verbatim" id="verbatim-201"> +\glssetcategoryattribute{general}{dualindex}{true} +</div> +<!--l. 8314--><p class="nopar" > won’t apply any formatting to the page number in the index. +</p><!--l. 8317--><p class="indent" > <div class="important" title="Important Note"> The location used in the index will always be the page number not the counter +used in the glossary. (Unless some other loaded package has modified the definition of +<span +class="cmtt-10">\index </span>to use some thing else.) </div> +</p><!--l. 8322--><p class="noindent" > +</p><!--l. 8324--><p class="indent" > By default the <span +class="cmss-10">format</span><a + id="dx1-34030"></a> key won’t be used with the <a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-34031"></a> attribute. You can +allow the <span +class="cmss-10">format</span><a + id="dx1-34032"></a> key to override the attribute value by using the preamble-only +command: +</p><!--l. 8328--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableIndexFormatOverride</span><span +class="cmtt-9"> </span></span><a + id="dx1-34033"></a> <span +class="cmtt-10">\GlsXtrEnableIndexFormatOverride</span> +</div><hr> +</p><!--l. 8330--><p class="noindent" > +If you use this command and <span +class="cmss-10">hyperref</span><a + id="dx1-34034"></a> has been loaded, then the <span +class="cmss-10">theindex</span><a + id="dx1-34035"></a><a + id="dx1-34036"></a> +environment will be modified to redefine <span +class="cmtt-10">\glshypernumber</span><a + id="dx1-34037"></a> to allow formats that use +that command. +</p><!--l. 8335--><p class="indent" > <div class="important" title="Important Note"> The <a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-34038"></a> attribute will still be used on subsequent use even if the +<a +href="#catattr.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-34039"></a> attribute (or <a +href="#styopt.indexonlyfirst"><span +class="cmss-10">indexonlyfirst</span></a><a + id="dx1-34040"></a> package option) is set. However, the <a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-34041"></a> +attribute will honour the <span +class="cmss-10">noindex</span><a + id="dx1-34042"></a> key. </div> +</p><!--l. 8341--><p class="noindent" > +</p><!--l. 8343--><p class="indent" > The <span +class="cmtt-10">\glsxtrdoautoindexname </span>command will attempt to escape any of +<span +class="cmtt-10">\makeindex</span><a + id="dx1-34043"></a>’s special characters, but there may be special cases where it fails, so take +care. This assumes the default <a + id="dx1-34044"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> actual, level, quote and encap values +(unless any of the commands <span +class="cmtt-10">\actualchar</span><a + id="dx1-34045"></a>, <span +class="cmtt-10">\levelchar</span><a + id="dx1-34046"></a>, <span +class="cmtt-10">\quotechar</span><a + id="dx1-34047"></a> or <span +class="cmtt-10">\encapchar</span><a + id="dx1-34048"></a> +have been defined before <span +class="cmss-10">glossaries-extra </span>is loaded). +</p><!--l. 8351--><p class="indent" > If this isn’t the case, you can use the following preamble-only commands to set +the correct characters. +</p><!--l. 8353--><p class="indent" > <div class="important" title="Important Note"> Be very careful of possible shifting category codes! </div> +</p><!--l. 8355--><p class="noindent" > +</p><!--l. 8357--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetActualChar</span><span +class="cmtt-9"> </span></span><a + id="dx1-34049"></a> <span +class="cmtt-10">\GlsXtrSetActualChar{</span>⟨<span +class="cmitt-10">char</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8359--><p class="noindent" > +Set the actual character to ⟨<span +class="cmti-10">char</span>⟩. +</p><!--l. 8362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetLevelChar</span><span +class="cmtt-9"> </span></span><a + id="dx1-34050"></a> <span +class="cmtt-10">\GlsXtrSetLevelChar{</span>⟨<span +class="cmitt-10">char</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8364--><p class="noindent" > +Set the level character to ⟨<span +class="cmti-10">char</span>⟩. +</p><!--l. 8367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetEscChar</span><span +class="cmtt-9"> </span></span><a + id="dx1-34051"></a> <span +class="cmtt-10">\GlsXtrSetEscChar{</span>⟨<span +class="cmitt-10">char</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8369--><p class="noindent" > +Set the escape (quote) character to ⟨<span +class="cmti-10">char</span>⟩. +</p><!--l. 8372--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetEncapChar</span><span +class="cmtt-9"> </span></span><a + id="dx1-34052"></a> <span +class="cmtt-10">\GlsXtrSetEncapChar{</span>⟨<span +class="cmitt-10">char</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 8374--><p class="noindent" > +Set the encap character to ⟨<span +class="cmti-10">char</span>⟩. + + + +</p> +<!--l. 8377--><p class="indent" > </div> +</p><!--l. 8377--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">8. <a + id="sec:onthefly"></a>On-the-Fly Document Definitions</h2> +</p><!--l. 8380--><p class="indent" > <div class="important" title="Important Note"> The commands described here may superficially look like ⟨<span +class="cmti-10">word</span>⟩<span +class="cmtt-10">\index{</span>⟨<span +class="cmti-10">word</span>⟩<span +class="cmtt-10">}</span>, +but they behave rather differently. If you want to use <span +class="cmtt-10">\index </span>then just use <span +class="cmtt-10">\index</span>. +</div> +</p><!--l. 8385--><p class="noindent" > +</p><!--l. 8387--><p class="indent" > The <span +class="cmss-10">glossaries </span>package advises against defining entries in the <span +class="cmss-10">document</span><a + id="dx1-35001"></a><a + id="dx1-35002"></a> +environment. As mentioned in <a +href="#sec:pkgopts"><span +class="cmsy-10">§</span>1.2 </a><a +href="#sec:pkgopts">New or Modified Package Options<!--tex4ht:ref: sec:pkgopts --></a> above, this +ability is disabled by default with <span +class="cmss-10">glossaries-extra </span>but can be enabled using the +<a +href="#styopt.docdefs"><span +class="cmss-10">docdefs</span></a><a + id="dx1-35003"></a> package options. +</p><!--l. 8393--><p class="indent" > Although this can be problematic, the <span +class="cmss-10">glossaries-extra </span>package provides a way of +defining and using entries within the <span +class="cmss-10">document</span><a + id="dx1-35004"></a><a + id="dx1-35005"></a> environment without the tricks used +with the <a +href="#styopt.docdefs"><span +class="cmss-10">docdefs</span></a><a + id="dx1-35006"></a> option. <span +class="cmti-10">There are limitations with this approach, so take care with it.</span> +This function is disabled by default, but can be enabled using the preamble-only +command: +</p><!--l. 8399--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrEnableOnTheFly</span><span +class="cmtt-9"> </span></span><a + id="dx1-35007"></a> <span +class="cmtt-10">\GlsXtrEnableOnTheFly </span></div><hr> +</p><!--l. 8401--><p class="noindent" > +When used, this defines the commands described below. +</p><!--l. 8404--><p class="indent" > <div class="important" title="Important Note"> The commands <span +class="cmtt-10">\glsxtr</span>, <span +class="cmtt-10">\glsxtrpl</span>, <span +class="cmtt-10">\Glsxtr </span>and <span +class="cmtt-10">\Glsxtrpl </span>can’t be used after +the glossaries have been displayed (through <span +class="cmtt-10">\printglossary</span><a + id="dx1-35008"></a> etc). It’s best not to +mix these commands with the standard glossary commands, such as <span +class="cmtt-10">\gls </span>or there +may be unexpected results. </div> +</p><!--l. 8410--><p class="noindent" > +</p><!--l. 8412--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtr</span><span +class="cmtt-9"> </span></span><a + id="dx1-35009"></a> <span +class="cmtt-10">\glsxtr[</span>⟨<span +class="cmitt-10">gls-options</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8414--><p class="noindent" > +If an entry with the label ⟨<span +class="cmti-10">label</span>⟩ has already been defined, this just does <span +class="cmtt-10">\gls</span> +<span +class="cmtt-10">[</span>⟨<span +class="cmti-10">gls-options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. If ⟨<span +class="cmti-10">label</span>⟩ hasn’t been defined, this will define the entry using: +</p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\newglossaryentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">name={</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">},</span> +<br /><span +class="cmtt-10"> category=\glsxtrcat,</span> +<br /><span +class="cmtt-10"> description=</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\nopostdesc</span><span +class="cmsy-10">}</span><span +class="cmtt-10">,</span> +<br /><span +class="cmtt-10"> </span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmsy-10">}</span> +</div> +</div> +<!--l. 8426--><p class="indent" > <div class="important" title="Important Note"> The ⟨<span +class="cmti-10">label</span>⟩ 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 ⟨<span +class="cmti-10">label</span>⟩ and placed in the <span +class="cmss-10">name</span><a + id="dx1-35010"></a> key must be provided in the optional +argument ⟨<span +class="cmti-10">dfn-options</span>⟩. </div> +</p><!--l. 8432--><p class="noindent" > + + + +</p><!--l. 8434--><p class="indent" > The second optional argument ⟨<span +class="cmti-10">dfn-options</span>⟩ 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 +</p><!--l. 8437--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrWarning</span><span +class="cmtt-9"> </span></span><a + id="dx1-35011"></a> <span +class="cmtt-10">\GlsXtrWarning{</span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8439--><p class="noindent" > +</p><!--l. 8441--><p class="indent" > For example, this warning will be generated on the second instance of <span +class="cmtt-10">\glsxtr</span> +below: + + + +</p> + <div class="verbatim" id="verbatim-202"> +\glsxtr[][plural=geese]{goose} + <br /> ... later + <br />\glsxtr[][plural=geese]{goose} +</div> +<!--l. 8447--><p class="nopar" > +</p><!--l. 8449--><p class="indent" > If you are considering doing something like: + + + +</p> + <div class="verbatim" id="verbatim-203"> +\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} + <br />\renewcommand*{\GlsXtrWarning}[2]{} + <br /> ... later + <br />\goose\ some more text here +</div> +<!--l. 8455--><p class="nopar" > then don’t bother. It’s simpler and less problematic to just define the entries in the +preamble with <span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-35012"></a> and then use <span +class="cmtt-10">\gls </span>in the document. +</p><!--l. 8460--><p class="indent" > There are plural and case-changing alternatives to <span +class="cmtt-10">\glsxtr</span>: +</p><!--l. 8461--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-35013"></a> <span +class="cmtt-10">\glsxtrpl[</span>⟨<span +class="cmitt-10">gls-options</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8463--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtr </span>but uses <span +class="cmtt-10">\glspl </span>instead of <span +class="cmtt-10">\gls</span>. +</p><!--l. 8466--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtr</span><span +class="cmtt-9"> </span></span><a + id="dx1-35014"></a> <span +class="cmtt-10">\Glsxtr[</span>⟨<span +class="cmitt-10">gls-options</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8468--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtr </span>but uses <span +class="cmtt-10">\Gls </span>instead of <span +class="cmtt-10">\gls</span>. +</p><!--l. 8471--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-35015"></a> <span +class="cmtt-10">\Glsxtrpl[</span>⟨<span +class="cmitt-10">gls-options</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">dfn-options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8473--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtr </span>but uses <span +class="cmtt-10">\Glspl </span>instead of <span +class="cmtt-10">\gls</span>. +</p><!--l. 8476--><p class="indent" > If you use UTF-8 and don’t want the inconvenient of needing to use an +ASCII-only label, then it’s better to use <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">Ǝ</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span> or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> instead of +<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> (or pdf<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>). If you really desperately want to use UTF-8 entry labels +without switching to <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">Ǝ</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span> or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span> then there is a starred version of +<span +class="cmtt-10">\GlsXtrEnableOnTheFly </span>that allows you to use UTF-8 characters in ⟨<span +class="cmti-10">label</span>⟩, but it’s +experimental and may not work in some cases. +</p><!--l. 8485--><p class="indent" > <div class="important" title="Important Note"> If you use the starred version of <span +class="cmtt-10">\GlsXtrEnableOnTheFly </span>don’t use any +commands in the ⟨<span +class="cmti-10">label</span>⟩, even if they expand to just text. </div> +</p><!--l. 8489--><p class="noindent" > + + + +</p> +<!--l. 8491--><p class="indent" > </div> +</p><!--l. 8491--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">9. <a + id="sec:bib2gls"></a><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases</h2> +</p><!--l. 8494--><p class="indent" > There is a new command line application called <a + id="dx1-36001"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, which works in much +the same way as a combination of <span +class="cmtt-10">bibtex </span>and <span +class="cmtt-10">makeindex</span>/<span +class="cmtt-10">xindy</span>. Instead of +storing all your entry definitions in a <span +class="cmtt-10">.tex </span>and loading them using <span +class="cmtt-10">\input </span>or +<span +class="cmtt-10">\loadglsentries</span>, the entries can instead be stored in a <span +class="cmtt-10">.bib </span>file and <a + id="dx1-36002"></a><span +class="cmtt-10">bib2gls </span>can +selectively write the appropriate commands to a <span +class="cmtt-10">.glstex </span>file which is loaded using +<span +class="cmtt-10">\glsxtrresourcefile </span>(or <span +class="cmtt-10">\GlsXtrLoadResources</span>). +</p><!--l. 8505--><p class="indent" > This means that you can use a reference managing system, such as JabRef, to +maintain the database and it reduces the <span class="TEX">T<span +class="E">E</span>X</span> overhead by only defining the entries +that are actually required in the document. If you currently have a <span +class="cmtt-10">.tex </span>file that +contains hundreds of definitions, but you only use a dozen or so in your +document, then the build time is needlessly slowed by the unrequired definitions +that occur when the file is input. (You can convert an existing <span +class="cmtt-10">.tex </span>file +containing glossary definitions to a <span +class="cmtt-10">.bib </span>file using <span +class="cmtt-10">convertgls2bib</span><a + id="dx1-36003"></a>, supplied with +<a + id="dx1-36004"></a><span +class="cmtt-10">bib2gls</span>.) +</p><!--l. 8516--><p class="indent" > There are some new commands and options added to <span +class="cmss-10">glossaries-extra </span>to help assist +the integration of <a + id="dx1-36005"></a><span +class="cmtt-10">bib2gls </span>into the document build process. +</p><!--l. 8520--><p class="indent" > This chapter just provides a general overview of <a + id="dx1-36006"></a><span +class="cmtt-10">bib2gls</span>. The full details and +some sample documents are provided in the <a + id="dx1-36007"></a><span +class="cmtt-10">bib2gls </span><a +href="http://mirrors.ctan.org/support/bib2gls/bib2gls.pdf" >manual</a>. +</p><!--l. 8524--><p class="indent" > An example of the contents of <span +class="cmtt-10">.bib </span>file that stores glossary entries that can be +extracted with <a + id="dx1-36008"></a><span +class="cmtt-10">bib2gls</span>: + + + +</p> + <div class="verbatim" id="verbatim-204"> +@entry{bird, + <br />  name={bird}, + <br />  description = {feathered animal}, + <br />  see={[see also]{duck,goose}} + <br />} + <br />@entry{duck, + <br />  name={duck}, + <br />  description = {a waterbird with short legs} + <br />} + <br />@entry{goose, + <br />  name="goose", + <br />  plural="geese", + <br />  description={a waterbird with a long neck} + <br />} +</div> +<!--l. 8543--><p class="nopar" > +</p><!--l. 8545--><p class="indent" > The follow provides some abbreviations: + + + +</p> + <div class="verbatim" id="verbatim-205"> +@string{ssi={server-side includes}} + <br />@string{html={hypertext markup language}} + <br />@abbreviation{shtml, + <br />  short="shtml", + <br />  long= ssi # " enabled " # html, + <br />  description={a combination of \gls{html} and \gls{ssi}} + <br />} + <br />@abbreviation{html, + <br />  short ="html", + <br />  long  = html, + <br />  description={a markup language for creating web pages} + <br />} + <br />@abbreviation{ssi, + <br />  short="ssi", + <br />  long = ssi, + <br />  description={a simple interpreted server-side scripting language} + <br />} +</div> +<!--l. 8567--><p class="nopar" > +</p><!--l. 8569--><p class="indent" > Here are some symbols: + + + +</p> + <div class="verbatim" id="verbatim-206"> +preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"} + <br />@symbol{M, + <br />  name={$\mtx{M}$}, + <br />  text={\mtx{M}}, + <br />  description={a matrix} + <br />} + <br />@symbol{v, + <br />  name={$\vec{v}$}, + <br />  text={\vec{v}}, + <br />  description={a vector} + <br />} + <br />@symbol{S, + <br />  name={$\mathcal{S}$}, + <br />  text={\mathcal{S}}, + <br />  description={a set} + <br />} +</div> +<!--l. 8590--><p class="nopar" > +</p><!--l. 8592--><p class="indent" > To ensure that <a + id="dx1-36009"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> can find out which entries have been used in the +document, you need the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-36010"></a> package option: + + + +</p> + <div class="verbatim" id="verbatim-207"> +\usepackage[record]{glossaries-extra} +</div> +<!--l. 8596--><p class="nopar" > If this option’s value is omitted (as above), the normal indexing will be switched off, +since <a + id="dx1-36011"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> can also sort the entries and collate the locations. +</p><!--l. 8601--><p class="indent" > If you still want to use an indexing application (for example, you need a custom +<a + id="dx1-36012"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> rule), then just use <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-36013"></a> and continue to use <span +class="cmtt-10">\makeglossaries</span> +and <span +class="cmtt-10">\printglossary </span>(or <span +class="cmtt-10">\printglossaries</span>), but you also need to instruct +<a + id="dx1-36014"></a><span +class="cmtt-10">bib2gls </span>to omit sorting to save time and to prevent the <span +class="cmss-10">sort</span><a + id="dx1-36015"></a> key from being +set. +</p><!--l. 8608--><p class="indent" > The <span +class="cmtt-10">.glstex </span>file created by <a + id="dx1-36016"></a><span +class="cmtt-10">bib2gls </span>is loaded using: +</p><!--l. 8609--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrresourcefile</span><span +class="cmtt-9"> </span></span><a + id="dx1-36017"></a> <span +class="cmtt-10">\glsxtrresourcefile[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">filename</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8611--><p class="noindent" > +(Don’t include the file extension in ⟨<span +class="cmti-10">filename</span>⟩.) There’s a shortcut version +(recommended over the above) that sets ⟨<span +class="cmti-10">filename</span>⟩ to use <span +class="cmtt-10">\jobname</span>: +</p><!--l. 8614--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLoadResources</span><span +class="cmtt-9"> </span></span><a + id="dx1-36018"></a> <span +class="cmtt-10">\GlsXtrLoadResources[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 8616--><p class="noindent" > +On the first use, this command is a shortcut for </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsxtrresourcefile[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\jobname</span><span +class="cmsy-10">}</span> +</div> +</div> On subsequent use,<span class="footnote-mark"><a +href="#fn1x9" id="fn1x9-bk"><sup class="textsuperscript">9.1</sup></a></span><a + id="x1-36019f1"></a> this +command is a shortcut for <div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsxtrresourcefile[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\jobname-</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmsy-10">}</span> +</div> +</div> where ⟨<span +class="cmti-10">n</span>⟩ is the current value of +<!--l. 8628--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsxtrresourcecount </span></div><hr> +</p><!--l. 8629--><p class="noindent" > +which is incremented at the end of <span +class="cmtt-10">\GlsXtrLoadResources</span>. Any advisory notes +regarding <span +class="cmtt-10">\glsxtrresourcefile </span>also apply to <span +class="cmtt-10">\GlsXtrLoadResources</span>. +</p><!--l. 8634--><p class="indent" > The <span +class="cmtt-10">\glsxtrresourcefile </span>command writes the line </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsxtr@resource{</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">filename</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> to the <span +class="cmtt-10">.aux </span>file and will input ⟨<span +class="cmti-10">filename</span>⟩<span +class="cmtt-10">.glstex </span>if it +exists.<span class="footnote-mark"><a +href="#fn2x9" id="fn2x9-bk"><sup class="textsuperscript">9.2</sup></a></span><a + id="x1-36020f2"></a> + + + +<!--l. 8644--><p class="indent" > Since the <span +class="cmtt-10">.glstex </span>file won’t exist on the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run, the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-36021"></a> package +option additionally switches on <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-36022"></a>. Any use of commands like <span +class="cmtt-10">\gls </span>or +<span +class="cmtt-10">\glstext </span>will produce ?? in the document, since the entries are undefined at this +point. Once <a + id="dx1-36023"></a><span +class="cmtt-10">bib2gls </span>has created the <span +class="cmtt-10">.glstex </span>file the references should be resolved. +This may cause a shift in the locations if the actual text produced once the entry is +defined is significantly larger than the placeholder ?? (as this can alter the page +breaking). +</p><!--l. 8654--><p class="indent" > Note that as from v1.12, <span +class="cmtt-10">\glsxtrresourcefile </span>temporarily switches the +category code of <span +class="cmtt-10">@ </span>to 11 (letter) while it reads the file to allow for any internal +commands stored in the location field. +</p> +<!--l. 8659--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.1 </span> <a + id="selection"></a>Selection</h3> +<!--l. 8661--><p class="noindent" >The default behaviour is for <a + id="dx1-37001"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> to select all entries that have a record in the +<span +class="cmtt-10">.aux </span>file, and any dependent entries (including parent and cross-references). The +<span +class="cmtt-10">glsignore </span>format (for example, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[format=glsignore]{duck}</span></span></span>) is recognised by +<a + id="dx1-37002"></a><span +class="cmtt-10">bib2gls </span>as a special ignored record. This means that it will match the selection +criteria but the record won’t be added to the location list. This means that you won’t +get spurious commas in the location list (as can happen with the other indexing +methods), so you can do, for example, + + + +</p> + <div class="verbatim" id="verbatim-208"> +\GlsXtrSetDefaultNumberFormat{glsignore} +</div> +<!--l. 8673--><p class="nopar" > at the start of the front matter and + + + +</p> + <div class="verbatim" id="verbatim-209"> +\GlsXtrSetDefaultNumberFormat{glsnumberformat} +</div> +<!--l. 8677--><p class="nopar" > at the start of the main matter to prevent any records in the front matter from +occurring in the location lists. +</p><!--l. 8681--><p class="indent" > <div class="important" title="Important Note"> Note that commands like <span +class="cmtt-10">\glsaddall </span>and <span +class="cmtt-10">\glsaddallunused </span>don’t +work with <a + id="dx1-37003"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> as the command has to iterate over the internal lists of +defined entry labels, which will be empty on the first run and on subsequent +runs will only contain those entries that have been selected by <a + id="dx1-37004"></a><span +class="cmtt-10">bib2gls</span>. +</div> +</p><!--l. 8686--><p class="noindent" > +</p><!--l. 8688--><p class="indent" > If you want to add all entries to the glossary, you need to tell <a + id="dx1-37005"></a><span +class="cmtt-10">bib2gls </span>this in the +options list. For example: + + + +</p> + <div class="verbatim" id="verbatim-210"> +\GlsXtrLoadResources[src={terms},selection={all}] +</div> +<!--l. 8693--><p class="nopar" > This will add all entries, regardless of whether or not they have any records in the +<span +class="cmtt-10">.aux </span>file. Those that don’t have any records will have an empty location list. See the +<a + id="dx1-37006"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> user manual for more details of this option. +</p><!--l. 8699--><p class="noindent" > +</p> +<!--l. 8699--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.2 </span> <a + id="sortinganddisplayingtheglossary"></a>Sorting and Displaying the Glossary</h3> +<!--l. 8701--><p class="noindent" >There are many sorting options provided by <a + id="dx1-38001"></a><span +class="cmtt-10">bib2gls</span>. The default is to sort +according to the system locale. If the document has a language setting, you can use +<span +class="cmtt-10">sort=doc </span>to instruct <a + id="dx1-38002"></a><span +class="cmtt-10">bib2gls </span>to sort according to that. (The language tag obtained +from <span +class="cmss-10">tracklang</span><a + id="dx1-38003"></a>’s interface is written to the <span +class="cmtt-10">.aux </span>file.) For a multilingual document +you need to explicitly set the locale using a well-formed language tag. For +example: + + + +</p> + <div class="verbatim" id="verbatim-211"> +\GlsXtrLoadResources[ + <br />  src=terms, % data in terms.bib + <br />  sort=de-DE-1996 % sort according to this locale + <br />] +</div> +<!--l. 8714--><p class="nopar" > The locale-sensitive sort methods usually ignore most punctuation so for lists of +symbols you may find it more appropriate to use one of the letter-base sort methods +that sort according to the Unicode value of each character. Alternatively you can +provide a custom rule. See the <a + id="dx1-38004"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> manual for full details of all the available sort +methods. +</p><!--l. 8723--><p class="indent" > Since the <span +class="cmtt-10">.glstex </span>file only defines those references required within the document +(selected according to the <span +class="cmtt-10">selection </span>option) and the definitions have been written in +the order corresponding to <a + id="dx1-38005"></a><span +class="cmtt-10">bib2gls</span>’s sorted list, the glossaries can simply be +displayed using <span +class="cmtt-10">\printunsrtglossary </span>(or <span +class="cmtt-10">\printunsrtglossaries</span>), described in +<a +href="#sec:printunsrt"><span +class="cmsy-10">§</span>10.2 </a><a +href="#sec:printunsrt">Display All Entries Without Sorting or Indexing<!--tex4ht:ref: sec:printunsrt --></a>. +</p><!--l. 8731--><p class="indent" > Suppose the <span +class="cmtt-10">.bib </span>examples shown above have been stored in the files <span +class="cmtt-10">terms.bib</span>, +<span +class="cmtt-10">abbrvs.bib </span>and <span +class="cmtt-10">symbols.bib </span>which may either be in the current directory or on +<span class="TEX">T<span +class="E">E</span>X</span>’s path. Then the document might look like: + + + +</p> + <div class="verbatim" id="verbatim-212"> +\documentclass{article} + <br />\usepackage[record]{glossaries-extra} + <br />\setabbreviationstyle{long-short-desc} + <br />\GlsXtrLoadResources[src={terms,abbrvs,symbols}] + <br />\begin{document} + <br />\gls{bird} + <br />\gls{shtml} + <br />\gls{M} + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 8753--><p class="nopar" > The document build process (assuming the document is called <span +class="cmtt-10">mydoc</span>) is: + + + +</p> + <div class="verbatim" id="verbatim-213"> +pdflatex mydoc + <br />bib2gls mydoc + <br />pdflatex mydoc +</div> +<!--l. 8760--><p class="nopar" > This creates a single glossary containing the entries: <span +class="cmtt-10">bird</span>, <span +class="cmtt-10">duck</span>, <span +class="cmtt-10">goose</span>, <span +class="cmtt-10">html</span>, <span +class="cmtt-10">M</span>, +<span +class="cmtt-10">shtml </span>and <span +class="cmtt-10">ssi </span>(in that order). The <span +class="cmtt-10">bird</span>, <span +class="cmtt-10">shtml </span>and <span +class="cmtt-10">M </span>entries were added because +<a + id="dx1-38006"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> detected (from the <span +class="cmtt-10">.aux </span>file) that they had been used in the document. The +other entries were added because <a + id="dx1-38007"></a><span +class="cmtt-10">bib2gls </span>detected (from the <span +class="cmtt-10">.bib </span>files) that they +are referenced by the used entries. In the case of <span +class="cmtt-10">duck </span>and <span +class="cmtt-10">goose</span>, they are +in the <span +class="cmss-10">see</span><a + id="dx1-38008"></a> field for <span +class="cmtt-10">bird</span>. In the case of <span +class="cmtt-10">ssi </span>and <span +class="cmtt-10">html</span>, they are referenced +in the <span +class="cmss-10">description</span><a + id="dx1-38009"></a> field of <span +class="cmtt-10">shtml</span>. These cross-referenced entries won’t have +a location list when the glossary is first displayed, but depending on how +they are referenced, they may pick up a location list on the next document +build. +</p><!--l. 8777--><p class="indent" > The entries can be separated into different glossaries with different sort +methods: + + + +</p> + <div class="verbatim" id="verbatim-214"> +\documentclass{article} + <br />\usepackage[record,abbreviations,symbols]{glossaries-extra} + <br />\setabbreviationstyle{long-short-desc} + <br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main] + <br />\GlsXtrLoadResources + <br /> [src={abbrvs},sort={letter-nocase},type=abbreviations] + <br />\GlsXtrLoadResources + <br /> [src={symbols},sort={use},type={symbols}] + <br />\begin{document} + <br />\gls{bird} + <br />\gls{shtml} + <br />\gls{M} + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 8803--><p class="nopar" > +</p><!--l. 8805--><p class="indent" > Or you can have multiple instance of <span +class="cmtt-10">\GlsXtrLoadResources </span>with the same +<span +class="cmtt-10">type</span>, which will produce a glossary with ordered sub-blocks. For example: + + + +</p> + <div class="verbatim" id="verbatim-215"> +\documentclass{article} + <br />\usepackage[record,style=indexgroup]{glossaries-extra} + <br />\setabbreviationstyle{long-short-desc} + <br />\GlsXtrLoadResources + <br /> [src={abbrvs},sort={letter-nocase},type=main, + <br />  group={Abbreviations}] + <br />\GlsXtrLoadResources + <br /> [src={symbols},sort={use},type=main, + <br />  group={Symbols}] + <br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main] + <br />\begin{document} + <br />\gls{bird} + <br />\gls{shtml} + <br />\gls{M} + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 8834--><p class="nopar" > 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 <a + id="dx1-38010"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> with the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">--group</span></span></span> (or <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">-g</span></span></span>) +switch. For example, if the document is called <span +class="cmtt-10">myDoc.tex</span>: + + + +</p> + <div class="verbatim" id="verbatim-216"> +pdflatex myDoc + <br />bib2gls -g myDoc + <br />pdflatex myDoc +</div> +<!--l. 8845--><p class="nopar" > The value of the <span +class="cmss-10">group</span><a + id="dx1-38011"></a> field must always be a label. You can set the corresponding +title with <span +class="cmtt-10">\glsxtrsetgrouptitle </span>(see <a +href="#sec:glosstylemods"><span +class="cmsy-10">§</span>2.12 </a><a +href="#sec:glosstylemods">Glossary Style Modifications<!--tex4ht:ref: sec:glosstylemods --></a>). If no title +is set then the label is used as the group title. +</p><!--l. 8851--><p class="indent" > You can provide your own custom sort rule. For example, if you are using +<span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">Ǝ</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span> or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\GlsXtrLoadResources[</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> src=terms,</span><span +class="cmtt-10"> %</span><span +class="cmtt-10"> entries</span><span +class="cmtt-10"> in</span><span +class="cmtt-10"> terms.bib</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> sort=custom,</span><span +class="cmtt-10"> %</span><span +class="cmtt-10"> custom</span><span +class="cmtt-10"> sort</span><span +class="cmtt-10"> rule</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> sort-rule=</span><span +class="cmsy-10">{</span><span +class="cmtt-10">%</span><span +class="cmtt-10"> required</span><span +class="cmtt-10"> with</span><span +class="cmtt-10"> sort=custom</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> æ;Æ</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> a;</span><span +class="cmtt-10">á</span><span +class="cmtt-10">;</span><span +class="cmtt-10">å</span><span +class="cmtt-10">;</span><span +class="cmtt-10">ä</span><span +class="cmtt-10">,</span><span +class="cmtt-10">Ä</span><span +class="cmtt-10">;</span><span +class="cmtt-10">Á</span><span +class="cmtt-10">;</span><span +class="cmtt-10">Å</span><span +class="cmtt-10">;</span><span +class="cmtt-10">Ä</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> b,B</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> c;</span><span +class="cmtt-10">ć</span><span +class="cmtt-10">,C;</span><span +class="cmtt-10">Ć</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> d,D</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> e;</span><span +class="cmtt-10">é</span><span +class="cmtt-10">,E;</span><span +class="cmtt-10">É</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> f,F</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> g,G</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> h,H</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> i;</span><span +class="cmtt-10">í</span><span +class="cmtt-10">,I;</span><span +class="cmtt-10">Í</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> j,J</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> l;</span><span +class="cmtt-10">ł,L;</span><span +class="cmtt-10">Ł</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> m,M</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> n,N</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> o;</span><span +class="cmtt-10">ö</span><span +class="cmtt-10">;ø,O;</span><span +class="cmtt-10">Ö</span><span +class="cmtt-10">;Ø</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> p,P</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> q,Q</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> r,R</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> s;</span><span +class="cmtt-10">ś</span><span +class="cmtt-10">,S;</span><span +class="cmtt-10">Ś</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> t,T</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> u;</span><span +class="cmtt-10">ú</span><span +class="cmtt-10">,U;</span><span +class="cmtt-10">Ú</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> v,V</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> w,W</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> x,X</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> y,Y</span><span +class="cmtt-10"> <</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> z;</span><span +class="cmtt-10">ż</span><span +class="cmtt-10">,Z;</span><span +class="cmtt-10">Ż</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> </span><span +class="cmsy-10">}</span> +<br /><span +class="cmtt-10">]</span> +</div> +</div> Remember that if you are using <span +class="cmss-10">inputenc</span><a + id="dx1-38012"></a> then extended characters, such as é or ø, +are active and will expand when written to the <span +class="cmtt-10">.aux </span>file. So with PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> the +above would have to be changed to protect against expansion. Some of the +options, including <span +class="cmtt-10">sort-rule</span>, allow Unicode characters to be indicated in the +format <span +class="cmtt-10">\u</span>⟨<span +class="cmti-10">hex</span>⟩ (or <span +class="cmtt-10">\u</span> ⟨<span +class="cmti-10">hex</span>⟩) <span +class="cmbx-10">in the </span><span +class="cmtt-10">.aux </span><span +class="cmbx-10">file</span>. <a + id="dx1-38013"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> will recognise this as the +character given by the hexadecimal value ⟨<span +class="cmti-10">hex</span>⟩. The <span +class="cmtt-10">\u </span>also needs protection from +expansion, so with a non-Unicode aware engine, the character æ needs to be +written as <span +class="cmtt-10">\string\uE6 </span>and so on. This is quite cumbersome, but you can +use the shortcut <span +class="cmtt-10">\glshex</span><a + id="dx1-38014"></a> <span +class="cmtt-10">E6 </span>instead, so the above needs to be written as: +<div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\GlsXtrLoadResources[</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> src=terms,</span><span +class="cmtt-10"> %</span><span +class="cmtt-10"> entries</span><span +class="cmtt-10"> in</span><span +class="cmtt-10"> terms.bib</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> sort=custom,</span><span +class="cmtt-10"> %</span><span +class="cmtt-10"> custom</span><span +class="cmtt-10"> sort</span><span +class="cmtt-10"> rule</span> + + + +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> sort-rule=</span><span +class="cmsy-10">{</span><span +class="cmtt-10">%</span><span +class="cmtt-10"> required</span><span +class="cmtt-10"> with</span><span +class="cmtt-10"> sort=custom</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> \glshex</span><span +class="cmtt-10"> E6;\glshex</span><span +class="cmtt-10"> C6</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> a;\glshex</span><span +class="cmtt-10"> E1;\glshex</span><span +class="cmtt-10"> E5,\glshex</span><span +class="cmtt-10"> E4,A;\glshex</span><span +class="cmtt-10"> C1;\glshex</span><span +class="cmtt-10"> C5;\glshex</span><span +class="cmtt-10"> C4</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> b,B</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> c;\glshex</span><span +class="cmtt-10"> 0107,C;\glshex</span><span +class="cmtt-10"> 0106</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> d,D</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> e;\glshex</span><span +class="cmtt-10"> E9,E;\glshex</span><span +class="cmtt-10"> C9</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> f,F</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> g,G</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> h,H</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> i;\glshex</span><span +class="cmtt-10"> ED,I;\glshex</span><span +class="cmtt-10"> CD</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> j,J</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> l;\glshex</span><span +class="cmtt-10"> 0142,L;\glshex</span><span +class="cmtt-10"> 0141</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> m,M</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> n,N</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> o;\glshex</span><span +class="cmtt-10"> F6;\glshex</span><span +class="cmtt-10"> F8,O;\glshex</span><span +class="cmtt-10"> D6;\glshex</span><span +class="cmtt-10"> D8</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> p,P</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> q,Q</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> r,R</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> s;\glshex</span><span +class="cmtt-10"> 013F,S;\glshex</span><span +class="cmtt-10"> 015A</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> t,T</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> u;\glshex</span><span +class="cmtt-10"> FA,U;\glshex</span><span +class="cmtt-10"> DA</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> v,V</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> w,W</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> x,X</span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> y,Y</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> <</span><span +class="cmtt-10"> z;\glshex</span><span +class="cmtt-10"> 017C,Z;\glshex</span><span +class="cmtt-10"> 017B</span> +<br /><span +class="cmtt-10"> </span><span +class="cmtt-10"> </span><span +class="cmsy-10">}</span><span +class="cmtt-10">]</span> +</div> +</div> +<!--l. 8899--><p class="noindent" > +</p> +<!--l. 8899--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.3 </span> <a + id="x1-390009.3"></a>The <span +class="cmss-10">glossaries-extra-bib2gls </span>package</h3> +<!--l. 8902--><p class="noindent" >The package option <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-39001"></a> (or simply <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-39002"></a>) automatically loads the +supplementary package <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-39003"></a>, which provides some commands that +are specific to <a + id="dx1-39004"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. The package isn’t loaded by <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-39005"></a> as that option +is intended for sorting with <a + id="dx1-39006"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a> or <a + id="dx1-39007"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> and it is expected that the sorting +will be switched off (with the resource option <span +class="cmtt-10">sort=none</span>). +</p><!--l. 8911--><p class="indent" > If <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-39008"></a> is loaded via the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-39009"></a> package option then the +check for associated language resource files (see <a +href="#sec:lang"><span +class="cmsy-10">§</span>13 </a><a +href="#sec:lang">Multi-Lingual Support<!--tex4ht:ref: sec:lang --></a>) +will also search for the existence of <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">script</span>⟩<span +class="cmtt-10">.ldf </span>for each +document dialect (where ⟨<span +class="cmti-10">script</span>⟩ is the four letter script identifier, such as +<span +class="cmtt-10">Latn</span>). +</p><!--l. 8919--><p class="indent" > This package provides some shortcut commands that use <span +class="cmtt-10">\printunsrtglossary</span><a + id="dx1-39010"></a> if the +relevant package option has defined the associated glossary: <span +class="cmtt-10">\printunsrtabbreviations</span><a + id="dx1-39011"></a>, +<span +class="cmtt-10">\printunsrtacronyms</span><a + id="dx1-39012"></a>, <span +class="cmtt-10">\printunsrtsymbols</span><a + id="dx1-39013"></a>, <span +class="cmtt-10">\printunsrtnumbers</span><a + id="dx1-39014"></a> and +<span +class="cmtt-10">\printunsrtindex</span><a + id="dx1-39015"></a>. +</p><!--l. 8925--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrprovidecommand</span><span +class="cmtt-9"> </span></span><a + id="dx1-39016"></a> <span +class="cmtt-10">\glsxtrprovidecommand{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">default</span>⟩<span +class="cmtt-10">]</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8927--><p class="noindent" > +This command is intended for use in <span +class="cmtt-10">@preamble</span>. It’s simply defined to +<span +class="cmtt-10">\providecommand </span>in <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-39017"></a> but <a + id="dx1-39018"></a><span +class="cmtt-10">bib2gls</span>’s interpreter treats it as +<span +class="cmtt-10">\renewcommand</span>. This means that you can override <a + id="dx1-39019"></a><span +class="cmtt-10">bib2gls</span>’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 + + + +</p> + <div class="verbatim" id="verbatim-217"> +@preamble{"\glsxtrprovidecommand{\int}{integral}"} +</div> +<!--l. 8938--><p class="nopar" > This will force <a + id="dx1-39020"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> to treat <span +class="cmtt-10">\int </span>as the word “integral” to assist sorting but if +this preamble code is written to the <span +class="cmtt-10">.glstex </span>file (as it is by default) then it won’t +override the current definition (provided by the kernel or redefined by a +package). +</p><!--l. 8945--><p class="indent" > The helper commands in the resource files are defined using <span +class="cmtt-10">\providecommand</span>. +For many of them, if you want to provide an alternative definition then you need to +define the command before the resource file is loaded. There are a few that may be +redefined afterwards but if you use <span +class="cmtt-10">\renewcommand </span>then you will get an error on the +first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run when the <span +class="cmtt-10">.glstex </span>file doesn’t exist. In this case, you may prefer to +use: +</p><!--l. 8952--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsrenewcommand</span><span +class="cmtt-9"> </span></span><a + id="dx1-39021"></a> <span +class="cmtt-10">\glsrenewcommand{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">][</span>⟨<span +class="cmitt-10">default</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">definition</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8954--><p class="noindent" > +This behaves like <span +class="cmtt-10">\renewcommand </span>but only generates a warning rather than an error +if the command isn’t already defined so it won’t interrupt the document +build. +</p><!--l. 8959--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIndexCounterLink</span><span +class="cmtt-9"> </span></span><a + id="dx1-39022"></a> <span +class="cmtt-10">\GlsXtrIndexCounterLink{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 8961--><p class="noindent" > +If the <span +class="cmtt-10">\hyperref</span><a + id="dx1-39023"></a> command has been defined (that is, <span +class="cmss-10">hyperref</span><a + id="dx1-39024"></a> has been +loaded before <span +class="cmss-10">glossaries-extra</span>) then this command checks for the existence of +the <span +class="cmtt-10">indexcounter </span>field. If this field is set for the entry given by ⟨<span +class="cmti-10">label</span>⟩, this +command does <span +class="cmtt-10">\hyperref[wrglossary.</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}</span>, where ⟨<span +class="cmti-10">value</span>⟩ is the +value of the <span +class="cmtt-10">indexcounter </span>field. If the field isn’t set or if <span +class="cmtt-10">\hyperref </span>hasn’t +been defined, this just does ⟨<span +class="cmti-10">text</span>⟩. This command is provided for use with the +<a +href="#styopt.indexcounter"><span +class="cmss-10">indexcounter</span></a><a + id="dx1-39025"></a> package option combined with <a + id="dx1-39026"></a><span +class="cmtt-10">bib2gls</span>’s <span +class="cmtt-10">save-index-counter</span> +resource option. See the <a + id="dx1-39027"></a><span +class="cmtt-10">bib2gls </span>manual for further details (at least version +1.4). +</p><!--l. 8975--><p class="indent" > If you use the <span +class="cmtt-10">set-widest </span>resource option, <a + id="dx1-39028"></a><span +class="cmtt-10">bib2gls </span>v1.8+ will now +use: +</p><!--l. 8977--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrSetWidest</span><span +class="cmtt-9"> </span></span><a + id="dx1-39029"></a> <span +class="cmtt-10">\glsxtrSetWidest{</span>⟨<span +class="cmitt-10">type</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">level</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 8979--><p class="noindent" > +(if it has been defined) to set the widest name for the given glossary type and level. +This allows for both the <span +class="cmss-10">alttree</span><a + id="dx1-39030"></a> style and the styles provided by <span +class="cmss-10">glossary-longextra</span><a + id="dx1-39031"></a>, +which need to know the widest name. +</p><!--l. 8985--><p class="indent" > If <a + id="dx1-39032"></a><span +class="cmtt-10">bib2gls </span>can’t determine the widest name (typically because the name field +consists of commands that aren’t recognised by the interpreter) then <a + id="dx1-39033"></a><span +class="cmtt-10">bib2gls </span>v1.8+ +will now use: +</p><!--l. 8988--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrSetWidestFallback</span><span +class="cmtt-9"> </span></span><a + id="dx1-39034"></a> <span +class="cmtt-10">\glsxtrSetWidestFallback{</span>⟨<span +class="cmitt-10">max depth</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">}</span> +</div><hr> + + + +</p><!--l. 8990--><p class="noindent" > +(if defined). Currently the maximum hierarchical depth ⟨<span +class="cmti-10">max depth</span>⟩ may only be 0 or +2. This command requires commands provided by the <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-39035"></a> +package with the <span +class="cmss-10">alttree</span><a + id="dx1-39036"></a> style enabled. In this case, it may be simpler to just use +<span +class="cmtt-10">\glssetwidest</span><a + id="dx1-39037"></a>. +</p><!--l. 8997--><p class="noindent" > +</p> +<!--l. 8997--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.1 </span> <a + id="sec:supplocations"></a>Supplemental Locations</h4> +<!--l. 9000--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplaysupploc</span><span +class="cmtt-9"> </span></span><a + id="dx1-40001"></a> <span +class="cmtt-10">\glsxtrdisplaysupploc{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">src</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9002--><p class="noindent" > +This is used by <a + id="dx1-40002"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> version 1.7+ for supplemental locations, instead of using +<span +class="cmtt-10">\glsxtrsupphypernumber </span>with the <a +href="#catattr.externallocation"><span +class="cmss-10">externallocation</span></a><a + id="dx1-40003"></a> attribute. This command sets up +the location counter and prefix (used in the formation of hyperlinks) and then +uses +</p><!--l. 9008--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrmultisupplocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-40004"></a> <span +class="cmtt-10">\glsxtrmultisupplocation{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">src</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9010--><p class="noindent" > +to format the actual location (with an external hyperlink, if supported). +</p><!--l. 9014--><p class="noindent" > +</p> +<!--l. 9014--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.2 </span> <a + id="sec:recordnameref"></a>Nameref Record</h4> +<!--l. 9017--><p class="noindent" >Normally locations are recorded in the <span +class="cmtt-10">.aux </span>file in the form: +</p><!--l. 9020--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsxtr@record{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 9021--><p class="noindent" > +The <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=nameref</span><a + id="dx1-41001"></a> option, which requires at least <a + id="dx1-41002"></a><span +class="cmtt-10">bib2gls </span>v1.8, instead +uses: +</p><!--l. 9025--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsxtr@record@nameref{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">href</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">hcounter</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9026--><p class="noindent" > +where ⟨<span +class="cmti-10">title</span>⟩ is obtained from <span +class="cmtt-10">\@currentlabelname </span>and ⟨<span +class="cmti-10">href </span>⟩ is obtained from +<span +class="cmtt-10">\@currentHref</span>. These commands require <span +class="cmss-10">hyperref</span><a + id="dx1-41003"></a>. If they are undefined, ⟨<span +class="cmti-10">title</span>⟩ and +⟨<span +class="cmti-10">href </span>⟩ will be left empty and <a + id="dx1-41004"></a><span +class="cmtt-10">bib2gls </span>will treat it as a regular record. +</p><!--l. 9033--><p class="indent" > <div class="important" title="Important Note"> Be careful with this option as ⟨<span +class="cmti-10">href </span>⟩ will globally change on every instance of +<span +class="cmtt-10">\refstepcounter </span>but ⟨<span +class="cmti-10">title</span>⟩ won’t necessarily change. It can therefore cause +unexpected behaviour. </div> +</p><!--l. 9037--><p class="noindent" > +</p><!--l. 9039--><p class="indent" > The final argument ⟨<span +class="cmti-10">hcounter</span>⟩ is obtained from <span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter</span>⟩ which provides the +partial target name associated with the indexing counter. With the original + + + +<a + id="dx1-41005"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a>/<a + id="dx1-41006"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> approach, it’s not possible to include this information in the +location, so the base <span +class="cmss-10">glossaries</span><a + id="dx1-41007"></a> package attempts to derive a prefix from which the +⟨<span +class="cmti-10">hcounter</span>⟩ value can be reconstituted by appending the prefix. Unfortunately, not all +definitions of <span +class="cmtt-10">\theH</span>⟨<span +class="cmti-10">counter</span>⟩ are in the form ⟨<span +class="cmti-10">prefix</span>⟩<span +class="cmtt-10">\the</span>⟨<span +class="cmti-10">counter</span>⟩ (most notably the +<span +class="cmss-10">equation</span><a + id="dx1-41008"></a> counter with chapters) so this can fail. +</p><!--l. 9050--><p class="indent" > Since <a + id="dx1-41009"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> is customized specifically for use with <span +class="cmss-10">glossaries-extra</span>, it’s now +possible to save ⟨<span +class="cmti-10">hcounter</span>⟩, so the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=nameref</span><a + id="dx1-41010"></a> option does this. By providing both +⟨<span +class="cmti-10">href </span>⟩ and ⟨<span +class="cmti-10">hcounter</span>⟩, you can determine which target you would rather use. The default +is to use ⟨<span +class="cmti-10">hcounter</span>⟩, which will take you to the place where the corresponding counter +was incremented with <span +class="cmtt-10">\refstepcounter</span>. However, you may choose to switch to +using the ⟨<span +class="cmti-10">href </span>⟩ target, which will take you to the nearest target before the indexing +took place. +</p><!--l. 9061--><p class="indent" > With <a + id="dx1-41011"></a><span +class="cmtt-10">bib2gls </span>v1.8+, normal locations are displayed using: +</p><!--l. 9063--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\glsnoidxdisplayloc{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9064--><p class="noindent" > +This is provided by the base <span +class="cmss-10">glossaries</span><a + id="dx1-41012"></a> package and is simply defined to do: +</p><!--l. 9068--><p class="indent" > <hr><div title="Definition"><span +class="cmtt-10">\setentrycounter[</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}\csuse{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 9069--><p class="noindent" > +Earlier versions of <a + id="dx1-41013"></a><span +class="cmtt-10">bib2gls </span>only used this in the <span +class="cmss-10">loclist</span><a + id="dx1-41014"></a> field and explicitly used +<span +class="cmtt-10">\setentrycounter </span>in the <span +class="cmss-10">location</span><a + id="dx1-41015"></a> field followed by <span +class="cmtt-10">\</span>⟨<span +class="cmti-10">format</span>⟩<span +class="cmtt-10">{</span>⟨<span +class="cmti-10">location</span>⟩<span +class="cmtt-10">}</span>, which follows +the code that’s created with the default <a +href="#styopt.makeindex"><span +class="cmss-10">makeindex</span></a><a + id="dx1-41016"></a> setting. The <span +class="cmtt-10">\setentrycounter</span> +command sets up the prefix needed for <span +class="cmtt-10">\glshypernumber </span>to reform the target name +from the given location. +</p><!--l. 9079--><p class="indent" > The locations identified by <span +class="cmtt-10">\glsxtr@record@nameref </span>are written by <a + id="dx1-41017"></a><span +class="cmtt-10">bib2gls </span>to +the location list using: +</p><!--l. 9081--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdisplaylocnameref</span><span +class="cmtt-9"> </span></span><a + id="dx1-41018"></a> <span +class="cmtt-10">\glsxtrdisplaylocnameref{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">href</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">hcounter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9083--><p class="noindent" > +With normal internal locations, ⟨<span +class="cmti-10">file</span>⟩ will always be empty. With supplemental +locations, ⟨<span +class="cmti-10">file</span>⟩ will be the external file reference. +</p><!--l. 9088--><p class="indent" > The default definition is: + + + +</p> + <div class="verbatim" id="verbatim-218"> +\newcommand*{\glsxtrdisplaylocnameref}[8]{% + <br />  \ifstrequal{#2}{equation}% + <br />  {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + <br />  {% + <br />     \ifstrempty{#5}% + <br />     {% + <br />       \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% + <br />     }% + <br />     {% + <br />       \ifstrequal{#2}{page}% + <br />       {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% + <br />       {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% + <br />     }% + <br />  }% + <br />} +</div> +<!--l. 9105--><p class="nopar" > which uses: +</p><!--l. 9107--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnamereflink</span><span +class="cmtt-9"> </span></span><a + id="dx1-41019"></a> <span +class="cmtt-10">\glsxtrnamereflink{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 9109--><p class="noindent" > +This ignores the ⟨<span +class="cmti-10">prefix</span>⟩, ⟨<span +class="cmti-10">counter</span>⟩ and <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">location</span>⟩<span +class="cmtt-10">} </span>arguments and instead creates a +hyperlink with the target name obtained from ⟨<span +class="cmti-10">target</span>⟩ (and ⟨<span +class="cmti-10">file</span>⟩, if not empty). +</p><!--l. 9113--><p class="indent" > Since pages and equations typically don’t have titles, the default definition of +<span +class="cmtt-10">\glsxtrdisplaylocnameref </span>checks the counter was used as the location. If it’s <span +class="cmss-10">page</span><a + id="dx1-41020"></a> +or if ⟨<span +class="cmti-10">title</span>⟩ is empty, then just the location is used as the hyperlink text. If the counter +<span +class="cmss-10">equation</span><a + id="dx1-41021"></a>, then the text is the location in parentheses. Otherwise the text is obtained +from ⟨<span +class="cmti-10">title</span>⟩. +</p><!--l. 9120--><p class="indent" > If ⟨<span +class="cmti-10">file</span>⟩ is empty an internal link is created with: +</p><!--l. 9121--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfmtinternalnameref</span><span +class="cmtt-9"> </span></span><a + id="dx1-41022"></a> <span +class="cmtt-10">\glsxtrfmtinternalnameref{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9123--><p class="noindent" > +otherwise an external link is created with: +</p><!--l. 9125--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfmtexternalnameref</span><span +class="cmtt-9"> </span></span><a + id="dx1-41023"></a> <span +class="cmtt-10">\glsxtrfmtexternalnameref{</span>⟨<span +class="cmitt-10">target</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9127--><p class="noindent" > +The ⟨<span +class="cmti-10">file</span>⟩ argument is set by <a + id="dx1-41024"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> for supplemental locations. +</p><!--l. 9131--><p class="indent" > Here’s alternative definition that uses the ⟨<span +class="cmti-10">prefix</span>⟩ and ⟨<span +class="cmti-10">counter</span>⟩ to reform the +target name (as <span +class="cmtt-10">\glsnoidxdisplayloc</span>) but uses the ⟨<span +class="cmti-10">title</span>⟩ as the hyperlink +text: + + + +</p> + <div class="verbatim" id="verbatim-219"> +\renewcommand*{\glsxtrdisplaylocnameref}[7]{% + <br /> \glsxtrnamereflink{#3}{#5}{#6}{#7}% + <br />} +</div> +<!--l. 9138--><p class="nopar" > which uses: +</p><!--l. 9140--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnameloclink</span><span +class="cmtt-9"> </span></span><a + id="dx1-41025"></a> <span +class="cmtt-10">\glsxtrnameloclink{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">format</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">title</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9142--><p class="noindent" > +This uses the same commands as <span +class="cmtt-10">\glsxtrnamereflink </span>to produce the hyperlinks. +</p><!--l. 9146--><p class="indent" > In both cases, the link is encapsulated with the text-block command whose +name is given by ⟨<span +class="cmti-10">format</span>⟩, but <span +class="cmtt-10">\glshypernumber </span>is first locally redefined to +<span +class="cmtt-10">\@firstofone </span>to prevent a conflict with the usual location hyperlink formation. +This means that if the ⟨<span +class="cmti-10">format</span>⟩ is <span +class="cmtt-10">hyperbf </span>then it will simply behave like +<span +class="cmtt-10">textbf</span>. +</p><!--l. 9153--><p class="indent" > For compactness, <a + id="dx1-41026"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> merges normal records if the ⟨<span +class="cmti-10">prefix</span>⟩, ⟨<span +class="cmti-10">counter</span>⟩ and +⟨<span +class="cmti-10">location</span>⟩ all match. (An order of precedence can be provided for format conflicts.) +With nameref records, you can use the <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">--merge-nameref-on</span></span></span> switch provided by +<a + id="dx1-41027"></a><span +class="cmtt-10">bib2gls </span>v1.8+ to determine how to merge nameref records. This switch +must be followed by one of the following keywords: <span +class="cmtt-10">hcounter </span>(merge on +⟨<span +class="cmti-10">hcounter</span>⟩, default) <span +class="cmtt-10">href </span>(merge on ⟨<span +class="cmti-10">href </span>⟩), <span +class="cmtt-10">title </span>(merge on ⟨<span +class="cmti-10">title</span>⟩) and <span +class="cmtt-10">location</span> +(merge on ⟨<span +class="cmti-10">location</span>⟩, as regular records). In all cases, the ⟨<span +class="cmti-10">counter</span>⟩ must also +match. +</p><!--l. 9164--><p class="noindent" > +</p> +<!--l. 9164--><p class="noindent" ><a +href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.3 </span> <a + id="sec:resourcecommands"></a>Helper Commands for Resource Options</h4> +<!--l. 9167--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glshex</span><span +class="cmtt-9"> </span></span><a + id="dx1-42001"></a> <span +class="cmtt-10">\glshex </span></div><hr> +</p><!--l. 9169--><p class="noindent" > +This is just defined as <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\string\u</span></span></span>, which is required when you need to indicate a +Unicode character in the form <span +class="cmtt-10">\u</span>⟨<span +class="cmti-10">hex</span>⟩ in some of the resource options (as illustrated +above). +</p><!--l. 9175--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glscapturedgroup</span><span +class="cmtt-9"> </span></span><a + id="dx1-42002"></a> <span +class="cmtt-10">\glscapturedgroup </span></div><hr> +</p><!--l. 9177--><p class="noindent" > +This is just defined as <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\string\$</span></span></span> and is used for the captured group reference in a +replacement part of a regular expression substitution (requires at least <a + id="dx1-42003"></a><span +class="cmtt-10">bib2gls</span> +version 1.5). For example: + + + +</p> + <div class="verbatim" id="verbatim-220"> +sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}} +</div> +<!--l. 9183--><p class="nopar" > This only removes a full stop that follows any of the characters a,…,z or +A,…,Z. +</p><!--l. 9187--><p class="indent" > If you use the <span +class="cmtt-10">save-child-count </span>resource option, you can test if the <span +class="cmtt-10">childcount</span> +field is non-zero using: +</p><!--l. 9189--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfHasNonZeroChildCount</span><span +class="cmtt-9"> </span></span><a + id="dx1-42004"></a> <span +class="cmtt-10">\GlsXtrIfHasNonZeroChildCount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9191--><p class="noindent" > +This internally uses <span +class="cmtt-10">\GlsXtrIfFieldNonZero </span>and will do ⟨<span +class="cmti-10">false</span>⟩ if the field isn’t set. +Within ⟨<span +class="cmti-10">true</span>⟩ and ⟨<span +class="cmti-10">false</span>⟩ you can use <span +class="cmtt-10">\glscurrentfieldvalue </span>to access the value. (It +will be 0 in ⟨<span +class="cmti-10">false</span>⟩ if the field isn’t set.) +</p><!--l. 9198--><p class="indent" > A convenient shortcut for use in the <span +class="cmtt-10">entry-type-aliases </span>setting: +</p><!--l. 9200--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrBibTeXEntryAliases</span><span +class="cmtt-9"> </span></span><a + id="dx1-42005"></a> <span +class="cmtt-10">\GlsXtrBibTeXEntryAliases </span></div><hr> +</p><!--l. 9202--><p class="noindent" > +This provides aliases for Bib<span class="TEX">T<span +class="E">E</span>X</span>’s standard entry types to <a + id="dx1-42006"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span>’s</a> <span +class="cmtt-10">@bibtexentry</span> +entry type (requires at least <a + id="dx1-42007"></a><span +class="cmtt-10">bib2gls </span>version 1.4). +</p><!--l. 9207--><p class="indent" > You may also want to provide storage keys for Bib<span class="TEX">T<span +class="E">E</span>X</span>’s standard fields rather +than having to alias them all. This can be done with: +</p><!--l. 9209--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrProvideBibTeXFields</span><span +class="cmtt-9"> </span></span><a + id="dx1-42008"></a> <span +class="cmtt-10">\GlsXtrProvideBibTeXFields </span></div><hr> +</p><!--l. 9211--><p class="noindent" > +Note that Bib<span class="TEX">T<span +class="E">E</span>X</span>’s <span +class="cmtt-10">type </span>field clashes with the <span +class="cmss-10">glossaries</span><a + id="dx1-42009"></a> package’s <span +class="cmss-10">type</span><a + id="dx1-42010"></a> key, so +this command provides the key <span +class="cmtt-10">bibtextype </span>instead. You can alias it with +<span +class="cmtt-10">field-aliases=type=bibtextype </span>in the resource options. Each storage +key is provided with a convenient command to access the value in the form +<span +class="cmtt-10">\glsxtrbib</span>⟨<span +class="cmti-10">field</span>⟩. For example, <span +class="cmtt-10">\glsxtrbibaddress</span>. The <span +class="cmtt-10">bibtextype </span>field can be +accessed with <span +class="cmtt-10">\glsxtrbibtype</span>. Each of these commands takes the entry label as the +sole argument. +</p><!--l. 9222--><p class="indent" > The <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-42011"></a> package also provides definitions of the missing +mathematical Greek commands: <span +class="cmtt-10">\Alpha</span><a + id="dx1-42012"></a>, <span +class="cmtt-10">\Beta</span><a + id="dx1-42013"></a>, <span +class="cmtt-10">\Epsilon</span><a + id="dx1-42014"></a>, <span +class="cmtt-10">\Zeta</span><a + id="dx1-42015"></a>, <span +class="cmtt-10">\Eta</span><a + id="dx1-42016"></a>, <span +class="cmtt-10">\Iota</span><a + id="dx1-42017"></a>, +<span +class="cmtt-10">\Kappa</span><a + id="dx1-42018"></a>, <span +class="cmtt-10">\Mu</span><a + id="dx1-42019"></a>, <span +class="cmtt-10">\Nu</span><a + id="dx1-42020"></a>, <span +class="cmtt-10">\Omicron</span><a + id="dx1-42021"></a>, <span +class="cmtt-10">\Rho</span><a + id="dx1-42022"></a>, <span +class="cmtt-10">\Tau</span><a + id="dx1-42023"></a>, <span +class="cmtt-10">\Chi</span><a + id="dx1-42024"></a>, <span +class="cmtt-10">\Digamma</span><a + id="dx1-42025"></a>, <span +class="cmtt-10">\omicron</span><a + id="dx1-42026"></a>. These are all +defined with <span +class="cmtt-10">\providecommand</span>, so they won’t override any definitions provided by +any package loaded before <span +class="cmss-10">glossaries-extra</span><a + id="dx1-42027"></a>. Since <a + id="dx1-42028"></a><span +class="cmtt-10">bib2gls</span>’s interpreter recognises +these commands, using them instead of explicitly using the Latin characters with the +same shape helps to keep the Greek symbols together when sorting. Similarly, +if <span +class="cmss-10">upgreek</span><a + id="dx1-42029"></a> has been loaded, the missing upright Greek commands are also +provided. +</p><!--l. 9236--><p class="indent" > The remaining commands provide common rule blocks for use in the +<span +class="cmtt-10">sort-rule </span>resource option. If you want a rule for a specific locale, you can +provide similar commands in a file called <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">tag</span>⟩<span +class="cmtt-10">.ldf</span>, where ⟨<span +class="cmti-10">tag</span>⟩ +identifies the dialect, locale, region or root language. See the description of +<span +class="cmtt-10">\IfTrackedLanguageFileExists </span>in the <span +class="cmss-10">tracklang</span><a + id="dx1-42030"></a> documentation for further details. + + + +If this file is on <span class="TEX">T<span +class="E">E</span>X</span>’s path and the <span +class="cmss-10">tracklang</span><a + id="dx1-42031"></a> package (automatically loaded by +<span +class="cmss-10">glossaries</span>) detects that the document has requested that language or locale, then the +file will automatically be loaded. For example, if you want to provide a rule +block for Welsh, then create a file called <span +class="cmtt-10">glossariesxtr-welsh.ldf </span>that +contains: + + + +</p> + <div class="verbatim" id="verbatim-221"> +\ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0] + <br />\@ifpackageloaded{glossaries-extra-bib2gls} + <br />{ + <br />  \newcommand{\glsxtrWelshRules}{% + <br />   \glsxtrLatinA + <br />   \string<b,B + <br />   \string<c,C + <br />   \string<ch,CH + <br />   \string<d,D + <br />   \string<dd,DD + <br />   \string<\glsxtrLatinE + <br />   \string<f,F + <br />   \string<ff,FF + <br />   \string<g,G + <br />   \string<ng,NG + <br />   \string<\glsxtrLatinH + <br />   \string<\glsxtrLatinI + <br />   \string<j,J + <br />   \string<\glsxtrLatinL + <br />   \string<ll,LL + <br />   \string<\glsxtrLatinM + <br />   \string<\glsxtrLatinN + <br />   \string<\glsxtrLatinO + <br />   \string<\glsxtrLatinP + <br />   \string<ph,PH + <br />   \string<r,R + <br />   \string<rh,RH + <br />   \string<\glsxtrLatinS + <br />   \string<\glsxtrLatinT + <br />   \string<th,TH + <br />   \string<u,U + <br />   \string<w,W + <br />   \string<y,Y + <br />  } + <br />} + <br />{}% glossaries-extra-bib2gls.sty not loaded +</div> +<!--l. 9286--><p class="nopar" > (The use of <span +class="cmtt-10">\string </span>is in case the <span +class="cmtt-10">< </span>character has been made active.) You can +provide more than one rule-block per local, to allow for loanwords or foreign words. +For example, you could provide <span +class="cmtt-10">\glsxtrWelshIRules</span>, <span +class="cmtt-10">\glsxtrWelshIIRules</span> +etc. +</p><!--l. 9293--><p class="indent" > If the rules are for a particular script (independent of language or region) then +they can be provided in a file given by <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">script</span>⟩<span +class="cmtt-10">.ldf </span>instead. For +example, the file <span +class="cmtt-10">glossariesxtr-Cyrl.ldf </span>could contain: + + + +</p> + <div class="verbatim" id="verbatim-222"> +\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0] + <br />\newcommand*{\glsxtrGeneralCyrillicIRules}{% + <br />  % Cyrillic rules + <br />} + <br />\newcommand*{\glsxtrGeneralCyrillicIIRules}{% + <br />  % an alternative set of Cyrillic rules + <br />} +</div> +<!--l. 9305--><p class="nopar" > (Remember that the required document language scripts need to be tracked through +the <span +class="cmss-10">tracklang</span><a + id="dx1-42032"></a> package, in order for these files to be automatically loaded. This +essentially means ensuring you load the appropriate language package before +<span +class="cmss-10">tracklang</span><a + id="dx1-42033"></a> is loaded by the base <span +class="cmss-10">glossaries</span><a + id="dx1-42034"></a> package or any other package that uses it. +See the <span +class="cmss-10">tracklang</span><a + id="dx1-42035"></a> documentation for further details.) +</p><!--l. 9313--><p class="indent" > Alternatively, if the rules are specific to a subject rather than a region or +language, then you can provide a supplementary package. For example, if you have a +package called, say, <span +class="cmss-10">mapsymbols </span>that provides map symbols, then the file +<span +class="cmtt-10">mapsymbols.sty </span>might contain: + + + +</p> + <div class="verbatim" id="verbatim-223"> +\NeedsTeXFormat{LaTeX2e} + <br />\ProvidesPackage{mapsymbols} + <br /> some package or font loading stuff here to provide + <br /> the appropriate symbols + <br />\newcommand{\Stadium}{...} + <br />\newcommand{\Battlefield}{...} + <br />\newcommand{\Harbour}{...} + <br /> etc + <br /> Provide a rule block: + <br />\newcommand{\MapSymbolOrder}{% + <br /> \glshex 2694 % crossed-swords 0x2694 + <br /> \string< \glshex 2693 % anchor 0x2693 + <br /> \string< \glshex 26BD % football 0x26BD + <br />} +</div> +<!--l. 9334--><p class="nopar" > and the supplementary file <span +class="cmtt-10">mapsymbols.bib </span>can provide the appropriate definitions +for <a + id="dx1-42036"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>: + + + +</p> + <div class="verbatim" id="verbatim-224"> +@preamble{"\glsxtrprovidecommand{\Harbour}{\char"2693} + <br />\glsxtrprovidecommand{\Battlefield}{\char"2694} + <br />\glsxtrprovidecommand{\Stadium}{\char"26BD}"} +</div> +<!--l. 9341--><p class="nopar" > Now both the preamble and rule block can be used in the resource set: + + + +</p> + <div class="verbatim" id="verbatim-225"> +\usepackage{mapsymbols}% my custom package + <br />\usepackage[record]{glossaries-extra} + <br />\GlsXtrLoadResources[ + <br />  src={mapsymbols,% <--- my custom mapsymbols.bib + <br />   entries% data in entries.bib + <br />  }, + <br />  sort={custom}, + <br />  sort-rule={\glsxtrcontrolrules % control codes + <br /> ;\glsxtrspacerules % space characters + <br /> ;\glsxtrnonprintablerules % non-printable characters + <br /> ;\glsxtrcombiningdiacriticrules % combining diacritics + <br /> ,\glsxtrhyphenrules % hyphens + <br /> <\glsxtrgeneralpuncrules % general punctuation + <br /> <\glsxtrdigitrules % 0, ..., 9 + <br /> <\glsxtrfractionrules % fraction symbols + <br /> <\MapSymbolOrder % <--- custom map symbols + <br /> <\glsxtrMathItalicGreekIrules % math-greek symbols + <br /> <\glsxtrGeneralLatinIrules % Latin letters + <br /> } + <br />] +</div> +<!--l. 9366--><p class="nopar" > +</p><!--l. 9368--><p class="indent" > The following commands are provided by <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-42037"></a>. They should be +separated by the rule separator characters <span +class="cmtt-10">;</span> (semi-colon) or <span +class="cmtt-10">,</span> (comma) or +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">&</span></span></span> (ampersand) or <span +class="cmtt-10"><</span> (less than). See Java’s <a +href="http://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html" >RuleBasedCollator</a> documentation for +details of the rule syntax. +</p><!--l. 9375--><p class="indent" > For example, the following will place the mathematical Greek symbols (<span +class="cmtt-10">\alpha</span><a + id="dx1-42038"></a>, +<span +class="cmtt-10">\Alpha</span><a + id="dx1-42039"></a>, <span +class="cmtt-10">\beta</span><a + id="dx1-42040"></a>, <span +class="cmtt-10">\Beta</span><a + id="dx1-42041"></a> etc) in a block before Latin characters: + + + +</p> + <div class="verbatim" id="verbatim-226"> +sort-rule={\glsxtrcontrolrules + <br /> ;\glsxtrspacerules + <br /> ;\glsxtrnonprintablerules + <br /> ;\glsxtrcombiningdiacriticrules + <br /> ,\glsxtrhyphenrules + <br /> <\glsxtrgeneralpuncrules + <br /> <\glsxtrdigitrules + <br /> <\glsxtrfractionrules + <br /> <\glsxtrMathItalicGreekIrules + <br /> <\glsxtrGeneralLatinIVrules + <br /> <\glsxtrLatinAA + <br /> <\glsxtrLatinOslash + <br />} +</div> +<!--l. 9392--><p class="nopar" > +</p><!--l. 9394--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcontrolrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42042"></a> <span +class="cmtt-10">\glsxtrcontrolrules </span></div><hr> +</p><!--l. 9396--><p class="noindent" > +These are control characters that are usually placed at the start of a rule in the +ignored section. They typically won’t occur in any sort values, but if they do they +should normally be ignored. +</p><!--l. 9401--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrspacerules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42043"></a> <span +class="cmtt-10">\glsxtrspacerules </span></div><hr> +</p><!--l. 9403--><p class="noindent" > +These are space characters. They typically come after the control characters with the +two blocks separated by a <span +class="cmtt-10">;</span> (semi-colon). +</p><!--l. 9407--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnonprintablerules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42044"></a> <span +class="cmtt-10">\glsxtrnonprintablerules </span></div><hr> +</p><!--l. 9409--><p class="noindent" > +These are non-printable characters (BOM, tabs, line feed and carriage return). They +typically come after the spaces separated by a <span +class="cmtt-10">;</span> (semi-colon). These characters +aren’t checked for by <a + id="dx1-42045"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> when it determines whether or not to use the +interpreter, so a TAB or newline character may end up in the sort value if it wasn’t +interpreted. +</p><!--l. 9417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcombiningdiacriticrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42046"></a> <span +class="cmtt-10">\glsxtrcombiningdiacriticrules</span> +</div><hr> +</p><!--l. 9419--><p class="noindent" > +These are combining diacritic marks which typically follow the space and +non-printable blocks (separated by a semi-colon). This command is defined in terms +of sub-block commands: + + + +</p> + <div class="verbatim" id="verbatim-227"> +\newcommand*{\glsxtrcombiningdiacriticrules}{% + <br /> \glsxtrcombiningdiacriticIrules\string; + <br /> \glsxtrcombiningdiacriticIIrules\string; + <br /> \glsxtrcombiningdiacriticIIIrules\string; + <br /> \glsxtrcombiningdiacriticIVrules + <br />} +</div> +<!--l. 9430--><p class="nopar" > If you prefer, you can use the sub-blocks directly in your required ordered. +</p><!--l. 9434--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcombiningdiacriticIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42047"></a> <span +class="cmtt-10">\glsxtrcombiningdiacriticIrules</span> +</div><hr> +</p><!--l. 9436--><p class="noindent" > +This contains the combining diacritics: acute, grave, breve, circumflex, caron, ring, +vertical line above, diaeresis (umlaut), double acute, tilde, dot above, combining +macron. +</p><!--l. 9441--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcombiningdiacriticIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42048"></a> <span +class="cmtt-10">\glsxtrcombiningdiacriticIIrules</span> +</div><hr> +</p><!--l. 9443--><p class="noindent" > +This contains the combining diacritics: short solidus overlay, cedilla, ogonek, dot +below, low line, overline, hook above, double vertical line above, double grave +accent, candrabindu, inverted breve, turned comma above, comma above, +reversed comma above, comma above right, grave accent below, acute accent +below. +</p><!--l. 9450--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcombiningdiacriticIIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42049"></a> <span +class="cmtt-10">\glsxtrcombiningdiacriticIIIrules</span> +</div><hr> +</p><!--l. 9452--><p class="noindent" > +This contains the combining diacritics: left tack below, right tack below, left angle +above, horn, left half ring below, up tack below, down tack below, plus sign below, +minus sign below, palatalized hook below, retroflex hook below, diaresis below, ring +below, comma below, vertical line below, bridge below, inverted double arch below, +caron below, circumflex accent below, breve below, inverted breve below, tilde below, +macron below, double low line, tilde overlay, short stroke overlay, long stroke overlay, +long solidus overlay, right half ring below, inverted bridge below, square below, +seagull below, x above, vertical tilde, double overline, Greek perispomeni, Greek +dialytika tonos, Greek ypogegrammeni, double tilde, double inverted breve, +Cyrillic titlo, Cyrillic palatalization, Cyrillic dasia pneumata, Cyrillic psili +pneumata. +</p><!--l. 9467--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcombiningdiacriticIVrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42050"></a> <span +class="cmtt-10">\glsxtrcombiningdiacriticIVrules</span> +</div><hr> +</p><!--l. 9469--><p class="noindent" > +This contains the combining diacritics: left harpoon above, right harpoon above, long +vertical line overlay, short vertical line overlay, anticlockwise arrow above, clockwise +arrow above, left arrow above, right arrow above, ring overlay, clockwise ring overlay, + + + +anticlockwise ring overlay, three dots above, four dots above, enclosing circle, +enclosing square, enclosing diamond, enclosing circle backslash, left right arrow +above. +</p><!--l. 9479--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrhyphenrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42051"></a> <span +class="cmtt-10">\glsxtrhyphenrules </span></div><hr> +</p><!--l. 9481--><p class="noindent" > +This contains hyphens (including the minus sign 0x2212). This rule block typically +comes after the diacritic rules separated by a comma. +</p><!--l. 9486--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrgeneralpuncrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42052"></a> <span +class="cmtt-10">\glsxtrgeneralpuncrules </span></div><hr> +</p><!--l. 9488--><p class="noindent" > +This contains punctuation characters. This rule block typically comes after the +hyphen rules separated by a less than (<span +class="cmtt-10"><</span>). As with the combining diacritics, this +command is defined in terms of sub-blocks which may be used directly instead if a +different order is required: + + + +</p> + <div class="verbatim" id="verbatim-228"> +\newcommand*{\glsxtrgeneralpuncrules}{% + <br />  \glsxtrgeneralpuncIrules + <br />  \string<\glsxtrcurrencyrules + <br />  \string<\glsxtrgeneralpuncIIrules + <br />} +</div> +<!--l. 9500--><p class="nopar" > +</p><!--l. 9502--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrgeneralpuncIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42053"></a> <span +class="cmtt-10">\glsxtrgeneralpuncIrules </span></div><hr> +</p><!--l. 9504--><p class="noindent" > +This is the first punctuation sub-block containing: underscore, macron, comma, +semi-colon, colon, exclamation mark, inverted exclamation mark, question +mark, inverted question mark, solidus, full stop, acute accent, grave accent, +circumflex accent, diaersis, tilde, middle dot, cedilla, straight apostrophe, +straight double quote, left guillemet, right guillemet, left parenthesis, right +parenthesis, left square bracket, right square bracket, left curly bracket, right +curly bracket, section sign, pilcrow sign, copyright sign, registered sign, at +sign. +</p><!--l. 9515--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcurrencyrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42054"></a> <span +class="cmtt-10">\glsxtrcurrencyrules </span></div><hr> +</p><!--l. 9517--><p class="noindent" > +This sub-block contains some currency symbols: currency sign, Thai currency symbol +baht, cent sign, colon sign, cruzeiro sign, dollar sign, dong sign, euro sign, French +franc sign, lira sign, mill sign, naira sign, peseta sign, pound sign, rupee sign, new +sheqel sign, won sign, yen sign. +</p><!--l. 9524--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrgeneralpuncIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42055"></a> <span +class="cmtt-10">\glsxtrgeneralpuncIIrules </span></div><hr> +</p><!--l. 9526--><p class="noindent" > +This sub-block contains some other punctuation symbols: asterisk, backslash, +ampersand, hash sign, percent sign, plus sign, plus-minus sign, division sign, +multiplication sign, less-than sign, equals sign, greater-than sign, not sign, vertical +bar (pipe), broken bar, degree sign, micron sign. +</p><!--l. 9533--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdigitrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42056"></a> <span +class="cmtt-10">\glsxtrdigitrules </span></div><hr> +</p><!--l. 9535--><p class="noindent" > +This rule block contains the Basic Latin digits (0, …, 9) and the subscript and +superscript digits (<sub class="textsubscript"><span +class="cmr-9">0</span></sub> <sup class="textsuperscript"><span +class="cmr-9">0</span></sup> etc) made equivalent to the corresponding Basic Latin digit. +The digit block typically comes after the punctuation rules separated by a less than +(<span +class="cmtt-10"><</span>). +</p><!--l. 9543--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrBasicDigitrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42057"></a> <span +class="cmtt-10">\glsxtrBasicDigitrules </span></div><hr> +</p><!--l. 9545--><p class="noindent" > +This rule block contains just the Basic Latin digits (0, …, 9). +</p><!--l. 9548--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrSubScriptDigitrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42058"></a> <span +class="cmtt-10">\glsxtrSubScriptDigitrules </span></div><hr> +</p><!--l. 9550--><p class="noindent" > +This rule block contains just the subscript digits (<sub class="textsubscript"><span +class="cmr-9">0</span></sub> … <sub class="textsubscript"><span +class="cmr-9">9</span></sub>). +</p><!--l. 9554--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrSuperScriptDigitrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42059"></a> <span +class="cmtt-10">\glsxtrSuperScriptDigitrules </span></div><hr> + + + +</p><!--l. 9556--><p class="noindent" > +This rule block contains just the superscript digits (<sup class="textsuperscript"><span +class="cmr-9">0</span></sup> … <sup class="textsuperscript"><span +class="cmr-9">9</span></sup>). +</p><!--l. 9560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfractionrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42060"></a> <span +class="cmtt-10">\glsxtrfractionrules </span></div><hr> +</p><!--l. 9562--><p class="noindent" > +This rule block contains vulgar fraction characters. The digit block typically comes +after the digit rules separated by a less than (<span +class="cmtt-10"><</span>). +</p><!--l. 9567--><p class="indent" > There are a number of Latin rule blocks. Some of these included extended +characters or ligatures (such as ß 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 +commands in a <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">tag</span>⟩<span +class="cmtt-10">.ldf </span>file for the particular language or +region. +</p><!--l. 9575--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42061"></a> <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span></div><hr> +</p><!--l. 9577--><p class="noindent" > +This is just the basic (non-extended) Latin alphabet with the superscript and +subscript Latin letters (<sup class="textsuperscript"><span +class="cmr-9">a</span></sup> <sub class="textsubscript"><span +class="cmr-9">a</span></sub> etc) treated as the equivalent basic Latin letter. (If you +don’t want the subscripts and superscripts included you can redefine <span +class="cmtt-10">\glsxtrLatinA</span> +etc to omit them.) +</p><!--l. 9584--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42062"></a> <span +class="cmtt-10">\glsxtrGeneralLatinIIrules </span></div><hr> +</p><!--l. 9586--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between ‘D’ and ‘E’ +and eszett (ß) treated as ‘ss’. +</p><!--l. 9590--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinIIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42063"></a> <span +class="cmtt-10">\glsxtrGeneralLatinIIIrules </span></div><hr> +</p><!--l. 9592--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between ‘D’ and ‘E’ +and eszett (ß) treated as ‘sz’. +</p><!--l. 9596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinIVrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42064"></a> <span +class="cmtt-10">\glsxtrGeneralLatinIVrules </span></div><hr> +</p><!--l. 9598--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between ‘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’. +</p><!--l. 9604--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinVrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42065"></a> <span +class="cmtt-10">\glsxtrGeneralLatinVrules </span></div><hr> +</p><!--l. 9606--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between ‘D’ and ‘E’, +eszett (ß) treated as ‘ss’ and thorn (þ) treated as ‘th’. +</p><!--l. 9611--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinVIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42066"></a> <span +class="cmtt-10">\glsxtrGeneralLatinVIrules </span></div><hr> +</p><!--l. 9613--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between ‘D’ and ‘E’, +eszett (ß) treated as ‘sz’ and thorn (þ) treated as ‘th’. +</p><!--l. 9618--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinVIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42067"></a> <span +class="cmtt-10">\glsxtrGeneralLatinVIIrules </span></div><hr> +</p><!--l. 9620--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes ae-ligature (æ) 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. +</p><!--l. 9627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrGeneralLatinVIIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42068"></a> <span +class="cmtt-10">\glsxtrGeneralLatinVIIIrules </span></div><hr> + + + +</p><!--l. 9629--><p class="noindent" > +This is like <span +class="cmtt-10">\glsxtrGeneralLatinIrules </span>but ae-ligature (æ) 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’. +</p><!--l. 9635--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinA</span><span +class="cmtt-9"> </span></span><a + id="dx1-42069"></a> <span +class="cmtt-10">\glsxtrLatinA </span></div><hr> +</p><!--l. 9637--><p class="noindent" > +A mini-rule that just covers ‘A’ but includes the sub- and superscript A. +</p><!--l. 9641--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinE</span><span +class="cmtt-9"> </span></span><a + id="dx1-42070"></a> <span +class="cmtt-10">\glsxtrLatinE </span></div><hr> +</p><!--l. 9643--><p class="noindent" > +A mini-rule that just covers ‘E’ but includes the subscript E. +</p><!--l. 9647--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinH</span><span +class="cmtt-9"> </span></span><a + id="dx1-42071"></a> <span +class="cmtt-10">\glsxtrLatinH </span></div><hr> +</p><!--l. 9649--><p class="noindent" > +A mini-rule that just covers ‘H’ but includes the subscript H. +</p><!--l. 9653--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinK</span><span +class="cmtt-9"> </span></span><a + id="dx1-42072"></a> <span +class="cmtt-10">\glsxtrLatinK </span></div><hr> +</p><!--l. 9655--><p class="noindent" > +A mini-rule that just covers ‘K’ but includes the subscript K. +</p><!--l. 9659--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinI</span><span +class="cmtt-9"> </span></span><a + id="dx1-42073"></a> <span +class="cmtt-10">\glsxtrLatinI </span></div><hr> +</p><!--l. 9661--><p class="noindent" > +A mini-rule that just covers ‘I’ but includes the superscript I. +</p><!--l. 9665--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinL</span><span +class="cmtt-9"> </span></span><a + id="dx1-42074"></a> <span +class="cmtt-10">\glsxtrLatinL </span></div><hr> +</p><!--l. 9667--><p class="noindent" > +A mini-rule that just covers ‘L’ but includes the subscript L. +</p><!--l. 9671--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinM</span><span +class="cmtt-9"> </span></span><a + id="dx1-42075"></a> <span +class="cmtt-10">\glsxtrLatinM </span></div><hr> +</p><!--l. 9673--><p class="noindent" > +A mini-rule that just covers ‘M’ but includes the subscript M. +</p><!--l. 9677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinN</span><span +class="cmtt-9"> </span></span><a + id="dx1-42076"></a> <span +class="cmtt-10">\glsxtrLatinN </span></div><hr> +</p><!--l. 9679--><p class="noindent" > +A mini-rule that just covers ‘N’ but includes the sub- and superscript N. +</p><!--l. 9683--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinO</span><span +class="cmtt-9"> </span></span><a + id="dx1-42077"></a> <span +class="cmtt-10">\glsxtrLatinO </span></div><hr> +</p><!--l. 9685--><p class="noindent" > +A mini-rule that just covers ‘O’ but includes the sub- and superscript O. +</p><!--l. 9689--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinP</span><span +class="cmtt-9"> </span></span><a + id="dx1-42078"></a> <span +class="cmtt-10">\glsxtrLatinP </span></div><hr> +</p><!--l. 9691--><p class="noindent" > +A mini-rule that just covers ‘P’ but includes the subscript P. +</p><!--l. 9695--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinS</span><span +class="cmtt-9"> </span></span><a + id="dx1-42079"></a> <span +class="cmtt-10">\glsxtrLatinS </span></div><hr> +</p><!--l. 9697--><p class="noindent" > +A mini-rule that just covers ‘S’ but includes the subscript S. +</p><!--l. 9701--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinT</span><span +class="cmtt-9"> </span></span><a + id="dx1-42080"></a> <span +class="cmtt-10">\glsxtrLatinT </span></div><hr> +</p><!--l. 9703--><p class="noindent" > +A mini-rule that just covers ‘T’ but includes the subscript T. +</p><!--l. 9707--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinX</span><span +class="cmtt-9"> </span></span><a + id="dx1-42081"></a> <span +class="cmtt-10">\glsxtrLatinX </span></div><hr> +</p><!--l. 9709--><p class="noindent" > +A mini-rule that just covers ‘X’ but includes the subscript X. +</p><!--l. 9713--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinEszettSs</span><span +class="cmtt-9"> </span></span><a + id="dx1-42082"></a> <span +class="cmtt-10">\glsxtrLatinEszettSs </span></div><hr> +</p><!--l. 9715--><p class="noindent" > +A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by short ‘s’ + + + +equivalent to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘ss’.) +</p><!--l. 9720--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinEszettSz</span><span +class="cmtt-9"> </span></span><a + id="dx1-42083"></a> <span +class="cmtt-10">\glsxtrLatinEszettSz </span></div><hr> +</p><!--l. 9722--><p class="noindent" > +A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by ‘z’ equivalent +to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘sz’.) +</p><!--l. 9727--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinEth</span><span +class="cmtt-9"> </span></span><a + id="dx1-42084"></a> <span +class="cmtt-10">\glsxtrLatinEth </span></div><hr> +</p><!--l. 9729--><p class="noindent" > +A mini-rule for eth (Ð) so you don’t need to remember the Unicode values. +</p><!--l. 9733--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinThorn</span><span +class="cmtt-9"> </span></span><a + id="dx1-42085"></a> <span +class="cmtt-10">\glsxtrLatinThorn </span></div><hr> +</p><!--l. 9735--><p class="noindent" > +A mini-rule for thorn (þ) so you don’t need to remember the Unicode values. +</p><!--l. 9739--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinAELigature</span><span +class="cmtt-9"> </span></span><a + id="dx1-42086"></a> <span +class="cmtt-10">\glsxtrLatinAELigature </span></div><hr> +</p><!--l. 9741--><p class="noindent" > +A mini-rule for ae-ligature (æ) so you don’t need to remember the Unicode +values. +</p><!--l. 9745--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinOELigature</span><span +class="cmtt-9"> </span></span><a + id="dx1-42087"></a> <span +class="cmtt-10">\glsxtrLatinOELigature </span></div><hr> +</p><!--l. 9747--><p class="noindent" > +A mini-rule for oe-ligature (œ) so you don’t need to remember the Unicode +values. +</p><!--l. 9751--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinOslash</span><span +class="cmtt-9"> </span></span><a + id="dx1-42088"></a> <span +class="cmtt-10">\glsxtrLatinOslash </span></div><hr> +</p><!--l. 9753--><p class="noindent" > +A mini-rule for ‘Ø’ so you don’t need to remember the Unicode values. +</p><!--l. 9757--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinLslash</span><span +class="cmtt-9"> </span></span><a + id="dx1-42089"></a> <span +class="cmtt-10">\glsxtrLatinLslash </span></div><hr> +</p><!--l. 9759--><p class="noindent" > +A mini-rule for ‘Ł’ so you don’t need to remember the Unicode values. +</p><!--l. 9763--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinWynn</span><span +class="cmtt-9"> </span></span><a + id="dx1-42090"></a> <span +class="cmtt-10">\glsxtrLatinWynn </span></div><hr> +</p><!--l. 9765--><p class="noindent" > +A mini-rule for wynn (Ƿ) so you don’t need to remember the Unicode values. +</p><!--l. 9769--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinInsularG</span><span +class="cmtt-9"> </span></span><a + id="dx1-42091"></a> <span +class="cmtt-10">\glsxtrLatinInsularG </span></div><hr> +</p><!--l. 9771--><p class="noindent" > +A mini-rule for insular G (Ᵹ) so you don’t need to remember the Unicode +values. +</p><!--l. 9775--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinSchwa</span><span +class="cmtt-9"> </span></span><a + id="dx1-42092"></a> <span +class="cmtt-10">\glsxtrLatinSchwa </span></div><hr> +</p><!--l. 9777--><p class="noindent" > +A mini-rule that just covers schwa (Ə) but includes the subscript schwa. (Not used in +any of the provided Latin rule blocks described above.) +</p><!--l. 9782--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrLatinAA</span><span +class="cmtt-9"> </span></span><a + id="dx1-42093"></a> <span +class="cmtt-10">\glsxtrLatinAA </span></div><hr> +</p><!--l. 9784--><p class="noindent" > +A mini-rule for ‘Å’ so you don’t need to remember the Unicode values. (Not used in +any of the provided Latin rule blocks described above.) +</p><!--l. 9789--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathGreekIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42094"></a> <span +class="cmtt-10">\glsxtrMathGreekIrules </span></div><hr> +</p><!--l. 9791--><p class="noindent" > +A rule block for mathematical Greek (<span +class="cmtt-10">\alpha</span><a + id="dx1-42095"></a>, <span +class="cmtt-10">\beta</span><a + id="dx1-42096"></a> etc) and upright Greek +(<span +class="cmtt-10">\upalpha</span><a + id="dx1-42097"></a>, etc, from the <span +class="cmss-10">upgreek</span><a + id="dx1-42098"></a> package) characters that includes digamma +(<span +class="cmtt-10">\digamma</span><a + id="dx1-42099"></a> and <span +class="cmtt-10">\Digamma</span><a + id="dx1-42100"></a>) between epsilon and zeta. The upright and italic versions +are gathered together into the same letter group. + + + +</p><!--l. 9798--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathGreekIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42101"></a> <span +class="cmtt-10">\glsxtrMathGreekIIrules </span></div><hr> +</p><!--l. 9800--><p class="noindent" > +As <span +class="cmtt-10">\glsxtrMathGreekIrules </span>but doesn’t include digamma. +</p><!--l. 9803--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathUpGreekIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42102"></a> <span +class="cmtt-10">\glsxtrMathUpGreekIrules </span></div><hr> +</p><!--l. 9805--><p class="noindent" > +A rule block for upright Greek (<span +class="cmtt-10">\upalpha</span><a + id="dx1-42103"></a>, etc, from the <span +class="cmss-10">upgreek</span><a + id="dx1-42104"></a> package) +characters that includes digamma (<span +class="cmtt-10">\digamma</span><a + id="dx1-42105"></a> and <span +class="cmtt-10">\Digamma</span><a + id="dx1-42106"></a>) between epsilon and +zeta. +</p><!--l. 9811--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathUpGreekIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42107"></a> <span +class="cmtt-10">\glsxtrMathUpGreekIIrules </span></div><hr> +</p><!--l. 9813--><p class="noindent" > +A rule block for upright Greek (<span +class="cmtt-10">\upalpha</span><a + id="dx1-42108"></a>, etc, from the <span +class="cmss-10">upgreek</span><a + id="dx1-42109"></a> package) that +doesn’t include digamma. +</p><!--l. 9817--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicGreekIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42110"></a> <span +class="cmtt-10">\glsxtrMathItalicGreekIrules </span></div><hr> +</p><!--l. 9819--><p class="noindent" > +A rule block for mathematical Greek (<span +class="cmtt-10">\alpha</span><a + id="dx1-42111"></a>, <span +class="cmtt-10">\Alpha</span><a + id="dx1-42112"></a>, etc) characters that includes +digamma (<span +class="cmtt-10">\diagamma</span><a + id="dx1-42113"></a> and <span +class="cmtt-10">\Digamma</span><a + id="dx1-42114"></a>) between epsilon and zeta. Note that even +though the upper case <span +class="cmtt-10">\Delta </span>etc are actually rendered upright by <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span>, +<a + id="dx1-42115"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span>’s</a> interpreter treats them as italic to help keep them close to the lower case +versions. +</p><!--l. 9827--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicGreekIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42116"></a> <span +class="cmtt-10">\glsxtrMathItalicGreekIIrules </span></div><hr> +</p><!--l. 9829--><p class="noindent" > +A rule block for mathematical Greek (<span +class="cmtt-10">\alpha</span><a + id="dx1-42117"></a>, <span +class="cmtt-10">\Alpha</span><a + id="dx1-42118"></a>, etc) characters that doesn’t +include digamma. +</p><!--l. 9833--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicUpperGreekIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42119"></a> <span +class="cmtt-10">\glsxtrMathItalicUpperGreekIrules</span> +</div><hr> +</p><!--l. 9835--><p class="noindent" > +A rule block for upper case mathematical Greek (<span +class="cmtt-10">\Alpha</span><a + id="dx1-42120"></a>, <span +class="cmtt-10">\Beta</span><a + id="dx1-42121"></a>, etc) characters that +includes digamma (<span +class="cmtt-10">\Digamma</span><a + id="dx1-42122"></a>) between epsilon and zeta. +</p><!--l. 9840--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicUpperGreekIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42123"></a> <span +class="cmtt-10">\glsxtrMathItalicUpperGreekIIrules</span> +</div><hr> +</p><!--l. 9842--><p class="noindent" > +A rule block for upper case mathematical Greek (<span +class="cmtt-10">\Alpha</span><a + id="dx1-42124"></a>, <span +class="cmtt-10">\Beta</span><a + id="dx1-42125"></a>, etc) characters that +doesn’t include digamma. +</p><!--l. 9846--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicLowerGreekIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42126"></a> <span +class="cmtt-10">\glsxtrMathItalicLowerGreekIrules</span> +</div><hr> +</p><!--l. 9848--><p class="noindent" > +A rule block for lower case mathematical Greek (<span +class="cmtt-10">\alpha</span><a + id="dx1-42127"></a>, <span +class="cmtt-10">\beta</span><a + id="dx1-42128"></a>, etc) characters that +includes digamma (<span +class="cmtt-10">\digamma</span><a + id="dx1-42129"></a>) between epsilon and zeta. +</p><!--l. 9853--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicLowerGreekIIrules</span><span +class="cmtt-9"> </span></span><a + id="dx1-42130"></a> <span +class="cmtt-10">\glsxtrMathItalicLowerGreekIIrules</span> +</div><hr> +</p><!--l. 9855--><p class="noindent" > +A rule block for lower case mathematical Greek (<span +class="cmtt-10">\alpha</span><a + id="dx1-42131"></a>, <span +class="cmtt-10">\beta</span><a + id="dx1-42132"></a>, etc) characters that +doesn’t include digamma. +</p><!--l. 9859--><p class="indent" > Additionally, there are commands in the form <span +class="cmtt-10">\glsxtrUpAlpha</span>, <span +class="cmtt-10">\glsxtrUpBeta</span> +etc and <span +class="cmtt-10">\glsxtrMathItalicAlpha</span>, <span +class="cmtt-10">\glsxtrMathItalicBeta </span>etc that just cover the +upper and lower case forms of a special Greek character (<span +class="cmtt-10">\Upalpha</span>, <span +class="cmtt-10">\upalpha </span>etc + + + +and <span +class="cmtt-10">\Alpha</span>, <span +class="cmtt-10">\alpha </span>etc) as well as the following: +</p><!--l. 9866--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicPartial</span><span +class="cmtt-9"> </span></span><a + id="dx1-42133"></a> <span +class="cmtt-10">\glsxtrMathItalicPartial </span></div><hr> +</p><!--l. 9868--><p class="noindent" > +The partial derivative symbol (<span +class="cmmi-10">∂</span>). +</p><!--l. 9871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrMathItalicNabla</span><span +class="cmtt-9"> </span></span><a + id="dx1-42134"></a> <span +class="cmtt-10">\glsxtrMathItalicNabla </span></div><hr> +</p><!--l. 9873--><p class="noindent" > +The nabla symbol (<span +class="cmsy-10">∇</span>). +</p><!--l. 9877--><p class="noindent" > +</p> +<!--l. 9877--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.4 </span> <a + id="supplementarycommands"></a>Supplementary Commands</h3> +<!--l. 9879--><p class="noindent" >These commands are provided by <span +class="cmss-10">glossaries-extra </span>for use with <a + id="dx1-43001"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>. +</p><!--l. 9882--><p class="indent" > The information provided with <span +class="cmtt-10">\GlsXtrLoadResources </span>is written to the <span +class="cmtt-10">.aux </span>file +using </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\protected@write\@auxout</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsxtrresourceinit</span><span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">information</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> where ⟨<span +class="cmti-10">information</span>⟩ is the information to pass to <a + id="dx1-43002"></a><span +class="cmtt-10">bib2gls</span>. The command in the +second argument +<!--l. 9889--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrresourceinit</span><span +class="cmtt-9"> </span></span><a + id="dx1-43003"></a> <span +class="cmtt-10">\glsxtrresourceinit </span></div><hr> +</p><!--l. 9891--><p class="noindent" > +may be used to temporarily redefine commands before the information is written to +the file. This does nothing by default, but may be redefined to allow the use of short +commands for convenience. For example, with: + + + +</p> + <div class="verbatim" id="verbatim-229"> +\renewcommand{\glsxtrresourceinit}{\let\u\glshex} +</div> +<!--l. 9898--><p class="nopar" > you can just use, for example, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\u</span><span +class="cmtt-10"> E6</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\string\uE6</span></span></span> in the custom rule. +This redefinition of <span +class="cmtt-10">\u </span>is scoped so its original definition is restored after the write +operation. +</p><!--l. 9903--><p class="indent" > If you have multiple resource commands and you want a default set of options you +can supply them in the definition of: +</p><!--l. 9905--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrDefaultResourceOptions</span><span +class="cmtt-9"> </span></span><a + id="dx1-43004"></a> <span +class="cmtt-10">\GlsXtrDefaultResourceOptions </span></div><hr> +</p><!--l. 9907--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-230"> +\renewcommand{\GlsXtrDefaultResourceOptions}{selection=all} +</div> +<!--l. 9911--><p class="nopar" > This should be done before the resource commands. +</p><!--l. 9914--><p class="indent" > It’s possible to specify label prefixes. For example, modifying the earlier +example: + + + +</p> + <div class="verbatim" id="verbatim-231"> +\documentclass{article} + <br />\usepackage[record,style=indexgroup]{glossaries-extra} + <br />\setabbreviationstyle{long-short-desc} + <br />\GlsXtrLoadResources + <br /> [src={abbrvs},sort={letter-nocase},type=main, + <br />  label-prefix={abr.}, + <br />  group={Abbreviations}] + <br />\GlsXtrLoadResources + <br /> [src={symbols},sort={use},type=main, + <br />  label-prefix={sym.}, + <br />  group={Symbols}] + <br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main + <br />  label-prefix={trm.}] + <br />\begin{document} + <br />\gls{trm.bird} + <br />\gls{abr.shtml} + <br />\gls{sym.M} + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 9945--><p class="nopar" > If you do something like this, you may find it more convenient to define custom +commands that set the prefix. For example: + + + +</p> + <div class="verbatim" id="verbatim-232"> +\newcommand*{\sym}[2][]{\gls[#1]{sym.#2}} +</div> +<!--l. 9950--><p class="nopar" > The problem with this is that the custom command <span +class="cmtt-10">\sym </span>doesn’t allow for modifiers +(such as <span +class="cmtt-10">\gls* </span>or <span +class="cmtt-10">\gls+</span>). Instead you can use: +</p><!--l. 9954--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewgls</span><span +class="cmtt-9"> </span></span><a + id="dx1-43005"></a> <span +class="cmtt-10">\glsxtrnewgls[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9956--><p class="noindent" > +which defines the command ⟨<span +class="cmti-10">cs</span>⟩ that behaves like </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\gls</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">default</span><span +class="cmitt-10"> options</span>⟩<span +class="cmtt-10">,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span><span +class="cmsy-10">{</span>⟨<span +class="cmitt-10">prefix</span>⟩⟨<span +class="cmitt-10">label</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">]</span> +</div> +</div> For example: + + + + <div class="verbatim" id="verbatim-233"> +\glsxtrnewgls{sym.}{\sym} +</div> +<!--l. 9964--><p class="nopar" > or (to default to no hyperlinks) + + + +</p> + <div class="verbatim" id="verbatim-234"> +\glsxtrnewgls[hyper=false]{sym.}{\sym} +</div> +<!--l. 9968--><p class="nopar" > now you can use <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\sym+{M}</span></span></span> to behave like <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls+{sym.M}</span></span></span>. +</p><!--l. 9971--><p class="indent" > If you also want the plural and first letter upper case versions you can +use +</p><!--l. 9973--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewglslike</span><span +class="cmtt-9"> </span></span><a + id="dx1-43006"></a> <span +class="cmtt-10">\glsxtrnewglslike[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">\gls-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\glspl-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\Gls-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\Glspl-like cs</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 9976--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-235"> +\glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl} +</div> +<!--l. 9980--><p class="nopar" > For the all caps versions: +</p><!--l. 9982--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewGLSlike</span><span +class="cmtt-9"> </span></span><a + id="dx1-43007"></a> <span +class="cmtt-10">\glsxtrnewGLSlike[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">\GLS-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\GLSpl-like cs</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 9985--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-236"> +\glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl} +</div> +<!--l. 9989--><p class="nopar" > +</p><!--l. 9991--><p class="indent" > There’s an analogous command for <span +class="cmtt-10">\rgls</span>: +</p><!--l. 9992--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewrgls</span><span +class="cmtt-9"> </span></span><a + id="dx1-43008"></a> <span +class="cmtt-10">\glsxtrnewrgls[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 9994--><p class="noindent" > +and for <span +class="cmtt-10">\rgls</span>, <span +class="cmtt-10">\rglspl</span>, <span +class="cmtt-10">\rGls </span>and <span +class="cmtt-10">\rGlspl</span>: +</p><!--l. 9997--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewrglslike</span><span +class="cmtt-9"> </span></span><a + id="dx1-43009"></a> <span +class="cmtt-10">\glsxtrnewrglslike[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">\rgls-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\rglspl-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\rGls-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\rGlspl-like cs</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10001--><p class="noindent" > +and for the all caps: +</p><!--l. 10003--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrnewrGLSlike</span><span +class="cmtt-9"> </span></span><a + id="dx1-43010"></a> <span +class="cmtt-10">\glsxtrnewrGLSlike[</span>⟨<span +class="cmitt-10">default options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">\rGLS-like cs</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">\rGLSpl-like cs</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10006--><p class="noindent" > +</p><!--l. 10008--><p class="indent" > If you provide your own custom command with just <span +class="cmtt-10">\newcommand </span>that +has syntax that starts with <span +class="cmtt-10">[</span>⟨<span +class="cmti-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>, then you can notify <a + id="dx1-43011"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> +using: +</p><!--l. 10011--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtridentifyglslike</span><span +class="cmtt-9"> </span></span><a + id="dx1-43012"></a> <span +class="cmtt-10">\glsxtridentifyglslike{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">command</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10013--><p class="noindent" > +This writes information to the <span +class="cmtt-10">.aux </span>file so that <a + id="dx1-43013"></a><span +class="cmtt-10">bib2gls </span>can search for the given +command when looking for dependencies. +</p><!--l. 10018--><p class="indent" > Another possibility is to set up known label prefixes, with each one identified +by: +</p><!--l. 10020--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtraddlabelprefix</span><span +class="cmtt-9"> </span></span><a + id="dx1-43014"></a> <span +class="cmtt-10">\glsxtraddlabelprefix{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10022--><p class="noindent" > +These should be listed in order of precedence. Since no entries are defined on the first +<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run, the final prefix should be the fallback. You can prepend a prefix to the +list using: +</p><!--l. 10026--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrprependlabelprefix</span><span +class="cmtt-9"> </span></span><a + id="dx1-43015"></a> <span +class="cmtt-10">\glsxtrprependlabelprefix{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10028--><p class="noindent" > +which gives it the highest order of precedence. +</p><!--l. 10031--><p class="indent" > The ⟨<span +class="cmti-10">prefix</span>⟩ argument may be empty. You can clear the list with: +</p><!--l. 10033--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrclearlabelprefixes</span><span +class="cmtt-9"> </span></span><a + id="dx1-43016"></a> <span +class="cmtt-10">\glsxtrclearlabelprefixes </span></div><hr> +</p><!--l. 10035--><p class="noindent" > +</p><!--l. 10037--><p class="indent" > You can test if a prefix is already in the list with: + + + +</p><!--l. 10038--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifinlabelprefixlist</span><span +class="cmtt-9"> </span></span><a + id="dx1-43017"></a> <span +class="cmtt-10">\glsxtrifinlabelprefixlist{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10040--><p class="noindent" > +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. +</p><!--l. 10047--><p class="indent" > With the list of possible prefixes set up (including an empty prefix if necessary), +you can use: +</p><!--l. 10049--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dgls</span><span +class="cmtt-9"> </span></span><a + id="dx1-43018"></a> <span +class="cmtt-10">\dgls[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10051--><p class="noindent" > +which behaves like </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\gls[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]</span><span +class="cmsy-10">{</span>⟨<span +class="cmitt-10">prefix</span>⟩⟨<span +class="cmitt-10">label</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">]</span> +</div> +</div> where ⟨<span +class="cmti-10">prefix</span>⟩ is the first prefix in the list such that ⟨<span +class="cmti-10">prefix</span>⟩⟨<span +class="cmti-10">label</span>⟩ matches a defined +entry (or the last entry in the prefix list if none match). +<!--l. 10060--><p class="indent" > There are also analogous commands for the plural and case-changing +versions: +</p><!--l. 10062--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dglspl</span><span +class="cmtt-9"> </span></span><a + id="dx1-43019"></a> <span +class="cmtt-10">\dglspl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10064--><p class="noindent" > +(uses <span +class="cmtt-10">\glspl</span>), +</p><!--l. 10066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dGls</span><span +class="cmtt-9"> </span></span><a + id="dx1-43020"></a> <span +class="cmtt-10">\dGls[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10068--><p class="noindent" > +(uses <span +class="cmtt-10">\Gls</span>), +</p><!--l. 10070--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dGlspl</span><span +class="cmtt-9"> </span></span><a + id="dx1-43021"></a> <span +class="cmtt-10">\dGlspl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10072--><p class="noindent" > +(uses <span +class="cmtt-10">\Glspl</span>), +</p><!--l. 10074--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dGLS</span><span +class="cmtt-9"> </span></span><a + id="dx1-43022"></a> <span +class="cmtt-10">\dGLS[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10076--><p class="noindent" > +(uses <span +class="cmtt-10">\GLS</span>), +</p><!--l. 10078--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dGLSpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-43023"></a> <span +class="cmtt-10">\dGLSpl[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10080--><p class="noindent" > +(uses <span +class="cmtt-10">\GLSpl</span>), +</p><!--l. 10082--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dglslink</span><span +class="cmtt-9"> </span></span><a + id="dx1-43024"></a> <span +class="cmtt-10">\dglslink[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10084--><p class="noindent" > +(uses <span +class="cmtt-10">\glslink</span>), +</p><!--l. 10086--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\dglsdisp</span><span +class="cmtt-9"> </span></span><a + id="dx1-43025"></a> <span +class="cmtt-10">\dglsdisp[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10088--><p class="noindent" > +(uses <span +class="cmtt-10">\glsdisp</span>). +</p><!--l. 10091--><p class="indent" > These commands are essentially provided for a mixture of single and dual entries. +Suppose the file <span +class="cmtt-10">entries.bib </span>contains: + + + +</p> + <div class="verbatim" id="verbatim-237"> +@index{duck} + <br />@dualindexabbreviation{svm, + <br />  short={SVM}, + <br />  long={support vector machine} + <br />} + <br />@dualindexsymbol{pi, + <br />  symbol={\ensuremath{\pi}}, + <br />  description={ratio of a circle's circumference to its + <br />    diameter} + <br />} +</div> +<!--l. 10104--><p class="nopar" > and suppose the document code is: + + + +</p> + <div class="verbatim" id="verbatim-238"> +\documentclass{article} + <br />\usepackage{hyperref} + <br />\usepackage[record,abbreviations,symbols]{glossaries-extra} + <br />\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% + <br /> \longnewglossaryentry*{#1}{name={#3},category={symbol}, + <br />   type={symbols},symbol={#4},#2}{#5}% + <br />} + <br />\GlsXtrLoadResources[src=entries] + <br />\begin{document} + <br />First use: \gls{duck}, \gls{svm}, \gls{pi}. + <br />Next use: \gls{duck}, \gls{svm}, \gls{pi}. + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 10123--><p class="nopar" > This uses the default empty primary prefix and <span +class="cmtt-10">dual.</span> for the dual prefix, so +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{svm}</span></span></span> is referencing the primary entry, which is (essentially) an <span +class="cmtt-10">@index </span>type +not an abbreviation. It therefore doesn’t follow the abbreviation style, and +it also hyperlinks to the index not to the list of abbreviations. Similarly +for <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{pi}</span></span></span>, which references the primary <span +class="cmtt-10">@index </span>entry rather than the +symbol. +</p><!--l. 10132--><p class="indent" > What’s really needed is: + + + +</p> + <div class="verbatim" id="verbatim-239"> +\gls{duck}, \gls{dual.svm}, \gls{dual.pi}. +</div> +<!--l. 10135--><p class="nopar" > or with + + + +</p> + <div class="verbatim" id="verbatim-240"> +\GlsXtrLoadResources[src=entries, + <br /> label-prefix={idx.}, + <br /> dual-prefix={} + <br />] +</div> +<!--l. 10142--><p class="nopar" > then only the entries without a dual need a prefix: + + + +</p> + <div class="verbatim" id="verbatim-241"> +\gls{idx.duck}, \gls{svm}, \gls{pi}. +</div> +<!--l. 10146--><p class="nopar" > Using <span +class="cmtt-10">\glsxtrnewglslike</span>, as earlier, this can be simplified to: + + + +</p> + <div class="verbatim" id="verbatim-242"> +\idx{duck}, \gls{svm}, \gls{pi}. +</div> +<!--l. 10150--><p class="nopar" > but this requires remembering which terms have duals. +</p><!--l. 10153--><p class="indent" > An alternative is to use <span +class="cmtt-10">\dgls </span>instead: + + + +</p> + <div class="verbatim" id="verbatim-243"> +\documentclass{article} + <br />\usepackage{hyperref} + <br />\usepackage[record,abbreviations,symbols]{glossaries-extra} + <br />\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% + <br /> \longnewglossaryentry*{#1}{name={#3},category={symbol}, + <br />   type={symbols},symbol={#4},#2}{#5}% + <br />} + <br />\GlsXtrLoadResources[src=entries] + <br />\glsxtraddlabelprefix{dual.} + <br />\glsxtraddlabelprefix{} + <br />\begin{document} + <br />First use: \dgls{duck}, \dgls{svm}, \dgls{pi}. + <br />Next use: \dgls{duck}, \dgls{svm}, \dgls{pi}. + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 10174--><p class="nopar" > On the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> call (when the <span +class="cmtt-10">.glstex </span>file doesn’t exist), neither +<span +class="cmtt-10">dual.svm </span>nor <span +class="cmtt-10">svm </span>exists, so <span +class="cmtt-10">\dgls </span>uses the last prefix (which is empty in this +case). This means that on the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run, <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls{svm}</span></span></span> behaves like +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{svm}</span></span></span>, which adds a record for the primary <span +class="cmtt-10">svm </span>entry. The default +primary-dual dependency means that this will cause both the primary (<span +class="cmtt-10">svm</span>) and +dual (<span +class="cmtt-10">dual.svm</span>) entry to be selected. The location will be added to the +primary entry’s location list, unless overridden by resource options, such as +<span +class="cmtt-10">combine-dual-locations</span>. +</p><!--l. 10186--><p class="indent" > Once <a + id="dx1-43026"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> has been run and the <span +class="cmtt-10">.glstex </span>file exists, then <span +class="cmtt-10">dual.svm </span>exists. +So <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls{svm}</span></span></span> will again first try <span +class="cmtt-10">dual.svm </span>(as <span +class="cmtt-10">dual. </span>is the first in the +list of label prefixes). That now exists, so <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls{svm}</span></span></span> now behaves like +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{dual.svm}</span></span></span>, which follows the abbreviation style and hyperlinks to the list of +abbreviations. +</p><!--l. 10194--><p class="indent" > Similarly for the index-symbol combination <span +class="cmtt-10">dual.pi </span>and <span +class="cmtt-10">pi</span>. In the case of +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls{duck}</span></span></span>, the label <span +class="cmtt-10">dual.duck </span>never exists, so that’s never selected. The empty +prefix is the only one that matches, so <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls{duck}</span></span></span> always behaves like +<span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{duck}</span></span></span>. +</p><!--l. 10200--><p class="indent" > If you haven’t used <span +class="cmtt-10">combine-dual-locations </span>an extra <a + id="dx1-43027"></a><span +class="cmtt-10">bib2gls</span>+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run +may be required to correct the location lists. +</p><!--l. 10204--><p class="indent" > If you change the label prefixes, remember to update the corresponding +<span +class="cmtt-10">\glsxtraddlabelprefix{</span>⟨<span +class="cmti-10">prefix</span>⟩<span +class="cmtt-10">}</span>. If no prefixes have been added to the list (or if the +list is cleared), just an empty prefix is assumed. +</p><!--l. 10209--><p class="indent" > As from version 1.8, <a + id="dx1-43028"></a><span +class="cmtt-10">bib2gls </span>provides hooks that identify the label prefixes in the + + + +<span +class="cmtt-10">.glstex </span>file: </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\bibglstertiaryprefixlabel</span><a + id="dx1-43029"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<br /><span +class="cmtt-10">\bibglsdualprefixlabel</span><a + id="dx1-43030"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +<br /><span +class="cmtt-10">\bibglsprimaryprefixlabel</span><a + id="dx1-43031"></a><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">prefix</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> These do nothing by default, but they can be defined before the resource file is +loaded to set up the prefix list. For example: + + + + <div class="verbatim" id="verbatim-244"> +\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}} + <br />\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}} + <br />\GlsXtrLoadResources[src=entries] +</div> +<!--l. 10223--><p class="nopar" > Remember that this will only have an effect once the <span +class="cmtt-10">.glstex </span>file has been created. +The prefix list will be empty on the first run (which is treated as a single empty +prefix). If this isn’t a suitable fallback, it may be necessary to add one after all the +resource commands: + + + +</p> + <div class="verbatim" id="verbatim-245"> +\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}} + <br />\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}} + <br />\GlsXtrLoadResources[src=entries,label-prefix={idx.}] + <br />\glsxtraddlabelprefix{idx.} +</div> +<!--l. 10234--><p class="nopar" > Although this rather defeats the purpose of using the hooks as you still have to keep +track of the fallback prefix. +</p><!--l. 10238--><p class="noindent" > +</p> +<!--l. 10238--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.5 </span> <a + id="sec:recordcount"></a>Record Counting</h3> +<!--l. 10241--><p class="noindent" >As from version 1.1 of <a + id="dx1-44001"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>, you can save the total record count for each entry by +invoking <a + id="dx1-44002"></a><span +class="cmtt-10">bib2gls </span>with the <span +class="cmtt-10">--record-count </span>or <span +class="cmtt-10">--record-count-unit </span>switches. +These options will ensure that when each entry is written to the <span +class="cmtt-10">.glstex </span>file +<a + id="dx1-44003"></a><span +class="cmtt-10">bib2gls </span>will additionally set the following internal fields for that entry: +</p> + <ul class="itemize1"> + <li class="itemize"><span +class="cmtt-10">recordcount</span>: set to the total number of records found for the entry; + </li> + <li class="itemize"><span +class="cmtt-10">recordcount.</span>⟨<span +class="cmitt-10">counter</span>⟩: set to the total number of records found for the + entry for the given counter.</li></ul> +<!--l. 10253--><p class="noindent" >If <span +class="cmtt-10">--record-count-unit </span>is used then additionally: </p> + <ul class="itemize1"> + <li class="itemize"><span +class="cmtt-10">recordcount.</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">.</span>⟨<span +class="cmitt-10">location</span>⟩: set to the total number of records + found for the entry for the given counter with the given location.</li></ul> +<!--l. 10259--><p class="noindent" >Only use the unit counting option if the locations don’t contain any special characters. If +you really need it with locations that may contain formatting commands, then you +can try redefining: +</p><!--l. 10262--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdetoklocation</span><span +class="cmtt-9"> </span></span><a + id="dx1-44004"></a> <span +class="cmtt-10">\glsxtrdetoklocation{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10264--><p class="noindent" > +so that it detokenizes ⟨<span +class="cmti-10">location</span>⟩ but take care when using <span +class="cmtt-10">\GlsXtrLocationRecordCount</span> +with commands like <span +class="cmtt-10">\thepage </span>as they can end up becoming detokenized too +early. +</p><!--l. 10270--><p class="indent" > Note that the record count includes locations that <a + id="dx1-44005"></a><span +class="cmtt-10">bib2gls </span>discards, such as +ignored records, duplicates and partial duplicates. It doesn’t include cross-reference +records. For example, if <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{bird}</span></span></span> is used twice on page 1, once on page 2 and +fours times on page 3, and <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls[counter=section]{bird}</span></span></span> is used once in + + + +section 3, then the total record count (stored in the <span +class="cmtt-10">recordcount </span>field) is +2 + 1 + 4 + 1 = 8, the total for the <span +class="cmtt-10">page </span>counter (stored in the <span +class="cmtt-10">recordcount.page</span> +field) is 2 + 1 + 4 = 7, and the total for the <span +class="cmtt-10">section </span>counter (stored in the +<span +class="cmtt-10">recordcount.section </span>field) is 1. +</p><!--l. 10282--><p class="indent" > With the unit counting on as well, the field <span +class="cmtt-10">recordcount.page.1 </span>is set to +2, <span +class="cmtt-10">recordcount.page.2 </span>is set to 1, <span +class="cmtt-10">recordcount.page.3 </span>is set to 4 and +<span +class="cmtt-10">recordcount.section.3 </span>is set to 1. +</p><!--l. 10287--><p class="indent" > You can access these fields using the following commands which will expand to +the field value if set or to 0 if unset: +</p><!--l. 10289--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrTotalRecordCount</span><span +class="cmtt-9"> </span></span><a + id="dx1-44006"></a> <span +class="cmtt-10">\GlsXtrTotalRecordCount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10291--><p class="noindent" > +This expands to the total record count for the entry given by ⟨<span +class="cmti-10">label</span>⟩. + + + +</p> + <div class="verbatim" id="verbatim-246"> +\GlsXtrTotalRecordCount{bird} +</div> +<!--l. 10296--><p class="nopar" > expands to 8. +</p><!--l. 10299--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrRecordCount</span><span +class="cmtt-9"> </span></span><a + id="dx1-44007"></a> <span +class="cmtt-10">\GlsXtrRecordCount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10301--><p class="noindent" > +This expands to the counter total for the entry given by ⟨<span +class="cmti-10">label</span>⟩ where ⟨<span +class="cmti-10">counter</span>⟩ is the +counter name. For example: + + + +</p> + <div class="verbatim" id="verbatim-247"> +\GlsXtrRecordCount{bird}{page} +</div> +<!--l. 10307--><p class="nopar" > expands to 7 and + + + +</p> + <div class="verbatim" id="verbatim-248"> +\GlsXtrRecordCount{bird}{section} +</div> +<!--l. 10311--><p class="nopar" > expands to 1. +</p><!--l. 10314--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLocationRecordCount</span><span +class="cmtt-9"> </span></span><a + id="dx1-44008"></a> <span +class="cmtt-10">\GlsXtrLocationRecordCount{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">location</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10316--><p class="noindent" > +This expands to the total for the given location. For example + + + +</p> + <div class="verbatim" id="verbatim-249"> +\GlsXtrLocationRecordCount{bird}{page}{3} +</div> +<!--l. 10320--><p class="nopar" > expands to 4. Be careful about using <span +class="cmtt-10">\thepage </span>in the ⟨<span +class="cmti-10">location</span>⟩ part. Remember that +due to <span class="TEX">T<span +class="E">E</span>X</span>’s asynchronous output routine, <span +class="cmtt-10">\thepage </span>may not be correct. +</p><!--l. 10325--><p class="indent" > There are commands analogous to the entry counting commands like <span +class="cmtt-10">\cgls</span> +and <span +class="cmtt-10">\cglsformat </span>that are triggered by the record count. These are listed +below. +</p><!--l. 10329--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rgls</span><span +class="cmtt-9"> </span></span><a + id="dx1-44009"></a> <span +class="cmtt-10">\rgls</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10331--><p class="noindent" > +</p><!--l. 10332--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rglspl</span><span +class="cmtt-9"> </span></span><a + id="dx1-44010"></a> <span +class="cmtt-10">\rglspl</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10334--><p class="noindent" > +</p><!--l. 10335--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGls</span><span +class="cmtt-9"> </span></span><a + id="dx1-44011"></a> <span +class="cmtt-10">\rGls</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10337--><p class="noindent" > +</p><!--l. 10338--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGlspl</span><span +class="cmtt-9"> </span></span><a + id="dx1-44012"></a> <span +class="cmtt-10">\rGlspl</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10340--><p class="noindent" > +</p><!--l. 10341--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGLS</span><span +class="cmtt-9"> </span></span><a + id="dx1-44013"></a> <span +class="cmtt-10">\rGLS</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10343--><p class="noindent" > +</p><!--l. 10344--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGLSpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-44014"></a> <span +class="cmtt-10">\rGLSpl</span>⟨<span +class="cmitt-10">modifier</span>⟩<span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10346--><p class="noindent" > +These commands check the <a +href="#catattr.recordcount"><span +class="cmss-10">recordcount</span></a><a + id="dx1-44015"></a> attribute which, if set, should be a number. +For example: + + + +</p> + <div class="verbatim" id="verbatim-250"> +\glssetcategoryattribute{abbreviation}{recordcount}{1} +</div> +<!--l. 10351--><p class="nopar" > For convenience, you can use +</p><!--l. 10353--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetRecordCountAttribute</span><span +class="cmtt-9"> </span></span><a + id="dx1-44016"></a> <span +class="cmtt-10">\GlsXtrSetRecordCountAttribute{</span>⟨<span +class="cmitt-10">category</span> +<span +class="cmitt-10">list</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10355--><p class="noindent" > +to set the <a +href="#catattr.recordcount"><span +class="cmss-10">recordcount</span></a><a + id="dx1-44017"></a> attribute to ⟨<span +class="cmti-10">n</span>⟩ for all the categories listed in ⟨<span +class="cmti-10">category</span> +<span +class="cmti-10">list</span>⟩. +</p><!--l. 10359--><p class="indent" > The <span +class="cmtt-10">\rgls</span>-like commands use +</p><!--l. 10360--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifrecordtrigger</span><span +class="cmtt-9"> </span></span><a + id="dx1-44018"></a> <span +class="cmtt-10">\glsxtrifrecordtrigger{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">trigger code</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">normal</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10363--><p class="noindent" > +to determine whether the <span +class="cmtt-10">\rgls</span>-like command should behave like its <span +class="cmtt-10">\gls</span> +counterpart (⟨<span +class="cmti-10">normal</span>⟩) or whether it should instead use ⟨<span +class="cmti-10">trigger code</span>⟩. +</p><!--l. 10368--><p class="indent" > This command checks if the <a +href="#catattr.recordcount"><span +class="cmss-10">recordcount</span></a><a + id="dx1-44019"></a> attribute is set. If not is just does +⟨<span +class="cmti-10">normal</span>⟩, otherwise it tests if +</p><!--l. 10371--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrrecordtriggervalue</span><span +class="cmtt-9"> </span></span><a + id="dx1-44020"></a> <span +class="cmtt-10">\glsxtrrecordtriggervalue{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10373--><p class="noindent" > +is greater than the value given in the <a +href="#catattr.recordcount"><span +class="cmss-10">recordcount</span></a><a + id="dx1-44021"></a> attribute for that entry’s category. +If true, this does ⟨<span +class="cmti-10">normal</span>⟩ otherwise it does ⟨<span +class="cmti-10">trigger code</span>⟩. The default definition of the +trigger value command is: + + + +</p> + <div class="verbatim" id="verbatim-251"> +\newcommand*{\glsxtrrecordtriggervalue}[1]{% + <br /> \GlsXtrTotalRecordCount{#1}% + <br />} +</div> +<!--l. 10382--><p class="nopar" > The ⟨<span +class="cmti-10">trigger code</span>⟩ part writes a record with the <span +class="cmss-10">format</span><a + id="dx1-44022"></a> set to <span +class="cmtt-10">glstriggerrecordformat</span> +(which <a + id="dx1-44023"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> v1.1+ recognises as a special type of ignored location format) and +does ⟨<span +class="cmti-10">trigger format</span>⟩. Then it unsets the <a + id="dx1-44024"></a><a +href="#glo:firstuseflag">first use flag</a>. Note that it doesn’t implement +the post-link hook. This ensures that the record count is correct on the next +run. +</p><!--l. 10391--><p class="indent" > The ⟨<span +class="cmti-10">trigger format</span>⟩ depends on the <span +class="cmtt-10">\rgls</span>-like command used and will be one of +the following: +</p><!--l. 10393--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rglsformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44025"></a> <span +class="cmtt-10">\rglsformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10395--><p class="noindent" > +</p><!--l. 10396--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rglsplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44026"></a> <span +class="cmtt-10">\rglsplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10398--><p class="noindent" > +</p><!--l. 10399--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGlsformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44027"></a> <span +class="cmtt-10">\rGlsformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10401--><p class="noindent" > +</p><!--l. 10402--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGlsplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44028"></a> <span +class="cmtt-10">\rGlsplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10404--><p class="noindent" > +</p><!--l. 10405--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGLSformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44029"></a> <span +class="cmtt-10">\rGLSformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10407--><p class="noindent" > +</p><!--l. 10408--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\rGLSplformat</span><span +class="cmtt-9"> </span></span><a + id="dx1-44030"></a> <span +class="cmtt-10">\rGLSplformat{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10410--><p class="noindent" > +These all behave much like their <span +class="cmtt-10">\cglsformat </span>counterparts. If the entry’s <a +href="#catattr.regular"><span +class="cmss-10">regular</span></a><a + id="dx1-44031"></a> +attribute is set or if the entry doesn’t have a long form, the first or first plural is +used, otherwise the long or long plural form is used. +</p><!--l. 10416--><p class="indent" > You can use +</p><!--l. 10417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrenablerecordcount</span><span +class="cmtt-9"> </span></span><a + id="dx1-44032"></a> <span +class="cmtt-10">\glsxtrenablerecordcount </span></div><hr> +</p><!--l. 10419--><p class="noindent" > +to redefine <span +class="cmtt-10">\gls</span>, <span +class="cmtt-10">\glspl</span>, <span +class="cmtt-10">\Gls</span>, <span +class="cmtt-10">\Glspl</span>, <span +class="cmtt-10">\GLS</span>, <span +class="cmtt-10">\GLSpl </span>to <span +class="cmtt-10">\rgls</span>, <span +class="cmtt-10">\rglspl</span>, <span +class="cmtt-10">\rGls</span>, +<span +class="cmtt-10">\rGlspl</span>, <span +class="cmtt-10">\rGLS</span>, <span +class="cmtt-10">\rGLSpl</span>, respectively, for convenience. +</p><!--l. 10424--><p class="indent" > If you don’t want the entries that use ⟨<span +class="cmti-10">trigger code</span>⟩ to appear in the glossary, you +need to use the resource option <span +class="cmtt-10">trigger-type </span>to assign them to another glossary. +For example: + + + +</p> + <div class="verbatim" id="verbatim-252"> +\documentclass{article} + <br />\usepackage[record]{glossaries-extra} + <br />\newignoredglossary{ignored} + <br />\GlsXtrLoadResources[ + <br /> src=example-glossaries-acronym, + <br /> trigger-type=ignored, + <br /> category=abbreviation + <br />] + <br />\glsxtrenablerecordcount + <br />\GlsXtrSetRecordCountAttribute{abbreviation}{1} + <br />\begin{document} + <br />\gls{lid}.  \gls{stc}. \gls{lid}.  \gls{aeu}. + <br />\gls{upa}. \gls{aeu}. + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 10450--><p class="nopar" > In the above, <span +class="cmtt-10">stc </span>and <span +class="cmtt-10">upa </span>both only have one record, so they are assigned to the +<span +class="cmtt-10">ignored </span>glossary instead of the <span +class="cmtt-10">main </span>one. + + + +</p> +<!--l. 10455--><p class="indent" > </div> +</p><!--l. 10455--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">10. <a + id="sec:miscnew"></a>Miscellaneous New Commands</h2> +</p><!--l. 10458--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\glsrefentry</span><a + id="dx1-45001"></a> entry to cross-reference entries +when used with the <a +href="#styopt.entrycounter"><span +class="cmss-10">entrycounter</span></a><a + id="dx1-45002"></a> or <a +href="#styopt.subentrycounter"><span +class="cmss-10">subentrycounter</span></a><a + id="dx1-45003"></a> options. The <span +class="cmss-10">glossaries-extra</span> +package provides a supplementary command +</p><!--l. 10462--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrpageref</span><span +class="cmtt-9"> </span></span><a + id="dx1-45004"></a> <span +class="cmtt-10">\glsxtrpageref{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10464--><p class="noindent" > +that works in the same way except that it uses <span +class="cmtt-10">\pageref</span><a + id="dx1-45005"></a> instead of <span +class="cmtt-10">\ref</span><a + id="dx1-45006"></a>. +</p><!--l. 10468--><p class="indent" > You can copy an entry to another glossary using +</p><!--l. 10469--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrcopytoglossary</span><span +class="cmtt-9"> </span></span><a + id="dx1-45007"></a> <span +class="cmtt-10">\glsxtrcopytoglossary{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">glossary-type</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10471--><p class="noindent" > +This appends ⟨<span +class="cmti-10">entry-label</span>⟩ to the end of the internal list for the glossary given by +⟨<span +class="cmti-10">glossary-type</span>⟩. Be careful if you use the <span +class="cmss-10">hyperref</span><a + id="dx1-45008"></a> package as this may cause duplicate +hypertargets. You will need to change <span +class="cmtt-10">\glolinkprefix </span>to another value or disable +hyperlinks when you display the duplicate. Alternatively, use the new <span +class="cmss-10">target</span><a + id="dx1-45009"></a> key to +switch off the targets: + + + +</p> + <div class="verbatim" id="verbatim-253"> +\printunsrtglossary[target=false] +</div> +<!--l. 10481--><p class="nopar" > +</p><!--l. 10483--><p class="indent" > The <span +class="cmss-10">glossaries </span>package allows you to set preamble code for a given glossary +type using <span +class="cmtt-10">\setglossarypreamble</span>. This overrides any previous setting. +With <span +class="cmss-10">glossaries-extra </span>(as from v1.12) you can instead append to the preamble +using +</p><!--l. 10488--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\apptoglossarypreamble</span><span +class="cmtt-9"> </span></span><a + id="dx1-45010"></a> <span +class="cmtt-10">\apptoglossarypreamble[</span>⟨<span +class="cmitt-10">type</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10490--><p class="noindent" > +or prepend using +</p><!--l. 10492--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\pretoglossarypreamble</span><span +class="cmtt-9"> </span></span><a + id="dx1-45011"></a> <span +class="cmtt-10">\pretoglossarypreamble[</span>⟨<span +class="cmitt-10">type</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10494--><p class="noindent" > +</p> +<!--l. 10496--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.1 </span> <a + id="sec:fields"></a>Entry Fields</h3> +<!--l. 10499--><p class="noindent" >A field may now be used to store the name of a text-block command that takes a +single argument. The field is given by +</p><!--l. 10501--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrFmtField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46001"></a> <span +class="cmtt-10">\GlsXtrFmtField </span></div><hr> +</p><!--l. 10503--><p class="noindent" > +The default value is <span +class="cmtt-10">useri</span>. Note that the value must be the control sequence name +<span +class="cmti-10">without the initial backslash</span>. +</p><!--l. 10508--><p class="indent" > For example: + + + +</p> + <div class="verbatim" id="verbatim-254"> +\newcommand*{\mtx}[1]{\boldsymbol{#1}} + <br />\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}} + <br />\newglossaryentry{matrix}{% + <br />  name={matrix}, + <br />  symbol={\ensuremath{\mtx{M}}}, + <br />  plural={matrices}, + <br />  user1={mtx}, + <br />  description={rectangular array of values} + <br />} + <br />\newglossaryentry{identitymatrix}{% + <br />  name={identity matrix}, + <br />  symbol={\ensuremath{\mtx{I}}}, + <br />  plural={identity matrices}, + <br />  description={a diagonal matrix with all diagonal elements equal to + <br />1 and all other elements equal to 0} + <br />} + <br />\newglossaryentry{matrixinv}{% + <br />  name={matrix inverse}, + <br />  symbol={\ensuremath{\mtxinv{M}}}, + <br />  user1={mtxinv}, + <br />  description={a square \gls{matrix} such that + <br />   $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$} + <br />} +</div> +<!--l. 10536--><p class="nopar" > +</p><!--l. 10538--><p class="indent" > There are two commands provided that allow you to apply the command to an +argument: +</p><!--l. 10540--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-46002"></a> <span +class="cmtt-10">\glsxtrfmt[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10542--><p class="noindent" > +This effectively does </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glslink[</span>⟨<span +class="cmitt-10">default-options</span>⟩<span +class="cmtt-10">,</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glsxtrfmtdisplay</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">cs</span><span +class="cmitt-10"> name</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{}}</span> +</div> +</div> where ⟨<span +class="cmti-10">cs name</span>⟩ is the control sequence name supplied in the provided field, which +must be defined to take a single required argument. Although it effectively acts like +<span +class="cmtt-10">\glslink </span>it misses out the post-link hook. +<!--l. 10552--><p class="indent" > The default ⟨<span +class="cmti-10">default-options</span>⟩ are given by + + + +</p><!--l. 10553--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrFmtDefaultOptions</span><span +class="cmtt-9"> </span></span><a + id="dx1-46003"></a> <span +class="cmtt-10">\GlsXtrFmtDefaultOptions </span></div><hr> +</p><!--l. 10555--><p class="noindent" > +This is defined as <span +class="cmtt-10">noindex </span>but may be redefined as appropriate. Note that the +replacement text of <span +class="cmtt-10">\GlsXtrFmtDefaultOptions </span>is prepended to the optional +argument of <span +class="cmtt-10">\glslink</span>. +</p><!--l. 10561--><p class="indent" > As from version 1.23, there’s also a starred version of this command that has a +final optional argument: +</p><!--l. 10563--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfmt*</span><span +class="cmtt-9"> </span></span><a + id="dx1-46004"></a> <span +class="cmtt-10">\glsxtrfmt*[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}[</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 10565--><p class="noindent" > +Both the starred and unstarred versions use: +</p><!--l. 10567--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfmtdisplay</span><span +class="cmtt-9"> </span></span><a + id="dx1-46005"></a> <span +class="cmtt-10">\glsxtrfmtdisplay{</span>⟨<span +class="cmitt-10">cs name</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">insert</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10569--><p class="noindent" > +within the link text. In the case of the unstarred version ⟨<span +class="cmti-10">insert</span>⟩ will be empty. It will +also be empty if the final option argument is missing from the starred form. If the +entry given by ⟨<span +class="cmti-10">label</span>⟩ is undefined <span +class="cmtt-10">\glsxtrfmt </span>and <span +class="cmtt-10">\glsxtrfmt* </span>will issue an error (or +warning if <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-46006"></a>). There won’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) ⟨<span +class="cmti-10">cs name</span>⟩ will be <span +class="cmtt-10">@firstofone </span>otherwise it will be the field value. The +default definition is: + + + +</p> + <div class="verbatim" id="verbatim-255"> +\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3} +</div> +<!--l. 10583--><p class="nopar" > which puts ⟨<span +class="cmti-10">text</span>⟩ inside the argument of the control sequence and ⟨<span +class="cmti-10">insert</span>⟩ outside it +(but it will still be inside the link text). +</p><!--l. 10588--><p class="indent" > <div class="important" title="Important Note"> Remember that nested links cause a problem so avoid using commands like <span +class="cmtt-10">\gls</span> +or <span +class="cmtt-10">\glsxtrfmt </span>within ⟨<span +class="cmti-10">text</span>⟩. </div> +</p><!--l. 10591--><p class="noindent" > +</p><!--l. 10593--><p class="indent" > For example: + + + +</p> + <div class="verbatim" id="verbatim-256"> +\[ + <br />  \glsxtrfmt{matrix}{A} + <br />  \glsxtrfmt{matrixinv}{A} + <br />  = + <br />  \glssymbol{identitymatrix} + <br />\] +</div> +<!--l. 10601--><p class="nopar" > If the default options are set to <span +class="cmtt-10">noindex </span>then <span +class="cmtt-10">\glsxtrfmt </span>won’t index, but will +create a hyperlink (if <span +class="cmss-10">hyperref</span><a + id="dx1-46007"></a> has been loaded). This can be changed so that it also +suppresses the hyperlink: + + + +</p> + <div class="verbatim" id="verbatim-257"> +\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex} +</div> +<!--l. 10608--><p class="nopar" > +</p><!--l. 10610--><p class="indent" > Note that <span +class="cmtt-10">\glsxtrfmt </span>won’t work with PDF bookmarks. Instead you can +use +</p><!--l. 10612--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrentryfmt</span><span +class="cmtt-9"> </span></span><a + id="dx1-46008"></a> <span +class="cmtt-10">\glsxtrentryfmt{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10614--><p class="noindent" > +This uses <span +class="cmtt-10">\texorpdfstring </span>and will simply expand to ⟨<span +class="cmti-10">text</span>⟩ within the PDF +bookmarks, but in the document it will do ⟨<span +class="cmti-10">cs</span>⟩<span +class="cmtt-10">{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>if a control sequence name has +been provided or just ⟨<span +class="cmti-10">text</span>⟩ otherwise. +</p><!--l. 10620--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\glsaddstoragekey </span>to add new keys. This +command will cause an error if the key has already been defined. The <span +class="cmss-10">glossaries-extra</span> +package provides a supplementary command that will only define the key if it doesn’t +already exist: +</p><!--l. 10625--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrprovidestoragekey</span><span +class="cmtt-9"> </span></span><a + id="dx1-46009"></a> <span +class="cmtt-10">\glsxtrprovidestoragekey{</span>⟨<span +class="cmitt-10">key</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">default</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10627--><p class="noindent" > +If the key has already been defined, it will still provide the command given in the +third argument ⟨<span +class="cmti-10">cs</span>⟩ (if it hasn’t already been defined). Unlike <span +class="cmtt-10">\glsaddstoragekey</span>, ⟨<span +class="cmti-10">cs</span>⟩ +may be left empty if you’re happy to just use <span +class="cmtt-10">\glsfieldfetch </span>to fetch the value of +this new key. +</p><!--l. 10633--><p class="indent" > You can test if a key has been provided with: +</p><!--l. 10634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifkeydefined</span><span +class="cmtt-9"> </span></span><a + id="dx1-46010"></a> <span +class="cmtt-10">\glsxtrifkeydefined{</span>⟨<span +class="cmitt-10">key</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10636--><p class="noindent" > +This tests if ⟨<span +class="cmti-10">key</span>⟩ is available for use in the ⟨<span +class="cmti-10">key</span>⟩= list in the second argument of +<span +class="cmtt-10">\newglossaryentry </span>(or the optional argument of commands like <span +class="cmtt-10">\newabbreviation</span>). +The corresponding field may not have been set for any of the entries if no default was +provided. +</p><!--l. 10644--><p class="indent" > There are now commands provided to set individual fields. Note that +these only change the specified field, not any related values. For example, +changing the value of the <span +class="cmss-10">text</span><a + id="dx1-46011"></a> field won’t update the <span +class="cmss-10">plural</span><a + id="dx1-46012"></a> field. There are also +some fields that should really only be set when entries are defined (such as +the <span +class="cmss-10">parent</span><a + id="dx1-46013"></a> field). Unexpected results may occur if they are subsequently +changed. +</p><!--l. 10652--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrSetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46014"></a> <span +class="cmtt-10">\GlsXtrSetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10654--><p class="noindent" > +Sets the field given by ⟨<span +class="cmti-10">field</span>⟩ to ⟨<span +class="cmti-10">value</span>⟩ for the entry given by ⟨<span +class="cmti-10">label</span>⟩. No expansion is +performed. It’s not necessary for the field to have been defined as a key. You can +access the value later with <span +class="cmtt-10">\glsxtrusefield</span>. Note that <span +class="cmtt-10">\glsxtrifkeydefined </span>only +tests if a key has been defined for use with commands like <span +class="cmtt-10">\newglossaryentry</span>. If a +field without a corresponding key is assigned a value, the key remains undefined. This +command is robust. + + + +</p><!--l. 10664--><p class="indent" > <span +class="cmtt-10">\GlsXtrSetField </span>uses +</p><!--l. 10665--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetfieldifexists</span><span +class="cmtt-9"> </span></span><a + id="dx1-46015"></a> <span +class="cmtt-10">\glsxtrsetfieldifexists{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10667--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry label and ⟨<span +class="cmti-10">code</span>⟩ is the assignment code. +</p><!--l. 10671--><p class="indent" > This command just uses <span +class="cmtt-10">\glsdoifexists</span><a + id="dx1-46016"></a><span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">code</span>⟩<span +class="cmtt-10">} </span>(ignoring the +⟨<span +class="cmti-10">field</span>⟩ argument), so by default it causes an error if the entry doesn’t exist. +This can be changed to a warning with <a +href="#styopt.undefaction"><span +class="cmss-10">undefaction</span></a><span +class="cmss-10">=warn</span><a + id="dx1-46017"></a>. You can redefine +<span +class="cmtt-10">\glsxtrsetfieldifexists </span>to simply do ⟨<span +class="cmti-10">code</span>⟩ if you want to skip the existence check. +Alternatively you can instead use +</p><!--l. 10677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrdeffield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46018"></a> <span +class="cmtt-10">\glsxtrdeffield{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmitt-10">arguments</span>⟩<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">replacement</span> +<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10679--><p class="noindent" > +This simply uses <span +class="cmss-10">etoolbox</span><a + id="dx1-46019"></a>’s <span +class="cmtt-10">\csdef </span>without any checks. This command +isn’t robust. There is also a version that uses <span +class="cmtt-10">\protected@csedef</span> +instead:<span class="footnote-mark"><a +href="#fn1x10" id="fn1x10-bk"><sup class="textsuperscript">10.1</sup></a></span><a + id="x1-46020f1"></a> +</p><!--l. 10684--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtredeffield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46021"></a> <span +class="cmtt-10">\glsxtredeffield{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span>⟨<span +class="cmitt-10">arguments</span>⟩<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">replacement</span> +<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10686--><p class="noindent" > +</p><!--l. 10688--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\gGlsXtrSetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46022"></a> <span +class="cmtt-10">\gGlsXtrSetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10690--><p class="noindent" > +As <span +class="cmtt-10">\GlsXtrSetField </span>but globally. +</p><!--l. 10693--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\eGlsXtrSetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46023"></a> <span +class="cmtt-10">\eGlsXtrSetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10695--><p class="noindent" > +As <span +class="cmtt-10">\GlsXtrSetField </span>but uses protected expansion. +</p><!--l. 10698--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\xGlsXtrSetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46024"></a> <span +class="cmtt-10">\xGlsXtrSetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">value</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10700--><p class="noindent" > +As <span +class="cmtt-10">\gGlsXtrSetField </span>but uses protected expansion. +</p><!--l. 10703--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46025"></a> <span +class="cmtt-10">\GlsXtrLetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">cs</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10705--><p class="noindent" > +Sets the field given by ⟨<span +class="cmti-10">field</span>⟩ to the replacement text of ⟨<span +class="cmti-10">cs</span>⟩ for the entry given by ⟨<span +class="cmti-10">label</span>⟩ +(using <span +class="cmtt-10">\let</span>). +</p><!--l. 10709--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\csGlsXtrLetField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46026"></a> <span +class="cmtt-10">\csGlsXtrLetField{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">cs name</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10711--><p class="noindent" > +As <span +class="cmtt-10">\GlsXtrLetField </span>but the control sequence name is supplied instead. +</p><!--l. 10715--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLetFieldToField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46027"></a> <span +class="cmtt-10">\GlsXtrLetFieldToField{</span>⟨<span +class="cmitt-10">label-1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field-1</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label-2</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field-2</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10717--><p class="noindent" > +Sets the field given by ⟨<span +class="cmti-10">field-1</span>⟩ for the entry given by ⟨<span +class="cmti-10">label-1</span>⟩ to the field given by +⟨<span +class="cmti-10">field-2</span>⟩ for the entry given by ⟨<span +class="cmti-10">label-2</span>⟩. There’s no check for the existence of ⟨<span +class="cmti-10">label-2</span>⟩, +but <span +class="cmtt-10">\glsxtrsetfieldifexists{</span>⟨<span +class="cmti-10">label-1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">field-1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">code</span>⟩<span +class="cmtt-10">} </span>is still used, as for +<span +class="cmtt-10">\GlsXtrSetField</span>. +</p><!--l. 10725--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\ifglshasfield</span><a + id="dx1-46028"></a> to determine if a field has been +set. The <span +class="cmss-10">glossaries-extra </span>package provides a simpler version: + + + +</p><!--l. 10728--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifhasfield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46029"></a> <span +class="cmtt-10">\glsxtrifhasfield{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10730--><p class="noindent" > +(New to v1.19.) Note that in this case the ⟨<span +class="cmti-10">field</span>⟩ must be the <span +class="cmti-10">internal </span>field label (for +example, <span +class="cmtt-10">useri </span>rather than <span +class="cmtt-10">user1</span>). Unlike <span +class="cmtt-10">\ifglshasfield</span>, this version +doesn’t complain if the entry (given by ⟨<span +class="cmti-10">label</span>⟩) or the field don’t exist and +will simply do ⟨<span +class="cmti-10">false</span>⟩. If the field does exist for the given entry and it’s not +empty, the ⟨<span +class="cmti-10">true</span>⟩ part is done otherwise it does ⟨<span +class="cmti-10">false</span>⟩. Within ⟨<span +class="cmti-10">true</span>⟩ you may +use +</p><!--l. 10739--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glscurrentfieldvalue</span><span +class="cmtt-9"> </span></span><a + id="dx1-46030"></a> <span +class="cmtt-10">\glscurrentfieldvalue </span></div><hr> +</p><!--l. 10741--><p class="noindent" > +to access the field value. This command includes grouping which scopes the ⟨<span +class="cmti-10">true</span>⟩ and +⟨<span +class="cmti-10">false</span>⟩ parts. The starred version +</p><!--l. 10745--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrifhasfield*</span><span +class="cmtt-9"> </span></span><a + id="dx1-46031"></a> <span +class="cmtt-10">\glsxtrifhasfield*{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10747--><p class="noindent" > +omits the implicit grouping. +</p><!--l. 10750--><p class="indent" > <div class="important" title="Important Note"> Be careful of keys that use <span +class="cmtt-10">\relax </span>as the default value (such as the <span +class="cmss-10">symbol</span><a + id="dx1-46032"></a>). Use +<span +class="cmtt-10">\ifglshassymbol </span>instead. </div> +</p><!--l. 10753--><p class="noindent" > +</p><!--l. 10755--><p class="indent" > There is also a version that simply uses <span +class="cmtt-10">\ifcsundef</span>. It doesn’t save the field +value, but can be used if you only need to check if the field is defined without +accessing it: +</p><!--l. 10758--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldUndef</span><span +class="cmtt-9"> </span></span><a + id="dx1-46033"></a> <span +class="cmtt-10">\GlsXtrIfFieldUndef{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10760--><p class="noindent" > +</p><!--l. 10762--><p class="indent" > <div class="important" title="Important Note"> There’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. <span +class="cmtt-10">\GlsXtrIfFieldUndef </span>implement ⟨<span +class="cmti-10">false</span>⟩ for a defined but +empty field whereas <span +class="cmtt-10">\glsxtrifhasfield </span>and <span +class="cmtt-10">\ifglshasfield </span>will implement +⟨<span +class="cmti-10">false</span>⟩ a defined but empty field. Remember that any keys that may be used +in <span +class="cmtt-10">\newglossaryentry </span>will have a default value if not provided. In many +cases, the default value is empty, so only use <span +class="cmtt-10">\GlsXtrIfFieldUndef </span>for +fields that can only be defined through commands like <span +class="cmtt-10">\GlsXtrSetField</span>. +</div> +</p><!--l. 10775--><p class="noindent" > +</p><!--l. 10777--><p class="indent" > You can test if a field value equals a string using +</p><!--l. 10778--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldEqStr</span><span +class="cmtt-9"> </span></span><a + id="dx1-46034"></a> <span +class="cmtt-10">\GlsXtrIfFieldEqStr{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10780--><p class="noindent" > +If the entry exists and has the given field set to the given text then this does ⟨<span +class="cmti-10">true</span>⟩ +otherwise it does ⟨<span +class="cmti-10">false</span>⟩. This uses <span +class="cmtt-10">\glsxtrifhasfield </span>to test if the field exists and + + + +then compares the replacement text of <span +class="cmtt-10">\glscurrentfieldvalue </span>with ⟨<span +class="cmti-10">text</span>⟩ using +<span +class="cmss-10">etoolbox</span><a + id="dx1-46035"></a>’s <span +class="cmtt-10">\ifdefstring</span>. Version 1.39 introduced a starred form of this command, +which uses the starred form of <span +class="cmtt-10">\glsxtrifhasfield</span>. +</p><!--l. 10790--><p class="indent" > As from version 1.31, there’s a similar command: +</p><!--l. 10791--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldEqXpStr</span><span +class="cmtt-9"> </span></span><a + id="dx1-46036"></a> <span +class="cmtt-10">\GlsXtrIfFieldEqXpStr{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10793--><p class="noindent" > +This is like <span +class="cmtt-10">\GlsXtrIfFieldEqStr </span>but first (protected) fully expands ⟨<span +class="cmti-10">text</span>⟩ (but not +the field value). If you want to compare the (protected) full expansion of both the +field value and ⟨<span +class="cmti-10">text</span>⟩ use: +</p><!--l. 10798--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfXpFieldEqXpStr</span><span +class="cmtt-9"> </span></span><a + id="dx1-46037"></a> <span +class="cmtt-10">\GlsXtrIfXpFieldEqXpStr{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10800--><p class="noindent" > +Again, version 1.39 introduced a starred form of these commands, which use the +starred form of <span +class="cmtt-10">\glsxtrifhasfield</span>. +</p><!--l. 10804--><p class="indent" > As from v1.31, if a field represents a numeric (integer) value, you can use the +following two numeric tests. If the field is set, it must expand to an integer. You may +use <span +class="cmtt-10">\glscurrentfieldvalue </span>within ⟨<span +class="cmti-10">true</span>⟩ or ⟨<span +class="cmti-10">false</span>⟩ to access the actual value. Both +⟨<span +class="cmti-10">true</span>⟩ and ⟨<span +class="cmti-10">false</span>⟩ are scoped. If the field is undefined or empty, the value is assumed to +be 0, and <span +class="cmtt-10">\glscurrentfieldvalue </span>is set accordingly. As from version 1.39, these +numeric tests have starred versions. The unstarred versions add implicit grouping. +The starred versions don’t. +</p><!--l. 10814--><p class="indent" > To test if the value is non-zero: +</p><!--l. 10815--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldNonZero</span><span +class="cmtt-9"> </span></span><a + id="dx1-46038"></a> <span +class="cmtt-10">\GlsXtrIfFieldNonZero{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10817--><p class="noindent" > +Alternatively, you can test if the field expands to a specific number using: +</p><!--l. 10820--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldEqNum</span><span +class="cmtt-9"> </span></span><a + id="dx1-46039"></a> <span +class="cmtt-10">\GlsXtrIfFieldEqNum{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10822--><p class="noindent" > +This does ⟨<span +class="cmti-10">true</span>⟩ if the field value equals ⟨<span +class="cmti-10">n</span>⟩ (using <span +class="cmtt-10">\ifnum </span>for the comparison) +otherwise it does ⟨<span +class="cmti-10">false</span>⟩. For a more general numeric comparison you can +use: +</p><!--l. 10827--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrIfFieldCmpNum</span><span +class="cmtt-9"> </span></span><a + id="dx1-46040"></a> <span +class="cmtt-10">\GlsXtrIfFieldCmpNum{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">comparison</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10829--><p class="noindent" > +where ⟨<span +class="cmti-10">comparison</span>⟩ is one of <span +class="cmtt-10">=</span>, <span +class="cmtt-10">< </span>or <span +class="cmtt-10">></span>. +</p><!--l. 10833--><p class="indent" > The <span +class="cmss-10">glossaries </span>package provides <span +class="cmtt-10">\glsfieldfetch</span><a + id="dx1-46041"></a> which can be used to fetch the +value of the given field and store it in a control sequence. The <span +class="cmss-10">glossaries-extra </span>package +provides another way of accessing the field value: +</p><!--l. 10837--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrusefield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46042"></a> <span +class="cmtt-10">\glsxtrusefield{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field-label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10839--><p class="noindent" > +This works in the same way as commands like <span +class="cmtt-10">\glsentrytext </span>but the field label is +specified in the first argument. Note that the ⟨<span +class="cmti-10">field-label</span>⟩ corresponds to the internal +field tag, which isn’t always the same as the key name. See Table 4.1 of the <span +class="cmss-10">glossaries</span><a + id="dx1-46043"></a> +manual. No error occurs if the entry or field haven’t been defined. This command is + + + +not robust. +</p><!--l. 10847--><p class="indent" > There is also a version that converts the first letter to uppercase (analogous to +<span +class="cmtt-10">\Glsentrytext</span>): +</p><!--l. 10849--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsxtrusefield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46044"></a> <span +class="cmtt-10">\Glsxtrusefield{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field-label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10851--><p class="noindent" > +and, as from v1.37, a command that converts the entire value to upper case: +</p><!--l. 10853--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GLSxtrusefield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46045"></a> <span +class="cmtt-10">\GLSxtrusefield{</span>⟨<span +class="cmitt-10">entry-label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field-label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10855--><p class="noindent" > +</p><!--l. 10857--><p class="indent" > If you want to use a field to store a list that can be used as an <span +class="cmss-10">etoolbox</span><a + id="dx1-46046"></a> internal +list, you can use the following command that adds an item to the field using +<span +class="cmss-10">etoolbox</span><a + id="dx1-46047"></a>’s <span +class="cmtt-10">\listcsadd</span>: +</p><!--l. 10861--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldlistadd</span><span +class="cmtt-9"> </span></span><a + id="dx1-46048"></a> <span +class="cmtt-10">\glsxtrfieldlistadd{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10863--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label, ⟨<span +class="cmti-10">field</span>⟩ is the entry’s field and ⟨<span +class="cmti-10">item</span>⟩ is the item to +add. There are analogous commands that use <span +class="cmtt-10">\listgadd</span>, <span +class="cmtt-10">\listeadd </span>and +<span +class="cmtt-10">\listxadd</span>: +</p><!--l. 10868--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldlistgadd</span><span +class="cmtt-9"> </span></span><a + id="dx1-46049"></a> <span +class="cmtt-10">\glsxtrfieldlistgadd{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10870--><p class="noindent" > +</p><!--l. 10871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldlisteadd</span><span +class="cmtt-9"> </span></span><a + id="dx1-46050"></a> <span +class="cmtt-10">\glsxtrfieldlisteadd{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10873--><p class="noindent" > +</p><!--l. 10874--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldlistxadd</span><span +class="cmtt-9"> </span></span><a + id="dx1-46051"></a> <span +class="cmtt-10">\glsxtrfieldlistxadd{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10876--><p class="noindent" > +You can then iterate over the list using: +</p><!--l. 10878--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfielddolistloop</span><span +class="cmtt-9"> </span></span><a + id="dx1-46052"></a> <span +class="cmtt-10">\glsxtrfielddolistloop{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10880--><p class="noindent" > +or +</p><!--l. 10882--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldforlistloop</span><span +class="cmtt-9"> </span></span><a + id="dx1-46053"></a> <span +class="cmtt-10">\glsxtrfieldforlistloop{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">handler</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10884--><p class="noindent" > +that internally use <span +class="cmtt-10">\dolistcsloop </span>and <span +class="cmtt-10">\forlistloop</span>, respectively. +</p><!--l. 10888--><p class="indent" > There are also commands that use <span +class="cmtt-10">\ifinlistcs</span>: +</p><!--l. 10889--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldifinlist</span><span +class="cmtt-9"> </span></span><a + id="dx1-46054"></a> <span +class="cmtt-10">\glsxtrfieldifinlist{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10891--><p class="noindent" > +and <span +class="cmtt-10">\xifinlistcs</span> +</p><!--l. 10893--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrfieldxifinlist</span><span +class="cmtt-9"> </span></span><a + id="dx1-46055"></a> <span +class="cmtt-10">\glsxtrfieldxifinlist{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">item</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 10895--><p class="noindent" > +</p><!--l. 10897--><p class="indent" > See the <span +class="cmss-10">etoolbox</span><a + id="dx1-46056"></a>’s user manual for further details of these commands, in particular +the limitations of <span +class="cmtt-10">\ifinlist</span>. +</p><!--l. 10901--><p class="indent" > If the field has a comma-separated list value instead, you can iterate over it +using: +</p><!--l. 10903--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrforcsvfield</span><span +class="cmtt-9"> </span></span><a + id="dx1-46057"></a> <span +class="cmtt-10">\glsxtrforcsvfield{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">handler</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 10905--><p class="noindent" > +where again ⟨<span +class="cmti-10">handler</span>⟩ is a control sequence that takes a single argument. Unlike the +<span +class="cmss-10">etoolbox</span><a + id="dx1-46058"></a> loops, this doesn’t ignore empty elements nor does it discard leading / +trailing spaces. Internally it uses <span +class="cmtt-10">\@for </span>(modified by <span +class="cmss-10">xfor</span><a + id="dx1-46059"></a> which is automatically +loaded by <span +class="cmss-10">glossaries</span><a + id="dx1-46060"></a>). The <span +class="cmss-10">xfor</span><a + id="dx1-46061"></a> package modifies the behaviour of <span +class="cmtt-10">\@for </span>to allow the +loop to be broken prematurely using <span +class="cmtt-10">\@endfortrue</span>. The <span +class="cmtt-10">\glsxtrforcsvfield</span> +command locally defines a user level command: +</p><!--l. 10915--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrendfor</span><span +class="cmtt-9"> </span></span><a + id="dx1-46062"></a> <span +class="cmtt-10">\glsxtrendfor </span></div><hr> +</p><!--l. 10917--><p class="noindent" > +which is just a synonym for <span +class="cmtt-10">\@endfortrue</span>. +</p><!--l. 10920--><p class="indent" > The loop is performed within the true part of <span +class="cmtt-10">\glsxtrifhasfield </span>so scoping is +automatically applied. +</p><!--l. 10923--><p class="indent" > As from version 1.32, if the field given by +</p><!--l. 10924--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrForeignTextField</span><span +class="cmtt-9"> </span></span><a + id="dx1-46063"></a> <span +class="cmtt-10">\GlsXtrForeignTextField </span></div><hr> +</p><!--l. 10926--><p class="noindent" > +(which defaults to <span +class="cmtt-10">userii</span>) contains a locale tag, then +</p><!--l. 10928--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrForeignText</span><span +class="cmtt-9"> </span></span><a + id="dx1-46064"></a> <span +class="cmtt-10">\GlsXtrForeignText{</span>⟨<span +class="cmitt-10">entry label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10930--><p class="noindent" > +can be used to encapsulate ⟨<span +class="cmti-10">text</span>⟩ in <span +class="cmtt-10">\foreignlanguage{</span>⟨<span +class="cmti-10">dialect</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmti-10">text</span>⟩<span +class="cmtt-10">} </span>where ⟨<span +class="cmti-10">dialect</span>⟩ is +obtained from the locale tag through <span +class="cmss-10">tracklang</span><a + id="dx1-46065"></a>’s <span +class="cmtt-10">\GetTrackedDialectFromLanguageTag</span><a + id="dx1-46066"></a> +command. You need at least <span +class="cmss-10">tracklang</span><a + id="dx1-46067"></a> v1.3.6 for this to work properly. The ⟨<span +class="cmti-10">dialect</span>⟩ +must be one that’s tracked (which typically means that <span +class="cmss-10">babel</span><a + id="dx1-46068"></a> or <span +class="cmss-10">polyglossia</span><a + id="dx1-46069"></a> has been +loaded with the appropriate setting for that language). If <span +class="cmtt-10">\foreignlanguage </span>hasn’t +been defined, this just does ⟨<span +class="cmti-10">text</span>⟩. For example: + + + +</p> + <div class="verbatim" id="verbatim-258"> +\documentclass{article} + <br />\usepackage[main=british,brazilian,ngerman]{babel} + <br />\usepackage{glossaries-extra} + <br />\setabbreviationstyle{long-short-user} + <br />\newabbreviation + <br /> [user1={Associa\c{c}\~ao Brasileria de Normas T\'ecnicas}, + <br />  user2= {pt-BR} + <br /> ] + <br /> {abnt}{ABNT}{Brazilian National Standards Organization} + <br />\newabbreviation + <br /> [user1={Deutsches Institut f\"ur Normung e.V.}, + <br />  user2={de-DE-1996}] + <br /> {din}{DIN}{German Institute for Standardization} + <br />\renewcommand*{\glsxtruserparen}[2]{% + <br />  \glsxtrfullsep{#2}% + <br />  \glsxtrparen + <br />  {#1% + <br />   \ifglshasfield{\glsxtruserfield}{#2}% + <br />   {, \emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}% + <br />   {}% + <br />  }% + <br />} + <br />\begin{document} + <br />\gls{abnt}, \gls{din}. + <br />\end{document} +</div> +<!--l. 10972--><p class="nopar" > +</p><!--l. 10975--><p class="indent" > When using the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-46070"></a> option, in addition to recording the usual location, you can +also record the current value of another counter at the same time using the +preamble-only command: +</p><!--l. 10978--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrRecordCounter</span><span +class="cmtt-9"> </span></span><a + id="dx1-46071"></a> <span +class="cmtt-10">\GlsXtrRecordCounter{</span>⟨<span +class="cmitt-10">counter name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 10980--><p class="noindent" > +For example: + + + +</p> + <div class="verbatim" id="verbatim-259"> +\usepackage[record]{glossaries-extra} + <br />\GlsXtrRecordCounter{section} +</div> +<!--l. 10985--><p class="nopar" > Each time an entry is referenced with commands like <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glstext</span>, +the <span +class="cmtt-10">.aux </span>file will not only contain the <span +class="cmtt-10">\glsxtr@record </span>command but also +</p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsxtr@counterrecord{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">section</span><span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> where ⟨<span +class="cmti-10">n</span>⟩ is the current expansion of <span +class="cmtt-10">\thesection </span>and ⟨<span +class="cmti-10">label</span>⟩ is the entry’s +label. On the next run, when the <span +class="cmtt-10">.aux </span>file is run, this command will do +<div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glsxtrfieldlistgadd{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">record.</span>⟨<span +class="cmitt-10">counter</span>⟩<span +class="cmsy-10">}</span><span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">n</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> In the above example, if <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gls{bird}</span></span></span> is used in section 1.2 this would be + + + + <div class="verbatim" id="verbatim-260"> +\glsxtrfieldlistgadd{bird}{record.section}{1.2} +</div> +<!--l. 11002--><p class="nopar" > Note that there’s no key corresponding to this new <span +class="cmtt-10">record.section </span>field, but its +value can be accessed with <span +class="cmtt-10">\glsxtrfielduse </span>or the list can be iterated over with +<span +class="cmtt-10">\glsxtrfielddolistloop </span>etc. +</p><!--l. 11008--><p class="noindent" > +</p> +<!--l. 11008--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.2 </span> <a + id="sec:printunsrt"></a>Display All Entries Without Sorting or Indexing</h3> +<!--l. 11011--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossary</span><span +class="cmtt-9"> </span></span><a + id="dx1-47001"></a> <span +class="cmtt-10">\printunsrtglossary[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">] </span></div><hr> +</p><!--l. 11013--><p class="noindent" > +This behaves like <span +class="cmtt-10">\printnoidxglossary </span>but never sorts the entries and +always lists all the defined entries for the given glossary (and doesn’t require +<span +class="cmtt-10">\makenoidxglossaries</span>). If you want to use one of the <span +class="cmss-10">tabular</span><a + id="dx1-47002"></a><a + id="dx1-47003"></a>-like styles with +<span +class="cmtt-10">\printunsrtglossary</span>, make sure you load <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-47004"></a> which modifies +the definition of <span +class="cmtt-10">\glsgroupskip </span>to avoid the “Incomplete <span +class="cmtt-10">\iftrue</span>” error that may +otherwise occur. +</p><!--l. 11023--><p class="noindent" >There’s also a starred form +</p><!--l. 11024--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossary*</span><span +class="cmtt-9"> </span></span><a + id="dx1-47005"></a> <span +class="cmtt-10">\printunsrtglossary*[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11026--><p class="noindent" > +which is equivalent to </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\begingroup</span> +<br /><span +class="cmtt-10"> </span>⟨<span +class="cmitt-10">code</span>⟩<span +class="cmtt-10">\printunsrtglossary[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]%</span> +<br /><span +class="cmtt-10">\endgroup</span> +</div> +</div> Note that unlike <span +class="cmtt-10">\glossarypreamble</span>, the supplied ⟨<span +class="cmti-10">code</span>⟩ is done before the glossary +header. +<!--l. 11036--><p class="indent" > This means you now have the option to simply list all entries on the first +<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run without the need for a post-processor, however there will be no <a + id="dx1-47006"></a><a +href="#glo:numberlist">number +list</a> in this case, as that has to be set by a post-processor such as <a + id="dx1-47007"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> (see <a +href="#sec:bib2gls"><span +class="cmsy-10">§</span>9 +</a><a +href="#sec:bib2gls"><span +class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>). +</p><!--l. 11042--><p class="indent" > <div class="important" title="Important Note"> No attempt is made to gather hierarchical elements. If child entries aren’t defined +immediately after their parent entry, they won’t be together in the glossary when +using <span +class="cmtt-10">\printunsrtglossary</span>. </div> +</p><!--l. 11047--><p class="noindent" > + + + +</p><!--l. 11049--><p class="indent" > There’s a difference in behaviour depending on whether or not the <span +class="cmss-10">group</span><a + id="dx1-47008"></a> key is +defined. If not defined (default), the group label will be formed from the first +letter of the <span +class="cmss-10">name</span><a + id="dx1-47009"></a> field. The corresponding group title will be obtained as +discussed in <a +href="#sec:glosstylemods"><span +class="cmsy-10">§</span>2.12 </a><a +href="#sec:glosstylemods">Glossary Style Modifications<!--tex4ht:ref: sec:glosstylemods --></a>. This can lead to an odd effect if +you are using a style that separates letter groups when the ordering isn’t +alphabetical. +</p><!--l. 11057--><p class="indent" > If the <span +class="cmss-10">group</span><a + id="dx1-47010"></a> key is defined (which it is with the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-47011"></a> option) then the group label +will be obtained from the value of that field. If the field is empty, <span +class="cmti-10">no grouping is</span> +<span +class="cmti-10">performed</span>, even if the style supports it. (That is, there won’t be a header or a vertical +separation.) If the <span +class="cmss-10">group</span><a + id="dx1-47012"></a> field is non-empty, then the corresponding title is obtained +as described earlier. +</p><!--l. 11065--><p class="indent" > If you want to use a different field, you can redefine +</p><!--l. 11066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrgroupfield</span><span +class="cmtt-9"> </span></span><a + id="dx1-47013"></a> <span +class="cmtt-10">\glsxtrgroupfield </span></div><hr> +</p><!--l. 11068--><p class="noindent" > +to the relevant internal field label, but the <span +class="cmss-10">group</span><a + id="dx1-47014"></a> <span +class="cmti-10">key </span>must still be defined (through +the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-47015"></a> option or with commands like <span +class="cmtt-10">\glsaddstoragekey</span>) to ensure that +<span +class="cmtt-10">\printunsrtglossary </span>uses <span +class="cmtt-10">\glsxtrgroupfield</span>. (This method is used by <a + id="dx1-47016"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> +for secondary entries, which have the group label stored in the <span +class="cmtt-10">secondarygroup</span> +internal field.) +</p><!--l. 11076--><p class="indent" > If you have any entries with the <span +class="cmss-10">see</span><a + id="dx1-47017"></a> key set, you will need the <span +class="cmss-10">glossaries</span><a + id="dx1-47018"></a> package +option <a +href="#styopt.seenoindex"><span +class="cmss-10">seenoindex</span></a><span +class="cmss-10">=ignore</span><a + id="dx1-47019"></a> or <a +href="#styopt.seenoindex"><span +class="cmss-10">seenoindex</span></a><span +class="cmss-10">=warn</span><a + id="dx1-47020"></a> to prevent an error occurring from the +automated <span +class="cmtt-10">\glssee </span>normally triggered by this key. The <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-47021"></a> package option +will automatically deal with this. +</p><!--l. 11083--><p class="indent" > For example: + + + +</p> + <div class="verbatim" id="verbatim-261"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\newglossaryentry{zebra}{name={zebra},description={stripy animal}} + <br />\newglossaryentry{ant}{name={ant},description={an insect}} + <br />\begin{document} + <br />\gls{ant} and \gls{zebra} + <br />\printunsrtglossaries + <br />\end{document} +</div> +<!--l. 11097--><p class="nopar" > In the above, zebra will be listed before ant as it was defined first. +</p><!--l. 11101--><p class="indent" > If you allow document definitions with the <a +href="#styopt.docdefs"><span +class="cmss-10">docdefs</span></a><a + id="dx1-47022"></a> option, the document will +require a second <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> run if the entries are defined after <span +class="cmtt-10">\printunsrtglossary</span>. +</p><!--l. 11105--><p class="indent" > The optional argument is as for <span +class="cmtt-10">\printnoidxglossary </span>(except for the <span +class="cmss-10">sort</span><a + id="dx1-47023"></a> key, +which isn’t available). +</p><!--l. 11108--><p class="indent" > All glossaries may be displayed in the order of their definition using: +</p><!--l. 11110--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaries</span><span +class="cmtt-9"> </span></span><a + id="dx1-47024"></a> <span +class="cmtt-10">\printunsrtglossaries </span></div><hr> +</p><!--l. 11112--><p class="noindent" > +which is analogous to <span +class="cmtt-10">\printnoidxglossaries</span>. This just iterates over all defined +glossaries (that aren’t on the ignored list) and does <span +class="cmtt-10">\printunsrtglossary</span>[type=⟨<span +class="cmti-10">type</span>⟩]. +</p><!--l. 11117--><p class="indent" > To avoid complications caused by <span +class="cmss-10">tabular</span><a + id="dx1-47025"></a><a + id="dx1-47026"></a>-like glossary styles, <span +class="cmtt-10">\printunsrtglossary</span> +iterates over all entries in the selected glossary and appends the appropriate code to +an internal command. Once the construction of this command is complete, then it’s +performed to display the glossary. This puts the loop outside the style code. For +convenience, there’s a hook used within the loop: +</p><!--l. 11124--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaryentryprocesshook</span><span +class="cmtt-9"> </span></span><a + id="dx1-47027"></a> <span +class="cmtt-10">\printunsrtglossaryentryprocesshook</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11126--><p class="noindent" > +This hook should not display any content, but may be used to perform calculations. +For example, to calculate widths. Within this hook you can use: +</p><!--l. 11130--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaryskipentry</span><span +class="cmtt-9"> </span></span><a + id="dx1-47028"></a> <span +class="cmtt-10">\printunsrtglossaryskipentry </span></div><hr> +</p><!--l. 11132--><p class="noindent" > +to skip the current entry. This will prevent the entry from being added to the internal +command. +</p><!--l. 11136--><p class="indent" > There’s another hook immediately before the internal command containing the +glossary code is performed: +</p><!--l. 11138--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossarypredoglossary</span><span +class="cmtt-9"> </span></span><a + id="dx1-47029"></a> <span +class="cmtt-10">\printunsrtglossarypredoglossary</span> +</div><hr> +</p><!--l. 11140--><p class="noindent" > + + + +</p><!--l. 11142--><p class="indent" > The internal command uses +</p><!--l. 11143--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaryhandler</span><span +class="cmtt-9"> </span></span><a + id="dx1-47030"></a> <span +class="cmtt-10">\printunsrtglossaryhandler{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 11145--><p class="noindent" > +to display each item in the list, where ⟨<span +class="cmti-10">label</span>⟩ is the current label. +</p><!--l. 11148--><p class="indent" > By default the handler just does +</p><!--l. 11149--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrunsrtdo</span><span +class="cmtt-9"> </span></span><a + id="dx1-47031"></a> <span +class="cmtt-10">\glsxtrunsrtdo{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11151--><p class="noindent" > +which determines whether to use <span +class="cmtt-10">\glossentry </span>or <span +class="cmtt-10">\subglossentry </span>and checks the +<span +class="cmss-10">location</span><a + id="dx1-47032"></a> and <span +class="cmss-10">loclist</span><a + id="dx1-47033"></a> fields for the <a + id="dx1-47034"></a><a +href="#glo:numberlist">number list</a>. If you want to use a different field to be +used instead of <span +class="cmss-10">location</span><a + id="dx1-47035"></a> then redefine: +</p><!--l. 11157--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrLocationField</span><span +class="cmtt-9"> </span></span><a + id="dx1-47036"></a> <span +class="cmtt-10">\GlsXtrLocationField </span></div><hr> +</p><!--l. 11159--><p class="noindent" > +to the internal name of the desired field. For example: + + + +</p> + <div class="verbatim" id="verbatim-262"> +\renewcommand{\GlsXtrLocationField}{primarylocation} +</div> +<!--l. 11163--><p class="nopar" > +</p><!--l. 11164--><p class="indent" > <div class="important" title="Important Note"> Note that if the given location field is undefined or unset, the handler will +fallback on the <span +class="cmss-10">loclist</span><a + id="dx1-47037"></a> field. </div> +</p><!--l. 11167--><p class="noindent" > +You can instruct <a + id="dx1-47038"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a> to omit setting the <span +class="cmss-10">loclist</span><a + id="dx1-47039"></a> field with the resource option +<span +class="cmtt-10">--save-loclist=false </span>to prevent it from being used as a fallback. +</p><!--l. 11172--><p class="indent" > You can redefine the handler if required. For example, you may want to filter +entries according to the category label. You can test if a label is contained in a +comma-separated list of labels using: +</p><!--l. 11176--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtriflabelinlist</span><span +class="cmtt-9"> </span></span><a + id="dx1-47040"></a> <span +class="cmtt-10">\glsxtriflabelinlist{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label list</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">true</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmitt-10">false</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11178--><p class="noindent" > +The ⟨<span +class="cmti-10">label</span>⟩ and ⟨<span +class="cmti-10">label list</span>⟩ will be fully expanded. +</p><!--l. 11181--><p class="indent" > <div class="important" title="Important Note"> If you redefine the handler to exclude entries, you may end up with an empty +glossary. This could cause a problem for the list-based styles. </div> +</p><!--l. 11185--><p class="noindent" > +</p><!--l. 11187--><p class="indent" > For example, if the preamble includes: + + + +</p> + <div class="verbatim" id="verbatim-263"> +\usepackage[record,style=index]{glossaries-extra} + <br />\GlsXtrRecordCounter{section} +</div> +<!--l. 11191--><p class="nopar" > then you can print the glossary but first redefine the handler to only select entries +that include the current section number in the <span +class="cmtt-10">record.section </span>field: + + + +</p> + <div class="verbatim" id="verbatim-264"> +\renewcommand{\printunsrtglossaryhandler}[1]{% + <br />  \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + <br />  {\glsxtrunsrtdo{#1}}% + <br />  {}% + <br />} +</div> +<!--l. 11201--><p class="nopar" > +</p><!--l. 11203--><p class="indent" > Alternatively you can use the starred form of <span +class="cmtt-10">\printunsrtglossary </span>which will +localise the change: + + + +</p> + <div class="verbatim" id="verbatim-265"> +\printunsrtglossary*{% + <br />  \renewcommand{\printunsrtglossaryhandler}[1]{% + <br />    \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + <br />    {\glsxtrunsrtdo{#1}}% + <br />    {}% + <br />  }% + <br />} +</div> +<!--l. 11214--><p class="nopar" > +</p><!--l. 11216--><p class="indent" > If you are using the <span +class="cmss-10">hyperref</span><a + id="dx1-47041"></a> package and want to display the same glossary more +than once, you can also add a temporary redefinition of <span +class="cmtt-10">\glolinkprefix </span>to avoid +duplicate hypertarget names. For example: + + + +</p> + <div class="verbatim" id="verbatim-266"> +\printunsrtglossary*{% + <br />  \renewcommand{\printunsrtglossaryhandler}[1]{% + <br />    \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + <br />    {\glsxtrunsrtdo{#1}}% + <br />    {}% + <br />  }% + <br />  \ifcsundef{theHsection}% + <br />  {% + <br />    \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + <br />  }% + <br />  {% + <br />    \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + <br />  }% + <br />} +</div> +<!--l. 11236--><p class="nopar" > Note that this will cause a problem if your descriptions contain commands like <span +class="cmtt-10">\gls</span> +that need to link an entry that doesn’t appear in the summary. In this case, it’s a +better approach to use: + + + +</p> + <div class="verbatim" id="verbatim-267"> +\printunsrtglossary*{% + <br />  \renewcommand{\printunsrtglossaryhandler}[1]{% + <br />    \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + <br />    {\glsxtrunsrtdo{#1}}% + <br />    {}% + <br />  }% + <br />  \ifcsundef{theHsection}% + <br />  {% + <br />    \setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}% + <br />  }% + <br />  {% + <br />    \setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}% + <br />  }% + <br />} +</div> +<!--l. 11256--><p class="nopar" > +</p><!--l. 11258--><p class="indent" > 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: + + + +</p> + <div class="verbatim" id="verbatim-268"> +\printunsrtglossary*{% + <br />  \renewcommand{\printunsrtglossaryhandler}[1]{% + <br />    \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + <br />    {\glsxtrunsrtdo{#1}}% + <br />    {}% + <br />  }% + <br />  \ifcsundef{theHsection}% + <br />  {% + <br />    \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + <br />  }% + <br />  {% + <br />    \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + <br />  }% + <br />  \renewcommand*{\glossarysection}[2][]{}% + <br />  \appto\glossarypostamble{\glspar\medskip\glspar}% + <br />} +</div> +<!--l. 11278--><p class="nopar" > +</p><!--l. 11280--><p class="indent" > There’s a shortcut command that essentially does this: +</p><!--l. 11281--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaryunit</span><span +class="cmtt-9"> </span></span><a + id="dx1-47042"></a> <span +class="cmtt-10">\printunsrtglossaryunit[</span>⟨<span +class="cmitt-10">options</span>⟩<span +class="cmtt-10">]{</span>⟨<span +class="cmitt-10">counter</span> +<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11283--><p class="noindent" > +The above example can simply be replaced with: + + + +</p> + <div class="verbatim" id="verbatim-269"> +\printunsrtglossaryunit{section} +</div> +<!--l. 11287--><p class="nopar" > +</p><!--l. 11289--><p class="indent" > This shortcut command is actually defined to use <span +class="cmtt-10">\printunsrtglossary*</span> +with +</p><!--l. 11290--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\printunsrtglossaryunitsetup</span><span +class="cmtt-9"> </span></span><a + id="dx1-47043"></a> <span +class="cmtt-10">\printunsrtglossaryunitsetup{</span>⟨<span +class="cmitt-10">counter</span> +<span +class="cmitt-10">name</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11292--><p class="noindent" > +so if you want to just make some minor modifications you can do + + + +</p> + <div class="verbatim" id="verbatim-270"> +\printunsrtglossary*{\printunsrtglossaryunitsetup{section}% + <br />  \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}% + <br />} +</div> +<!--l. 11299--><p class="nopar" > which will start the list with a subsection header with the title “Summary” +(overriding the glossary’s title). +</p><!--l. 11303--><p class="indent" > Note that this shortcut command is only available with the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-47044"></a> (or +<a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-47045"></a>) package option. +</p><!--l. 11306--><p class="indent" > This temporary change in the hypertarget prefix means you need to explicitly use +<span +class="cmtt-10">\hyperlink </span>to create a link to it as commands like <span +class="cmtt-10">\gls </span>will try to link to the target +created with the default definition of <span +class="cmtt-10">\gloslinkprefix</span>. This isn’t a problem if you +want a primary glossary of all terms produced using just <span +class="cmtt-10">\printunsrtglossary </span>(in +the front or back matter) which can be the target for all glossary references and then +just use <span +class="cmtt-10">\printunsrtglossaryunit </span>for a quick summary at the start of a section +etc. +</p><!--l. 11316--><p class="noindent" > +</p> +<!--l. 11316--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.3 </span> <a + id="sec:glossentry"></a>Standalone Entry Items</h3> +<!--l. 11319--><p class="noindent" >It may be that you don’t want a list but would rather display entry details +throughout the document. You can simply do <span +class="cmtt-10">\glsentryname </span>followed by +<span +class="cmtt-10">\glsentrydesc</span>. (Remember that if you don’t want a sorted list, use <a +href="#styopt.sort"><span +class="cmss-10">sort</span></a><span +class="cmss-10">=none</span><a + id="dx1-48001"></a> to +skip the construction of the <span +class="cmss-10">sort</span><a + id="dx1-48002"></a> field.) For example, in the preamble provide a +custom command: + + + +</p> + <div class="verbatim" id="verbatim-271"> +\newcommand{\displayterm}[1]{% + <br /> \par\medskip\par\noindent + <br /> Definition: \glsentryname{#1}.\par + <br /> \glsentrydesc{#1} + <br /> \par\medskip + <br />} +</div> +<!--l. 11333--><p class="nopar" > define your entries + + + +</p> + <div class="verbatim" id="verbatim-272"> +\newglossaryentry{function}{name={function}, + <br />  description={a relation or expression involving variables} + <br />} +</div> +<!--l. 11339--><p class="nopar" > and then later in the text: + + + +</p> + <div class="verbatim" id="verbatim-273"> +\displayterm{function} +</div> +<!--l. 11343--><p class="nopar" > +</p><!--l. 11345--><p class="indent" > However, if may be that you want to use <span +class="cmss-10">hyperref</span><a + id="dx1-48003"></a> and have commands like <span +class="cmtt-10">\gls</span> +link back to the place where the term is described. Instead of using <span +class="cmtt-10">\glsentryname</span> +use +</p><!--l. 11349--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrglossentry</span><span +class="cmtt-9"> </span></span><a + id="dx1-48004"></a> <span +class="cmtt-10">\glsxtrglossentry{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11351--><p class="noindent" > +where ⟨<span +class="cmti-10">label</span>⟩ is the entry’s label. +</p><!--l. 11354--><p class="indent" > This is designed to behave much like the way the name is displayed in the +glossary. It performs the following: </p> + <ul class="itemize1"> + <li class="itemize">Defines <span +class="cmtt-10">\glscurrententrylabel </span>to the entry’s label. This is usually + done at the start of the glossary style commands <span +class="cmtt-10">\glossentry </span>and + <span +class="cmtt-10">\subglossentry </span>and may be used by hooks, such as the post-name + hooks. Here the definition is localised so that it’s only available for use in + <span +class="cmtt-10">\glossentryname</span>. + </li> + <li class="itemize">Defines <span +class="cmtt-10">\currentglossary </span>to the entry’s glossary type. This is usually done at + the start of commands like <span +class="cmtt-10">\printglossary </span>and may be used by style hooks. + Here the definition is localised so that it’s only available for use in + <span +class="cmtt-10">\glsentryitem </span>and <span +class="cmtt-10">\glssubentryitem</span>. The value is obtained by fully + expanding: + <!--l. 11369--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrStandaloneGlossaryType</span><span +class="cmtt-9"> </span></span><a + id="dx1-48005"></a> <span +class="cmtt-10">\GlsXtrStandaloneGlossaryType</span> + </div><hr> + </p><!--l. 11371--><p class="noindent" > + which defaults to the value of the <span +class="cmss-10">type</span><a + id="dx1-48006"></a> field for the current entry. + </p></li> + <li class="itemize">Increments and display the entry counters if the <a +href="#styopt.entrycounter"><span +class="cmss-10">entrycounter</span></a><a + id="dx1-48007"></a> or <a +href="#styopt.subentrycounter"><span +class="cmss-10">subentrycounter</span></a><a + id="dx1-48008"></a> + package options are set. If the entry doesn’t have a parent, then this + does + <ul class="itemize2"> + <li class="itemize"><span +class="cmtt-10">\glsentryitem{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span></li></ul> + <!--l. 11382--><p class="noindent" >otherwise it does (as from v1.31) </p> + <ul class="itemize2"> + <li class="itemize"><span +class="cmtt-10">\GlsXtrStandaloneSubEntryItem</span><a + id="dx1-48009"></a> + <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>which defaults to <span +class="cmtt-10">\glssubentryitem{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">} </span>if the entry has + a parent but not a grandparent.</li></ul> + + + + <!--l. 11388--><p class="noindent" >This reflects the behaviour of the predefined hierarchical styles. A bug in + pre-version 1.31 used <span +class="cmtt-10">\glsentryitem </span>for all child levels, which doesn’t match + the hierarchical glossary styles. If you want to restore this behaviour, just + do: + + + +</p> + <div class="verbatim" id="verbatim-274"> + \renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}} +</div> + <!--l. 11394--><p class="nopar" > + </p></li> + <li class="itemize">Sets the hyper-target if supported (using <span +class="cmtt-10">\glstarget</span>) and displays the entry + name using: + <!--l. 11398--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrStandaloneEntryName</span><span +class="cmtt-9"> </span></span><a + id="dx1-48010"></a> <span +class="cmtt-10">\GlsXtrStandaloneEntryName{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> + </div><hr> + </p><!--l. 11400--><p class="noindent" > + which uses <span +class="cmtt-10">\glstarget{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">{</span><span +class="cmtt-10">\glossentryname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span><span +class="cmsy-10">} </span>by default. + Remember that <span +class="cmtt-10">\glossentryname </span>uses <span +class="cmtt-10">\glsnamefont </span>or picks up the style + from category attributes such as <a +href="#catattr.glossnamefont"><span +class="cmss-10">glossnamefont</span></a><a + id="dx1-48011"></a>.</p></li></ul> +<!--l. 11408--><p class="noindent" >If you have used <span +class="cmtt-10">\nopostdesc</span><a + id="dx1-48012"></a> or <span +class="cmtt-10">\glsxtrnopostpunc</span><a + id="dx1-48013"></a> in any of your description fields, +you can use +</p><!--l. 11410--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtractivatenopost</span><span +class="cmtt-9"> </span></span><a + id="dx1-48014"></a> <span +class="cmtt-10">\glsxtractivatenopost </span></div><hr> +</p><!--l. 11412--><p class="noindent" > +to make these commands behave as they normally do within a glossary. This needs to +be placed before </p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\glossentrydesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}\glspostdescription</span> +</div> +</div> and scoped. Note that <span +class="cmtt-10">\glsnonextpages </span>and <span +class="cmtt-10">\glsnextpages </span>have no effect outside +of the glossary and are not intended for use in a standalone context. +<!--l. 11422--><p class="indent" > It’s also possible to select a different field (rather than using <span +class="cmss-10">name</span><a + id="dx1-48015"></a>): +</p><!--l. 11424--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrglossentryother</span><span +class="cmtt-9"> </span></span><a + id="dx1-48016"></a> <span +class="cmtt-10">\glsxtrglossentryother{</span>⟨<span +class="cmitt-10">header</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 11426--><p class="noindent" > +The ⟨<span +class="cmti-10">field</span>⟩ must be given using its internal field label which may not be the same as +the key used to set the field. See the key to field mappings table in the <span +class="cmss-10">glossaries </span>user +manual. The ⟨<span +class="cmti-10">header</span>⟩ argument is the code to pass to the third argument of +<span +class="cmtt-10">\glsxtrtitleorpdforheading</span>. It may be left empty in which case the default is +determined as follows: </p> + <ul class="itemize1"> + <li class="itemize">If <span +class="cmtt-10">\glsxtrhead</span>⟨<span +class="cmitt-10">field</span>⟩ is defined, then ⟨<span +class="cmti-10">header</span>⟩ is <span +class="cmtt-10">\glsxtrhead</span>⟨<span +class="cmitt-10">field</span>⟩ + <span +class="cmtt-10">{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. + + + + </li> + <li class="itemize">Otherwise ⟨<span +class="cmti-10">header</span>⟩ is simply the field value.</li></ul> +<!--l. 11438--><p class="noindent" >The <span +class="cmtt-10">\glsxtrglossentryother </span>command internally uses +</p><!--l. 11439--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrStandaloneEntryOther</span><span +class="cmtt-9"> </span></span><a + id="dx1-48017"></a> <span +class="cmtt-10">\GlsXtrStandaloneEntryOther{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 11441--><p class="noindent" > +instead of <span +class="cmtt-10">\GlsXtrStandaloneEntryName</span>, which uses <span +class="cmtt-10">\glossentrynameother{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span> +<span +class="cmtt-10">{</span>⟨<span +class="cmti-10">field</span>⟩<span +class="cmtt-10">} </span>instead of <span +class="cmtt-10">\glossentryname{</span>⟨<span +class="cmti-10">label</span>⟩<span +class="cmtt-10">}</span>. +</p><!--l. 11446--><p class="indent" > If you have loaded the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-48018"></a> package (through the <a +href="#styopt.accsupp"><span +class="cmss-10">accsupp</span></a><a + id="dx1-48019"></a> option) +then accessibility support will be provided if there’s a corresponding command +</p><div class="alltt"> +<div class="obeylines-v"> +<span +class="cmtt-10">\gls</span>⟨<span +class="cmitt-10">field</span>⟩<span +class="cmtt-10">accessdisplay{</span>⟨<span +class="cmitt-10">text</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div> +</div> (for example, <span +class="cmtt-10">\glssymbolaccessdisplay</span>). +<!--l. 11455--><p class="indent" > This means that my custom command can be changed to: + + + +</p> + <div class="verbatim" id="verbatim-275"> +\newcommand{\displayterm}[1]{% + <br /> \par\medskip\par\noindent + <br /> Definition: \glsxtrglossentry{#1}.\par + <br /> \glsentrydesc{#1} + <br /> \par\medskip + <br />} +</div> +<!--l. 11463--><p class="nopar" > If I want numbered definitions, then I can use the package options <span +class="cmss-10">entrycounter</span><a + id="dx1-48020"></a> or +<span +class="cmss-10">subentrycounter</span><a + id="dx1-48021"></a> and remove the colon: + + + +</p> + <div class="verbatim" id="verbatim-276"> +\newcommand{\displayterm}[1]{% + <br /> \par\medskip\par\noindent + <br /> Definition \glsxtrglossentry{#1}.\par + <br /> \glsentrydesc{#1} + <br /> \par\medskip + <br />} +</div> +<!--l. 11474--><p class="nopar" > The counter label uses a dot after the number by default but this can be changed to +a colon: + + + +</p> + <div class="verbatim" id="verbatim-277"> +\renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space} +</div> +<!--l. 11479--><p class="nopar" > It’s now possible to not only use <span +class="cmtt-10">\gls </span>to link back to the definition but also use +<span +class="cmtt-10">\glsrefentry </span>to reference the counter and <span +class="cmtt-10">\glsxtrpageref </span>to reference the page +number. +</p><!--l. 11484--><p class="indent" > If I want the description to behave more like it does in a glossary in need to make +the following modification: + + + +</p> + <div class="verbatim" id="verbatim-278"> +\newcommand{\displayterm}[1]{% + <br /> \par\medskip\par\noindent + <br /> Definition \glsxtrglossentry{#1}.\par + <br /> \begingroup + <br />  \glsxtractivatenopost + <br />  \glossentrydesc{#1}\glspostdescription + <br /> \endgroup + <br /> \par\medskip + <br />} +</div> +<!--l. 11496--><p class="nopar" > (Note the grouping to localise <span +class="cmtt-10">\glsxtractivatenopost</span>.) +</p><!--l. 11499--><p class="indent" > You can also use <span +class="cmtt-10">\glsxtrglossentry </span>within section headings. For example: + + + +</p> + <div class="verbatim" id="verbatim-279"> +\section{\glsxtrglossentry{function}} +</div> +<!--l. 11503--><p class="nopar" > This will use <span +class="cmtt-10">\glsentryname </span>in PDF bookmarks (if <span +class="cmtt-10">\texorpdfstring </span>is defined) +and will use <span +class="cmtt-10">\glsxtrheadname </span>in page headers and table of contents. (If you’re using +a page style or table of contents that doesn’t use <span +class="cmtt-10">\markright </span>or <span +class="cmtt-10">\markbook </span>or +<span +class="cmtt-10">\@starttoc </span>then you need to insert <span +class="cmtt-10">\glsxtrmarkhook </span>and <span +class="cmtt-10">\@glsxtrinmark </span>at the +start of the header or table of contents either scoped or afterwards cancelled with +<span +class="cmtt-10">\@glsxtrnotinmark </span>and <span +class="cmtt-10">\glsxtrrestoremarkhook</span>.) +</p><!--l. 11513--><p class="noindent" > +</p> +<!--l. 11513--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.4 </span> <a + id="sec:alias"></a>Entry Aliases</h3> +<!--l. 11516--><p class="noindent" >An entry can be made an alias of another entry using the <span +class="cmss-10">alias</span><a + id="dx1-49001"></a> key. The +value should be the label of the other term. There’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 +<a + id="dx1-49002"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span></a>.) +</p><!--l. 11523--><p class="indent" > If an entry ⟨<span +class="cmti-10">entry-1</span>⟩ is made an alias of ⟨<span +class="cmti-10">entry-2</span>⟩ then: </p> + <ul class="itemize1"> + <li class="itemize">If the <span +class="cmss-10">see</span><a + id="dx1-49003"></a> field wasn’t provided when ⟨<span +class="cmti-10">entry-1</span>⟩ was defined, the <span +class="cmss-10">alias</span><a + id="dx1-49004"></a> key will + automatically trigger <div class="alltt"> + <div class="obeylines-v"> + <span +class="cmtt-10">\glssee{</span>⟨<span +class="cmitt-10">entry-1</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">entry-2</span>⟩<span +class="cmtt-10">}</span> +</div> + </div> + </li> + <li class="itemize">If the <span +class="cmss-10">hyperref</span><a + id="dx1-49005"></a> package has been loaded then <span +class="cmtt-10">\gls{</span>⟨<span +class="cmti-10">entry-1</span>⟩<span +class="cmtt-10">} </span>will link to + ⟨<span +class="cmti-10">entry-2</span>⟩’s target. (Unless the <a +href="#catattr.targeturl"><span +class="cmss-10">targeturl</span></a><a + id="dx1-49006"></a> attribute has been set for ⟨<span +class="cmti-10">entry-1</span>⟩’s + category.) + </li> + <li class="itemize">With <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=off</span><a + id="dx1-49007"></a> or <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=alsoindex</span><a + id="dx1-49008"></a>, the <span +class="cmss-10">noindex</span><a + id="dx1-49009"></a> setting will automatically + be triggered when referencing ⟨<span +class="cmti-10">entry-1</span>⟩ with commands like <span +class="cmtt-10">\gls </span>or + <span +class="cmtt-10">\glstext</span>. This prevents ⟨<span +class="cmti-10">entry-1</span>⟩ from have a <a + id="dx1-49010"></a><a +href="#glo:locationlist">location list</a> (aside from + the cross-reference added with <span +class="cmtt-10">\glssee</span>) unless it’s been explicitly + indexed with <span +class="cmtt-10">\glsadd </span>or if the indexing has been explicitly set using + <span +class="cmtt-10">noindex=false</span>. + + + + <!--l. 11542--><p class="noindent" >Note that with <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-49011"></a>, the <a + id="dx1-49012"></a>location list for aliased entries is controlled + with <a + id="dx1-49013"></a><span +class="cmtt-10">bib2gls</span>’s settings.</p></li></ul> +<!--l. 11546--><p class="indent" > The index suppression trigger is performed by +</p><!--l. 11547--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrsetaliasnoindex</span><span +class="cmtt-9"> </span></span><a + id="dx1-49014"></a> <span +class="cmtt-10">\glsxtrsetaliasnoindex </span></div><hr> +</p><!--l. 11549--><p class="noindent" > +This is performed after the default options provided by <span +class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span><a + id="dx1-49015"></a> +have been set. With <a +href="#styopt.record"><span +class="cmss-10">record</span></a><span +class="cmss-10">=only</span><a + id="dx1-49016"></a>, <span +class="cmtt-10">\glsxtrsetaliasnoindex </span>will default to do +nothing. +</p><!--l. 11555--><p class="indent" > Within the definition of <span +class="cmtt-10">\glsxtrsetaliasnoindex </span>you can use +</p><!--l. 11556--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtrindexaliased</span><span +class="cmtt-9"> </span></span><a + id="dx1-49017"></a> <span +class="cmtt-10">\glsxtrindexaliased </span></div><hr> +</p><!--l. 11558--><p class="noindent" > +to index ⟨<span +class="cmti-10">entry-2</span>⟩. +</p><!--l. 11561--><p class="indent" > The index suppression command can be redefined to index the main term instead. +For example: + + + +</p> + <div class="verbatim" id="verbatim-280"> +\renewcommand{\glsxtrsetaliasnoindex}{% + <br /> \glsxtrindexaliased + <br /> \setkeys{glslink}{noindex}% + <br />} +</div> +<!--l. 11568--><p class="nopar" > +</p><!--l. 11570--><p class="indent" > The value of the <span +class="cmss-10">alias</span><a + id="dx1-49018"></a> field can be accessed using +</p><!--l. 11571--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsxtralias</span><span +class="cmtt-9"> </span></span><a + id="dx1-49019"></a> <span +class="cmtt-10">\glsxtralias{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11573--><p class="noindent" > + + + +</p> +<!--l. 11575--><p class="indent" > </div> +</p><!--l. 11575--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">11. <a + id="sec:supplemental"></a>Supplemental Packages</h2> +</p><!--l. 11578--><p class="indent" > The <span +class="cmss-10">glossaries </span>bundle provides additional support packages <span +class="cmss-10">glossaries-prefix</span><a + id="dx1-50001"></a> (for +prefixing) and <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-50002"></a> (for accessibility support). These packages aren’t +automatically loaded. +</p> +<!--l. 11583--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.1 </span> <a + id="sec:prefix"></a>Prefixes or Determiners</h3> +<!--l. 11586--><p class="noindent" >If prefixing is required, you can simply load <span +class="cmss-10">glossaries-prefix</span><a + id="dx1-51001"></a> after <span +class="cmss-10">glossaries-extra</span>. For +example: + + + +</p> + <div class="verbatim" id="verbatim-281"> +\documentclass{article} + <br />\usepackage{glossaries-extra} + <br />\usepackage{glossaries-prefix} + <br />\makeglossaries + <br />\newabbreviation + <br /> [prefix={an\space}, + <br /> prefixfirst={a~}] + <br /> {svm}{SVM}{support vector machine} + <br />\begin{document} + <br />First use: \pgls{svm}. + <br />Next use: \pgls{svm}. + <br />\printglossaries + <br />\end{document} +</div> +<!--l. 11609--><p class="nopar" > +</p><!--l. 11611--><p class="noindent" > +</p> +<!--l. 11611--><p class="noindent" ><a +href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.2 </span> <a + id="sec:accsupp"></a>Accessibility Support</h3> +<!--l. 11614--><p class="noindent" >The <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52001"></a> package needs to be loaded before <span +class="cmss-10">glossaries-extra </span>or through +the <a +href="#styopt.accsupp"><span +class="cmss-10">accsupp</span></a><a + id="dx1-52002"></a> package option: + + + +</p> + <div class="verbatim" id="verbatim-282"> +\usepackage[accsupp]{glossaries-extra} +</div> +<!--l. 11619--><p class="nopar" > If you don’t load <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52003"></a> or you load <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52004"></a> after <span +class="cmss-10">glossaries-extra</span> +the new <span +class="cmtt-10">\glsaccess</span>⟨<span +class="cmti-10">xxx</span>⟩ commands described below will simply be equivalent to the +corresponding <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmti-10">xxx</span>⟩ commands. +</p><!--l. 11626--><p class="indent" > The following <span +class="cmtt-10">\glsaccess</span>⟨<span +class="cmti-10">xxx</span>⟩ commands add accessibility information wrapped +around the corresponding <span +class="cmtt-10">\glsentry</span>⟨<span +class="cmti-10">xxx</span>⟩ commands. There is no check for existence +of the entry nor do any of these commands add formatting, hyperlinks or indexing +information. +</p><!--l. 11631--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessname</span><span +class="cmtt-9"> </span></span><a + id="dx1-52005"></a> <span +class="cmtt-10">\glsaccessname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11633--><p class="noindent" > +This displays the value of the <span +class="cmss-10">name</span><a + id="dx1-52006"></a> field for the entry identified by ⟨<span +class="cmti-10">label</span>⟩. +</p><!--l. 11637--><p class="indent" > If the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52007"></a> package isn’t loaded, this is simply defined as: + + + +</p> + <div class="verbatim" id="verbatim-283"> +\newcommand*{\glsaccessname}[1]{\glsentryname{#1}} +</div> +<!--l. 11641--><p class="nopar" > otherwise it’s defined as: + + + +</p> + <div class="verbatim" id="verbatim-284"> +\newcommand*{\glsaccessname}[1]{% + <br />  \glsnameaccessdisplay + <br />  {% + <br />    \glsentryname{#1}% + <br />  }% + <br />  {#1}% + <br />} +</div> +<!--l. 11651--><p class="nopar" > (<span +class="cmtt-10">\glsnameaccessdisplay</span><a + id="dx1-52008"></a> is defined by the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52009"></a> package.) The first +letter upper case version is: +</p><!--l. 11655--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessname</span><span +class="cmtt-9"> </span></span><a + id="dx1-52010"></a> <span +class="cmtt-10">\Glsaccessname{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11657--><p class="noindent" > +Without the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52011"></a> package this is just defined as: + + + +</p> + <div class="verbatim" id="verbatim-285"> +\newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} +</div> +<!--l. 11662--><p class="nopar" > With the <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-52012"></a> package this is defined as: + + + +</p> + <div class="verbatim" id="verbatim-286"> +\newcommand*{\Glsaccessname}[1]{% + <br />  \glsnameaccessdisplay + <br />  {% + <br />    \Glsentryname{#1}% + <br />  }% + <br />  {#1}% + <br />} +</div> +<!--l. 11672--><p class="nopar" > +</p><!--l. 11674--><p class="indent" > The following commands are all defined in an analogous manner. +</p><!--l. 11675--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccesstext</span><span +class="cmtt-9"> </span></span><a + id="dx1-52013"></a> <span +class="cmtt-10">\glsaccesstext{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11677--><p class="noindent" > +This displays the value of the <span +class="cmss-10">text</span><a + id="dx1-52014"></a> field. +</p><!--l. 11680--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccesstext</span><span +class="cmtt-9"> </span></span><a + id="dx1-52015"></a> <span +class="cmtt-10">\Glsaccesstext{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11682--><p class="noindent" > +This displays the value of the <span +class="cmss-10">text</span><a + id="dx1-52016"></a> field with the first letter converted to upper +case. +</p><!--l. 11686--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52017"></a> <span +class="cmtt-10">\glsaccessplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11688--><p class="noindent" > +This displays the value of the <span +class="cmss-10">plural</span><a + id="dx1-52018"></a> field. +</p><!--l. 11691--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52019"></a> <span +class="cmtt-10">\Glsaccessplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11693--><p class="noindent" > +This displays the value of the <span +class="cmss-10">plural</span><a + id="dx1-52020"></a> field with the first letter converted to upper +case. +</p><!--l. 11697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessfirst</span><span +class="cmtt-9"> </span></span><a + id="dx1-52021"></a> <span +class="cmtt-10">\glsaccessfirst{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11699--><p class="noindent" > +This displays the value of the <span +class="cmss-10">first</span><a + id="dx1-52022"></a> field. +</p><!--l. 11702--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessfirst</span><span +class="cmtt-9"> </span></span><a + id="dx1-52023"></a> <span +class="cmtt-10">\Glsaccessfirst{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11704--><p class="noindent" > +This displays the value of the <span +class="cmss-10">first</span><a + id="dx1-52024"></a> field with the first letter converted to upper +case. +</p><!--l. 11708--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessfirstplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52025"></a> <span +class="cmtt-10">\glsaccessfirstplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11710--><p class="noindent" > +This displays the value of the <span +class="cmss-10">firstplural</span><a + id="dx1-52026"></a> field. +</p><!--l. 11713--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessfirstplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52027"></a> <span +class="cmtt-10">\Glsaccessfirstplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11715--><p class="noindent" > +This displays the value of the <span +class="cmss-10">firstplural</span><a + id="dx1-52028"></a> field with the first letter converted to upper +case. +</p><!--l. 11719--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccesssymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-52029"></a> <span +class="cmtt-10">\glsaccesssymbol{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11721--><p class="noindent" > +This displays the value of the <span +class="cmss-10">symbol</span><a + id="dx1-52030"></a> field. +</p><!--l. 11724--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccesssymbol</span><span +class="cmtt-9"> </span></span><a + id="dx1-52031"></a> <span +class="cmtt-10">\Glsaccesssymbol{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 11726--><p class="noindent" > +This displays the value of the <span +class="cmss-10">symbol</span><a + id="dx1-52032"></a> field with the first letter converted to upper +case. +</p><!--l. 11730--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccesssymbolplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52033"></a> <span +class="cmtt-10">\glsaccesssymbolplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11732--><p class="noindent" > +This displays the value of the <span +class="cmss-10">symbolplural</span><a + id="dx1-52034"></a> field. +</p><!--l. 11735--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccesssymbolplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52035"></a> <span +class="cmtt-10">\Glsaccesssymbolplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11737--><p class="noindent" > +This displays the value of the <span +class="cmss-10">symbolplural</span><a + id="dx1-52036"></a> field with the first letter converted to +upper case. +</p><!--l. 11741--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessdesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-52037"></a> <span +class="cmtt-10">\glsaccessdesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11743--><p class="noindent" > +This displays the value of the <span +class="cmss-10">description</span><a + id="dx1-52038"></a> field. +</p><!--l. 11746--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessdesc</span><span +class="cmtt-9"> </span></span><a + id="dx1-52039"></a> <span +class="cmtt-10">\Glsaccessdesc{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11748--><p class="noindent" > +This displays the value of the <span +class="cmss-10">description</span><a + id="dx1-52040"></a> field with the first letter converted to upper +case. +</p><!--l. 11752--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessdescplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52041"></a> <span +class="cmtt-10">\glsaccessdescplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11754--><p class="noindent" > +This displays the value of the <span +class="cmss-10">descriptionplural</span><a + id="dx1-52042"></a> field. +</p><!--l. 11757--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessdescplural</span><span +class="cmtt-9"> </span></span><a + id="dx1-52043"></a> <span +class="cmtt-10">\Glsaccessdescplural{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11759--><p class="noindent" > +This displays the value of the <span +class="cmss-10">descriptionplural</span><a + id="dx1-52044"></a> field with the first letter converted to +upper case. +</p><!--l. 11763--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-52045"></a> <span +class="cmtt-10">\glsaccessshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11765--><p class="noindent" > +This displays the value of the <span +class="cmss-10">short</span><a + id="dx1-52046"></a> field. +</p><!--l. 11768--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessshort</span><span +class="cmtt-9"> </span></span><a + id="dx1-52047"></a> <span +class="cmtt-10">\Glsaccessshort{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11770--><p class="noindent" > +This displays the value of the <span +class="cmss-10">short</span><a + id="dx1-52048"></a> field with the first letter converted to upper +case. +</p><!--l. 11774--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccessshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-52049"></a> <span +class="cmtt-10">\glsaccessshortpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11776--><p class="noindent" > +This displays the value of the <span +class="cmss-10">shortplural</span><a + id="dx1-52050"></a> field. +</p><!--l. 11779--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccessshortpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-52051"></a> <span +class="cmtt-10">\Glsaccessshortpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11781--><p class="noindent" > +This displays the value of the <span +class="cmss-10">shortplural</span><a + id="dx1-52052"></a> field with the first letter converted to upper +case. +</p><!--l. 11785--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccesslong</span><span +class="cmtt-9"> </span></span><a + id="dx1-52053"></a> <span +class="cmtt-10">\glsaccesslong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11787--><p class="noindent" > +This displays the value of the <span +class="cmss-10">long</span><a + id="dx1-52054"></a> field. +</p><!--l. 11790--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccesslong</span><span +class="cmtt-9"> </span></span><a + id="dx1-52055"></a> <span +class="cmtt-10">\Glsaccesslong{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11792--><p class="noindent" > +This displays the value of the <span +class="cmss-10">long</span><a + id="dx1-52056"></a> field with the first letter converted to upper +case. +</p><!--l. 11796--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\glsaccesslongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-52057"></a> <span +class="cmtt-10">\glsaccesslongpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> + + + +</p><!--l. 11798--><p class="noindent" > +This displays the value of the <span +class="cmss-10">longplural</span><a + id="dx1-52058"></a> field. +</p><!--l. 11801--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\Glsaccesslongpl</span><span +class="cmtt-9"> </span></span><a + id="dx1-52059"></a> <span +class="cmtt-10">\Glsaccesslongpl{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 11803--><p class="noindent" > +This displays the value of the <span +class="cmss-10">longplural</span><a + id="dx1-52060"></a> field with the first letter converted to upper +case. + + + +</p> +<!--l. 11807--><p class="indent" > </div> +</p><!--l. 11807--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">12. <a + id="sec:samples"></a>Sample Files</h2> +</p><!--l. 11810--><p class="indent" > The following sample files are provided with this package: + </p><dl class="description"><dt class="description"> +<span +class="cmbx-10">sample.tex</span> </dt><dd +class="description">Simple sample file that uses one of the dummy files provided by + the <span +class="cmss-10">glossaries </span>package for testing. + </dd><dt class="description"> +<span +class="cmbx-10">sample-abbr-styles.tex</span> </dt><dd +class="description">Demonstrates all predefined abbreviation styles. + </dd><dt class="description"> +<span +class="cmbx-10">sample-mixture.tex</span> </dt><dd +class="description">General entries, acronyms and initialisms all treated + differently. + </dd><dt class="description"> +<span +class="cmbx-10">sample-name-font</span> </dt><dd +class="description">Categories and attributes are used to customize the way + different entries appear. + </dd><dt class="description"> +<span +class="cmbx-10">sample-abbrv.tex</span> </dt><dd +class="description">General abbreviations. + </dd><dt class="description"> +<span +class="cmbx-10">sample-acronym.tex</span> </dt><dd +class="description">Acronyms aren’t initialisms and don’t expand on <a + id="dx1-53001"></a><a +href="#glo:firstuse">first + use</a>. + </dd><dt class="description"> +<span +class="cmbx-10">sample-acronym-desc.tex</span> </dt><dd +class="description">Acronyms that have a separate long form and + description. + </dd><dt class="description"> +<span +class="cmbx-10">sample-crossref.tex</span> </dt><dd +class="description">Unused entries that have been cross-referenced + automatically are added at the end of the document. + </dd><dt class="description"> +<span +class="cmbx-10">sample-indexhook.tex</span> </dt><dd +class="description">Use the index hook to track which entries have been + indexed (and therefore find out which ones haven’t been indexed). + </dd><dt class="description"> +<span +class="cmbx-10">sample-footnote.tex</span> </dt><dd +class="description">Footnote abbreviation style that moves the footnote + marker outside of the hyperlink generated by <span +class="cmtt-10">\gls </span>and moves it after + certain punctuation characters for neatness. + </dd><dt class="description"> +<span +class="cmbx-10">sample-undef.tex</span> </dt><dd +class="description">Warn on undefined entries instead of generating an error. + </dd><dt class="description"> +<span +class="cmbx-10">sample-mixed-abbrv-styles.tex</span> </dt><dd +class="description">Different abbreviation styles for different + entries. + + + + </dd><dt class="description"> +<span +class="cmbx-10">sample-initialisms.tex</span> </dt><dd +class="description">Automatically insert dots into initialisms. + </dd><dt class="description"> +<span +class="cmbx-10">sample-postdot.tex</span> </dt><dd +class="description">Another initialisms example. + </dd><dt class="description"> +<span +class="cmbx-10">sample-postlink.tex</span> </dt><dd +class="description">Automatically inserting text after the <a + id="dx1-53002"></a><a +href="#glo:linktext">link-text</a> + produced by commands like <span +class="cmtt-10">\gls </span>(outside of hyperlink, if present). + </dd><dt class="description"> +<span +class="cmbx-10">sample-header.tex</span> </dt><dd +class="description">Using entries in section/chapter headings. + </dd><dt class="description"> +<span +class="cmbx-10">sample-autoindex.tex</span> </dt><dd +class="description">Using the <a +href="#catattr.dualindex"><span +class="cmss-10">dualindex</span></a><a + id="dx1-53003"></a> and <a +href="#catattr.indexname"><span +class="cmss-10">indexname</span></a><a + id="dx1-53004"></a> attributes to + automatically add glossary entries to the index (in addition to the glossary + <a + id="dx1-53005"></a><a +href="#glo:locationlist">location list</a>). + </dd><dt class="description"> +<span +class="cmbx-10">sample-autoindex-hyp.tex</span> </dt><dd +class="description">As previous but uses <span +class="cmss-10">hyperref</span><a + id="dx1-53006"></a>. + </dd><dt class="description"> +<span +class="cmbx-10">sample-nested.tex</span> </dt><dd +class="description">Using <span +class="cmtt-10">\gls</span><a + id="dx1-53007"></a> within the value of the <span +class="cmss-10">name</span><a + id="dx1-53008"></a> key. + </dd><dt class="description"> +<span +class="cmbx-10">sample-entrycount.tex</span> </dt><dd +class="description">Enable entry-use counting (only index if used more + than <span +class="cmmi-10">n </span>times, see <a +href="#sec:entrycount"><span +class="cmsy-10">§</span>6.1 </a><a +href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>). + </dd><dt class="description"> +<span +class="cmbx-10">sample-unitentrycount.tex</span> </dt><dd +class="description">Enable use of per-unit entry-use counting (<a +href="#sec:entrycount"><span +class="cmsy-10">§</span>6.1 + </a><a +href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>). + </dd><dt class="description"> +<span +class="cmbx-10">sample-onelink.tex</span> </dt><dd +class="description">Using the per-unit entry counting (<a +href="#sec:entrycount"><span +class="cmsy-10">§</span>6.1 </a><a +href="#sec:entrycount">Entry Counting + (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>) to only have one hyperlink per entry per page. + </dd><dt class="description"> +<span +class="cmbx-10">sample-linkcount.tex</span> </dt><dd +class="description">Using link counting (<a +href="#sec:linkcount"><span +class="cmsy-10">§</span>6.2 </a><a +href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>) to only have + one hyperlink per entry. + </dd><dt class="description"> +<span +class="cmbx-10">sample-pages.tex</span> </dt><dd +class="description">Insert “page” or “pages” before the location list. + </dd><dt class="description"> +<span +class="cmbx-10">sample-altmodifier.tex</span> </dt><dd +class="description">Set the default options for commands like <span +class="cmtt-10">\gls </span>and + add an alternative modifier. + </dd><dt class="description"> +<span +class="cmbx-10">sample-mixedsort.tex</span> </dt><dd +class="description">Uses the optional argument of <span +class="cmtt-10">\makeglossaries </span>to + allow a mixture of <span +class="cmtt-10">\printglossary </span>and <span +class="cmtt-10">\printnoidxglossary</span>. + + + + </dd><dt class="description"> +<span +class="cmbx-10">sample-external.tex</span> </dt><dd +class="description">Uses the <a +href="#catattr.targeturl"><span +class="cmss-10">targeturl</span></a><a + id="dx1-53009"></a> attribute to allow for entries that + should link to an external URL rather than to an internal glossary. + </dd><dt class="description"> +<span +class="cmbx-10">sample-fmt.tex</span> </dt><dd +class="description">Provides text-block commands associated with entries in + order to use <span +class="cmtt-10">\glsxtrfmt</span>. + </dd><dt class="description"> +<span +class="cmbx-10">sample-alias.tex</span> </dt><dd +class="description">Uses the <span +class="cmss-10">alias</span><a + id="dx1-53010"></a> key. (See <a +href="#sec:alias"><span +class="cmsy-10">§</span>10.4 </a><a +href="#sec:alias">Entry Aliases<!--tex4ht:ref: sec:alias --></a>.) + </dd><dt class="description"> +<span +class="cmbx-10">sample-alttree.tex</span> </dt><dd +class="description">Uses the <span +class="cmss-10">glossaries-extra-stylemods</span><a + id="dx1-53011"></a> package with the <span +class="cmss-10">alttree</span><a + id="dx1-53012"></a> + style (see <a +href="#x1-200002.12.3"><span +class="cmsy-10">§</span>2.12.3 </a><a +href="#x1-200002.12.3">The <span +class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a>). + </dd><dt class="description"> +<span +class="cmbx-10">sample-alttree-sym.tex</span> </dt><dd +class="description">Another <span +class="cmss-10">alttree</span><a + id="dx1-53013"></a> example that measures the symbol + widths. + </dd><dt class="description"> +<span +class="cmbx-10">sample-alttree-marginpar.tex</span> </dt><dd +class="description">Another <span +class="cmss-10">alttree</span><a + id="dx1-53014"></a> example that puts the + <a + id="dx1-53015"></a><a +href="#glo:numberlist">number list</a> in the margin. + </dd><dt class="description"> +<span +class="cmbx-10">sample-onthefly.tex</span> </dt><dd +class="description">Using on-the-fly commands. Terms with accents must + have the <span +class="cmss-10">name</span><a + id="dx1-53016"></a> key explicitly set. + </dd><dt class="description"> +<span +class="cmbx-10">sample-onthefly-xetex.tex</span> </dt><dd +class="description">Using on-the-fly commands with <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">Ǝ</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>. + Terms with UTF-8 characters don’t need to have the <span +class="cmss-10">name</span><a + id="dx1-53017"></a> key explicitly + set. Terms that contain commands must have the <span +class="cmss-10">name</span><a + id="dx1-53018"></a> key explicitly set + with the commands removed from the label. + </dd><dt class="description"> +<span +class="cmbx-10">sample-onthefly-utf8.tex</span> </dt><dd +class="description">Tries to emulate the previous sample file for use + with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span +class="E">E</span>X</span></span> through the starred version of <span +class="cmtt-10">\GlsXtrEnableOnTheFly</span><a + id="dx1-53019"></a>. + This is a bit iffy and may not always work. Terms that contain commands + must have the <span +class="cmss-10">name</span><a + id="dx1-53020"></a> key explicitly set with the commands removed from + the label. + </dd><dt class="description"> +<span +class="cmbx-10">sample-accsupp.tex</span> </dt><dd +class="description">Integrate <span +class="cmss-10">glossaries-accsupp</span><a + id="dx1-53021"></a>. + </dd><dt class="description"> +<span +class="cmbx-10">sample-prefix.tex</span> </dt><dd +class="description">Integrate <span +class="cmss-10">glossaries-prefix</span><a + id="dx1-53022"></a>. + </dd><dt class="description"> +<span +class="cmbx-10">sample-suppl-main.tex</span> </dt><dd +class="description">Uses <span +class="cmss-10">thevalue</span><a + id="dx1-53023"></a> to reference a location in the + supplementary file <span +class="cmtt-10">sample-suppl.tex</span>. + + + + </dd><dt class="description"> +<span +class="cmbx-10">sample-suppl-main-hyp.tex</span> </dt><dd +class="description">A more complicated version to the above that + uses the <span +class="cmss-10">hyperref</span><a + id="dx1-53024"></a> package to reference a location in the supplementary file + <span +class="cmtt-10">sample-suppl-hyp.tex</span>. + </dd></dl> + + + +<!--l. 11942--><p class="indent" > </div> +</p><!--l. 11942--><p class="noindent" ><a +href="#top">Top</a><div class="chapter"><h2 class="chapterHead">13. <a + id="sec:lang"></a>Multi-Lingual Support</h2> +</p><!--l. 11945--><p class="indent" > There’s only one command provided by <span +class="cmss-10">glossaries-extra </span>that you’re likely to want +to change in your document and that’s <span +class="cmtt-10">\abbreviationsname</span><a + id="dx1-54001"></a> (<a +href="#sec:pkgopts"><span +class="cmsy-10">§</span>1.2 </a><a +href="#sec:pkgopts">New or +Modified Package Options<!--tex4ht:ref: sec:pkgopts --></a>) if you use the <a +href="#styopt.abbreviations"><span +class="cmss-10">abbreviations</span></a><a + id="dx1-54002"></a> package option to +automatically create the glossary labelled <span +class="cmtt-10">abbreviations</span>. If this command +doesn’t already exist, it will be defined to “Abbreviations” if <span +class="cmss-10">babel</span><a + id="dx1-54003"></a> hasn’t +been loaded, otherwise it will be defined as <span +class="cmtt-10">\acronymname </span>(provided by +<span +class="cmss-10">glossaries</span>). +</p><!--l. 11955--><p class="indent" > You can redefine it in the usual way. For example: + + + +</p> + <div class="verbatim" id="verbatim-287"> +\renewcommand*{\abbreviationsname}{List of Abbreviations} +</div> +<!--l. 11958--><p class="nopar" > Or using <span +class="cmss-10">babel</span><a + id="dx1-54004"></a> or <span +class="cmss-10">polyglossia</span><a + id="dx1-54005"></a> captions hook: + + + +</p> + <div class="verbatim" id="verbatim-288"> +\appto\captionsenglish{% + <br /> \renewcommand*{\abbreviationsname}{List of Abbreviations}% + <br />} +</div> +<!--l. 11964--><p class="nopar" > +</p><!--l. 11966--><p class="indent" > Alternatively you can use the <span +class="cmss-10">title</span><a + id="dx1-54006"></a> key when you print the list of abbreviations. +For example: + + + +</p> + <div class="verbatim" id="verbatim-289"> +\printabbreviations[title={List of Abbreviations}] +</div> +<!--l. 11970--><p class="nopar" > or + + + +</p> + <div class="verbatim" id="verbatim-290"> +\printglossary[type=abbreviations,title={List of Abbreviations}] +</div> +<!--l. 11974--><p class="nopar" > +</p><!--l. 11976--><p class="indent" > The other fixed text commands are the diagnostic messages, which shouldn’t +appear in the final draft of your document. +</p><!--l. 11979--><p class="indent" > The <span +class="cmss-10">glossaries-extra </span>package has the facility to load language modules (whose +filename is in the form <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">language</span>⟩<span +class="cmtt-10">.ldf</span>) if they exist, but won’t warn if +they don’t. If <span +class="cmss-10">glossaries-extra-bib2gls</span><a + id="dx1-54007"></a> is loaded via the <a +href="#styopt.record"><span +class="cmss-10">record</span></a><a + id="dx1-54008"></a> package option then the +check for language resource files will additionally search for an associated language +script file given by <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">script</span>⟩<span +class="cmtt-10">.ldf </span>where ⟨<span +class="cmti-10">script</span>⟩ is the four letter script +identifier, such as <span +class="cmtt-10">Latn</span>, 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. +</p><!--l. 11992--><p class="indent" > If you want to write your own language module, you just need to create a file +called <span +class="cmtt-10">glossariesxtr-</span>⟨<span +class="cmti-10">lang</span>⟩<span +class="cmtt-10">.ldf</span>, where ⟨<span +class="cmti-10">lang</span>⟩ identifies the language or dialect (see +the <span +class="cmss-10">tracklang</span><a + id="dx1-54009"></a> package). For example, <span +class="cmtt-10">glossariesxtr-french.ldf</span>. +</p><!--l. 11998--><p class="indent" > The simplest code for this file is: + + + +</p> + <div class="verbatim" id="verbatim-291"> +\ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0] + <br />\newcommand*{\glossariesxtrcaptionsfrench}{% + <br /> \def\abbreviationsname{Abr\'eviations}% + <br />} + <br />\glossariesxtrcaptionsfrench + <br />\ifcsdef{captions\CurrentTrackedDialect} + <br />{% + <br />  \csappto{captions\CurrentTrackedDialect}% + <br />  {% + <br />    \glossariesxtrcaptionsfrench + <br />  }% + <br />}% + <br />{% + <br />  \ifcsdef{captions\CurrentTrackedLanguage} + <br />  {% + <br />    \csappto{captions\CurrentTrackedLanguage}% + <br />    {% + <br />      \glossariesxtrcaptionsfrench + <br />    }% + <br />  }% + <br />  {}% + <br />} +</div> +<!--l. 12024--><p class="nopar" > +</p><!--l. 12026--><p class="indent" > You can adapt this for other languages by replacing all instances of the language +identifier <span +class="cmtt-10">french </span>and the translated text <span class="obeylines-h"><span class="verb"><span +class="cmtt-10">Abr\’eviations</span></span></span> as appropriate. You can +also use the <span +class="cmtt-10">.ldf </span>file to provide rule blocks for a particular language for use with +<a + id="dx1-54010"></a><a +href="#glo:bib2gls"><span +class="cmtt-10">bib2gls</span>’s</a> custom sort rule. See <a +href="#x1-390009.3"><span +class="cmsy-10">§</span>9.3 </a><a +href="#x1-390009.3">The <span +class="cmss-10">glossaries-extra-bib2gls </span>package<!--tex4ht:ref: sec:bib2glssty --></a> for further +details. +</p><!--l. 12033--><p class="indent" > This <span +class="cmtt-10">.ldf </span>file then needs to be put somewhere on <span class="TEX">T<span +class="E">E</span>X</span>’s path so that it can be +found by <span +class="cmss-10">glossaries-extra</span>. You might also want to consider uploading it to CTAN so +that it can be useful to others. (Please don’t send it to me. I already have more +packages than I am able to maintain.) +</p><!--l. 12039--><p class="indent" > If you additionally want to provide translations for the diagnostic messages used +when a glossary is missing, you need to redefine the following commands: +</p><!--l. 12042--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningHead</span><span +class="cmtt-9"> </span></span><a + id="dx1-54011"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningHead{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 12044--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12047--><p class="noindent" >This document is incomplete. The external file associated with the + + + + glossary ‘⟨<span +class="cmti-10">label</span>⟩’ (which should be called ⟨<span +class="cmitt-10">file</span>⟩) hasn’t been created.</p></div> +<!--l. 12050--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningEmptyStart</span><span +class="cmtt-9"> </span></span><a + id="dx1-54012"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyStart </span></div><hr> +</p><!--l. 12052--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12055--><p class="noindent" >This has probably happened because there are no entries defined in + this glossary.</p></div> +<!--l. 12058--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningEmptyMain</span><span +class="cmtt-9"> </span></span><a + id="dx1-54013"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyMain </span></div><hr> +</p><!--l. 12060--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12063--><p class="noindent" >If you don’t want this glossary, add <span +class="cmtt-10">nomain </span>to your package option + list when you load <span +class="cmtt-10">glossaries-extra.sty</span>. For example:</p></div> +<!--l. 12066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningEmptyNotMain</span><span +class="cmtt-9"> </span></span><a + id="dx1-54014"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyNotMain{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 12068--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12071--><p class="noindent" >Did you forget to use <span +class="cmtt-10">type=</span>⟨<span +class="cmitt-10">label</span>⟩ when you defined your entries? + If you tried to load entries into this glossary with <span +class="cmtt-10">\loadglsentries</span> + did you remember to use <span +class="cmtt-10">[</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">] </span>as the optional argument? If you + did, check that the definitions in the file you loaded all had the type + set to <span +class="cmtt-10">\glsdefaulttype</span>.</p></div> +<!--l. 12074--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningCheckFile</span><span +class="cmtt-9"> </span></span><a + id="dx1-54015"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningCheckFile{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 12076--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12079--><p class="noindent" >Check the contents of the file ⟨<span +class="cmitt-10">file</span>⟩. If it’s empty, that means you + haven’t indexed any of your entries in this glossary (using commands + like <span +class="cmtt-10">\gls </span>or <span +class="cmtt-10">\glsadd</span>) so this list can’t be generated. If the file isn’t + empty, the document build process hasn’t been completed.</p></div> +<!--l. 12082--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningMisMatch</span><span +class="cmtt-9"> </span></span><a + id="dx1-54016"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningMisMatch </span></div><hr> +</p><!--l. 12084--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + + + + <!--l. 12087--><p class="noindent" >You need + to either replace <span +class="cmtt-10">\makenoidxglossaries </span>with <span +class="cmtt-10">\makeglossaries </span>or + replace <span +class="cmtt-10">\printglossary </span>(or <span +class="cmtt-10">\printglossaries</span>) + with <span +class="cmtt-10">\printnoidxglossary </span>(or <span +class="cmtt-10">\printnoidxglossaries</span>) and then + rebuild this document.</p></div> +<!--l. 12090--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningNoOut</span><span +class="cmtt-9"> </span></span><a + id="dx1-54017"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningNoOut{</span>⟨<span +class="cmitt-10">file</span>⟩<span +class="cmtt-10">} </span></div><hr> +</p><!--l. 12092--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12095--><p class="noindent" >The file ⟨<span +class="cmitt-10">file</span>⟩ doesn’t exist. This most likely means you haven’t used + <span +class="cmtt-10">\makeglossaries </span>or you have used <span +class="cmtt-10">\nofiles</span>. If this is just a draft + version of the document, you can suppress this message using the + <span +class="cmtt-10">nomissingglstext </span>package option.</p></div> +<!--l. 12098--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningTail</span><span +class="cmtt-9"> </span></span><a + id="dx1-54018"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningTail </span></div><hr> +</p><!--l. 12100--><p class="noindent" > +This produces the following text in English: + </p><div class="quote"> + <!--l. 12103--><p class="noindent" >This message will be removed once the problem has been fixed.</p></div> +<!--l. 12106--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningBuildInfo</span><span +class="cmtt-9"> </span></span><a + id="dx1-54019"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningBuildInfo </span></div><hr> +</p><!--l. 12108--><p class="noindent" > +This is advice on how to generate the glossary files. See the documented code +(<span +class="cmtt-10">glossaries-extra-code.pdf</span>) for further details. +</p><!--l. 12113--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span +class="cmtt-9">\GlsXtrNoGlsWarningAutoMake</span><span +class="cmtt-9"> </span></span><a + id="dx1-54020"></a> <span +class="cmtt-10">\GlsXtrNoGlsWarningAutoMake{</span>⟨<span +class="cmitt-10">label</span>⟩<span +class="cmtt-10">}</span> +</div><hr> +</p><!--l. 12115--><p class="noindent" > +This is the message produced when the <a +href="#styopt.automake"><span +class="cmss-10">automake</span></a><a + id="dx1-54021"></a> option is used, but the document +needs a rerun or the shell escape setting doesn’t permit the execution of the external +application. This command also generates a warning in the transcript file. See the +documented code for further details. + + + +</p><!--l. 1--><p class="indent" > <a + id="likesection.1"></a><a + id="glossary"></a> + + + +</p> +<!--l. 1--><p class="indent" > </div> +</p><!--l. 1--><p class="noindent" ><a +href="#top">Top</a></p><h2 class="likechapterHead"><a + id="x1-5500013"></a>Glossary</h2> + <dl class="description"><dt class="description"> +<a + id="glo:bib2gls"></a><span +class="cmtt-10">bib2gls</span><a + id="dx1-55001"></a> </dt><dd +class="description">A command line Java application that selects entries from a .bib file + and converts them + to glossary definitions (like <span +class="cmtt-10">bibtex </span>but also performs hierarchical sorting + and collation, thus omitting the need for <a + id="dx1-55002"></a><a +href="#glo:xindy"><span +class="cmtt-10">xindy</span></a> or <a + id="dx1-55003"></a><a +href="#glo:makeindex"><span +class="cmtt-10">makeindex</span></a>). Further + details at: <a +href="http://www.dickimaw-books.com/software/bib2gls/" class="url" ><span +class="cmtt-10">http://www.dickimaw-books.com/software/bib2gls/</span></a>. + </dd><dt class="description"> +<a + id="glo:entrylocation"></a><span +class="cmbx-10">entry location</span><a + id="dx1-55004"></a> </dt><dd +class="description">The location of the entry in the document. This defaults to + the page number on which the entry appears. An entry may have multiple + locations. + </dd><dt class="description"> +<a + id="glo:firstuse"></a><span +class="cmbx-10">first use</span><a + id="dx1-55005"></a> </dt><dd +class="description">The first time a glossary entry is used (from the start of the document + or after a reset) with one of the following commands: <span +class="cmtt-10">\gls</span><a + id="dx1-55006"></a>, <span +class="cmtt-10">\Gls</span><a + id="dx1-55007"></a>, <span +class="cmtt-10">\GLS</span><a + id="dx1-55008"></a>, + <span +class="cmtt-10">\glspl</span><a + id="dx1-55009"></a>, <span +class="cmtt-10">\Glspl</span><a + id="dx1-55010"></a>, <span +class="cmtt-10">\GLSpl</span><a + id="dx1-55011"></a> or <span +class="cmtt-10">\glsdisp</span><a + id="dx1-55012"></a>. + </dd><dt class="description"> +<a + id="glo:firstuseflag"></a><span +class="cmbx-10">first use flag</span><a + id="dx1-55013"></a> </dt><dd +class="description">A conditional that determines whether or not the entry has been + used according to the rules of <a + id="dx1-55014"></a><a +href="#glo:firstuse">first use</a>. + </dd><dt class="description"> +<a + id="glo:firstusetext"></a><span +class="cmbx-10">first use text</span><a + id="dx1-55015"></a> </dt><dd +class="description">The text that is displayed on <a + id="dx1-55016"></a>first use, which is governed by the + <span +class="cmss-10">first</span><a + id="dx1-55017"></a> and <span +class="cmss-10">firstplural</span><a + id="dx1-55018"></a> keys of <span +class="cmtt-10">\newglossaryentry</span><a + id="dx1-55019"></a>. (May be overridden by + <span +class="cmtt-10">\glsdisp</span><a + id="dx1-55020"></a>.) + </dd><dt class="description"> +<a + id="glo:linktext"></a><span +class="cmbx-10">link-text</span><a + id="dx1-55021"></a> </dt><dd +class="description">The text produced by commands such as <span +class="cmtt-10">\gls</span><a + id="dx1-55022"></a>. It may or may not + have a hyperlink to the glossary. + </dd><dt class="description"> +<a + id="glo:locationlist"></a><span +class="cmbx-10">location list</span><a + id="dx1-55023"></a> </dt><dd +class="description">A list of <a + id="dx1-55024"></a><a +href="#glo:entrylocation">entry locations</a>. See <a + id="dx1-55025"></a><a +href="#glo:numberlist">number list</a>. + </dd><dt class="description"> +<a + id="glo:makeglossaries"></a><span +class="cmtt-10">makeglossaries</span><a + id="dx1-55026"></a> </dt><dd +class="description">A custom designed Perl script interface provided with the + <span +class="cmss-10">glossaries </span>package to run <a + id="dx1-55027"></a><span +class="cmtt-10">xindy </span>or <a + id="dx1-55028"></a><span +class="cmtt-10">makeindex </span>according to the document + settings. + + + + </dd><dt class="description"> +<a + id="glo:makeglossaries-lite.lua"></a><span +class="cmtt-10">makeglossaries-lite</span><a + id="dx1-55029"></a><a + id="dx1-55030"></a> </dt><dd +class="description">A custom designed Lua script interface to <a + id="dx1-55031"></a><span +class="cmtt-10">xindy </span>and + <a + id="dx1-55032"></a><span +class="cmtt-10">makeindex </span>provided with the <span +class="cmss-10">glossaries </span>package. This is a cut-down + alternative to the Perl <span +class="cmtt-10">makeglossaries </span>script. If you have Perl installed, + use the Perl script instead. This script is distributed in the source code + on CTAN with the file name <span +class="cmtt-10">makeglossaries-lite.lua </span>but TeX Live + on Unix-like systems creates a symbolic link called <span +class="cmtt-10">makeglossaries-lite</span> + (without the <span +class="cmtt-10">.lua </span>extension) to the actual <span +class="cmtt-10">makeglossaries-lite.lua</span> + script, and <span class="TEX">T<span +class="E">E</span>X</span> distributions on Windows convert the script to an + executable <span +class="cmtt-10">makeglossaries-lite.exe</span>. + </dd><dt class="description"> +<a + id="glo:makeindex"></a><span +class="cmtt-10">makeindex</span><a + id="dx1-55033"></a> </dt><dd +class="description">An indexing application. + </dd><dt class="description"> +<a + id="glo:numberlist"></a><span +class="cmbx-10">number list</span><a + id="dx1-55034"></a> </dt><dd +class="description">A list of <a + id="dx1-55035"></a><a +href="#glo:entrylocation">entry locations</a> (also called a location list). The number + list can be suppressed using the <a +href="#styopt.nonumberlist"><span +class="cmss-10">nonumberlist</span></a><a + id="dx1-55036"></a> package option. + </dd><dt class="description"> +<a + id="glo:xindy"></a><span +class="cmtt-10">xindy</span><a + id="dx1-55037"></a> </dt><dd +class="description">An flexible indexing application with multilingual support written in + Perl.</dd></dl> + + + + <h2 class="likechapterHead"><a + id="x1-5600013"></a>Index</h2> +<!--l. 4--><p class="noindent" > <span +class="cmbx-10">A</span> +</p> + <div class="theindex"><span class="index-item">abbreviation styles (deprecated):<br /></span> +<span class="index-subitem">    <span +class="cmss-10">footnote-em</span>  <a +href="glossaries-extra-manual.html#dx1-27173" >1</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">footnote-sc</span>  <a +href="glossaries-extra-manual.html#dx1-27165" >2</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">footnote-sm</span>  <a +href="glossaries-extra-manual.html#dx1-27169" >3</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc-em</span>  <a +href="glossaries-extra-manual.html#dx1-26078" >4</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc-sc</span>  <a +href="glossaries-extra-manual.html#dx1-26070" >5</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc-sm</span>  <a +href="glossaries-extra-manual.html#dx1-26074" >6</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em</span>  <a +href="glossaries-extra-manual.html#dx1-26104" >7</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-sc</span>  <a +href="glossaries-extra-manual.html#dx1-26096" >8</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-sm</span>  <a +href="glossaries-extra-manual.html#dx1-26100" >9</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postfootnote-em</span>  <a +href="glossaries-extra-manual.html#dx1-27196" >10</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postfootnote-sc</span>  <a +href="glossaries-extra-manual.html#dx1-27188" >11</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postfootnote-sm</span>  <a +href="glossaries-extra-manual.html#dx1-27192" >12</a> <br /></span> +<span class="index-item">abbreviation styles:<br /></span> +<span class="index-subitem">    <span +class="cmss-10">footnote</span>  <a +href="glossaries-extra-manual.html#dx1-27160" >13</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long</span>  <a +href="glossaries-extra-manual.html#dx1-26090" >14</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26064" >15</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-noshort-em</span>  <a +href="glossaries-extra-manual.html#dx1-25088" >16</a>, <a +href="glossaries-extra-manual.html#dx1-26105" >17</a>, <a +href="glossaries-extra-manual.html#dx1-27029" >18</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-noshort-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26079" >19</a>, <a +href="glossaries-extra-manual.html#dx1-27075" >20</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-noshort-em-desc-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27074" >21</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-noshort-em-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-25090" >22</a>, <a +href="glossaries-extra-manual.html#dx1-26110" >23</a>, <a +href="glossaries-extra-manual.html#dx1-27028" >24</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-short-em</span>  <a +href="glossaries-extra-manual.html#dx1-25056" >25</a>, <a +href="glossaries-extra-manual.html#dx1-25082" >26</a>, <a +href="glossaries-extra-manual.html#dx1-27018" >27</a>, <a +href="glossaries-extra-manual.html#dx1-28018" >28</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-em-short-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27071" >29</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-long-hyphen</span>  <a +href="glossaries-extra-manual.html#dx1-27231" >30</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-noshort-desc-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27220" >31</a>, <a +href="glossaries-extra-manual.html#dx1-27224" >32</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-noshort-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-25091" >33</a>, <a +href="glossaries-extra-manual.html#dx1-27223" >34</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-postshort-hyphen</span>  <a +href="glossaries-extra-manual.html#dx1-25086" >35</a>, <a +href="glossaries-extra-manual.html#dx1-27219" >36</a>, <a +href="glossaries-extra-manual.html#dx1-27228" >37</a>, <a +href="glossaries-extra-manual.html#dx1-27234" >38</a>, <a +href="glossaries-extra-manual.html#dx1-27244" >39</a>, <a +href="glossaries-extra-manual.html#dx1-27246" >40</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-postshort-hyphen-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27233" >41</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-short-hyphen</span>  <a +href="glossaries-extra-manual.html#dx1-27211" >42</a>, <a +href="glossaries-extra-manual.html#dx1-27226" >43</a>, <a +href="glossaries-extra-manual.html#dx1-27229" >44</a>, <a +href="glossaries-extra-manual.html#dx1-27237" >45</a>, <a +href="glossaries-extra-manual.html#dx1-30058" >46</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-hyphen-short-hyphen-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27221" >47</a>, <a +href="glossaries-extra-manual.html#dx1-27225" >48</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort</span>  <a +href="glossaries-extra-manual.html#dx1-13030" >49</a>, <a +href="glossaries-extra-manual.html#dx1-23002" >50</a>, <a +href="glossaries-extra-manual.html#dx1-26084" >51</a>, <a +href="glossaries-extra-manual.html#dx1-26091" >52</a>, <a +href="glossaries-extra-manual.html#dx1-26093" >53</a>, <a +href="glossaries-extra-manual.html#dx1-26098" >54</a>, <a +href="glossaries-extra-manual.html#dx1-26102" >55</a>, <a +href="glossaries-extra-manual.html#dx1-26106" >56</a>, <a +href="glossaries-extra-manual.html#dx1-27049" >57</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-desc</span>  <a +href="glossaries-extra-manual.html#dx1-12040" >58</a>, <a +href="glossaries-extra-manual.html#dx1-13032" >59</a>, <a +href="glossaries-extra-manual.html#dx1-26057" >60</a>, <a +href="glossaries-extra-manual.html#dx1-26065" >61</a>, <a +href="glossaries-extra-manual.html#dx1-26067" >62</a>, <a +href="glossaries-extra-manual.html#dx1-26072" >63</a>, <a +href="glossaries-extra-manual.html#dx1-26076" >64</a>, <a +href="glossaries-extra-manual.html#dx1-26080" >65</a>, <a +href="glossaries-extra-manual.html#dx1-26085" >66</a>, <a +href="glossaries-extra-manual.html#dx1-27052" >67</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-desc-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27051" >68</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">long-noshort-em</span>  <a +href="glossaries-extra-manual.html#dx1-26101" >69</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26075" >70</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27048" >71</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-sc</span>  <a +href="glossaries-extra-manual.html#dx1-25081" >72</a>, <a +href="glossaries-extra-manual.html#dx1-26092" >73</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-sc-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26066" >74</a>, <a +href="glossaries-extra-manual.html#dx1-28041" >75</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-sm</span>  <a +href="glossaries-extra-manual.html#dx1-26097" >76</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-noshort-sm-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26071" >77</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-only-short-only</span>  <a +href="glossaries-extra-manual.html#dx1-25070" >78</a>, <a +href="glossaries-extra-manual.html#dx1-27021" >79</a>, <a +href="glossaries-extra-manual.html#dx1-27025" >80</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-only-short-only-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27024" >81</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-postshort-user</span>  <a +href="glossaries-extra-manual.html#dx1-27204" >82</a>, <a +href="glossaries-extra-manual.html#dx1-27208" >83</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-postshort-user-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27207" >84</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short</span>  <a +href="glossaries-extra-manual.html#dx1-12047" >85</a>, <a +href="glossaries-extra-manual.html#dx1-13008" >86</a>, <a +href="glossaries-extra-manual.html#dx1-13056" >87</a>, <a +href="glossaries-extra-manual.html#dx1-21019" >88</a>, <a +href="glossaries-extra-manual.html#dx1-25025" >89</a>, <a +href="glossaries-extra-manual.html#dx1-25027" >90</a>, <a +href="glossaries-extra-manual.html#dx1-27002" >91</a>, <a +href="glossaries-extra-manual.html#dx1-27010" >92</a>, <a +href="glossaries-extra-manual.html#dx1-27013" >93</a>, <a +href="glossaries-extra-manual.html#dx1-27016" >94</a>, <a +href="glossaries-extra-manual.html#dx1-27032" >95</a>, <a +href="glossaries-extra-manual.html#dx1-27035" >96</a>, <a +href="glossaries-extra-manual.html#dx1-27217" >97</a>, <a +href="glossaries-extra-manual.html#dx1-28014" >98</a>, <a +href="glossaries-extra-manual.html#dx1-28017" >99</a>, <a +href="glossaries-extra-manual.html#dx1-28091" >100</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13016" >101</a>, <a +href="glossaries-extra-manual.html#dx1-13022" >102</a>, <a +href="glossaries-extra-manual.html#dx1-27054" >103</a>, <a +href="glossaries-extra-manual.html#dx1-27063" >104</a>, <a +href="glossaries-extra-manual.html#dx1-27066" >105</a>, <a +href="glossaries-extra-manual.html#dx1-27069" >106</a>, <a +href="glossaries-extra-manual.html#dx1-27078" >107</a>, <a +href="glossaries-extra-manual.html#dx1-27085" >108</a>, <a +href="glossaries-extra-manual.html#dx1-28090" >109</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-em</span>  <a +href="glossaries-extra-manual.html#dx1-25051" >110</a>, <a +href="glossaries-extra-manual.html#dx1-25083" >111</a>, <a +href="glossaries-extra-manual.html#dx1-27015" >112</a>, <a +href="glossaries-extra-manual.html#dx1-27019" >113</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27068" >114</a>, <a +href="glossaries-extra-manual.html#dx1-27072" >115</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-sc</span>  <a +href="glossaries-extra-manual.html#dx1-13004" >116</a>, <a +href="glossaries-extra-manual.html#dx1-25035" >117</a>, <a +href="glossaries-extra-manual.html#dx1-27009" >118</a>, <a +href="glossaries-extra-manual.html#dx1-27047" >119</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-sc-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13018" >120</a>, <a +href="glossaries-extra-manual.html#dx1-27062" >121</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-sm</span>  <a +href="glossaries-extra-manual.html#dx1-13006" >122</a>, <a +href="glossaries-extra-manual.html#dx1-25045" >123</a>, <a +href="glossaries-extra-manual.html#dx1-27012" >124</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-sm-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13020" >125</a>, <a +href="glossaries-extra-manual.html#dx1-27065" >126</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-user</span>  <a +href="glossaries-extra-manual.html#dx1-25084" >127</a>, <a +href="glossaries-extra-manual.html#dx1-27008" >128</a>, <a +href="glossaries-extra-manual.html#dx1-27031" >129</a>, <a +href="glossaries-extra-manual.html#dx1-27037" >130</a>, <a +href="glossaries-extra-manual.html#dx1-27043" >131</a>, <a +href="glossaries-extra-manual.html#dx1-27079" >132</a>, <a +href="glossaries-extra-manual.html#dx1-27080" >133</a>, <a +href="glossaries-extra-manual.html#dx1-27113" >134</a>, <a +href="glossaries-extra-manual.html#dx1-27206" >135</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-short-user-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27077" >136</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nolong-short</span>  <a +href="glossaries-extra-manual.html#dx1-26010" >137</a>, <a +href="glossaries-extra-manual.html#dx1-27090" >138</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nolong-short-em</span>  <a +href="glossaries-extra-manual.html#dx1-26031" >139</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nolong-short-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27089" >140</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nolong-short-sc</span>  <a +href="glossaries-extra-manual.html#dx1-26017" >141</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nolong-short-sm</span>  <a +href="glossaries-extra-manual.html#dx1-26024" >142</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postfootnote</span>  <a +href="glossaries-extra-manual.html#dx1-27183" >143</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short</span>  <a +href="glossaries-extra-manual.html#dx1-26008" >144</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26040" >145</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em</span>  <a +href="glossaries-extra-manual.html#dx1-26029" >146</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26055" >147</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-footnote</span>  <a +href="glossaries-extra-manual.html#dx1-25102" >148</a>, <a +href="glossaries-extra-manual.html#dx1-27170" >149</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-footnote-desc</span>  <a +href="glossaries-extra-manual.html#dx1-25101" >150</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-long</span>  <a +href="glossaries-extra-manual.html#dx1-25052" >151</a>, <a +href="glossaries-extra-manual.html#dx1-27106" >152</a>, <a +href="glossaries-extra-manual.html#dx1-27110" >153</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27133" >154</a>, <a +href="glossaries-extra-manual.html#dx1-27137" >155</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-long-em</span>  <a +href="glossaries-extra-manual.html#dx1-25057" >156</a>, <a +href="glossaries-extra-manual.html#dx1-27109" >157</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-long-em-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27136" >158</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-nolong</span>  <a +href="glossaries-extra-manual.html#dx1-26026" >159</a>, <a +href="glossaries-extra-manual.html#dx1-26030" >160</a>, <a +href="glossaries-extra-manual.html#dx1-26032" >161</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-nolong-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26052" >162</a>, <a +href="glossaries-extra-manual.html#dx1-26056" >163</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-em-postfootnote</span>  <a +href="glossaries-extra-manual.html#dx1-27193" >164</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-footnote</span>  <a +href="glossaries-extra-manual.html#dx1-13034" >165</a>, <a +href="glossaries-extra-manual.html#dx1-21021" >166</a>, <a +href="glossaries-extra-manual.html#dx1-25094" >167</a>, <a +href="glossaries-extra-manual.html#dx1-27146" >168</a>, <a +href="glossaries-extra-manual.html#dx1-27161" >169</a>, <a +href="glossaries-extra-manual.html#dx1-27163" >170</a>, <a +href="glossaries-extra-manual.html#dx1-27167" >171</a>, <a +href="glossaries-extra-manual.html#dx1-27171" >172</a>, <a +href="glossaries-extra-manual.html#dx1-27175" >173</a>, <a +href="glossaries-extra-manual.html#dx1-28020" >174</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-footnote-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13040" >175</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-hyphen-long-hyphen</span>  <a +href="glossaries-extra-manual.html#dx1-27236" >176</a>, <a +href="glossaries-extra-manual.html#dx1-27241" >177</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-hyphen-long-hyphen-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27240" >178</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-hyphen-postlong-hyphen</span>  <a +href="glossaries-extra-manual.html#dx1-27243" >179</a>, <a +href="glossaries-extra-manual.html#dx1-27249" >180</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-hyphen-postlong-hyphen-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27248" >181</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">short-long</span>  <a +href="glossaries-extra-manual.html#dx1-13010" >182</a>, <a +href="glossaries-extra-manual.html#dx1-21014" >183</a>, <a +href="glossaries-extra-manual.html#dx1-25028" >184</a>, <a +href="glossaries-extra-manual.html#dx1-25077" >185</a>, <a +href="glossaries-extra-manual.html#dx1-25100" >186</a>, <a +href="glossaries-extra-manual.html#dx1-27092" >187</a>, <a +href="glossaries-extra-manual.html#dx1-27101" >188</a>, <a +href="glossaries-extra-manual.html#dx1-27104" >189</a>, <a +href="glossaries-extra-manual.html#dx1-27107" >190</a>, <a +href="glossaries-extra-manual.html#dx1-28088" >191</a>, <a +href="glossaries-extra-manual.html#dx1-28093" >192</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13024" >193</a>, <a +href="glossaries-extra-manual.html#dx1-25099" >194</a>, <a +href="glossaries-extra-manual.html#dx1-27121" >195</a>, <a +href="glossaries-extra-manual.html#dx1-27128" >196</a>, <a +href="glossaries-extra-manual.html#dx1-27131" >197</a>, <a +href="glossaries-extra-manual.html#dx1-27134" >198</a>, <a +href="glossaries-extra-manual.html#dx1-27140" >199</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-long-user</span>  <a +href="glossaries-extra-manual.html#dx1-27038" >200</a>, <a +href="glossaries-extra-manual.html#dx1-27044" >201</a>, <a +href="glossaries-extra-manual.html#dx1-27097" >202</a>, <a +href="glossaries-extra-manual.html#dx1-27112" >203</a>, <a +href="glossaries-extra-manual.html#dx1-27141" >204</a>, <a +href="glossaries-extra-manual.html#dx1-27142" >205</a>, <a +href="glossaries-extra-manual.html#dx1-27198" >206</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-long-user-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27139" >207</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-nolong</span>  <a +href="glossaries-extra-manual.html#dx1-21012" >208</a>, <a +href="glossaries-extra-manual.html#dx1-21020" >209</a>, <a +href="glossaries-extra-manual.html#dx1-23003" >210</a>, <a +href="glossaries-extra-manual.html#dx1-23018" >211</a>, <a +href="glossaries-extra-manual.html#dx1-26002" >212</a>, <a +href="glossaries-extra-manual.html#dx1-26009" >213</a>, <a +href="glossaries-extra-manual.html#dx1-26011" >214</a>, <a +href="glossaries-extra-manual.html#dx1-26013" >215</a>, <a +href="glossaries-extra-manual.html#dx1-26020" >216</a>, <a +href="glossaries-extra-manual.html#dx1-26027" >217</a>, <a +href="glossaries-extra-manual.html#dx1-26034" >218</a>, <a +href="glossaries-extra-manual.html#dx1-26038" >219</a>, <a +href="glossaries-extra-manual.html#dx1-26043" >220</a>, <a +href="glossaries-extra-manual.html#dx1-27087" >221</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-nolong-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26033" >222</a>, <a +href="glossaries-extra-manual.html#dx1-26041" >223</a>, <a +href="glossaries-extra-manual.html#dx1-26048" >224</a>, <a +href="glossaries-extra-manual.html#dx1-26053" >225</a>, <a +href="glossaries-extra-manual.html#dx1-27119" >226</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-nolong-desc-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27118" >227</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-nolong-noreg</span>  <a +href="glossaries-extra-manual.html#dx1-27086" >228</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-postfootnote</span>  <a +href="glossaries-extra-manual.html#dx1-8062" >229</a>, <a +href="glossaries-extra-manual.html#dx1-8067" >230</a>, <a +href="glossaries-extra-manual.html#dx1-27174" >231</a>, <a +href="glossaries-extra-manual.html#dx1-27184" >232</a>, <a +href="glossaries-extra-manual.html#dx1-27186" >233</a>, <a +href="glossaries-extra-manual.html#dx1-27190" >234</a>, <a +href="glossaries-extra-manual.html#dx1-27194" >235</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-postlong-user</span>  <a +href="glossaries-extra-manual.html#dx1-27197" >236</a>, <a +href="glossaries-extra-manual.html#dx1-27201" >237</a>, <a +href="glossaries-extra-manual.html#dx1-27205" >238</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-postlong-user-desc</span>  <a +href="glossaries-extra-manual.html#dx1-27200" >239</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc</span>  <a +href="glossaries-extra-manual.html#dx1-26015" >240</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26045" >241</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-footnote</span>  <a +href="glossaries-extra-manual.html#dx1-13036" >242</a>, <a +href="glossaries-extra-manual.html#dx1-27162" >243</a>, <a +href="glossaries-extra-manual.html#dx1-27166" >244</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-footnote-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13042" >245</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-long</span>  <a +href="glossaries-extra-manual.html#dx1-13012" >246</a>, <a +href="glossaries-extra-manual.html#dx1-25036" >247</a>, <a +href="glossaries-extra-manual.html#dx1-27100" >248</a>, <a +href="glossaries-extra-manual.html#dx1-28092" >249</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13026" >250</a>, <a +href="glossaries-extra-manual.html#dx1-27127" >251</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-nolong</span>  <a +href="glossaries-extra-manual.html#dx1-26012" >252</a>, <a +href="glossaries-extra-manual.html#dx1-26016" >253</a>, <a +href="glossaries-extra-manual.html#dx1-26018" >254</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-nolong-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26042" >255</a>, <a +href="glossaries-extra-manual.html#dx1-26046" >256</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sc-postfootnote</span>  <a +href="glossaries-extra-manual.html#dx1-25095" >257</a>, <a +href="glossaries-extra-manual.html#dx1-27185" >258</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm</span>  <a +href="glossaries-extra-manual.html#dx1-26022" >259</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26050" >260</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-footnote</span>  <a +href="glossaries-extra-manual.html#dx1-13038" >261</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-footnote-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13044" >262</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-long</span>  <a +href="glossaries-extra-manual.html#dx1-13014" >263</a>, <a +href="glossaries-extra-manual.html#dx1-25046" >264</a>, <a +href="glossaries-extra-manual.html#dx1-27103" >265</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13028" >266</a>, <a +href="glossaries-extra-manual.html#dx1-27130" >267</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-nolong</span>  <a +href="glossaries-extra-manual.html#dx1-26019" >268</a>, <a +href="glossaries-extra-manual.html#dx1-26023" >269</a>, <a +href="glossaries-extra-manual.html#dx1-26025" >270</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-nolong-desc</span>  <a +href="glossaries-extra-manual.html#dx1-26047" >271</a>, <a +href="glossaries-extra-manual.html#dx1-26051" >272</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short-sm-postfootnote</span>  <a +href="glossaries-extra-manual.html#dx1-27189" >273</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\abbreviationsname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4193" ><span +class="cmti-10">274</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\abbrvpluralsuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28043" ><span +class="cmti-10">275</span></a> <br /></span> +<span class="index-item">acronym styles (glossaries):<br /></span> +<span class="index-subitem">    <span +class="cmtt-10">dua</span>  <a +href="glossaries-extra-manual.html#dx1-13029" >276</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">dua-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13031" >277</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote</span>  <a +href="glossaries-extra-manual.html#dx1-13033" >278</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13039" >279</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote-sc</span>  <a +href="glossaries-extra-manual.html#dx1-13035" >280</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote-sc-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13041" >281</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote-sm</span>  <a +href="glossaries-extra-manual.html#dx1-13037" >282</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">footnote-sm-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13043" >283</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-sc-short</span>  <a +href="glossaries-extra-manual.html#dx1-13003" >284</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-sc-short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13017" >285</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13015" >286</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-sm-short</span>  <a +href="glossaries-extra-manual.html#dx1-13005" >287</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-sm-short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13019" >288</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">long-sp-short</span>  <a +href="glossaries-extra-manual.html#dx1-13007" >289</a>, <a +href="glossaries-extra-manual.html#dx1-13053" >290</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmtt-10">long-sp-short-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13021" >291</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">sc-short-long</span>  <a +href="glossaries-extra-manual.html#dx1-13011" >292</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">sc-short-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13025" >293</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">short-long</span>  <a +href="glossaries-extra-manual.html#dx1-13009" >294</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">short-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13023" >295</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">sm-short-long</span>  <a +href="glossaries-extra-manual.html#dx1-13013" >296</a> <br /></span> +<span class="index-subitem">    <span +class="cmtt-10">sm-short-long-desc</span>  <a +href="glossaries-extra-manual.html#dx1-13027" >297</a> <br /></span> +<span class="index-item"><span +class="cmss-10">amsgen </span>package  <a +href="glossaries-extra-manual.html#dx1-10" >298</a> <br /></span> +<span class="index-item"><span +class="cmss-10">amsmath </span>package  <a +href="glossaries-extra-manual.html#dx1-4132" >299</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\apptoglossarypreamble</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-45010" ><span +class="cmti-10">300</span></a> <br /></span> +<p class="theindex"> <span +class="cmbx-10">B</span> +<span class="index-item"><span +class="cmss-10">babel </span>package  <a +href="glossaries-extra-manual.html#dx1-3010" >301</a>, <a +href="glossaries-extra-manual.html#dx1-3014" >302</a>, <a +href="glossaries-extra-manual.html#dx1-4194" >303</a>, <a +href="glossaries-extra-manual.html#dx1-4195" >304</a>, <a +href="glossaries-extra-manual.html#dx1-4196" >305</a>, <a +href="glossaries-extra-manual.html#dx1-30004" >306</a>, <a +href="glossaries-extra-manual.html#dx1-46068" >307</a>, <a +href="glossaries-extra-manual.html#dx1-54003" >308</a>, <a +href="glossaries-extra-manual.html#dx1-54004" >309</a> <br /></span> +<span class="index-item"><span +class="cmtt-10">bib2gls</span>  <a +href="glossaries-extra-manual.html#dx1-2" >310</a>, <a +href="glossaries-extra-manual.html#dx1-11" >311</a>, <a +href="glossaries-extra-manual.html#dx1-4010" >312</a>, <a +href="glossaries-extra-manual.html#dx1-4031" >313</a>, <a +href="glossaries-extra-manual.html#dx1-4060" >314</a>, <a +href="glossaries-extra-manual.html#dx1-4072" >315</a>, <a +href="glossaries-extra-manual.html#dx1-4075" >316</a>, <a +href="glossaries-extra-manual.html#dx1-4081" >317</a>, <a +href="glossaries-extra-manual.html#dx1-4083" >318</a>, <a +href="glossaries-extra-manual.html#dx1-4087" >319</a>, <a +href="glossaries-extra-manual.html#dx1-4096" >320</a>, <a +href="glossaries-extra-manual.html#dx1-4099" >321</a>, <a +href="glossaries-extra-manual.html#dx1-4102" >322</a>, <a +href="glossaries-extra-manual.html#dx1-4103" >323</a>, <a +href="glossaries-extra-manual.html#dx1-4107" >324</a>, <a +href="glossaries-extra-manual.html#dx1-4122" >325</a>, <a +href="glossaries-extra-manual.html#dx1-4147" >326</a>, <a +href="glossaries-extra-manual.html#dx1-4148" >327</a>, <a +href="glossaries-extra-manual.html#dx1-4152" >328</a>, <a +href="glossaries-extra-manual.html#dx1-5034" >329</a>, <a +href="glossaries-extra-manual.html#dx1-6046" >330</a>, <a +href="glossaries-extra-manual.html#dx1-6057" >331</a>, <a +href="glossaries-extra-manual.html#dx1-9001" >332</a>, <a +href="glossaries-extra-manual.html#dx1-10006" >333</a>, <a +href="glossaries-extra-manual.html#dx1-14007" >334</a>, <a +href="glossaries-extra-manual.html#dx1-14008" >335</a>, <a +href="glossaries-extra-manual.html#dx1-14022" >336</a>, <a +href="glossaries-extra-manual.html#dx1-14035" >337</a>, <a +href="glossaries-extra-manual.html#dx1-14038" >338</a>, <a +href="glossaries-extra-manual.html#dx1-15028" >339</a>, <a +href="glossaries-extra-manual.html#dx1-15029" >340</a>, <a +href="glossaries-extra-manual.html#dx1-15030" >341</a>, <a +href="glossaries-extra-manual.html#dx1-16019" >342</a>, <a +href="glossaries-extra-manual.html#dx1-19012" >343</a>, <a +href="glossaries-extra-manual.html#dx1-20077" >344</a>, <a +href="glossaries-extra-manual.html#dx1-20078" >345</a>, <a +href="glossaries-extra-manual.html#dx1-30160" >346</a>, <a +href="glossaries-extra-manual.html#dx1-31005" >347</a>, <a +href="glossaries-extra-manual.html#dx1-34009" >348</a>, <a +href="glossaries-extra-manual.html#dx1-36001" >349</a>, <a +href="glossaries-extra-manual.html#dx1-36002" >350</a>, <a +href="glossaries-extra-manual.html#dx1-36004" >351</a>, <a +href="glossaries-extra-manual.html#dx1-36005" >352</a>, <a +href="glossaries-extra-manual.html#dx1-36006" >353</a>, <a +href="glossaries-extra-manual.html#dx1-36007" >354</a>, <a +href="glossaries-extra-manual.html#dx1-36008" >355</a>, <a +href="glossaries-extra-manual.html#dx1-36009" >356</a>, <a +href="glossaries-extra-manual.html#dx1-36011" >357</a>, <a +href="glossaries-extra-manual.html#dx1-36014" >358</a>, <a +href="glossaries-extra-manual.html#dx1-36016" >359</a>, <a +href="glossaries-extra-manual.html#dx1-36023" >360</a>, <a +href="glossaries-extra-manual.html#dx1-37001" >361</a>, <a +href="glossaries-extra-manual.html#dx1-37002" >362</a>, <a +href="glossaries-extra-manual.html#dx1-37003" >363</a>, <a +href="glossaries-extra-manual.html#dx1-37004" >364</a>, <a +href="glossaries-extra-manual.html#dx1-37005" >365</a>, <a +href="glossaries-extra-manual.html#dx1-37006" >366</a>, <a +href="glossaries-extra-manual.html#dx1-38001" >367</a>, <a +href="glossaries-extra-manual.html#dx1-38002" >368</a>, <a +href="glossaries-extra-manual.html#dx1-38004" >369</a>, <a +href="glossaries-extra-manual.html#dx1-38005" >370</a>, <a +href="glossaries-extra-manual.html#dx1-38006" >371</a>, <a +href="glossaries-extra-manual.html#dx1-38007" >372</a>, <a +href="glossaries-extra-manual.html#dx1-38010" >373</a>, <a +href="glossaries-extra-manual.html#dx1-38013" >374</a>, <a +href="glossaries-extra-manual.html#dx1-39004" >375</a>, <a +href="glossaries-extra-manual.html#dx1-39018" >376</a>, <a +href="glossaries-extra-manual.html#dx1-39019" >377</a>, <a +href="glossaries-extra-manual.html#dx1-39020" >378</a>, <a +href="glossaries-extra-manual.html#dx1-39026" >379</a>, <a +href="glossaries-extra-manual.html#dx1-39027" >380</a>, <a +href="glossaries-extra-manual.html#dx1-39028" >381</a>, <a +href="glossaries-extra-manual.html#dx1-39032" >382</a>, <a +href="glossaries-extra-manual.html#dx1-39033" >383</a>, <a +href="glossaries-extra-manual.html#dx1-40002" >384</a>, <a +href="glossaries-extra-manual.html#dx1-41002" >385</a>, <a +href="glossaries-extra-manual.html#dx1-41004" >386</a>, <a +href="glossaries-extra-manual.html#dx1-41009" >387</a>, <a +href="glossaries-extra-manual.html#dx1-41011" >388</a>, <a +href="glossaries-extra-manual.html#dx1-41013" >389</a>, <a +href="glossaries-extra-manual.html#dx1-41017" >390</a>, <a +href="glossaries-extra-manual.html#dx1-41024" >391</a>, <a +href="glossaries-extra-manual.html#dx1-41026" >392</a>, <a +href="glossaries-extra-manual.html#dx1-41027" >393</a>, <a +href="glossaries-extra-manual.html#dx1-42003" >394</a>, <a +href="glossaries-extra-manual.html#dx1-42006" >395</a>, <a +href="glossaries-extra-manual.html#dx1-42007" >396</a>, <a +href="glossaries-extra-manual.html#dx1-42028" >397</a>, <a +href="glossaries-extra-manual.html#dx1-42036" >398</a>, <a +href="glossaries-extra-manual.html#dx1-42045" >399</a>, <a +href="glossaries-extra-manual.html#dx1-42115" >400</a>, <a +href="glossaries-extra-manual.html#dx1-43001" >401</a>, <a +href="glossaries-extra-manual.html#dx1-43002" >402</a>, <a +href="glossaries-extra-manual.html#dx1-43011" >403</a>, <a +href="glossaries-extra-manual.html#dx1-43013" >404</a>, <a +href="glossaries-extra-manual.html#dx1-43026" >405</a>, <a +href="glossaries-extra-manual.html#dx1-43027" >406</a>, <a +href="glossaries-extra-manual.html#dx1-43028" >407</a>, <a +href="glossaries-extra-manual.html#dx1-44001" >408</a>, <a +href="glossaries-extra-manual.html#dx1-44002" >409</a>, <a +href="glossaries-extra-manual.html#dx1-44003" >410</a>, <a +href="glossaries-extra-manual.html#dx1-44005" >411</a>, <a +href="glossaries-extra-manual.html#dx1-44023" >412</a>, <a +href="glossaries-extra-manual.html#dx1-47007" >413</a>, <a +href="glossaries-extra-manual.html#dx1-47016" >414</a>, <a +href="glossaries-extra-manual.html#dx1-47038" >415</a>, <a +href="glossaries-extra-manual.html#dx1-49002" >416</a>, <a +href="glossaries-extra-manual.html#dx1-49013" >417</a>, <a +href="glossaries-extra-manual.html#dx1-54010" >418</a>, <a +href="glossaries-extra-manual.html#dx1-55001" ><span +class="cmbx-10">419</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">C</span> +<span class="index-item">categories:<br /></span> +<span class="index-subitem">    <span +class="cmss-10">abbreviation</span>  <a +href="glossaries-extra-manual.html#dx1-9004" >420</a>, <a +href="glossaries-extra-manual.html#dx1-21015" >421</a>, <a +href="glossaries-extra-manual.html#dx1-22007" >422</a>, <a +href="glossaries-extra-manual.html#dx1-30008" >423</a>, <a +href="glossaries-extra-manual.html#dx1-33015" >424</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">acronym</span>  <a +href="glossaries-extra-manual.html#dx1-18022" >425</a>, <a +href="glossaries-extra-manual.html#dx1-21013" >426</a>, <a +href="glossaries-extra-manual.html#dx1-22006" >427</a>, <a +href="glossaries-extra-manual.html#dx1-30009" >428</a>, <a +href="glossaries-extra-manual.html#dx1-30023" >429</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">general</span>  <a +href="glossaries-extra-manual.html#dx1-8037" >430</a>, <a +href="glossaries-extra-manual.html#dx1-8066" >431</a>, <a +href="glossaries-extra-manual.html#dx1-18021" >432</a>, <a +href="glossaries-extra-manual.html#dx1-18025" >433</a>, <a +href="glossaries-extra-manual.html#dx1-30007" >434</a>, <a +href="glossaries-extra-manual.html#dx1-30022" >435</a>, <a +href="glossaries-extra-manual.html#dx1-30171" >436</a>, <a +href="glossaries-extra-manual.html#dx1-32040" >437</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">index</span>  <a +href="glossaries-extra-manual.html#dx1-5050" >438</a>, <a +href="glossaries-extra-manual.html#dx1-30012" >439</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">number</span>  <a +href="glossaries-extra-manual.html#dx1-30018" >440</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">symbol</span>  <a +href="glossaries-extra-manual.html#dx1-8045" >441</a>, <a +href="glossaries-extra-manual.html#dx1-30015" >442</a> <br /></span> +<span class="index-item">category attributes:<br /></span> +<span class="index-subitem">    <span +class="cmss-10">accessaposplural</span>  <a +href="glossaries-extra-manual.html#dx1-30099" >443</a>, <a +href="glossaries-extra-manual.html#dx1-30109" >444</a>, <a +href="glossaries-extra-manual.html#dx1-30113" >445</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">accessinsertdots</span>  <a +href="glossaries-extra-manual.html#dx1-30080" >446</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">accessnoshortplural</span>  <a +href="glossaries-extra-manual.html#dx1-30110" >447</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">aposplural</span>  <a +href="glossaries-extra-manual.html#dx1-11036" >448</a>, <a +href="glossaries-extra-manual.html#dx1-25043" >449</a>, <a +href="glossaries-extra-manual.html#dx1-30071" >450</a>, <a +href="glossaries-extra-manual.html#dx1-30079" >451</a>, <a +href="glossaries-extra-manual.html#dx1-30100" >452</a>, <a +href="glossaries-extra-manual.html#dx1-30104" >453</a>, <a +href="glossaries-extra-manual.html#dx1-30106" >454</a>, <a +href="glossaries-extra-manual.html#dx1-30108" >455</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">discardperiod</span>  <a +href="glossaries-extra-manual.html#dx1-8032" >456</a>, <a +href="glossaries-extra-manual.html#dx1-30042" >457</a>, <a +href="glossaries-extra-manual.html#dx1-30049" >458</a>, <a +href="glossaries-extra-manual.html#dx1-30052" >459</a>, <a +href="glossaries-extra-manual.html#dx1-30070" >460</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">dualindex</span>  <a +href="glossaries-extra-manual.html#dx1-30148" >461</a>, <a +href="glossaries-extra-manual.html#dx1-34002" >462</a>, <a +href="glossaries-extra-manual.html#dx1-34015" >463</a>, <a +href="glossaries-extra-manual.html#dx1-34031" >464</a>, <a +href="glossaries-extra-manual.html#dx1-34038" >465</a>, <a +href="glossaries-extra-manual.html#dx1-34041" >466</a>, <a +href="glossaries-extra-manual.html#dx1-53003" >467</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">entrycount</span>  <a +href="glossaries-extra-manual.html#dx1-9003" >468</a>, <a +href="glossaries-extra-manual.html#dx1-30119" >469</a>, <a +href="glossaries-extra-manual.html#dx1-30123" >470</a>, <a +href="glossaries-extra-manual.html#dx1-32002" >471</a>, <a +href="glossaries-extra-manual.html#dx1-32007" >472</a>, <a +href="glossaries-extra-manual.html#dx1-32019" >473</a>, <a +href="glossaries-extra-manual.html#dx1-32023" >474</a>, <a +href="glossaries-extra-manual.html#dx1-32024" >475</a>, <a +href="glossaries-extra-manual.html#dx1-32028" >476</a>, <a +href="glossaries-extra-manual.html#dx1-32029" >477</a>, <a +href="glossaries-extra-manual.html#dx1-32033" >478</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">externallocation</span>  <a +href="glossaries-extra-manual.html#dx1-6052" >479</a>, <a +href="glossaries-extra-manual.html#dx1-6056" >480</a>, <a +href="glossaries-extra-manual.html#dx1-30159" >481</a>, <a +href="glossaries-extra-manual.html#dx1-40003" >482</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">firstshortaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30096" >483</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">glossdesc</span>  <a +href="glossaries-extra-manual.html#dx1-18004" >484</a>, <a +href="glossaries-extra-manual.html#dx1-30128" >485</a>, <a +href="glossaries-extra-manual.html#dx1-30138" >486</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">glossdescfont</span>  <a +href="glossaries-extra-manual.html#dx1-18005" >487</a>, <a +href="glossaries-extra-manual.html#dx1-30135" >488</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">glossname</span>  <a +href="glossaries-extra-manual.html#dx1-18003" >489</a>, <a +href="glossaries-extra-manual.html#dx1-18008" >490</a>, <a +href="glossaries-extra-manual.html#dx1-30137" >491</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">glossnamefont</span>  <a +href="glossaries-extra-manual.html#dx1-18009" >492</a>, <a +href="glossaries-extra-manual.html#dx1-30143" >493</a>, <a +href="glossaries-extra-manual.html#dx1-48011" >494</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">headuc</span>  <a +href="glossaries-extra-manual.html#dx1-12059" >495</a>, <a +href="glossaries-extra-manual.html#dx1-29018" >496</a>, <a +href="glossaries-extra-manual.html#dx1-29020" >497</a>, <a +href="glossaries-extra-manual.html#dx1-30114" >498</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">hyperoutside</span>  <a +href="glossaries-extra-manual.html#dx1-6019" >499</a>, <a +href="glossaries-extra-manual.html#dx1-30146" >500</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">indexname</span>  <a +href="glossaries-extra-manual.html#dx1-18014" >501</a>, <a +href="glossaries-extra-manual.html#dx1-30140" >502</a>, <a +href="glossaries-extra-manual.html#dx1-34001" >503</a>, <a +href="glossaries-extra-manual.html#dx1-34013" >504</a>, <a +href="glossaries-extra-manual.html#dx1-53004" >505</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">indexonlyfirst</span>  <a +href="glossaries-extra-manual.html#dx1-6007" >506</a>, <a +href="glossaries-extra-manual.html#dx1-30037" >507</a>, <a +href="glossaries-extra-manual.html#dx1-34039" >508</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">insertdots</span>  <a +href="glossaries-extra-manual.html#dx1-21004" >509</a>, <a +href="glossaries-extra-manual.html#dx1-30064" >510</a>, <a +href="glossaries-extra-manual.html#dx1-30066" >511</a>, <a +href="glossaries-extra-manual.html#dx1-30083" >512</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">linkcount</span>  <a +href="glossaries-extra-manual.html#dx1-30124" >513</a>, <a +href="glossaries-extra-manual.html#dx1-33003" >514</a>, <a +href="glossaries-extra-manual.html#dx1-33016" >515</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">linkcountmaster</span>  <a +href="glossaries-extra-manual.html#dx1-30126" >516</a>, <a +href="glossaries-extra-manual.html#dx1-33004" >517</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">markshortwords</span>  <a +href="glossaries-extra-manual.html#dx1-30061" >518</a>, <a +href="glossaries-extra-manual.html#dx1-30068" >519</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">markwords</span>  <a +href="glossaries-extra-manual.html#dx1-27212" >520</a>, <a +href="glossaries-extra-manual.html#dx1-27215" >521</a>, <a +href="glossaries-extra-manual.html#dx1-27218" >522</a>, <a +href="glossaries-extra-manual.html#dx1-28032" >523</a>, <a +href="glossaries-extra-manual.html#dx1-30054" >524</a>, <a +href="glossaries-extra-manual.html#dx1-30062" >525</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nameshortaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30087" >526</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nohyper</span>  <a +href="glossaries-extra-manual.html#dx1-30034" >527</a>, <a +href="glossaries-extra-manual.html#dx1-30172" >528</a>, <a +href="glossaries-extra-manual.html#dx1-30173" >529</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nohyperfirst</span>  <a +href="glossaries-extra-manual.html#dx1-27148" >530</a>, <a +href="glossaries-extra-manual.html#dx1-28021" >531</a>, <a +href="glossaries-extra-manual.html#dx1-28023" >532</a>, <a +href="glossaries-extra-manual.html#dx1-30025" >533</a>, <a +href="glossaries-extra-manual.html#dx1-30032" >534</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">noshortplural</span>  <a +href="glossaries-extra-manual.html#dx1-11037" >535</a>, <a +href="glossaries-extra-manual.html#dx1-21005" >536</a>, <a +href="glossaries-extra-manual.html#dx1-25044" >537</a>, <a +href="glossaries-extra-manual.html#dx1-30074" >538</a>, <a +href="glossaries-extra-manual.html#dx1-30075" >539</a>, <a +href="glossaries-extra-manual.html#dx1-30111" >540</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">pluraldiscardperiod</span>  <a +href="glossaries-extra-manual.html#dx1-30048" >541</a>, <a +href="glossaries-extra-manual.html#dx1-30053" >542</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">recordcount</span>  <a +href="glossaries-extra-manual.html#dx1-44015" >543</a>, <a +href="glossaries-extra-manual.html#dx1-44017" >544</a>, <a +href="glossaries-extra-manual.html#dx1-44019" >545</a>, <a +href="glossaries-extra-manual.html#dx1-44021" >546</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">regular</span>  <a +href="glossaries-extra-manual.html#dx1-8010" >547</a>, <a +href="glossaries-extra-manual.html#dx1-8019" >548</a>, <a +href="glossaries-extra-manual.html#dx1-8022" >549</a>, <a +href="glossaries-extra-manual.html#dx1-23004" >550</a>, <a +href="glossaries-extra-manual.html#dx1-25005" >551</a>, <a +href="glossaries-extra-manual.html#dx1-25014" >552</a>, <a +href="glossaries-extra-manual.html#dx1-25087" >553</a>, <a +href="glossaries-extra-manual.html#dx1-25089" >554</a>, <a +href="glossaries-extra-manual.html#dx1-25092" >555</a>, <a +href="glossaries-extra-manual.html#dx1-26001" >556</a>, <a +href="glossaries-extra-manual.html#dx1-26111" >557</a>, <a +href="glossaries-extra-manual.html#dx1-27001" >558</a>, <a +href="glossaries-extra-manual.html#dx1-27030" >559</a>, <a +href="glossaries-extra-manual.html#dx1-27050" >560</a>, <a +href="glossaries-extra-manual.html#dx1-27053" >561</a>, <a +href="glossaries-extra-manual.html#dx1-27076" >562</a>, <a +href="glossaries-extra-manual.html#dx1-27088" >563</a>, <a +href="glossaries-extra-manual.html#dx1-27091" >564</a>, <a +href="glossaries-extra-manual.html#dx1-27120" >565</a>, <a +href="glossaries-extra-manual.html#dx1-28022" >566</a>, <a +href="glossaries-extra-manual.html#dx1-28053" >567</a>, <a +href="glossaries-extra-manual.html#dx1-28057" >568</a>, <a +href="glossaries-extra-manual.html#dx1-28061" >569</a>, <a +href="glossaries-extra-manual.html#dx1-28065" >570</a>, <a +href="glossaries-extra-manual.html#dx1-28081" >571</a>, <a +href="glossaries-extra-manual.html#dx1-30024" >572</a>, <a +href="glossaries-extra-manual.html#dx1-30162" >573</a>, <a +href="glossaries-extra-manual.html#dx1-30175" >574</a>, <a +href="glossaries-extra-manual.html#dx1-30178" >575</a>, <a +href="glossaries-extra-manual.html#dx1-30179" >576</a>, <a +href="glossaries-extra-manual.html#dx1-30182" >577</a>, <a +href="glossaries-extra-manual.html#dx1-44031" >578</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">retainfirstuseperiod</span>  <a +href="glossaries-extra-manual.html#dx1-30050" >579</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">tagging</span>  <a +href="glossaries-extra-manual.html#dx1-22002" >580</a>, <a +href="glossaries-extra-manual.html#dx1-22005" >581</a>, <a +href="glossaries-extra-manual.html#dx1-22008" >582</a>, <a +href="glossaries-extra-manual.html#dx1-30116" >583</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">targetcategory</span>  <a +href="glossaries-extra-manual.html#dx1-30157" >584</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">targetname</span>  <a +href="glossaries-extra-manual.html#dx1-30154" >585</a>, <a +href="glossaries-extra-manual.html#dx1-30156" >586</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">targeturl</span>  <a +href="glossaries-extra-manual.html#dx1-5016" >587</a>, <a +href="glossaries-extra-manual.html#dx1-30152" >588</a>, <a +href="glossaries-extra-manual.html#dx1-30155" >589</a>, <a +href="glossaries-extra-manual.html#dx1-49006" >590</a>, <a +href="glossaries-extra-manual.html#dx1-53009" >591</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">textformat</span>  <a +href="glossaries-extra-manual.html#dx1-6020" >592</a>, <a +href="glossaries-extra-manual.html#dx1-6023" >593</a>, <a +href="glossaries-extra-manual.html#dx1-8028" >594</a>, <a +href="glossaries-extra-manual.html#dx1-10017" >595</a>, <a +href="glossaries-extra-manual.html#dx1-30145" >596</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">textshortaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30093" >597</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">unitcount</span>  <a +href="glossaries-extra-manual.html#dx1-32034" >598</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">wrgloss</span>  <a +href="glossaries-extra-manual.html#dx1-6015" >599</a>, <a +href="glossaries-extra-manual.html#dx1-30039" >600</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\cGLS</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32015" ><span +class="cmti-10">601</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\cGLSformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32017" ><span +class="cmti-10">602</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\cGLSpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32016" ><span +class="cmti-10">603</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\cGLSplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32018" ><span +class="cmti-10">604</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">convertgls2bib</span>  <a +href="glossaries-extra-manual.html#dx1-36003" >605</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\csGlsXtrLetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46026" ><span +class="cmti-10">606</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\CustomAbbreviationFields</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28006" ><span +class="cmti-10">607</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">D</span> +<span class="index-item"><span +class="cmss-10">datatool-base </span>package  <a +href="glossaries-extra-manual.html#dx1-9" >608</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dGLS</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43022" ><span +class="cmti-10">609</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dGls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43020" ><span +class="cmti-10">610</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dgls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43018" ><span +class="cmti-10">611</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dglsdisp</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43025" ><span +class="cmti-10">612</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dglslink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43024" ><span +class="cmti-10">613</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dGLSpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43023" ><span +class="cmti-10">614</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dGlspl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43021" ><span +class="cmti-10">615</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\dglspl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43019" ><span +class="cmti-10">616</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">E</span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\eglssetwidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20069" ><span +class="cmti-10">617</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\eglsupdatewidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20073" ><span +class="cmti-10">618</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\eGlsXtrSetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46023" ><span +class="cmti-10">619</span></a> <br /></span> +<span class="index-item">entry location  <a +href="glossaries-extra-manual.html#dx1-55004" ><span +class="cmbx-10">620</span></a>, <a +href="glossaries-extra-manual.html#dx1-55024" >621</a>, <a +href="glossaries-extra-manual.html#dx1-55035" >622</a> <br /></span> + + + +<span class="index-item"><span +class="cmss-10">entrycounter </span>package  <a +href="glossaries-extra-manual.html#dx1-48020" >623</a> <br /></span> +<span class="index-item"><span +class="cmtt-10">equation </span>(counter)  <a +href="glossaries-extra-manual.html#dx1-4109" >624</a>, <a +href="glossaries-extra-manual.html#dx1-4134" >625</a>, <a +href="glossaries-extra-manual.html#dx1-6034" >626</a>, <a +href="glossaries-extra-manual.html#dx1-41008" >627</a>, <a +href="glossaries-extra-manual.html#dx1-41021" >628</a> <br /></span> +<span class="index-item"><span +class="cmss-10">etoolbox </span>package  <a +href="glossaries-extra-manual.html#dx1-5" >629</a>, <a +href="glossaries-extra-manual.html#dx1-30168" >630</a>, <a +href="glossaries-extra-manual.html#dx1-33010" >631</a>, <a +href="glossaries-extra-manual.html#dx1-46019" >632</a>, <a +href="glossaries-extra-manual.html#dx1-46035" >633</a>, <a +href="glossaries-extra-manual.html#dx1-46046" >634</a>, <a +href="glossaries-extra-manual.html#dx1-46047" >635</a>, <a +href="glossaries-extra-manual.html#dx1-46056" >636</a>, <a +href="glossaries-extra-manual.html#dx1-46058" >637</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">F</span> +<span class="index-item"><span +class="cmss-10">fancyhdr </span>package  <a +href="glossaries-extra-manual.html#dx1-14049" >638</a> <br /></span> +<span class="index-item">first use  <a +href="glossaries-extra-manual.html#dx1-6005" >639</a>, <a +href="glossaries-extra-manual.html#dx1-8015" >640</a>, <a +href="glossaries-extra-manual.html#dx1-8043" >641</a>, <a +href="glossaries-extra-manual.html#dx1-8044" >642</a>, <a +href="glossaries-extra-manual.html#dx1-8047" >643</a>, <a +href="glossaries-extra-manual.html#dx1-8049" >644</a>, <a +href="glossaries-extra-manual.html#dx1-8054" >645</a>, <a +href="glossaries-extra-manual.html#dx1-8058" >646</a>, <a +href="glossaries-extra-manual.html#dx1-8061" >647</a>, <a +href="glossaries-extra-manual.html#dx1-8063" >648</a>, <a +href="glossaries-extra-manual.html#dx1-8065" >649</a>, <a +href="glossaries-extra-manual.html#dx1-12008" >650</a>, <a +href="glossaries-extra-manual.html#dx1-12019" >651</a>, <a +href="glossaries-extra-manual.html#dx1-12020" >652</a>, <a +href="glossaries-extra-manual.html#dx1-12021" >653</a>, <a +href="glossaries-extra-manual.html#dx1-12022" >654</a>, <a +href="glossaries-extra-manual.html#dx1-12026" >655</a>, <a +href="glossaries-extra-manual.html#dx1-12030" >656</a>, <a +href="glossaries-extra-manual.html#dx1-12034" >657</a>, <a +href="glossaries-extra-manual.html#dx1-12048" >658</a>, <a +href="glossaries-extra-manual.html#dx1-12049" >659</a>, <a +href="glossaries-extra-manual.html#dx1-13057" >660</a>, <a +href="glossaries-extra-manual.html#dx1-13058" >661</a>, <a +href="glossaries-extra-manual.html#dx1-21001" >662</a>, <a +href="glossaries-extra-manual.html#dx1-21016" >663</a>, <a +href="glossaries-extra-manual.html#dx1-23017" >664</a>, <a +href="glossaries-extra-manual.html#dx1-23019" >665</a>, <a +href="glossaries-extra-manual.html#dx1-25006" >666</a>, <a +href="glossaries-extra-manual.html#dx1-25020" >667</a>, <a +href="glossaries-extra-manual.html#dx1-26003" >668</a>, <a +href="glossaries-extra-manual.html#dx1-27003" >669</a>, <a +href="glossaries-extra-manual.html#dx1-27055" >670</a>, <a +href="glossaries-extra-manual.html#dx1-27093" >671</a>, <a +href="glossaries-extra-manual.html#dx1-27122" >672</a>, <a +href="glossaries-extra-manual.html#dx1-27147" >673</a>, <a +href="glossaries-extra-manual.html#dx1-27149" >674</a>, <a +href="glossaries-extra-manual.html#dx1-27156" >675</a>, <a +href="glossaries-extra-manual.html#dx1-27178" >676</a>, <a +href="glossaries-extra-manual.html#dx1-27182" >677</a>, <a +href="glossaries-extra-manual.html#dx1-28044" >678</a>, <a +href="glossaries-extra-manual.html#dx1-28048" >679</a>, <a +href="glossaries-extra-manual.html#dx1-28052" >680</a>, <a +href="glossaries-extra-manual.html#dx1-28056" >681</a>, <a +href="glossaries-extra-manual.html#dx1-28060" >682</a>, <a +href="glossaries-extra-manual.html#dx1-28064" >683</a>, <a +href="glossaries-extra-manual.html#dx1-30027" >684</a>, <a +href="glossaries-extra-manual.html#dx1-30029" >685</a>, <a +href="glossaries-extra-manual.html#dx1-30051" >686</a>, <a +href="glossaries-extra-manual.html#dx1-32039" >687</a>, <a +href="glossaries-extra-manual.html#dx1-53001" >688</a>, <a +href="glossaries-extra-manual.html#dx1-55005" ><span +class="cmbx-10">689</span></a>, <a +href="glossaries-extra-manual.html#dx1-55014" >690</a>, <a +href="glossaries-extra-manual.html#dx1-55016" >691</a> <br /></span> +<span class="index-item">first use flag  <a +href="glossaries-extra-manual.html#dx1-8052" >692</a>, <a +href="glossaries-extra-manual.html#dx1-10008" >693</a>, <a +href="glossaries-extra-manual.html#dx1-29001" >694</a>, <a +href="glossaries-extra-manual.html#dx1-32004" >695</a>, <a +href="glossaries-extra-manual.html#dx1-32022" >696</a>, <a +href="glossaries-extra-manual.html#dx1-44024" >697</a>, <a +href="glossaries-extra-manual.html#dx1-55013" ><span +class="cmbx-10">698</span></a> <br /></span> +<span class="index-item">first use text  <a +href="glossaries-extra-manual.html#dx1-55015" ><span +class="cmbx-10">699</span></a>, <a +href="glossaries-extra-manual.html#dx1-55038" >700</a> <br /></span> +<span class="index-item"><span +class="cmss-10">fontenc </span>package  <a +href="glossaries-extra-manual.html#dx1-25024" >701</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">G</span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gglssetwidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20067" ><span +class="cmti-10">702</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gglsupdatewidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20072" ><span +class="cmti-10">703</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\gGlsXtrSetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46022" ><span +class="cmti-10">704</span></a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries </span>package  <a +href="glossaries-extra-manual.html#dx1-5038" >705</a>, <a +href="glossaries-extra-manual.html#dx1-7025" >706</a>, <a +href="glossaries-extra-manual.html#dx1-7028" >707</a>, <a +href="glossaries-extra-manual.html#dx1-7030" >708</a>, <a +href="glossaries-extra-manual.html#dx1-7069" >709</a>, <a +href="glossaries-extra-manual.html#dx1-11001" >710</a>, <a +href="glossaries-extra-manual.html#dx1-11003" >711</a>, <a +href="glossaries-extra-manual.html#dx1-11012" >712</a>, <a +href="glossaries-extra-manual.html#dx1-11029" >713</a>, <a +href="glossaries-extra-manual.html#dx1-17003" >714</a>, <a +href="glossaries-extra-manual.html#dx1-17004" >715</a>, <a +href="glossaries-extra-manual.html#dx1-20035" >716</a>, <a +href="glossaries-extra-manual.html#dx1-30031" >717</a>, <a +href="glossaries-extra-manual.html#dx1-41007" >718</a>, <a +href="glossaries-extra-manual.html#dx1-41012" >719</a>, <a +href="glossaries-extra-manual.html#dx1-42009" >720</a>, <a +href="glossaries-extra-manual.html#dx1-42034" >721</a>, <a +href="glossaries-extra-manual.html#dx1-46043" >722</a>, <a +href="glossaries-extra-manual.html#dx1-46060" >723</a>, <a +href="glossaries-extra-manual.html#dx1-47018" >724</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries-accsupp </span>package  <a +href="glossaries-extra-manual.html#dx1-4034" >725</a>, <a +href="glossaries-extra-manual.html#dx1-4035" >726</a>, <a +href="glossaries-extra-manual.html#dx1-4038" >727</a>, <a +href="glossaries-extra-manual.html#dx1-4041" >728</a>, <a +href="glossaries-extra-manual.html#dx1-28086" >729</a>, <a +href="glossaries-extra-manual.html#dx1-28087" >730</a>, <a +href="glossaries-extra-manual.html#dx1-30081" >731</a>, <a +href="glossaries-extra-manual.html#dx1-48018" >732</a>, <a +href="glossaries-extra-manual.html#dx1-50002" >733</a>, <a +href="glossaries-extra-manual.html#dx1-52001" >734</a>, <a +href="glossaries-extra-manual.html#dx1-52003" >735</a>, <a +href="glossaries-extra-manual.html#dx1-52004" >736</a>, <a +href="glossaries-extra-manual.html#dx1-52007" >737</a>, <a +href="glossaries-extra-manual.html#dx1-52009" >738</a>, <a +href="glossaries-extra-manual.html#dx1-52011" >739</a>, <a +href="glossaries-extra-manual.html#dx1-52012" >740</a>, <a +href="glossaries-extra-manual.html#dx1-53021" >741</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries-extra </span>package  <a +href="glossaries-extra-manual.html#dx1-5011" >742</a>, <a +href="glossaries-extra-manual.html#dx1-5040" >743</a>, <a +href="glossaries-extra-manual.html#dx1-7032" >744</a>, <a +href="glossaries-extra-manual.html#dx1-7035" >745</a>, <a +href="glossaries-extra-manual.html#dx1-17005" >746</a>, <a +href="glossaries-extra-manual.html#dx1-42027" >747</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries-extra-bib2gls </span>package  <a +href="glossaries-extra-manual.html#dx1-4077" >748</a>, <a +href="glossaries-extra-manual.html#dx1-4078" >749</a>, <a +href="glossaries-extra-manual.html#dx1-4104" >750</a>, <a +href="glossaries-extra-manual.html#dx1-4190" >751</a>, <a +href="glossaries-extra-manual.html#dx1-4207" >752</a>, <a +href="glossaries-extra-manual.html#dx1-4212" >753</a>, <a +href="glossaries-extra-manual.html#dx1-4217" >754</a>, <a +href="glossaries-extra-manual.html#dx1-4222" >755</a>, <a +href="glossaries-extra-manual.html#dx1-39003" >756</a>, <a +href="glossaries-extra-manual.html#dx1-39008" >757</a>, <a +href="glossaries-extra-manual.html#dx1-39017" >758</a>, <a +href="glossaries-extra-manual.html#dx1-42011" >759</a>, <a +href="glossaries-extra-manual.html#dx1-42037" >760</a>, <a +href="glossaries-extra-manual.html#dx1-54007" >761</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries-extra-stylemods </span>package  <a +href="glossaries-extra-manual.html#dx1-4026" >762</a>, <a +href="glossaries-extra-manual.html#dx1-4043" >763</a>, <a +href="glossaries-extra-manual.html#dx1-17001" >764</a>, <a +href="glossaries-extra-manual.html#dx1-20001" >765</a>, <a +href="glossaries-extra-manual.html#dx1-20002" >766</a>, <a +href="glossaries-extra-manual.html#dx1-20039" >767</a>, <a +href="glossaries-extra-manual.html#dx1-39035" >768</a>, <a +href="glossaries-extra-manual.html#dx1-47004" >769</a>, <a +href="glossaries-extra-manual.html#dx1-53011" >770</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossaries-prefix </span>package  <a +href="glossaries-extra-manual.html#dx1-50001" >771</a>, <a +href="glossaries-extra-manual.html#dx1-51001" >772</a>, <a +href="glossaries-extra-manual.html#dx1-53022" >773</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glossariesextrasetup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4249" ><span +class="cmti-10">774</span></a> <br /></span> +<span class="index-item">glossary styles:<br /></span> +<span class="index-subitem">    <span +class="cmss-10">altlist</span>  <a +href="glossaries-extra-manual.html#dx1-20023" >775</a>, <a +href="glossaries-extra-manual.html#dx1-20026" >776</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">alttree</span>  <a +href="glossaries-extra-manual.html#dx1-15026" >777</a>, <a +href="glossaries-extra-manual.html#dx1-15027" >778</a>, <a +href="glossaries-extra-manual.html#dx1-16004" >779</a>, <a +href="glossaries-extra-manual.html#dx1-20057" >780</a>, <a +href="glossaries-extra-manual.html#dx1-20064" >781</a>, <a +href="glossaries-extra-manual.html#dx1-20082" >782</a>, <a +href="glossaries-extra-manual.html#dx1-20101" >783</a>, <a +href="glossaries-extra-manual.html#dx1-20104" >784</a>, <a +href="glossaries-extra-manual.html#dx1-39030" >785</a>, <a +href="glossaries-extra-manual.html#dx1-39036" >786</a>, <a +href="glossaries-extra-manual.html#dx1-53012" >787</a>, <a +href="glossaries-extra-manual.html#dx1-53013" >788</a>, <a +href="glossaries-extra-manual.html#dx1-53014" >789</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">bookindex</span>  <a +href="glossaries-extra-manual.html#dx1-14002" >790</a>, <a +href="glossaries-extra-manual.html#dx1-14006" >791</a>, <a +href="glossaries-extra-manual.html#dx1-14036" >792</a>, <a +href="glossaries-extra-manual.html#dx1-14037" >793</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">index</span>  <a +href="glossaries-extra-manual.html#dx1-20045" >794</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">inline</span>  <a +href="glossaries-extra-manual.html#dx1-20006" >795</a>, <a +href="glossaries-extra-manual.html#dx1-20008" >796</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">list</span>  <a +href="glossaries-extra-manual.html#dx1-20018" >797</a>, <a +href="glossaries-extra-manual.html#dx1-20022" >798</a>, <a +href="glossaries-extra-manual.html#dx1-20025" >799</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">listdotted</span>  <a +href="glossaries-extra-manual.html#dx1-20024" >800</a>, <a +href="glossaries-extra-manual.html#dx1-20027" >801</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long</span>  <a +href="glossaries-extra-manual.html#dx1-20012" >802</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc-name</span>  <a +href="glossaries-extra-manual.html#dx1-15066" >803</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-desc-sym-name</span>  <a +href="glossaries-extra-manual.html#dx1-15133" >804</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-loc-desc-name</span>  <a +href="glossaries-extra-manual.html#dx1-15075" >805</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-loc-desc-sym-name</span>  <a +href="glossaries-extra-manual.html#dx1-15141" >806</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-loc-sym-desc-name</span>  <a +href="glossaries-extra-manual.html#dx1-15125" >807</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-desc</span>  <a +href="glossaries-extra-manual.html#dx1-15044" >808</a>, <a +href="glossaries-extra-manual.html#dx1-15058" >809</a>, <a +href="glossaries-extra-manual.html#dx1-15067" >810</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-desc-loc</span>  <a +href="glossaries-extra-manual.html#dx1-15057" >811</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-desc-sym</span>  <a +href="glossaries-extra-manual.html#dx1-15083" >812</a>, <a +href="glossaries-extra-manual.html#dx1-15100" >813</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-desc-sym-loc</span>  <a +href="glossaries-extra-manual.html#dx1-15091" >814</a>, <a +href="glossaries-extra-manual.html#dx1-15109" >815</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-sym-desc</span>  <a +href="glossaries-extra-manual.html#dx1-15099" >816</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-name-sym-desc-loc</span>  <a +href="glossaries-extra-manual.html#dx1-15108" >817</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long-sym-desc-name</span>  <a +href="glossaries-extra-manual.html#dx1-15117" >818</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">long3col</span>  <a +href="glossaries-extra-manual.html#dx1-20004" >819</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">longragged-booktabs</span>  <a +href="glossaries-extra-manual.html#dx1-15045" >820</a>, <a +href="glossaries-extra-manual.html#dx1-15048" >821</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">mcolindexgroup</span>  <a +href="glossaries-extra-manual.html#dx1-14003" >822</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">topic</span>  <a +href="glossaries-extra-manual.html#dx1-16006" >823</a>, <a +href="glossaries-extra-manual.html#dx1-16010" >824</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">topicmcols</span>  <a +href="glossaries-extra-manual.html#dx1-16009" >825</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">tree</span>  <a +href="glossaries-extra-manual.html#dx1-16005" >826</a>, <a +href="glossaries-extra-manual.html#dx1-16007" >827</a>, <a +href="glossaries-extra-manual.html#dx1-20046" >828</a>, <a +href="glossaries-extra-manual.html#dx1-20055" >829</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">treenoname</span>  <a +href="glossaries-extra-manual.html#dx1-20051" >830</a>, <a +href="glossaries-extra-manual.html#dx1-20053" >831</a>, <a +href="glossaries-extra-manual.html#dx1-20056" >832</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-bookindex </span>package  <a +href="glossaries-extra-manual.html#dx1-14001" >833</a>, <a +href="glossaries-extra-manual.html#dx1-14043" >834</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-inline </span>package  <a +href="glossaries-extra-manual.html#dx1-20007" >835</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-long </span>package  <a +href="glossaries-extra-manual.html#dx1-15018" >836</a>, <a +href="glossaries-extra-manual.html#dx1-15022" >837</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-longextra </span>package  <a +href="glossaries-extra-manual.html#dx1-15001" >838</a>, <a +href="glossaries-extra-manual.html#dx1-39031" >839</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-topic </span>package  <a +href="glossaries-extra-manual.html#dx1-16001" >840</a> <br /></span> +<span class="index-item"><span +class="cmss-10">glossary-tree </span>package  <a +href="glossaries-extra-manual.html#dx1-14042" >841</a>, <a +href="glossaries-extra-manual.html#dx1-16003" >842</a>, <a +href="glossaries-extra-manual.html#dx1-20034" >843</a>, <a +href="glossaries-extra-manual.html#dx1-20065" >844</a>, <a +href="glossaries-extra-manual.html#dx1-20068" >845</a>, <a +href="glossaries-extra-manual.html#dx1-20079" >846</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glossentrynameother</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18007" ><span +class="cmti-10">847</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glossxtrsetpopts</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12058" ><span +class="cmti-10">848</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvdefaultfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25029" ><span +class="cmti-10">849</span></a>, <a +href="glossaries-extra-manual.html#dx1-25039" ><span +class="cmti-10">850</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvemfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25053" ><span +class="cmti-10">851</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28047" ><span +class="cmti-10">852</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvhyphenfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25065" ><span +class="cmti-10">853</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvonlyfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25071" ><span +class="cmti-10">854</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvscfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25037" ><span +class="cmti-10">855</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvsmfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25047" ><span +class="cmti-10">856</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsabbrvuserfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25060" ><span +class="cmti-10">857</span></a>, <a +href="glossaries-extra-manual.html#dx1-27045" ><span +class="cmti-10">858</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessdesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52039" ><span +class="cmti-10">859</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessdesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52037" ><span +class="cmti-10">860</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessdescplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52043" ><span +class="cmti-10">861</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessdescplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52041" ><span +class="cmti-10">862</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessfirst</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52023" ><span +class="cmti-10">863</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessfirst</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52021" ><span +class="cmti-10">864</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessfirstplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52027" ><span +class="cmti-10">865</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessfirstplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52025" ><span +class="cmti-10">866</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccesslong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52055" ><span +class="cmti-10">867</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccesslong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52053" ><span +class="cmti-10">868</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccesslongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52059" ><span +class="cmti-10">869</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccesslongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52057" ><span +class="cmti-10">870</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52010" ><span +class="cmti-10">871</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52005" ><span +class="cmti-10">872</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52019" ><span +class="cmti-10">873</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52017" ><span +class="cmti-10">874</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52047" ><span +class="cmti-10">875</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52045" ><span +class="cmti-10">876</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccessshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52051" ><span +class="cmti-10">877</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccessshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52049" ><span +class="cmti-10">878</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccesssymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52031" ><span +class="cmti-10">879</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccesssymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52029" ><span +class="cmti-10">880</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccesssymbolplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52035" ><span +class="cmti-10">881</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccesssymbolplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52033" ><span +class="cmti-10">882</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsaccesstext</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52015" ><span +class="cmti-10">883</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaccesstext</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-52013" ><span +class="cmti-10">884</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsacspace</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-13052" ><span +class="cmti-10">885</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsacspacemax</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-13054" ><span +class="cmti-10">886</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">\glsadd </span>options<br /></span> +<span class="index-subitem">    <span +class="cmss-10">format</span>  <a +href="glossaries-extra-manual.html#dx1-8075" >887</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">theHvalue</span>  <a +href="glossaries-extra-manual.html#dx1-6038" >888</a>, <a +href="glossaries-extra-manual.html#dx1-6054" >889</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">thevalue</span>  <a +href="glossaries-extra-manual.html#dx1-6037" >890</a>, <a +href="glossaries-extra-manual.html#dx1-6039" >891</a>, <a +href="glossaries-extra-manual.html#dx1-6043" >892</a>, <a +href="glossaries-extra-manual.html#dx1-6050" >893</a>, <a +href="glossaries-extra-manual.html#dx1-53023" >894</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaddeach</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6001" ><span +class="cmti-10">895</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaddpostsetkeys</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6033" ><span +class="cmti-10">896</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsaddpresetkeys</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6032" ><span +class="cmti-10">897</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glscapturedgroup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42002" ><span +class="cmti-10">898</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glscategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30019" ><span +class="cmti-10">899</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glscategorylabel</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28039" ><span +class="cmti-10">900</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glscurrententrylabel</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18024" ><span +class="cmti-10">901</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glscurrentfieldvalue</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46030" ><span +class="cmti-10">902</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsdefpostdesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18023" ><span +class="cmti-10">903</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsdefpostlink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8038" ><span +class="cmti-10">904</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsdefpostname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18017" ><span +class="cmti-10">905</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsentrycurrcount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32035" ><span +class="cmti-10">906</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsentryprevcount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32036" ><span +class="cmti-10">907</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsentryprevmaxcount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32038" ><span +class="cmti-10">908</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsentryprevtotalcount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32037" ><span +class="cmti-10">909</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsextrapostnamehook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18018" ><span +class="cmti-10">910</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestAnyName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20085" ><span +class="cmti-10">911</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestAnyNameLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20097" ><span +class="cmti-10">912</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestAnyNameSymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20089" ><span +class="cmti-10">913</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestAnyNameSymbolLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20094" ><span +class="cmti-10">914</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestLevelTwo</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20087" ><span +class="cmti-10">915</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestTopLevelName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20080" ><span +class="cmti-10">916</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedAnyName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20083" ><span +class="cmti-10">917</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedAnyNameLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20095" ><span +class="cmti-10">918</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20088" ><span +class="cmti-10">919</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20090" ><span +class="cmti-10">920</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedLevelTwo</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20086" ><span +class="cmti-10">921</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsFindWidestUsedTopLevelName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20081" ><span +class="cmti-10">922</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvdefaultfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25030" ><span +class="cmti-10">923</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvemfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25054" ><span +class="cmti-10">924</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28045" ><span +class="cmti-10">925</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvhyphenfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25066" ><span +class="cmti-10">926</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvonlyfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25072" ><span +class="cmti-10">927</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvsmfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25049" ><span +class="cmti-10">928</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstabbrvuserfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25061" ><span +class="cmti-10">929</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlongdefaultfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25032" ><span +class="cmti-10">930</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlongemfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25058" ><span +class="cmti-10">931</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlongfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28049" ><span +class="cmti-10">932</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlongfootnotefont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27155" ><span +class="cmti-10">933</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlonghyphenfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25068" ><span +class="cmti-10">934</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlongonlyfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25074" ><span +class="cmti-10">935</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfirstlonguserfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25063" ><span +class="cmti-10">936</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtfirst</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29044" ><span +class="cmti-10">937</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtfirst</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29043" ><span +class="cmti-10">938</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtfirstpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29046" ><span +class="cmti-10">939</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtfirstpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29045" ><span +class="cmti-10">940</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtfull</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29032" ><span +class="cmti-10">941</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtfull</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29030" ><span +class="cmti-10">942</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtfullpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29033" ><span +class="cmti-10">943</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtfullpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29031" ><span +class="cmti-10">944</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29028" ><span +class="cmti-10">945</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29026" ><span +class="cmti-10">946</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtlongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29029" ><span +class="cmti-10">947</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtlongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29027" ><span +class="cmti-10">948</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29041" ><span +class="cmti-10">949</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29040" ><span +class="cmti-10">950</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29038" ><span +class="cmti-10">951</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtplural</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29037" ><span +class="cmti-10">952</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29024" ><span +class="cmti-10">953</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29022" ><span +class="cmti-10">954</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmtshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29025" ><span +class="cmti-10">955</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmtshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29023" ><span +class="cmti-10">956</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsfmttext</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29036" ><span +class="cmti-10">957</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsfmttext</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29035" ><span +class="cmti-10">958</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsforeachwithattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30183" ><span +class="cmti-10">959</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsgetattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30166" ><span +class="cmti-10">960</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsgetcategoryattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30165" ><span +class="cmti-10">961</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsgetwidestname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20075" ><span +class="cmti-10">962</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsgetwidestsubname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20076" ><span +class="cmti-10">963</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glshasattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30169" ><span +class="cmti-10">964</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glshascategoryattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30167" ><span +class="cmti-10">965</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glshex</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42001" ><span +class="cmti-10">966</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30174" ><span +class="cmti-10">967</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifcategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30020" ><span +class="cmti-10">968</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifcategoryattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30170" ><span +class="cmti-10">969</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifnotregular</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30181" ><span +class="cmti-10">970</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifnotregularcategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30180" ><span +class="cmti-10">971</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifregular</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30177" ><span +class="cmti-10">972</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsifregularcategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30176" ><span +class="cmti-10">973</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glskeylisttok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28037" ><span +class="cmti-10">974</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslabeltok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28036" ><span +class="cmti-10">975</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">\glslink </span>options<br /></span> +<span class="index-subitem">    <span +class="cmss-10">counter</span>  <a +href="glossaries-extra-manual.html#dx1-4114" >976</a>, <a +href="glossaries-extra-manual.html#dx1-4120" >977</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">format</span>  <a +href="glossaries-extra-manual.html#dx1-6049" >978</a>, <a +href="glossaries-extra-manual.html#dx1-34030" >979</a>, <a +href="glossaries-extra-manual.html#dx1-34032" >980</a>, <a +href="glossaries-extra-manual.html#dx1-44022" >981</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">hyper</span>  <a +href="glossaries-extra-manual.html#dx1-12055" >982</a>, <a +href="glossaries-extra-manual.html#dx1-30028" >983</a>, <a +href="glossaries-extra-manual.html#dx1-30036" >984</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">hyper=false</span>  <a +href="glossaries-extra-manual.html#dx1-29017" >985</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">hyperoutside</span>  <a +href="glossaries-extra-manual.html#dx1-6018" >986</a>, <a +href="glossaries-extra-manual.html#dx1-30147" >987</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">noindex</span>  <a +href="glossaries-extra-manual.html#dx1-6003" >988</a>, <a +href="glossaries-extra-manual.html#dx1-6008" >989</a>, <a +href="glossaries-extra-manual.html#dx1-6012" >990</a>, <a +href="glossaries-extra-manual.html#dx1-12056" >991</a>, <a +href="glossaries-extra-manual.html#dx1-29016" >992</a>, <a +href="glossaries-extra-manual.html#dx1-34042" >993</a>, <a +href="glossaries-extra-manual.html#dx1-49009" >994</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">prefix</span>  <a +href="glossaries-extra-manual.html#dx1-5024" >995</a>, <a +href="glossaries-extra-manual.html#dx1-6025" >996</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">textformat</span>  <a +href="glossaries-extra-manual.html#dx1-6022" >997</a>, <a +href="glossaries-extra-manual.html#dx1-10016" >998</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">theHvalue</span>  <a +href="glossaries-extra-manual.html#dx1-6028" >999</a>, <a +href="glossaries-extra-manual.html#dx1-6041" >1000</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">thevalue</span>  <a +href="glossaries-extra-manual.html#dx1-6027" >1001</a>, <a +href="glossaries-extra-manual.html#dx1-6040" >1002</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">wrgloss</span>  <a +href="glossaries-extra-manual.html#dx1-6011" >1003</a>, <a +href="glossaries-extra-manual.html#dx1-6016" >1004</a>, <a +href="glossaries-extra-manual.html#dx1-8073" >1005</a>, <a +href="glossaries-extra-manual.html#dx1-30041" >1006</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslinkcheckfirsthyperhook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32042" ><span +class="cmti-10">1007</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslinkpresetkeys</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6030" ><span +class="cmti-10">1008</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslistchildpostlocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20029" ><span +class="cmti-10">1009</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslistchildprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20020" ><span +class="cmti-10">1010</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslistdesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20021" ><span +class="cmti-10">1011</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslistgroupskip</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20032" ><span +class="cmti-10">1012</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslistprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20019" ><span +class="cmti-10">1013</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslocalreseteach</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10010" ><span +class="cmti-10">1014</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslocalunseteach</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10011" ><span +class="cmti-10">1015</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongdefaultfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25031" ><span +class="cmti-10">1016</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongemfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25059" ><span +class="cmti-10">1017</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescAlign</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15020" ><span +class="cmti-10">1018</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15036" ><span +class="cmti-10">1019</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15070" ><span +class="cmti-10">1020</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15074" ><span +class="cmti-10">1021</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15073" ><span +class="cmti-10">1022</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescSymNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15136" ><span +class="cmti-10">1023</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescSymNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15140" ><span +class="cmti-10">1024</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraDescSymNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15139" ><span +class="cmti-10">1025</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraGroupHeading</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15043" ><span +class="cmti-10">1026</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraHeaderFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15010" ><span +class="cmti-10">1027</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationAlign</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15016" ><span +class="cmti-10">1028</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15078" ><span +class="cmti-10">1029</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15082" ><span +class="cmti-10">1030</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15081" ><span +class="cmti-10">1031</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescSymNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15144" ><span +class="cmti-10">1032</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescSymNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15148" ><span +class="cmti-10">1033</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationDescSymNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15147" ><span +class="cmti-10">1034</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15038" ><span +class="cmti-10">1035</span></a>, <a +href="glossaries-extra-manual.html#dx1-15042" ><span +class="cmti-10">1036</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationSymDescNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15128" ><span +class="cmti-10">1037</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationSymDescNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15132" ><span +class="cmti-10">1038</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocationSymDescNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15131" ><span +class="cmti-10">1039</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraLocSetDescWidth</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15033" ><span +class="cmti-10">1040</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameAlign</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15012" ><span +class="cmti-10">1041</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15047" ><span +class="cmti-10">1042</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescLocationHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15061" ><span +class="cmti-10">1043</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescLocationTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15065" ><span +class="cmti-10">1044</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescLocationTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15064" ><span +class="cmti-10">1045</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15086" ><span +class="cmti-10">1046</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymLocationHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15094" ><span +class="cmti-10">1047</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymLocationTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15098" ><span +class="cmti-10">1048</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymLocationTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15097" ><span +class="cmti-10">1049</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15090" ><span +class="cmti-10">1050</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescSymTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15089" ><span +class="cmti-10">1051</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15050" ><span +class="cmti-10">1052</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameDescTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15049" ><span +class="cmti-10">1053</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15035" ><span +class="cmti-10">1054</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15103" ><span +class="cmti-10">1055</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescLocationHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15112" ><span +class="cmti-10">1056</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescLocationTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15116" ><span +class="cmti-10">1057</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescLocationTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15115" ><span +class="cmti-10">1058</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15107" ><span +class="cmti-10">1059</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraNameSymDescTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15106" ><span +class="cmti-10">1060</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSetDescWidth</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15023" ><span +class="cmti-10">1061</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSetWidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15024" ><span +class="cmti-10">1062</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSubDescFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15040" ><span +class="cmti-10">1063</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSubNameFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15039" ><span +class="cmti-10">1064</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSubSymbolFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15041" ><span +class="cmti-10">1065</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymbolAlign</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15014" ><span +class="cmti-10">1066</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymbolFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15037" ><span +class="cmti-10">1067</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymDescNameHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15120" ><span +class="cmti-10">1068</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymDescNameTabularFooter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15124" ><span +class="cmti-10">1069</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymDescNameTabularHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15123" ><span +class="cmti-10">1070</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymLocSetDescWidth</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15034" ><span +class="cmti-10">1071</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraSymSetDescWidth</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15032" ><span +class="cmti-10">1072</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraTabularVAlign</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15009" ><span +class="cmti-10">1073</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraUpdateWidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15025" ><span +class="cmti-10">1074</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongextraUpdateWidestChild</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15031" ><span +class="cmti-10">1075</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsLongExtraUseTabulartrue</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-15008" ><span +class="cmti-10">1076</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28050" ><span +class="cmti-10">1077</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongfootnotefont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27157" ><span +class="cmti-10">1078</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslonghyphenfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25067" ><span +class="cmti-10">1079</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongonlyfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25073" ><span +class="cmti-10">1080</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongpltok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28029" ><span +class="cmti-10">1081</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslongtok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28028" ><span +class="cmti-10">1082</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glslonguserfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25062" ><span +class="cmti-10">1083</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsnoidxdisplayloc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8079" ><span +class="cmti-10">1084</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsps</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12053" ><span +class="cmti-10">1085</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glspt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12054" ><span +class="cmti-10">1086</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsrenewcommand</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-39021" ><span +class="cmti-10">1087</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsseeitemformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5005" ><span +class="cmti-10">1088</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glssetattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30164" ><span +class="cmti-10">1089</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glssetcategoryattribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30161" ><span +class="cmti-10">1090</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glssetregularcategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30163" ><span +class="cmti-10">1091</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsshortpltok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28025" ><span +class="cmti-10">1092</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsshorttok</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28024" ><span +class="cmti-10">1093</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicAssignSubIndent</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16029" ><span +class="cmti-10">1094</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicAssignWidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16030" ><span +class="cmti-10">1095</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicCols</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16014" ><span +class="cmti-10">1096</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicColsEnv</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16013" ><span +class="cmti-10">1097</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicDesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16026" ><span +class="cmti-10">1098</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicGroupHeading</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16018" ><span +class="cmti-10">1099</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicInit</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16017" ><span +class="cmti-10">1100</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicItem</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16020" ><span +class="cmti-10">1101</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicLoc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16028" ><span +class="cmti-10">1102</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicMarker</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16022" ><span +class="cmti-10">1103</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicMidSkip</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16025" ><span +class="cmti-10">1104</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicParIndent</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16015" ><span +class="cmti-10">1105</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicPostSkip</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16027" ><span +class="cmti-10">1106</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicPreSkip</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16021" ><span +class="cmti-10">1107</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubIndent</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16016" ><span +class="cmti-10">1108</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubItem</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16031" ><span +class="cmti-10">1109</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubItemBox</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16034" ><span +class="cmti-10">1110</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubItemSep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16033" ><span +class="cmti-10">1111</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubLoc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16036" ><span +class="cmti-10">1112</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubNameFont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16032" ><span +class="cmti-10">1113</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicSubPreLocSep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16035" ><span +class="cmti-10">1114</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicTitle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16023" ><span +class="cmti-10">1115</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstopicTitleFont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-16024" ><span +class="cmti-10">1116</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreechilddesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20060" ><span +class="cmti-10">1117</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreeChildDescLoc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20063" ><span +class="cmti-10">1118</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreechildprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20049" ><span +class="cmti-10">1119</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreechildsymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20061" ><span +class="cmti-10">1120</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreedefaultnamefmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20040" ><span +class="cmti-10">1121</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreedesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20058" ><span +class="cmti-10">1122</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreeDescLoc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20062" ><span +class="cmti-10">1123</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreegroupskip</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20042" ><span +class="cmti-10">1124</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreenonamechilddesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20054" ><span +class="cmti-10">1125</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreenonamedesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20050" ><span +class="cmti-10">1126</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreenonamesymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20052" ><span +class="cmti-10">1127</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreePreHeader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20044" ><span +class="cmti-10">1128</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreeprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20048" ><span +class="cmti-10">1129</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glstreesymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20059" ><span +class="cmti-10">1130</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsupdatewidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20071" ><span +class="cmti-10">1131</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsuseabbrvfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-21027" ><span +class="cmti-10">1132</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsuselongfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-21028" ><span +class="cmti-10">1133</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsuserdescription</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27041" ><span +class="cmti-10">1134</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtr</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35014" ><span +class="cmti-10">1135</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtr</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35009" ><span +class="cmti-10">1136</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrabbreviationfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8029" ><span +class="cmti-10">1137</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrabbrvfootnote</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27158" ><span +class="cmti-10">1138</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrabbrvpluralsuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-11035" ><span +class="cmti-10">1139</span></a>, <a +href="glossaries-extra-manual.html#dx1-25033" ><span +class="cmti-10">1140</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtractivatenopost</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48014" ><span +class="cmti-10">1141</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtraddallcrossrefs</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7010" ><span +class="cmti-10">1142</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtraddlabelprefix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43014" ><span +class="cmti-10">1143</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtralias</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-49019" ><span +class="cmti-10">1144</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrAltTreeIndent</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20103" ><span +class="cmti-10">1145</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtralttreeInit</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20102" ><span +class="cmti-10">1146</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtralttreeSubSymbolDescLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20100" ><span +class="cmti-10">1147</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtralttreeSymbolDescLocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20099" ><span +class="cmti-10">1148</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrAutoAddOnFormat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6002" ><span +class="cmti-10">1149</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrautoindex</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34024" ><span +class="cmti-10">1150</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrautoindexassignsort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34020" ><span +class="cmti-10">1151</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrautoindexentry</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34019" ><span +class="cmti-10">1152</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrautoindexesc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34022" ><span +class="cmti-10">1153</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrBasicDigitrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42057" ><span +class="cmti-10">1154</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrBibTeXEntryAliases</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42005" ><span +class="cmti-10">1155</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexatendgroup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14034" ><span +class="cmti-10">1156</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexbetween</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14029" ><span +class="cmti-10">1157</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexbookmark</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14039" ><span +class="cmti-10">1158</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexcols</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14010" ><span +class="cmti-10">1159</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexcolspread</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14013" ><span +class="cmti-10">1160</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexfirstmark</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14045" ><span +class="cmti-10">1161</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexfirstmarkfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14047" ><span +class="cmti-10">1162</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexformatheader</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14041" ><span +class="cmti-10">1163</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexlastmark</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14046" ><span +class="cmti-10">1164</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexlastmarkfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14048" ><span +class="cmti-10">1165</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexlocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14025" ><span +class="cmti-10">1166</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexmarkentry</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14044" ><span +class="cmti-10">1167</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexmulticolsenv</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14018" ><span +class="cmti-10">1168</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14019" ><span +class="cmti-10">1169</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexparentchildsep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14027" ><span +class="cmti-10">1170</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexparentsubchildsep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14028" ><span +class="cmti-10">1171</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14021" ><span +class="cmti-10">1172</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubatendgroup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14033" ><span +class="cmti-10">1173</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubbetween</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14030" ><span +class="cmti-10">1174</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsublocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14026" ><span +class="cmti-10">1175</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14020" ><span +class="cmti-10">1176</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14024" ><span +class="cmti-10">1177</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubsubatendgroup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14032" ><span +class="cmti-10">1178</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrbookindexsubsubbetween</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-14031" ><span +class="cmti-10">1179</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrchecknohyperfirst</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30033" ><span +class="cmti-10">1180</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrclearlabelprefixes</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43016" ><span +class="cmti-10">1181</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcombiningdiacriticIIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42049" ><span +class="cmti-10">1182</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcombiningdiacriticIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42048" ><span +class="cmti-10">1183</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcombiningdiacriticIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42047" ><span +class="cmti-10">1184</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcombiningdiacriticIVrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42050" ><span +class="cmti-10">1185</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcombiningdiacriticrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42046" ><span +class="cmti-10">1186</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcontrolrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42042" ><span +class="cmti-10">1187</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcopytoglossary</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-45007" ><span +class="cmti-10">1188</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrcurrencyrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42054" ><span +class="cmti-10">1189</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrDefaultResourceOptions</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43004" ><span +class="cmti-10">1190</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdeffield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46018" ><span +class="cmti-10">1191</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdetoklocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44004" ><span +class="cmti-10">1192</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdigitrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42056" ><span +class="cmti-10">1193</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplayendloc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8082" ><span +class="cmti-10">1194</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplayendlochook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8084" ><span +class="cmti-10">1195</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplaylocnameref</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-41018" ><span +class="cmti-10">1196</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplaysingleloc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8080" ><span +class="cmti-10">1197</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplaystartloc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8081" ><span +class="cmti-10">1198</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdisplaysupploc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-40001" ><span +class="cmti-10">1199</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdoautoindexname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34016" ><span +class="cmti-10">1200</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrdowrglossaryhook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6029" ><span +class="cmti-10">1201</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtredeffield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46021" ><span +class="cmti-10">1202</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtremsuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25055" ><span +class="cmti-10">1203</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableEntryCounting</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32027" ><span +class="cmti-10">1204</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32030" ><span +class="cmti-10">1205</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableIndexFormatOverride</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34033" ><span +class="cmti-10">1206</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableInitialTagging</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-22001" ><span +class="cmti-10">1207</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableLinkCounting</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33002" ><span +class="cmti-10">1208</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnableOnTheFly</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35007" ><span +class="cmti-10">1209</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrEnablePreLocationTag</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-19010" ><span +class="cmti-10">1210</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrenablerecordcount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44032" ><span +class="cmti-10">1211</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrendfor</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46062" ><span +class="cmti-10">1212</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrentryfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46008" ><span +class="cmti-10">1213</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrExpandedFmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10018" ><span +class="cmti-10">1214</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfielddolistloop</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46052" ><span +class="cmti-10">1215</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldforlistloop</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46053" ><span +class="cmti-10">1216</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldifinlist</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46054" ><span +class="cmti-10">1217</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldlistadd</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46048" ><span +class="cmti-10">1218</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldlisteadd</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46050" ><span +class="cmti-10">1219</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldlistgadd</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46049" ><span +class="cmti-10">1220</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldlistxadd</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46051" ><span +class="cmti-10">1221</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldtitlecasecs</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30133" ><span +class="cmti-10">1222</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfieldxifinlist</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46055" ><span +class="cmti-10">1223</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46002" ><span +class="cmti-10">1224</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfmt*</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46004" ><span +class="cmti-10">1225</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrFmtDefaultOptions</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46003" ><span +class="cmti-10">1226</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfmtdisplay</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46005" ><span +class="cmti-10">1227</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfmtexternalnameref</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-41023" ><span +class="cmti-10">1228</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrFmtField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46001" ><span +class="cmti-10">1229</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfmtinternalnameref</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-41022" ><span +class="cmti-10">1230</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfootnotename</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27154" ><span +class="cmti-10">1231</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrforcsvfield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46057" ><span +class="cmti-10">1232</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrForeignText</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46064" ><span +class="cmti-10">1233</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrForeignTextField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46063" ><span +class="cmti-10">1234</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrFormatLocationList</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-19002" ><span +class="cmti-10">1235</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrForUnsetBufferedList</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10015" ><span +class="cmti-10">1236</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfractionrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42060" ><span +class="cmti-10">1237</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrfull</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23025" ><span +class="cmti-10">1238</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrfull</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23022" ><span +class="cmti-10">1239</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfull</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23014" ><span +class="cmti-10">1240</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrfullformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28058" ><span +class="cmti-10">1241</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfullformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28054" ><span +class="cmti-10">1242</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrfullpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23034" ><span +class="cmti-10">1243</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrfullpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23033" ><span +class="cmti-10">1244</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfullpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23032" ><span +class="cmti-10">1245</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrfullplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28066" ><span +class="cmti-10">1246</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfullplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28062" ><span +class="cmti-10">1247</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrfullsep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25078" ><span +class="cmti-10">1248</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinIIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42063" ><span +class="cmti-10">1249</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42062" ><span +class="cmti-10">1250</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42061" ><span +class="cmti-10">1251</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinIVrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42064" ><span +class="cmti-10">1252</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinVIIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42068" ><span +class="cmti-10">1253</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinVIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42067" ><span +class="cmti-10">1254</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinVIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42066" ><span +class="cmti-10">1255</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrGeneralLatinVrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42065" ><span +class="cmti-10">1256</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrgeneralpuncIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42055" ><span +class="cmti-10">1257</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrgeneralpuncIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42053" ><span +class="cmti-10">1258</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrgeneralpuncrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42052" ><span +class="cmti-10">1259</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrglossentry</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48004" ><span +class="cmti-10">1260</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrglossentryother</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48016" ><span +class="cmti-10">1261</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrgroupfield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47013" ><span +class="cmti-10">1262</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSXTRhiername</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7046" ><span +class="cmti-10">1263</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrhiername</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7045" ><span +class="cmti-10">1264</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrhiername</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7044" ><span +class="cmti-10">1265</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrhiername</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7043" ><span +class="cmti-10">1266</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrhiername</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7036" ><span +class="cmti-10">1267</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrhiernamesep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7042" ><span +class="cmti-10">1268</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrhyphenrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42051" ><span +class="cmti-10">1269</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrhyphensuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25069" ><span +class="cmti-10">1270</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtridentifyglslike</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43012" ><span +class="cmti-10">1271</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifcounttrigger</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-32021" ><span +class="cmti-10">1272</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifcustomdiscardperiod</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8035" ><span +class="cmti-10">1273</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldCmpNum</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46040" ><span +class="cmti-10">1274</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldEqNum</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46039" ><span +class="cmti-10">1275</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldEqStr</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46034" ><span +class="cmti-10">1276</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldEqXpStr</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46036" ><span +class="cmti-10">1277</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldNonZero</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46038" ><span +class="cmti-10">1278</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfFieldUndef</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46033" ><span +class="cmti-10">1279</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifhasfield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46029" ><span +class="cmti-10">1280</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifhasfield*</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46031" ><span +class="cmti-10">1281</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfHasNonZeroChildCount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42004" ><span +class="cmti-10">1282</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifinlabelprefixlist</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43017" ><span +class="cmti-10">1283</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifkeydefined</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46010" ><span +class="cmti-10">1284</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtriflabelinlist</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47040" ><span +class="cmti-10">1285</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfLinkCounterDef</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33008" ><span +class="cmti-10">1286</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifrecordtrigger</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44018" ><span +class="cmti-10">1287</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfUnusedOrUndefined</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10007" ><span +class="cmti-10">1288</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrifwasfirstuse</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8053" ><span +class="cmti-10">1289</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIfXpFieldEqXpStr</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46037" ><span +class="cmti-10">1290</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrinclinkcounter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33005" ><span +class="cmti-10">1291</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrindexaliased</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-49017" ><span +class="cmti-10">1292</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrIndexCounterLink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-39022" ><span +class="cmti-10">1293</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrindexseealso</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7067" ><span +class="cmti-10">1294</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrinitwrgloss</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6013" ><span +class="cmti-10">1295</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrinlinefullformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28073" ><span +class="cmti-10">1296</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrinlinefullformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28070" ><span +class="cmti-10">1297</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrinlinefullplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28080" ><span +class="cmti-10">1298</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrinlinefullplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28077" ><span +class="cmti-10">1299</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrinsertinsidetrue</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25076" ><span +class="cmti-10">1300</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinA</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42069" ><span +class="cmti-10">1301</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinAA</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42093" ><span +class="cmti-10">1302</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinAELigature</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42086" ><span +class="cmti-10">1303</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinE</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42070" ><span +class="cmti-10">1304</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinEszettSs</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42082" ><span +class="cmti-10">1305</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinEszettSz</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42083" ><span +class="cmti-10">1306</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinEth</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42084" ><span +class="cmti-10">1307</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinH</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42071" ><span +class="cmti-10">1308</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinI</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42073" ><span +class="cmti-10">1309</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinInsularG</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42091" ><span +class="cmti-10">1310</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinK</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42072" ><span +class="cmti-10">1311</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinL</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42074" ><span +class="cmti-10">1312</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinLslash</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42089" ><span +class="cmti-10">1313</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinM</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42075" ><span +class="cmti-10">1314</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinN</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42076" ><span +class="cmti-10">1315</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinO</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42077" ><span +class="cmti-10">1316</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinOELigature</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42087" ><span +class="cmti-10">1317</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinOslash</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42088" ><span +class="cmti-10">1318</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinP</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42078" ><span +class="cmti-10">1319</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinS</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42079" ><span +class="cmti-10">1320</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinSchwa</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42092" ><span +class="cmti-10">1321</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinT</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42080" ><span +class="cmti-10">1322</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinThorn</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42085" ><span +class="cmti-10">1323</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinWynn</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42090" ><span +class="cmti-10">1324</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrLatinX</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42081" ><span +class="cmti-10">1325</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46025" ><span +class="cmti-10">1326</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLetFieldToField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46027" ><span +class="cmti-10">1327</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLinkCounterName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33009" ><span +class="cmti-10">1328</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLinkCounterValue</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33006" ><span +class="cmti-10">1329</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLoadResources</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-36018" ><span +class="cmti-10">1330</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlocalsetgrouptitle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-17007" ><span +class="cmti-10">1331</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLocationField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47036" ><span +class="cmti-10">1332</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrLocationRecordCount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44008" ><span +class="cmti-10">1333</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlocrangefmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8083" ><span +class="cmti-10">1334</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23021" ><span +class="cmti-10">1335</span></a>, <a +href="glossaries-extra-manual.html#dx1-23024" ><span +class="cmti-10">1336</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23012" ><span +class="cmti-10">1337</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlonghyphen</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27232" ><span +class="cmti-10">1338</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlonghyphenshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27213" ><span +class="cmti-10">1339</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongnoshortdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-26062" ><span +class="cmti-10">1340</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongnoshortname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-26088" ><span +class="cmti-10">1341</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrlongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23031" ><span +class="cmti-10">1342</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrlongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23030" ><span +class="cmti-10">1343</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23029" ><span +class="cmti-10">1344</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongshortdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27061" ><span +class="cmti-10">1345</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongshortdescsort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27058" ><span +class="cmti-10">1346</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongshortname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27006" ><span +class="cmti-10">1347</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrlongshortuserdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27082" ><span +class="cmti-10">1348</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathGreekIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42101" ><span +class="cmti-10">1349</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathGreekIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42094" ><span +class="cmti-10">1350</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicGreekIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42116" ><span +class="cmti-10">1351</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicGreekIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42110" ><span +class="cmti-10">1352</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicLowerGreekIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42130" ><span +class="cmti-10">1353</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicLowerGreekIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42126" ><span +class="cmti-10">1354</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicNabla</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42134" ><span +class="cmti-10">1355</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicPartial</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42133" ><span +class="cmti-10">1356</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicUpperGreekIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42123" ><span +class="cmti-10">1357</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathItalicUpperGreekIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42119" ><span +class="cmti-10">1358</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathUpGreekIIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42107" ><span +class="cmti-10">1359</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrMathUpGreekIrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42102" ><span +class="cmti-10">1360</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrmultisupplocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-40004" ><span +class="cmti-10">1361</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnameloclink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-41025" ><span +class="cmti-10">1362</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnamereflink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-41019" ><span +class="cmti-10">1363</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewgls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43005" ><span +class="cmti-10">1364</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewGLSlike</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43007" ><span +class="cmti-10">1365</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewglslike</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43006" ><span +class="cmti-10">1366</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewnumber</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4211" ><span +class="cmti-10">1367</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewrgls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43008" ><span +class="cmti-10">1368</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewrGLSlike</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43010" ><span +class="cmti-10">1369</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewrglslike</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43009" ><span +class="cmti-10">1370</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnewsymbol</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4205" ><span +class="cmti-10">1371</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningAutoMake</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54020" ><span +class="cmti-10">1372</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningBuildInfo</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54019" ><span +class="cmti-10">1373</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningCheckFile</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54015" ><span +class="cmti-10">1374</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyMain</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54013" ><span +class="cmti-10">1375</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyNotMain</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54014" ><span +class="cmti-10">1376</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningEmptyStart</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54012" ><span +class="cmti-10">1377</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningHead</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54011" ><span +class="cmti-10">1378</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningMisMatch</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54016" ><span +class="cmti-10">1379</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningNoOut</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54017" ><span +class="cmti-10">1380</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrNoGlsWarningTail</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-54018" ><span +class="cmti-10">1381</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnonprintablerules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42044" ><span +class="cmti-10">1382</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrnopostpunc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5003" ><span +class="cmti-10">1383</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtronlydescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27027" ><span +class="cmti-10">1384</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtronlyname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27023" ><span +class="cmti-10">1385</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtronlysuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25075" ><span +class="cmti-10">1386</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrorglong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28034" ><span +class="cmti-10">1387</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrorgshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28033" ><span +class="cmti-10">1388</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrp</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12062" ><span +class="cmti-10">1389</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrp</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12061" ><span +class="cmti-10">1390</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrp</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12052" ><span +class="cmti-10">1391</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpageref</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-45004" ><span +class="cmti-10">1392</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrparen</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25026" ><span +class="cmti-10">1393</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35015" ><span +class="cmti-10">1394</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35013" ><span +class="cmti-10">1395</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostdescription</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18019" ><span +class="cmti-10">1396</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrposthyphenlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27245" ><span +class="cmti-10">1397</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrposthyphenshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27230" ><span +class="cmti-10">1398</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlink</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8033" ><span +class="cmti-10">1399</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlinkAddDescOnFirstUse</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8042" ><span +class="cmti-10">1400</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlinkAddSymbolDescOnFirstUse</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8048" ><span +class="cmti-10">1401</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlinkAddSymbolOnFirstUse</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8046" ><span +class="cmti-10">1402</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlinkendsentence</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8034" ><span +class="cmti-10">1403</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlinkhook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8031" ><span +class="cmti-10">1404</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostlongdescription</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5037" ><span +class="cmti-10">1405</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrpostnamehook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-18013" ><span +class="cmti-10">1406</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrPostNewAbbreviation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28019" ><span +class="cmti-10">1407</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrprelocation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20017" ><span +class="cmti-10">1408</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrprependlabelprefix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43015" ><span +class="cmti-10">1409</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrProvideBibTeXFields</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42008" ><span +class="cmti-10">1410</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrprovidecommand</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-39016" ><span +class="cmti-10">1411</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrprovidestoragekey</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46009" ><span +class="cmti-10">1412</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrRecordCount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44007" ><span +class="cmti-10">1413</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrRecordCounter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46071" ><span +class="cmti-10">1414</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrrecordtriggervalue</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44020" ><span +class="cmti-10">1415</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrregularfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8026" ><span +class="cmti-10">1416</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrresourcefile</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-36017" ><span +class="cmti-10">1417</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrresourceinit</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-43003" ><span +class="cmti-10">1418</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrrestorepostpunc</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5004" ><span +class="cmti-10">1419</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrRevertMarks</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29012" ><span +class="cmti-10">1420</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrRevertTocMarks</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-29013" ><span +class="cmti-10">1421</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrscsuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25040" ><span +class="cmti-10">1422</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrseealsolabels</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7061" ><span +class="cmti-10">1423</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrseelist</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7065" ><span +class="cmti-10">1424</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetActualChar</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34049" ><span +class="cmti-10">1425</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetaliasnoindex</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-49014" ><span +class="cmti-10">1426</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetAltModifier</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8077" ><span +class="cmti-10">1427</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetcategory</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30185" ><span +class="cmti-10">1428</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetcategoryforall</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30187" ><span +class="cmti-10">1429</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-8071" ><span +class="cmti-10">1430</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetEncapChar</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34052" ><span +class="cmti-10">1431</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetEscChar</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34051" ><span +class="cmti-10">1432</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46014" ><span +class="cmti-10">1433</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetfieldifexists</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46015" ><span +class="cmti-10">1434</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetglossarylabel</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5026" ><span +class="cmti-10">1435</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetgrouptitle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-17006" ><span +class="cmti-10">1436</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetLevelChar</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-34050" ><span +class="cmti-10">1437</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsetpopts</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-12057" ><span +class="cmti-10">1438</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrSetRecordCountAttribute</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44016" ><span +class="cmti-10">1439</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrSetWidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-39029" ><span +class="cmti-10">1440</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrSetWidestFallback</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-39034" ><span +class="cmti-10">1441</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23020" ><span +class="cmti-10">1442</span></a>, <a +href="glossaries-extra-manual.html#dx1-23023" ><span +class="cmti-10">1443</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshort</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23010" ><span +class="cmti-10">1444</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-26036" ><span +class="cmti-10">1445</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshorthyphenlong</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27238" ><span +class="cmti-10">1446</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortlongdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27126" ><span +class="cmti-10">1447</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortlongname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27099" ><span +class="cmti-10">1448</span></a>, <a +href="glossaries-extra-manual.html#dx1-27116" ><span +class="cmti-10">1449</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortlonguserdescname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27144" ><span +class="cmti-10">1450</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortnolongname</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-26005" ><span +class="cmti-10">1451</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23028" ><span +class="cmti-10">1452</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23027" ><span +class="cmti-10">1453</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrshortpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23026" ><span +class="cmti-10">1454</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsmsuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25050" ><span +class="cmti-10">1455</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrspacerules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42043" ><span +class="cmti-10">1456</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrStandaloneEntryName</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48010" ><span +class="cmti-10">1457</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrStandaloneEntryOther</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48017" ><span +class="cmti-10">1458</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrStandaloneGlossaryType</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-48005" ><span +class="cmti-10">1459</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrStartUnsetBuffering</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10013" ><span +class="cmti-10">1460</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrStopUnsetBuffering</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-10014" ><span +class="cmti-10">1461</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrSubScriptDigitrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42058" ><span +class="cmti-10">1462</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrsubsequentfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28083" ><span +class="cmti-10">1463</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsubsequentfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28082" ><span +class="cmti-10">1464</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrsubsequentplfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28085" ><span +class="cmti-10">1465</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrsubsequentplfmt</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28084" ><span +class="cmti-10">1466</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrSuperScriptDigitrules</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-42059" ><span +class="cmti-10">1467</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrtagfont</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-22003" ><span +class="cmti-10">1468</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrTheLinkCounter</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-33007" ><span +class="cmti-10">1469</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrTotalRecordCount</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44006" ><span +class="cmti-10">1470</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrunsrtdo</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47031" ><span +class="cmti-10">1471</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrUseAbbrStyleFmts</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28089" ><span +class="cmti-10">1472</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrUseAbbrStyleSetup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28040" ><span +class="cmti-10">1473</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GLSxtrusefield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46045" ><span +class="cmti-10">1474</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\Glsxtrusefield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46044" ><span +class="cmti-10">1475</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrusefield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46042" ><span +class="cmti-10">1476</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtruserfield</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27033" ><span +class="cmti-10">1477</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtruserparen</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-27036" ><span +class="cmti-10">1478</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrusersuffix</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25064" ><span +class="cmti-10">1479</span></a>, <a +href="glossaries-extra-manual.html#dx1-27046" ><span +class="cmti-10">1480</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrusesee</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7020" ><span +class="cmti-10">1481</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtruseseealso</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7058" ><span +class="cmti-10">1482</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtruseseeformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-7021" ><span +class="cmti-10">1483</span></a>, <a +href="glossaries-extra-manual.html#dx1-7059" ><span +class="cmti-10">1484</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrWarnDeprecatedAbbrStyle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-25103" ><span +class="cmti-10">1485</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\GlsXtrWarning</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-35011" ><span +class="cmti-10">1486</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrword</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30057" ><span +class="cmti-10">1487</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrwordsep</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-30056" ><span +class="cmti-10">1488</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\glsxtrwrglossmark</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4008" ><span +class="cmti-10">1489</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">H</span> +<span class="index-item"><span +class="cmss-10">hyperref </span>package  <a +href="glossaries-extra-manual.html#dx1-4089" >1490</a>, <a +href="glossaries-extra-manual.html#dx1-4123" >1491</a>, <a +href="glossaries-extra-manual.html#dx1-4135" >1492</a>, <a +href="glossaries-extra-manual.html#dx1-6048" >1493</a>, <a +href="glossaries-extra-manual.html#dx1-6053" >1494</a>, <a +href="glossaries-extra-manual.html#dx1-6055" >1495</a>, <a +href="glossaries-extra-manual.html#dx1-12029" >1496</a>, <a +href="glossaries-extra-manual.html#dx1-12060" >1497</a>, <a +href="glossaries-extra-manual.html#dx1-27150" >1498</a>, <a +href="glossaries-extra-manual.html#dx1-29002" >1499</a>, <a +href="glossaries-extra-manual.html#dx1-29003" >1500</a>, <a +href="glossaries-extra-manual.html#dx1-29004" >1501</a>, <a +href="glossaries-extra-manual.html#dx1-29008" >1502</a>, <a +href="glossaries-extra-manual.html#dx1-29015" >1503</a>, <a +href="glossaries-extra-manual.html#dx1-32032" >1504</a>, <a +href="glossaries-extra-manual.html#dx1-34034" >1505</a>, <a +href="glossaries-extra-manual.html#dx1-39024" >1506</a>, <a +href="glossaries-extra-manual.html#dx1-41003" >1507</a>, <a +href="glossaries-extra-manual.html#dx1-45008" >1508</a>, <a +href="glossaries-extra-manual.html#dx1-46007" >1509</a>, <a +href="glossaries-extra-manual.html#dx1-47041" >1510</a>, <a +href="glossaries-extra-manual.html#dx1-48003" >1511</a>, <a +href="glossaries-extra-manual.html#dx1-49005" >1512</a>, <a +href="glossaries-extra-manual.html#dx1-53006" >1513</a>, <a +href="glossaries-extra-manual.html#dx1-53024" >1514</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">I</span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\ifglsxtrinitwrglossbefore</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-6014" ><span +class="cmti-10">1515</span></a> <br /></span> +<span class="index-item"><span +class="cmss-10">inputenc </span>package  <a +href="glossaries-extra-manual.html#dx1-38012" >1516</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">L</span> +<span class="index-item">link-text  <a +href="glossaries-extra-manual.html#dx1-8001" >1517</a>, <a +href="glossaries-extra-manual.html#dx1-8003" >1518</a>, <a +href="glossaries-extra-manual.html#dx1-8030" >1519</a>, <a +href="glossaries-extra-manual.html#dx1-8041" >1520</a>, <a +href="glossaries-extra-manual.html#dx1-8051" >1521</a>, <a +href="glossaries-extra-manual.html#dx1-8055" >1522</a>, <a +href="glossaries-extra-manual.html#dx1-8059" >1523</a>, <a +href="glossaries-extra-manual.html#dx1-8064" >1524</a>, <a +href="glossaries-extra-manual.html#dx1-8068" >1525</a>, <a +href="glossaries-extra-manual.html#dx1-12036" >1526</a>, <a +href="glossaries-extra-manual.html#dx1-12037" >1527</a>, <a +href="glossaries-extra-manual.html#dx1-25079" >1528</a>, <a +href="glossaries-extra-manual.html#dx1-25093" >1529</a>, <a +href="glossaries-extra-manual.html#dx1-25096" >1530</a>, <a +href="glossaries-extra-manual.html#dx1-27177" >1531</a>, <a +href="glossaries-extra-manual.html#dx1-30043" >1532</a>, <a +href="glossaries-extra-manual.html#dx1-30047" >1533</a>, <a +href="glossaries-extra-manual.html#dx1-33001" >1534</a>, <a +href="glossaries-extra-manual.html#dx1-53002" >1535</a>, <a +href="glossaries-extra-manual.html#dx1-55021" ><span +class="cmbx-10">1536</span></a> <br /></span> +<span class="index-item">location list  <a +href="glossaries-extra-manual.html#dx1-8078" >1537</a>, <a +href="glossaries-extra-manual.html#dx1-49010" >1538</a>, <a +href="glossaries-extra-manual.html#dx1-49012" >1539</a>, <a +href="glossaries-extra-manual.html#dx1-53005" >1540</a>, <a +href="glossaries-extra-manual.html#dx1-55023" ><span +class="cmbx-10">1541</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\longnewglossaryentry</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5035" ><span +class="cmti-10">1542</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">M</span> +<span class="index-item"><span +class="cmtt-10">makeglossaries</span>  <a +href="glossaries-extra-manual.html#dx1-3027" >1543</a>, <a +href="glossaries-extra-manual.html#dx1-3029" >1544</a>, <a +href="glossaries-extra-manual.html#dx1-3030" >1545</a>, <a +href="glossaries-extra-manual.html#dx1-5057" >1546</a>, <a +href="glossaries-extra-manual.html#dx1-55026" ><span +class="cmbx-10">1547</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\makeglossaries</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5052" ><span +class="cmti-10">1548</span></a> <br /></span> + + + +<span class="index-item"><span +class="cmtt-10">makeglossaries-lite</span>  <a +href="glossaries-extra-manual.html#dx1-5058" >1549</a>, <a +href="glossaries-extra-manual.html#dx1-55030" ><span +class="cmbx-10">1550</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">makeglossaries-lite</span>  <a +href="glossaries-extra-manual.html#dx1-5059" >1551</a>, <a +href="glossaries-extra-manual.html#dx1-55029" ><span +class="cmbx-10">1552</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">makeindex</span>  <a +href="glossaries-extra-manual.html#dx1-3022" >1553</a>, <a +href="glossaries-extra-manual.html#dx1-3028" >1554</a>, <a +href="glossaries-extra-manual.html#dx1-3031" >1555</a>, <a +href="glossaries-extra-manual.html#dx1-4011" >1556</a>, <a +href="glossaries-extra-manual.html#dx1-4097" >1557</a>, <a +href="glossaries-extra-manual.html#dx1-4100" >1558</a>, <a +href="glossaries-extra-manual.html#dx1-4124" >1559</a>, <a +href="glossaries-extra-manual.html#dx1-4141" >1560</a>, <a +href="glossaries-extra-manual.html#dx1-4145" >1561</a>, <a +href="glossaries-extra-manual.html#dx1-4171" >1562</a>, <a +href="glossaries-extra-manual.html#dx1-4180" >1563</a>, <a +href="glossaries-extra-manual.html#dx1-34003" >1564</a>, <a +href="glossaries-extra-manual.html#dx1-34008" >1565</a>, <a +href="glossaries-extra-manual.html#dx1-34044" >1566</a>, <a +href="glossaries-extra-manual.html#dx1-39006" >1567</a>, <a +href="glossaries-extra-manual.html#dx1-41005" >1568</a>, <a +href="glossaries-extra-manual.html#dx1-55003" >1569</a>, <a +href="glossaries-extra-manual.html#dx1-55028" >1570</a>, <a +href="glossaries-extra-manual.html#dx1-55032" >1571</a>, <a +href="glossaries-extra-manual.html#dx1-55033" ><span +class="cmbx-10">1572</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">makeindex</span>  <a +href="glossaries-extra-manual.html#dx1-6044" >1573</a>, <a +href="glossaries-extra-manual.html#dx1-6045" >1574</a>, <a +href="glossaries-extra-manual.html#dx1-6051" >1575</a>, <a +href="glossaries-extra-manual.html#dx1-7026" >1576</a>, <a +href="glossaries-extra-manual.html#dx1-34021" >1577</a> <br /></span> +<span class="index-item"><span +class="cmss-10">memoir </span>class  <a +href="glossaries-extra-manual.html#dx1-3021" >1578</a> <br /></span> +<span class="index-item"><span +class="cmss-10">mfirstuc </span>package  <a +href="glossaries-extra-manual.html#dx1-4" >1579</a>, <a +href="glossaries-extra-manual.html#dx1-30132" >1580</a>, <a +href="glossaries-extra-manual.html#dx1-30134" >1581</a> <br /></span> +<span class="index-item"><span +class="cmss-10">multicols </span>package  <a +href="glossaries-extra-manual.html#dx1-16002" >1582</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">N</span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\newabbreviation</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-21002" ><span +class="cmti-10">1583</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\newabbreviationstyle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-28001" ><span +class="cmti-10">1584</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\newacronym</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-21011" ><span +class="cmti-10">1585</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">\newglossaryentry </span>options<br /></span> +<span class="index-subitem">    <span +class="cmss-10">access</span>  <a +href="glossaries-extra-manual.html#dx1-30088" >1586</a>, <a +href="glossaries-extra-manual.html#dx1-30092" >1587</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">alias</span>  <a +href="glossaries-extra-manual.html#dx1-5028" >1588</a>, <a +href="glossaries-extra-manual.html#dx1-5032" >1589</a>, <a +href="glossaries-extra-manual.html#dx1-49001" >1590</a>, <a +href="glossaries-extra-manual.html#dx1-49004" >1591</a>, <a +href="glossaries-extra-manual.html#dx1-49018" >1592</a>, <a +href="glossaries-extra-manual.html#dx1-53010" >1593</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">category</span>  <a +href="glossaries-extra-manual.html#dx1-5027" >1594</a>, <a +href="glossaries-extra-manual.html#dx1-6021" >1595</a>, <a +href="glossaries-extra-manual.html#dx1-21003" >1596</a>, <a +href="glossaries-extra-manual.html#dx1-21010" >1597</a>, <a +href="glossaries-extra-manual.html#dx1-30003" >1598</a>, <a +href="glossaries-extra-manual.html#dx1-30005" >1599</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">counter</span>  <a +href="glossaries-extra-manual.html#dx1-6035" >1600</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">description</span>  <a +href="glossaries-extra-manual.html#dx1-5002" >1601</a>, <a +href="glossaries-extra-manual.html#dx1-25098" >1602</a>, <a +href="glossaries-extra-manual.html#dx1-26006" >1603</a>, <a +href="glossaries-extra-manual.html#dx1-26037" >1604</a>, <a +href="glossaries-extra-manual.html#dx1-26039" >1605</a>, <a +href="glossaries-extra-manual.html#dx1-26063" >1606</a>, <a +href="glossaries-extra-manual.html#dx1-26089" >1607</a>, <a +href="glossaries-extra-manual.html#dx1-27007" >1608</a>, <a +href="glossaries-extra-manual.html#dx1-27040" >1609</a>, <a +href="glossaries-extra-manual.html#dx1-27059" >1610</a>, <a +href="glossaries-extra-manual.html#dx1-27083" >1611</a>, <a +href="glossaries-extra-manual.html#dx1-27096" >1612</a>, <a +href="glossaries-extra-manual.html#dx1-27117" >1613</a>, <a +href="glossaries-extra-manual.html#dx1-27124" >1614</a>, <a +href="glossaries-extra-manual.html#dx1-27145" >1615</a>, <a +href="glossaries-extra-manual.html#dx1-27152" >1616</a>, <a +href="glossaries-extra-manual.html#dx1-27181" >1617</a>, <a +href="glossaries-extra-manual.html#dx1-27202" >1618</a>, <a +href="glossaries-extra-manual.html#dx1-27209" >1619</a>, <a +href="glossaries-extra-manual.html#dx1-28013" >1620</a>, <a +href="glossaries-extra-manual.html#dx1-38009" >1621</a>, <a +href="glossaries-extra-manual.html#dx1-52038" >1622</a>, <a +href="glossaries-extra-manual.html#dx1-52040" >1623</a>, <a +href="glossaries-extra-manual.html#dx1-5046" >1624</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">descriptionplural</span>  <a +href="glossaries-extra-manual.html#dx1-5036" >1625</a>, <a +href="glossaries-extra-manual.html#dx1-5039" >1626</a>, <a +href="glossaries-extra-manual.html#dx1-5041" >1627</a>, <a +href="glossaries-extra-manual.html#dx1-52042" >1628</a>, <a +href="glossaries-extra-manual.html#dx1-52044" >1629</a>, <a +href="glossaries-extra-manual.html#dx1-5043" >1630</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">first</span>  <a +href="glossaries-extra-manual.html#dx1-8013" >1631</a>, <a +href="glossaries-extra-manual.html#dx1-11014" >1632</a>, <a +href="glossaries-extra-manual.html#dx1-11015" >1633</a>, <a +href="glossaries-extra-manual.html#dx1-12004" >1634</a>, <a +href="glossaries-extra-manual.html#dx1-25008" >1635</a>, <a +href="glossaries-extra-manual.html#dx1-25015" >1636</a>, <a +href="glossaries-extra-manual.html#dx1-28009" >1637</a>, <a +href="glossaries-extra-manual.html#dx1-28015" >1638</a>, <a +href="glossaries-extra-manual.html#dx1-29042" >1639</a>, <a +href="glossaries-extra-manual.html#dx1-34026" >1640</a>, <a +href="glossaries-extra-manual.html#dx1-52022" >1641</a>, <a +href="glossaries-extra-manual.html#dx1-52024" >1642</a>, <a +href="glossaries-extra-manual.html#dx1-55017" >1643</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">firstaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30098" >1644</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">firstplural</span>  <a +href="glossaries-extra-manual.html#dx1-8014" >1645</a>, <a +href="glossaries-extra-manual.html#dx1-11009" >1646</a>, <a +href="glossaries-extra-manual.html#dx1-11013" >1647</a>, <a +href="glossaries-extra-manual.html#dx1-11017" >1648</a>, <a +href="glossaries-extra-manual.html#dx1-11021" >1649</a>, <a +href="glossaries-extra-manual.html#dx1-28010" >1650</a>, <a +href="glossaries-extra-manual.html#dx1-28016" >1651</a>, <a +href="glossaries-extra-manual.html#dx1-52026" >1652</a>, <a +href="glossaries-extra-manual.html#dx1-52028" >1653</a>, <a +href="glossaries-extra-manual.html#dx1-55018" >1654</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">group</span>  <a +href="glossaries-extra-manual.html#dx1-38011" >1655</a>, <a +href="glossaries-extra-manual.html#dx1-47008" >1656</a>, <a +href="glossaries-extra-manual.html#dx1-47010" >1657</a>, <a +href="glossaries-extra-manual.html#dx1-47012" >1658</a>, <a +href="glossaries-extra-manual.html#dx1-47014" >1659</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">location</span>  <a +href="glossaries-extra-manual.html#dx1-14023" >1660</a>, <a +href="glossaries-extra-manual.html#dx1-41015" >1661</a>, <a +href="glossaries-extra-manual.html#dx1-47032" >1662</a>, <a +href="glossaries-extra-manual.html#dx1-47035" >1663</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">loclist</span>  <a +href="glossaries-extra-manual.html#dx1-41014" >1664</a>, <a +href="glossaries-extra-manual.html#dx1-47033" >1665</a>, <a +href="glossaries-extra-manual.html#dx1-47037" >1666</a>, <a +href="glossaries-extra-manual.html#dx1-47039" >1667</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">long</span>  <a +href="glossaries-extra-manual.html#dx1-11026" >1668</a>, <a +href="glossaries-extra-manual.html#dx1-11027" >1669</a>, <a +href="glossaries-extra-manual.html#dx1-21024" >1670</a>, <a +href="glossaries-extra-manual.html#dx1-25012" >1671</a>, <a +href="glossaries-extra-manual.html#dx1-30045" >1672</a>, <a +href="glossaries-extra-manual.html#dx1-34028" >1673</a>, <a +href="glossaries-extra-manual.html#dx1-52054" >1674</a>, <a +href="glossaries-extra-manual.html#dx1-52056" >1675</a>, <a +href="glossaries-extra-manual.html#dx1-5044" >1676</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">longplural</span>  <a +href="glossaries-extra-manual.html#dx1-11010" >1677</a>, <a +href="glossaries-extra-manual.html#dx1-11025" >1678</a>, <a +href="glossaries-extra-manual.html#dx1-21025" >1679</a>, <a +href="glossaries-extra-manual.html#dx1-28030" >1680</a>, <a +href="glossaries-extra-manual.html#dx1-52058" >1681</a>, <a +href="glossaries-extra-manual.html#dx1-52060" >1682</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">name</span>  <a +href="glossaries-extra-manual.html#dx1-5007" >1683</a>, <a +href="glossaries-extra-manual.html#dx1-5008" >1684</a>, <a +href="glossaries-extra-manual.html#dx1-5010" >1685</a>, <a +href="glossaries-extra-manual.html#dx1-7034" >1686</a>, <a +href="glossaries-extra-manual.html#dx1-11023" >1687</a>, <a +href="glossaries-extra-manual.html#dx1-12002" >1688</a>, <a +href="glossaries-extra-manual.html#dx1-18006" >1689</a>, <a +href="glossaries-extra-manual.html#dx1-18010" >1690</a>, <a +href="glossaries-extra-manual.html#dx1-26004" >1691</a>, <a +href="glossaries-extra-manual.html#dx1-26035" >1692</a>, <a +href="glossaries-extra-manual.html#dx1-26061" >1693</a>, <a +href="glossaries-extra-manual.html#dx1-26087" >1694</a>, <a +href="glossaries-extra-manual.html#dx1-27005" >1695</a>, <a +href="glossaries-extra-manual.html#dx1-27022" >1696</a>, <a +href="glossaries-extra-manual.html#dx1-27026" >1697</a>, <a +href="glossaries-extra-manual.html#dx1-27042" >1698</a>, <a +href="glossaries-extra-manual.html#dx1-27056" >1699</a>, <a +href="glossaries-extra-manual.html#dx1-27060" >1700</a>, <a +href="glossaries-extra-manual.html#dx1-27081" >1701</a>, <a +href="glossaries-extra-manual.html#dx1-27094" >1702</a>, <a +href="glossaries-extra-manual.html#dx1-27098" >1703</a>, <a +href="glossaries-extra-manual.html#dx1-27115" >1704</a>, <a +href="glossaries-extra-manual.html#dx1-27123" >1705</a>, <a +href="glossaries-extra-manual.html#dx1-27125" >1706</a>, <a +href="glossaries-extra-manual.html#dx1-27143" >1707</a>, <a +href="glossaries-extra-manual.html#dx1-27151" >1708</a>, <a +href="glossaries-extra-manual.html#dx1-27153" >1709</a>, <a +href="glossaries-extra-manual.html#dx1-27180" >1710</a>, <a +href="glossaries-extra-manual.html#dx1-27199" >1711</a>, <a +href="glossaries-extra-manual.html#dx1-27203" >1712</a>, <a +href="glossaries-extra-manual.html#dx1-27210" >1713</a>, <a +href="glossaries-extra-manual.html#dx1-27216" >1714</a>, <a +href="glossaries-extra-manual.html#dx1-27222" >1715</a>, <a +href="glossaries-extra-manual.html#dx1-27227" >1716</a>, <a +href="glossaries-extra-manual.html#dx1-27235" >1717</a>, <a +href="glossaries-extra-manual.html#dx1-27239" >1718</a>, <a +href="glossaries-extra-manual.html#dx1-27242" >1719</a>, <a +href="glossaries-extra-manual.html#dx1-27247" >1720</a>, <a +href="glossaries-extra-manual.html#dx1-27250" >1721</a>, <a +href="glossaries-extra-manual.html#dx1-28007" >1722</a>, <a +href="glossaries-extra-manual.html#dx1-29039" >1723</a>, <a +href="glossaries-extra-manual.html#dx1-30089" >1724</a>, <a +href="glossaries-extra-manual.html#dx1-34014" >1725</a>, <a +href="glossaries-extra-manual.html#dx1-34027" >1726</a>, <a +href="glossaries-extra-manual.html#dx1-35010" >1727</a>, <a +href="glossaries-extra-manual.html#dx1-47009" >1728</a>, <a +href="glossaries-extra-manual.html#dx1-48015" >1729</a>, <a +href="glossaries-extra-manual.html#dx1-52006" >1730</a>, <a +href="glossaries-extra-manual.html#dx1-53008" >1731</a>, <a +href="glossaries-extra-manual.html#dx1-53016" >1732</a>, <a +href="glossaries-extra-manual.html#dx1-53017" >1733</a>, <a +href="glossaries-extra-manual.html#dx1-53018" >1734</a>, <a +href="glossaries-extra-manual.html#dx1-53020" >1735</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nameshortaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30094" >1736</a>, <a +href="glossaries-extra-manual.html#dx1-30097" >1737</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">parent</span>  <a +href="glossaries-extra-manual.html#dx1-20084" >1738</a>, <a +href="glossaries-extra-manual.html#dx1-34025" >1739</a>, <a +href="glossaries-extra-manual.html#dx1-46013" >1740</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">plural</span>  <a +href="glossaries-extra-manual.html#dx1-8017" >1741</a>, <a +href="glossaries-extra-manual.html#dx1-11002" >1742</a>, <a +href="glossaries-extra-manual.html#dx1-11004" >1743</a>, <a +href="glossaries-extra-manual.html#dx1-11007" >1744</a>, <a +href="glossaries-extra-manual.html#dx1-11008" >1745</a>, <a +href="glossaries-extra-manual.html#dx1-11016" >1746</a>, <a +href="glossaries-extra-manual.html#dx1-11018" >1747</a>, <a +href="glossaries-extra-manual.html#dx1-11019" >1748</a>, <a +href="glossaries-extra-manual.html#dx1-11020" >1749</a>, <a +href="glossaries-extra-manual.html#dx1-28012" >1750</a>, <a +href="glossaries-extra-manual.html#dx1-46012" >1751</a>, <a +href="glossaries-extra-manual.html#dx1-52018" >1752</a>, <a +href="glossaries-extra-manual.html#dx1-52020" >1753</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">prefix</span>  <a +href="glossaries-extra-manual.html#dx1-5023" >1754</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">see</span>  <a +href="glossaries-extra-manual.html#dx1-4054" >1755</a>, <a +href="glossaries-extra-manual.html#dx1-4057" >1756</a>, <a +href="glossaries-extra-manual.html#dx1-4064" >1757</a>, <a +href="glossaries-extra-manual.html#dx1-4069" >1758</a>, <a +href="glossaries-extra-manual.html#dx1-4080" >1759</a>, <a +href="glossaries-extra-manual.html#dx1-4082" >1760</a>, <a +href="glossaries-extra-manual.html#dx1-4084" >1761</a>, <a +href="glossaries-extra-manual.html#dx1-5006" >1762</a>, <a +href="glossaries-extra-manual.html#dx1-5030" >1763</a>, <a +href="glossaries-extra-manual.html#dx1-5031" >1764</a>, <a +href="glossaries-extra-manual.html#dx1-7001" >1765</a>, <a +href="glossaries-extra-manual.html#dx1-7002" >1766</a>, <a +href="glossaries-extra-manual.html#dx1-7003" >1767</a>, <a +href="glossaries-extra-manual.html#dx1-7005" >1768</a>, <a +href="glossaries-extra-manual.html#dx1-7012" >1769</a>, <a +href="glossaries-extra-manual.html#dx1-7015" >1770</a>, <a +href="glossaries-extra-manual.html#dx1-7017" >1771</a>, <a +href="glossaries-extra-manual.html#dx1-7019" >1772</a>, <a +href="glossaries-extra-manual.html#dx1-7022" >1773</a>, <a +href="glossaries-extra-manual.html#dx1-7024" >1774</a>, <a +href="glossaries-extra-manual.html#dx1-7051" >1775</a>, <a +href="glossaries-extra-manual.html#dx1-7055" >1776</a>, <a +href="glossaries-extra-manual.html#dx1-7056" >1777</a>, <a +href="glossaries-extra-manual.html#dx1-7063" >1778</a>, <a +href="glossaries-extra-manual.html#dx1-38008" >1779</a>, <a +href="glossaries-extra-manual.html#dx1-47017" >1780</a>, <a +href="glossaries-extra-manual.html#dx1-49003" >1781</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">seealso</span>  <a +href="glossaries-extra-manual.html#dx1-4055" >1782</a>, <a +href="glossaries-extra-manual.html#dx1-4058" >1783</a>, <a +href="glossaries-extra-manual.html#dx1-4065" >1784</a>, <a +href="glossaries-extra-manual.html#dx1-5029" >1785</a>, <a +href="glossaries-extra-manual.html#dx1-5033" >1786</a>, <a +href="glossaries-extra-manual.html#dx1-7054" >1787</a>, <a +href="glossaries-extra-manual.html#dx1-7057" >1788</a>, <a +href="glossaries-extra-manual.html#dx1-7060" >1789</a>, <a +href="glossaries-extra-manual.html#dx1-7062" >1790</a>, <a +href="glossaries-extra-manual.html#dx1-7066" >1791</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">short</span>  <a +href="glossaries-extra-manual.html#dx1-7041" >1792</a>, <a +href="glossaries-extra-manual.html#dx1-8011" >1793</a>, <a +href="glossaries-extra-manual.html#dx1-8018" >1794</a>, <a +href="glossaries-extra-manual.html#dx1-8021" >1795</a>, <a +href="glossaries-extra-manual.html#dx1-11031" >1796</a>, <a +href="glossaries-extra-manual.html#dx1-11033" >1797</a>, <a +href="glossaries-extra-manual.html#dx1-11039" >1798</a>, <a +href="glossaries-extra-manual.html#dx1-21022" >1799</a>, <a +href="glossaries-extra-manual.html#dx1-25011" >1800</a>, <a +href="glossaries-extra-manual.html#dx1-25018" >1801</a>, <a +href="glossaries-extra-manual.html#dx1-30044" >1802</a>, <a +href="glossaries-extra-manual.html#dx1-30077" >1803</a>, <a +href="glossaries-extra-manual.html#dx1-30085" >1804</a>, <a +href="glossaries-extra-manual.html#dx1-52046" >1805</a>, <a +href="glossaries-extra-manual.html#dx1-52048" >1806</a>, <a +href="glossaries-extra-manual.html#dx1-5045" >1807</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">shortaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30084" >1808</a>, <a +href="glossaries-extra-manual.html#dx1-30086" >1809</a>, <a +href="glossaries-extra-manual.html#dx1-30090" >1810</a>, <a +href="glossaries-extra-manual.html#dx1-30091" >1811</a>, <a +href="glossaries-extra-manual.html#dx1-30102" >1812</a>, <a +href="glossaries-extra-manual.html#dx1-30105" >1813</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">shortplural</span>  <a +href="glossaries-extra-manual.html#dx1-11011" >1814</a>, <a +href="glossaries-extra-manual.html#dx1-11028" >1815</a>, <a +href="glossaries-extra-manual.html#dx1-11032" >1816</a>, <a +href="glossaries-extra-manual.html#dx1-11038" >1817</a>, <a +href="glossaries-extra-manual.html#dx1-21006" >1818</a>, <a +href="glossaries-extra-manual.html#dx1-21023" >1819</a>, <a +href="glossaries-extra-manual.html#dx1-25042" >1820</a>, <a +href="glossaries-extra-manual.html#dx1-28026" >1821</a>, <a +href="glossaries-extra-manual.html#dx1-28042" >1822</a>, <a +href="glossaries-extra-manual.html#dx1-30063" >1823</a>, <a +href="glossaries-extra-manual.html#dx1-30069" >1824</a>, <a +href="glossaries-extra-manual.html#dx1-30073" >1825</a>, <a +href="glossaries-extra-manual.html#dx1-30078" >1826</a>, <a +href="glossaries-extra-manual.html#dx1-52050" >1827</a>, <a +href="glossaries-extra-manual.html#dx1-52052" >1828</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">shortpluralaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30101" >1829</a>, <a +href="glossaries-extra-manual.html#dx1-30103" >1830</a>, <a +href="glossaries-extra-manual.html#dx1-30107" >1831</a>, <a +href="glossaries-extra-manual.html#dx1-30112" >1832</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">sort</span>  <a +href="glossaries-extra-manual.html#dx1-4173" >1833</a>, <a +href="glossaries-extra-manual.html#dx1-4206" >1834</a>, <a +href="glossaries-extra-manual.html#dx1-12016" >1835</a>, <a +href="glossaries-extra-manual.html#dx1-12039" >1836</a>, <a +href="glossaries-extra-manual.html#dx1-26060" >1837</a>, <a +href="glossaries-extra-manual.html#dx1-26086" >1838</a>, <a +href="glossaries-extra-manual.html#dx1-27004" >1839</a>, <a +href="glossaries-extra-manual.html#dx1-27057" >1840</a>, <a +href="glossaries-extra-manual.html#dx1-27084" >1841</a>, <a +href="glossaries-extra-manual.html#dx1-27095" >1842</a>, <a +href="glossaries-extra-manual.html#dx1-28008" >1843</a>, <a +href="glossaries-extra-manual.html#dx1-28035" >1844</a>, <a +href="glossaries-extra-manual.html#dx1-30060" >1845</a>, <a +href="glossaries-extra-manual.html#dx1-30065" >1846</a>, <a +href="glossaries-extra-manual.html#dx1-34006" >1847</a>, <a +href="glossaries-extra-manual.html#dx1-34018" >1848</a>, <a +href="glossaries-extra-manual.html#dx1-34023" >1849</a>, <a +href="glossaries-extra-manual.html#dx1-34029" >1850</a>, <a +href="glossaries-extra-manual.html#dx1-36015" >1851</a>, <a +href="glossaries-extra-manual.html#dx1-48002" >1852</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">symbol</span>  <a +href="glossaries-extra-manual.html#dx1-46032" >1853</a>, <a +href="glossaries-extra-manual.html#dx1-52030" >1854</a>, <a +href="glossaries-extra-manual.html#dx1-52032" >1855</a>, <a +href="glossaries-extra-manual.html#dx1-5047" >1856</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">symbolplural</span>  <a +href="glossaries-extra-manual.html#dx1-52034" >1857</a>, <a +href="glossaries-extra-manual.html#dx1-52036" >1858</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">text</span>  <a +href="glossaries-extra-manual.html#dx1-5009" >1859</a>, <a +href="glossaries-extra-manual.html#dx1-7033" >1860</a>, <a +href="glossaries-extra-manual.html#dx1-8016" >1861</a>, <a +href="glossaries-extra-manual.html#dx1-11005" >1862</a>, <a +href="glossaries-extra-manual.html#dx1-11022" >1863</a>, <a +href="glossaries-extra-manual.html#dx1-11024" >1864</a>, <a +href="glossaries-extra-manual.html#dx1-12003" >1865</a>, <a +href="glossaries-extra-manual.html#dx1-25010" >1866</a>, <a +href="glossaries-extra-manual.html#dx1-25016" >1867</a>, <a +href="glossaries-extra-manual.html#dx1-28011" >1868</a>, <a +href="glossaries-extra-manual.html#dx1-29034" >1869</a>, <a +href="glossaries-extra-manual.html#dx1-46011" >1870</a>, <a +href="glossaries-extra-manual.html#dx1-52014" >1871</a>, <a +href="glossaries-extra-manual.html#dx1-52016" >1872</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">textaccess</span>  <a +href="glossaries-extra-manual.html#dx1-30095" >1873</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">type</span>  <a +href="glossaries-extra-manual.html#dx1-13046" >1874</a>, <a +href="glossaries-extra-manual.html#dx1-30006" >1875</a>, <a +href="glossaries-extra-manual.html#dx1-42010" >1876</a>, <a +href="glossaries-extra-manual.html#dx1-48006" >1877</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">user1</span>  <a +href="glossaries-extra-manual.html#dx1-25080" >1878</a>, <a +href="glossaries-extra-manual.html#dx1-25085" >1879</a>, <a +href="glossaries-extra-manual.html#dx1-30046" >1880</a> <br /></span> +<span class="index-item">number list  <a +href="glossaries-extra-manual.html#dx1-4027" >1881</a>, <a +href="glossaries-extra-manual.html#dx1-4029" >1882</a>, <a +href="glossaries-extra-manual.html#dx1-4030" >1883</a>, <a +href="glossaries-extra-manual.html#dx1-4032" >1884</a>, <a +href="glossaries-extra-manual.html#dx1-4126" >1885</a>, <a +href="glossaries-extra-manual.html#dx1-4136" >1886</a>, <a +href="glossaries-extra-manual.html#dx1-4140" >1887</a>, <a +href="glossaries-extra-manual.html#dx1-4150" >1888</a>, <a +href="glossaries-extra-manual.html#dx1-4151" >1889</a>, <a +href="glossaries-extra-manual.html#dx1-7023" >1890</a>, <a +href="glossaries-extra-manual.html#dx1-7047" >1891</a>, <a +href="glossaries-extra-manual.html#dx1-7050" >1892</a>, <a +href="glossaries-extra-manual.html#dx1-7052" >1893</a>, <a +href="glossaries-extra-manual.html#dx1-7053" >1894</a>, <a +href="glossaries-extra-manual.html#dx1-8072" >1895</a>, <a +href="glossaries-extra-manual.html#dx1-19001" >1896</a>, <a +href="glossaries-extra-manual.html#dx1-19004" >1897</a>, <a +href="glossaries-extra-manual.html#dx1-19005" >1898</a>, <a +href="glossaries-extra-manual.html#dx1-19006" >1899</a>, <a +href="glossaries-extra-manual.html#dx1-19008" >1900</a>, <a +href="glossaries-extra-manual.html#dx1-19009" >1901</a>, <a +href="glossaries-extra-manual.html#dx1-19011" >1902</a>, <a +href="glossaries-extra-manual.html#dx1-20016" >1903</a>, <a +href="glossaries-extra-manual.html#dx1-20028" >1904</a>, <a +href="glossaries-extra-manual.html#dx1-20047" >1905</a>, <a +href="glossaries-extra-manual.html#dx1-20091" >1906</a>, <a +href="glossaries-extra-manual.html#dx1-20093" >1907</a>, <a +href="glossaries-extra-manual.html#dx1-20096" >1908</a>, <a +href="glossaries-extra-manual.html#dx1-20098" >1909</a>, <a +href="glossaries-extra-manual.html#dx1-47006" >1910</a>, <a +href="glossaries-extra-manual.html#dx1-47034" >1911</a>, <a +href="glossaries-extra-manual.html#dx1-53015" >1912</a>, <a +href="glossaries-extra-manual.html#dx1-55025" >1913</a>, <a +href="glossaries-extra-manual.html#dx1-55034" ><span +class="cmbx-10">1914</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">P</span> +<span class="index-item">package options:<br /></span> +<span class="index-subitem">    <span +class="cmss-10">abbreviations</span>  <a +href="glossaries-extra-manual.html#dx1-4188" >1915</a>, <a +href="glossaries-extra-manual.html#dx1-4197" >1916</a>, <a +href="glossaries-extra-manual.html#dx1-4198" >1917</a>, <a +href="glossaries-extra-manual.html#dx1-4250" >1918</a>, <a +href="glossaries-extra-manual.html#dx1-54002" >1919</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">accsupp</span>  <a +href="glossaries-extra-manual.html#dx1-4033" >1920</a>, <a +href="glossaries-extra-manual.html#dx1-4039" >1921</a>, <a +href="glossaries-extra-manual.html#dx1-30082" >1922</a>, <a +href="glossaries-extra-manual.html#dx1-48019" >1923</a>, <a +href="glossaries-extra-manual.html#dx1-52002" >1924</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">acronym</span>  <a +href="glossaries-extra-manual.html#dx1-4199" >1925</a>, <a +href="glossaries-extra-manual.html#dx1-4216" >1926</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">acronymlists</span>  <a +href="glossaries-extra-manual.html#dx1-4203" >1927</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">acronyms</span>  <a +href="glossaries-extra-manual.html#dx1-4215" >1928</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">automake</span>  <a +href="glossaries-extra-manual.html#dx1-5060" >1929</a>, <a +href="glossaries-extra-manual.html#dx1-54021" >1930</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">autoseeindex</span>  <a +href="glossaries-extra-manual.html#dx1-4063" >1931</a>, <a +href="glossaries-extra-manual.html#dx1-4070" >1932</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-4056" >1933</a>, <a +href="glossaries-extra-manual.html#dx1-4067" >1934</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">counter</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">chapter</span>  <a +href="glossaries-extra-manual.html#dx1-4091" >1935</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">equation</span>  <a +href="glossaries-extra-manual.html#dx1-4094" >1936</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">section</span>  <a +href="glossaries-extra-manual.html#dx1-4092" >1937</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">wrglossary</span>  <a +href="glossaries-extra-manual.html#dx1-4127" >1938</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">debug</span>  <a +href="glossaries-extra-manual.html#dx1-4002" >1939</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">all</span>  <a +href="glossaries-extra-manual.html#dx1-4005" >1940</a>, <a +href="glossaries-extra-manual.html#dx1-4013" >1941</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">showtargets</span>  <a +href="glossaries-extra-manual.html#dx1-4003" >1942</a>, <a +href="glossaries-extra-manual.html#dx1-4014" >1943</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">showwrgloss</span>  <a +href="glossaries-extra-manual.html#dx1-4004" >1944</a>, <a +href="glossaries-extra-manual.html#dx1-4006" >1945</a>, <a +href="glossaries-extra-manual.html#dx1-4015" >1946</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-4007" >1947</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">docdef</span>  <a +href="glossaries-extra-manual.html#dx1-4153" >1948</a>, <a +href="glossaries-extra-manual.html#dx1-4251" >1949</a>, <a +href="glossaries-extra-manual.html#dx1-4252" >1950</a>, <a +href="glossaries-extra-manual.html#dx1-5056" >1951</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">restricted</span>  <a +href="glossaries-extra-manual.html#dx1-4166" >1952</a>, <a +href="glossaries-extra-manual.html#dx1-4176" >1953</a>, <a +href="glossaries-extra-manual.html#dx1-4177" >1954</a>, <a +href="glossaries-extra-manual.html#dx1-4185" >1955</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-4184" >1956</a>, <a +href="glossaries-extra-manual.html#dx1-4186" >1957</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">docdefs</span>  <a +href="glossaries-extra-manual.html#dx1-35003" >1958</a>, <a +href="glossaries-extra-manual.html#dx1-35006" >1959</a>, <a +href="glossaries-extra-manual.html#dx1-47022" >1960</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-4165" >1961</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">entrycounter</span>  <a +href="glossaries-extra-manual.html#dx1-45002" >1962</a>, <a +href="glossaries-extra-manual.html#dx1-48007" >1963</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">equations</span>  <a +href="glossaries-extra-manual.html#dx1-4108" >1964</a>, <a +href="glossaries-extra-manual.html#dx1-6036" >1965</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-4095" >1966</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">floats</span>  <a +href="glossaries-extra-manual.html#dx1-4115" >1967</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">hyperfirst</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-30030" >1968</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">index</span>  <a +href="glossaries-extra-manual.html#dx1-4221" >1969</a>, <a +href="glossaries-extra-manual.html#dx1-5049" >1970</a>, <a +href="glossaries-extra-manual.html#dx1-30011" >1971</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">indexcounter</span>  <a +href="glossaries-extra-manual.html#dx1-4090" >1972</a>, <a +href="glossaries-extra-manual.html#dx1-4121" >1973</a>, <a +href="glossaries-extra-manual.html#dx1-4137" >1974</a>, <a +href="glossaries-extra-manual.html#dx1-39025" >1975</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">indexcrossrefs</span>  <a +href="glossaries-extra-manual.html#dx1-4053" >1976</a>, <a +href="glossaries-extra-manual.html#dx1-4059" >1977</a>, <a +href="glossaries-extra-manual.html#dx1-4068" >1978</a>, <a +href="glossaries-extra-manual.html#dx1-7011" >1979</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-4062" >1980</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">indexonlyfirst</span>  <a +href="glossaries-extra-manual.html#dx1-6004" >1981</a>, <a +href="glossaries-extra-manual.html#dx1-6006" >1982</a>, <a +href="glossaries-extra-manual.html#dx1-30038" >1983</a>, <a +href="glossaries-extra-manual.html#dx1-34040" >1984</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">makeindex</span>  <a +href="glossaries-extra-manual.html#dx1-41016" >1985</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">nogroupskip</span>  <a +href="glossaries-extra-manual.html#dx1-16008" >1986</a>, <a +href="glossaries-extra-manual.html#dx1-20014" >1987</a>, <a +href="glossaries-extra-manual.html#dx1-20031" >1988</a>, <a +href="glossaries-extra-manual.html#dx1-20033" >1989</a>, <a +href="glossaries-extra-manual.html#dx1-20041" >1990</a>, <a +href="glossaries-extra-manual.html#dx1-20043" >1991</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nomain</span>  <a +href="glossaries-extra-manual.html#dx1-3032" >1992</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nomissingglstext</span>  <a +href="glossaries-extra-manual.html#dx1-4187" >1993</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nonumberlist</span>  <a +href="glossaries-extra-manual.html#dx1-7048" >1994</a>, <a +href="glossaries-extra-manual.html#dx1-15046" >1995</a>, <a +href="glossaries-extra-manual.html#dx1-19003" >1996</a>, <a +href="glossaries-extra-manual.html#dx1-19007" >1997</a>, <a +href="glossaries-extra-manual.html#dx1-55036" >1998</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nopostdot</span>  <a +href="glossaries-extra-manual.html#dx1-4022" >1999</a>, <a +href="glossaries-extra-manual.html#dx1-4024" >2000</a>, <a +href="glossaries-extra-manual.html#dx1-18026" >2001</a>, <a +href="glossaries-extra-manual.html#dx1-20009" >2002</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-3004" >2003</a>, <a +href="glossaries-extra-manual.html#dx1-4017" >2004</a>, <a +href="glossaries-extra-manual.html#dx1-18020" >2005</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-3003" >2006</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">noredefwarn</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-3009" >2007</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-3006" >2008</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">notree</span>  <a +href="glossaries-extra-manual.html#dx1-20066" >2009</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">numbers</span>  <a +href="glossaries-extra-manual.html#dx1-4210" >2010</a>, <a +href="glossaries-extra-manual.html#dx1-4240" >2011</a>, <a +href="glossaries-extra-manual.html#dx1-30017" >2012</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postdot</span>  <a +href="glossaries-extra-manual.html#dx1-3005" >2013</a>, <a +href="glossaries-extra-manual.html#dx1-4016" >2014</a>, <a +href="glossaries-extra-manual.html#dx1-4025" >2015</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">postpunc</span>  <a +href="glossaries-extra-manual.html#dx1-4018" >2016</a>, <a +href="glossaries-extra-manual.html#dx1-4023" >2017</a>, <a +href="glossaries-extra-manual.html#dx1-4028" >2018</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">comma</span>  <a +href="glossaries-extra-manual.html#dx1-4019" >2019</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">dot</span>  <a +href="glossaries-extra-manual.html#dx1-4020" >2020</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">none</span>  <a +href="glossaries-extra-manual.html#dx1-4021" >2021</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">record</span>  <a +href="glossaries-extra-manual.html#dx1-4061" >2022</a>, <a +href="glossaries-extra-manual.html#dx1-4071" >2023</a>, <a +href="glossaries-extra-manual.html#dx1-10004" >2024</a>, <a +href="glossaries-extra-manual.html#dx1-14009" >2025</a>, <a +href="glossaries-extra-manual.html#dx1-36010" >2026</a>, <a +href="glossaries-extra-manual.html#dx1-36021" >2027</a>, <a +href="glossaries-extra-manual.html#dx1-39002" >2028</a>, <a +href="glossaries-extra-manual.html#dx1-39009" >2029</a>, <a +href="glossaries-extra-manual.html#dx1-46070" >2030</a>, <a +href="glossaries-extra-manual.html#dx1-47011" >2031</a>, <a +href="glossaries-extra-manual.html#dx1-47015" >2032</a>, <a +href="glossaries-extra-manual.html#dx1-47044" >2033</a>, <a +href="glossaries-extra-manual.html#dx1-54008" >2034</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">alsoindex</span>  <a +href="glossaries-extra-manual.html#dx1-4009" >2035</a>, <a +href="glossaries-extra-manual.html#dx1-4106" >2036</a>, <a +href="glossaries-extra-manual.html#dx1-5054" >2037</a>, <a +href="glossaries-extra-manual.html#dx1-36013" >2038</a>, <a +href="glossaries-extra-manual.html#dx1-39005" >2039</a>, <a +href="glossaries-extra-manual.html#dx1-47045" >2040</a>, <a +href="glossaries-extra-manual.html#dx1-49008" >2041</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">nameref</span>  <a +href="glossaries-extra-manual.html#dx1-41001" >2042</a>, <a +href="glossaries-extra-manual.html#dx1-41010" >2043</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">off</span>  <a +href="glossaries-extra-manual.html#dx1-5055" >2044</a>, <a +href="glossaries-extra-manual.html#dx1-49007" >2045</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">only</span>  <a +href="glossaries-extra-manual.html#dx1-4066" >2046</a>, <a +href="glossaries-extra-manual.html#dx1-4073" >2047</a>, <a +href="glossaries-extra-manual.html#dx1-4079" >2048</a>, <a +href="glossaries-extra-manual.html#dx1-4085" >2049</a>, <a +href="glossaries-extra-manual.html#dx1-4088" >2050</a>, <a +href="glossaries-extra-manual.html#dx1-4105" >2051</a>, <a +href="glossaries-extra-manual.html#dx1-5053" >2052</a>, <a +href="glossaries-extra-manual.html#dx1-39001" >2053</a>, <a +href="glossaries-extra-manual.html#dx1-47021" >2054</a>, <a +href="glossaries-extra-manual.html#dx1-49011" >2055</a>, <a +href="glossaries-extra-manual.html#dx1-49016" >2056</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">section</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">chapter</span>  <a +href="glossaries-extra-manual.html#dx1-14040" >2057</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">seeautonumberlist</span>  <a +href="glossaries-extra-manual.html#dx1-7049" >2058</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">seenoindex</span>  <a +href="glossaries-extra-manual.html#dx1-7016" >2059</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">ignore</span>  <a +href="glossaries-extra-manual.html#dx1-7018" >2060</a>, <a +href="glossaries-extra-manual.html#dx1-47019" >2061</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">warn</span>  <a +href="glossaries-extra-manual.html#dx1-47020" >2062</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">shortcuts</span>  <a +href="glossaries-extra-manual.html#dx1-4225" >2063</a>, <a +href="glossaries-extra-manual.html#dx1-4248" >2064</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">abbr</span>  <a +href="glossaries-extra-manual.html#dx1-4231" >2065</a>, <a +href="glossaries-extra-manual.html#dx1-24002" >2066</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">abbreviation</span>  <a +href="glossaries-extra-manual.html#dx1-24001" >2067</a>, <a +href="glossaries-extra-manual.html#dx1-24005" >2068</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">abbreviations</span>  <a +href="glossaries-extra-manual.html#dx1-4230" >2069</a>, <a +href="glossaries-extra-manual.html#dx1-4244" >2070</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">ac</span>  <a +href="glossaries-extra-manual.html#dx1-4228" >2071</a>, <a +href="glossaries-extra-manual.html#dx1-4229" >2072</a>, <a +href="glossaries-extra-manual.html#dx1-4243" >2073</a>, <a +href="glossaries-extra-manual.html#dx1-24003" >2074</a>, <a +href="glossaries-extra-manual.html#dx1-24006" >2075</a>, <a +href="glossaries-extra-manual.html#dx1-32011" >2076</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">acro</span>  <a +href="glossaries-extra-manual.html#dx1-4227" >2077</a>, <a +href="glossaries-extra-manual.html#dx1-32014" >2078</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">acronyms</span>  <a +href="glossaries-extra-manual.html#dx1-4226" >2079</a>, <a +href="glossaries-extra-manual.html#dx1-32013" >2080</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">all</span>  <a +href="glossaries-extra-manual.html#dx1-4241" >2081</a>, <a +href="glossaries-extra-manual.html#dx1-32012" >2082</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-4247" >2083</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">none</span>  <a +href="glossaries-extra-manual.html#dx1-4246" >2084</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">other</span>  <a +href="glossaries-extra-manual.html#dx1-4232" >2085</a>, <a +href="glossaries-extra-manual.html#dx1-4245" >2086</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-4242" >2087</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">sort</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">none</span>  <a +href="glossaries-extra-manual.html#dx1-4086" >2088</a>, <a +href="glossaries-extra-manual.html#dx1-48001" >2089</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">stylemods</span>  <a +href="glossaries-extra-manual.html#dx1-4042" >2090</a>, <a +href="glossaries-extra-manual.html#dx1-14004" >2091</a>, <a +href="glossaries-extra-manual.html#dx1-17002" >2092</a>, <a +href="glossaries-extra-manual.html#dx1-20003" >2093</a>, <a +href="glossaries-extra-manual.html#dx1-20005" >2094</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">all</span>  <a +href="glossaries-extra-manual.html#dx1-4045" >2095</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">default</span>  <a +href="glossaries-extra-manual.html#dx1-4044" >2096</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">subentrycounter</span>  <a +href="glossaries-extra-manual.html#dx1-45003" >2097</a>, <a +href="glossaries-extra-manual.html#dx1-48008" >2098</a> <br /></span> + + + +<span class="index-subitem">    <span +class="cmss-10">symbols</span>  <a +href="glossaries-extra-manual.html#dx1-4204" >2099</a>, <a +href="glossaries-extra-manual.html#dx1-4237" >2100</a>, <a +href="glossaries-extra-manual.html#dx1-30014" >2101</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">toc</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">false</span>  <a +href="glossaries-extra-manual.html#dx1-3002" >2102</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-3001" >2103</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">translate</span><br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">babel</span>  <a +href="glossaries-extra-manual.html#dx1-3011" >2104</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">true</span>  <a +href="glossaries-extra-manual.html#dx1-3013" >2105</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">undefaction</span>  <a +href="glossaries-extra-manual.html#dx1-4046" >2106</a>, <a +href="glossaries-extra-manual.html#dx1-5014" >2107</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">error</span>  <a +href="glossaries-extra-manual.html#dx1-4047" >2108</a>, <a +href="glossaries-extra-manual.html#dx1-4074" >2109</a>, <a +href="glossaries-extra-manual.html#dx1-10002" >2110</a> <br /></span> +<span class="index-subsubitem">        <span +class="cmss-10">warn</span>  <a +href="glossaries-extra-manual.html#dx1-4048" >2111</a>, <a +href="glossaries-extra-manual.html#dx1-4052" >2112</a>, <a +href="glossaries-extra-manual.html#dx1-4076" >2113</a>, <a +href="glossaries-extra-manual.html#dx1-4174" >2114</a>, <a +href="glossaries-extra-manual.html#dx1-10003" >2115</a>, <a +href="glossaries-extra-manual.html#dx1-10005" >2116</a>, <a +href="glossaries-extra-manual.html#dx1-36022" >2117</a>, <a +href="glossaries-extra-manual.html#dx1-46006" >2118</a>, <a +href="glossaries-extra-manual.html#dx1-46017" >2119</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">xindy</span>  <a +href="glossaries-extra-manual.html#dx1-7068" >2120</a>, <a +href="glossaries-extra-manual.html#dx1-34004" >2121</a> <br /></span> +<span class="index-item"><span +class="cmtt-10">page </span>(counter)  <a +href="glossaries-extra-manual.html#dx1-4093" >2122</a>, <a +href="glossaries-extra-manual.html#dx1-4133" >2123</a>, <a +href="glossaries-extra-manual.html#dx1-4146" >2124</a>, <a +href="glossaries-extra-manual.html#dx1-32031" >2125</a>, <a +href="glossaries-extra-manual.html#dx1-32043" >2126</a>, <a +href="glossaries-extra-manual.html#dx1-41020" >2127</a> <br /></span> +<span class="index-item"><span +class="cmss-10">polyglossia </span>package  <a +href="glossaries-extra-manual.html#dx1-46069" >2128</a>, <a +href="glossaries-extra-manual.html#dx1-54005" >2129</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\pretoglossarypreamble</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-45011" ><span +class="cmti-10">2130</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printabbreviations</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4189" ><span +class="cmti-10">2131</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">\printglossary </span>options<br /></span> +<span class="index-subitem">    <span +class="cmss-10">label</span>  <a +href="glossaries-extra-manual.html#dx1-5025" >2132</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">nogroupskip</span>  <a +href="glossaries-extra-manual.html#dx1-20015" >2133</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">prefix</span>  <a +href="glossaries-extra-manual.html#dx1-5022" >2134</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">target</span>  <a +href="glossaries-extra-manual.html#dx1-5020" >2135</a>, <a +href="glossaries-extra-manual.html#dx1-45009" >2136</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">targetnameprefix</span>  <a +href="glossaries-extra-manual.html#dx1-5021" >2137</a> <br /></span> +<span class="index-subitem">    <span +class="cmss-10">title</span>  <a +href="glossaries-extra-manual.html#dx1-54006" >2138</a> <br /></span> +<span class="index-item"><span +class="cmtt-10">\printnoidxglossary </span>options<br /></span> +<span class="index-subitem">    <span +class="cmss-10">sort</span>  <a +href="glossaries-extra-manual.html#dx1-47023" >2139</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtabbreviations</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4191" ><span +class="cmti-10">2140</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtacronyms</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4218" ><span +class="cmti-10">2141</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaries</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47024" ><span +class="cmti-10">2142</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossary</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47001" ><span +class="cmti-10">2143</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossary*</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47005" ><span +class="cmti-10">2144</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaryentryprocesshook</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47027" ><span +class="cmti-10">2145</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaryhandler</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47030" ><span +class="cmti-10">2146</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossarypredoglossary</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47029" ><span +class="cmti-10">2147</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaryskipentry</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47028" ><span +class="cmti-10">2148</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaryunit</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47042" ><span +class="cmti-10">2149</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtglossaryunitsetup</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-47043" ><span +class="cmti-10">2150</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtindex</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4223" ><span +class="cmti-10">2151</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtnumbers</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4213" ><span +class="cmti-10">2152</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\printunsrtsymbols</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-4208" ><span +class="cmti-10">2153</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\provideignoredglossary</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-5017" ><span +class="cmti-10">2154</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">R</span> +<span class="index-item"><span +class="cmss-10">relsizes </span>package  <a +href="glossaries-extra-manual.html#dx1-25048" >2155</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\RestoreAcronyms</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-13045" ><span +class="cmti-10">2156</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGLS</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44013" ><span +class="cmti-10">2157</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44011" ><span +class="cmti-10">2158</span></a> <br /></span> + + + +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rgls</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44009" ><span +class="cmti-10">2159</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGLSformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44029" ><span +class="cmti-10">2160</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGlsformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44027" ><span +class="cmti-10">2161</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rglsformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44025" ><span +class="cmti-10">2162</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGLSpl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44014" ><span +class="cmti-10">2163</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGlspl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44012" ><span +class="cmti-10">2164</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rglspl</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44010" ><span +class="cmti-10">2165</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGLSplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44030" ><span +class="cmti-10">2166</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rGlsplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44028" ><span +class="cmti-10">2167</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\rglsplformat</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-44026" ><span +class="cmti-10">2168</span></a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">S</span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\setabbreviationstyle</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-23001" ><span +class="cmti-10">2169</span></a> <br /></span> +<span class="index-item"><span +class="cmss-10">slantsc </span>package  <a +href="glossaries-extra-manual.html#dx1-29021" >2170</a> <br /></span> +<span class="index-item"><span +class="cmss-10">soul </span>package  <a +href="glossaries-extra-manual.html#dx1-6024" >2171</a>, <a +href="glossaries-extra-manual.html#dx1-10012" >2172</a> <br /></span> +<span class="index-item"><span +class="cmss-10">style </span>package  <a +href="glossaries-extra-manual.html#dx1-14005" >2173</a> <br /></span> +<span class="index-item"><span +class="cmss-10">subentrycounter </span>package  <a +href="glossaries-extra-manual.html#dx1-48021" >2174</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">T</span> +<span class="index-item"><span +class="cmtt-10">texindy</span>  <a +href="glossaries-extra-manual.html#dx1-34007" >2175</a> <br /></span> +<span class="index-item"><span +class="cmss-10">textcase </span>package  <a +href="glossaries-extra-manual.html#dx1-7" >2176</a> <br /></span> +<span class="index-item"><span +class="cmss-10">tracklang </span>package  <a +href="glossaries-extra-manual.html#dx1-3" >2177</a>, <a +href="glossaries-extra-manual.html#dx1-38003" >2178</a>, <a +href="glossaries-extra-manual.html#dx1-42030" >2179</a>, <a +href="glossaries-extra-manual.html#dx1-42031" >2180</a>, <a +href="glossaries-extra-manual.html#dx1-42032" >2181</a>, <a +href="glossaries-extra-manual.html#dx1-42033" >2182</a>, <a +href="glossaries-extra-manual.html#dx1-42035" >2183</a>, <a +href="glossaries-extra-manual.html#dx1-46065" >2184</a>, <a +href="glossaries-extra-manual.html#dx1-46067" >2185</a>, <a +href="glossaries-extra-manual.html#dx1-54009" >2186</a> <br /></span> +<span class="index-item"><span +class="cmss-10">translator </span>package  <a +href="glossaries-extra-manual.html#dx1-3012" >2187</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">U</span> +<span class="index-item"><span +class="cmss-10">upgreek </span>package  <a +href="glossaries-extra-manual.html#dx1-42029" >2188</a>, <a +href="glossaries-extra-manual.html#dx1-42098" >2189</a>, <a +href="glossaries-extra-manual.html#dx1-42104" >2190</a>, <a +href="glossaries-extra-manual.html#dx1-42109" >2191</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">W</span> +<span class="index-item"><span +class="cmtt-10">wrglossary </span>(counter)  <a +href="glossaries-extra-manual.html#dx1-4128" >2192</a>, <a +href="glossaries-extra-manual.html#dx1-4138" >2193</a>, <a +href="glossaries-extra-manual.html#dx1-4139" >2194</a>, <a +href="glossaries-extra-manual.html#dx1-4143" >2195</a>, <a +href="glossaries-extra-manual.html#dx1-4149" >2196</a> <br /></span> +</p><p class="theindex"> <span +class="cmbx-10">X</span> +<span class="index-item"><span +class="cmss-10">xfor </span>package  <a +href="glossaries-extra-manual.html#dx1-8" >2197</a>, <a +href="glossaries-extra-manual.html#dx1-46059" >2198</a>, <a +href="glossaries-extra-manual.html#dx1-46061" >2199</a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\xglssetwidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20070" ><span +class="cmti-10">2200</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\xglsupdatewidest</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-20074" ><span +class="cmti-10">2201</span></a> <br /></span> +<span class="index-item"><span class="obeylines-h"><span class="verb"><span +class="cmtt-10">\xGlsXtrSetField</span></span></span>  <a +href="glossaries-extra-manual.html#dx1-46024" ><span +class="cmti-10">2202</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">xindy</span>  <a +href="glossaries-extra-manual.html#dx1-3023" >2203</a>, <a +href="glossaries-extra-manual.html#dx1-4012" >2204</a>, <a +href="glossaries-extra-manual.html#dx1-4098" >2205</a>, <a +href="glossaries-extra-manual.html#dx1-4101" >2206</a>, <a +href="glossaries-extra-manual.html#dx1-4125" >2207</a>, <a +href="glossaries-extra-manual.html#dx1-4142" >2208</a>, <a +href="glossaries-extra-manual.html#dx1-4144" >2209</a>, <a +href="glossaries-extra-manual.html#dx1-4172" >2210</a>, <a +href="glossaries-extra-manual.html#dx1-4181" >2211</a>, <a +href="glossaries-extra-manual.html#dx1-34005" >2212</a>, <a +href="glossaries-extra-manual.html#dx1-36012" >2213</a>, <a +href="glossaries-extra-manual.html#dx1-39007" >2214</a>, <a +href="glossaries-extra-manual.html#dx1-41006" >2215</a>, <a +href="glossaries-extra-manual.html#dx1-55002" >2216</a>, <a +href="glossaries-extra-manual.html#dx1-55027" >2217</a>, <a +href="glossaries-extra-manual.html#dx1-55031" >2218</a>, <a +href="glossaries-extra-manual.html#dx1-55037" ><span +class="cmbx-10">2219</span></a> <br /></span> +<span class="index-item"><span +class="cmtt-10">xindy</span>  <a +href="glossaries-extra-manual.html#dx1-6047" >2220</a> <br /></span> +<span class="index-item"><span +class="cmss-10">xkeyval </span>package  <a +href="glossaries-extra-manual.html#dx1-6" >2221</a> <br /></span> +</p></div> + + + + <a + id="dx1-56001"></a><div class="footnotes"><!--l. 311--><p class="indent" > <span class="footnote-mark"><a +href="#fn1x1-bk" id="fn1x1"><sup class="textsuperscript">1.1</sup></a></span><span +class="cmr-8">4.21 was originally intended as the last release of </span><span +class="cmss-8">glossaries </span><span +class="cmr-8">to incorporate new features, but</span> +<span +class="cmr-8">a few new minor features slipped in with some bug fixes in v4.21.</span></p> +<!--l. 1353--><p class="indent" > <span class="footnote-mark"><a +href="#fn1x2-bk" id="fn1x2"><sup class="textsuperscript">2.1</sup></a></span><span +class="cmr-8">The </span><span +class="cmss-8">descriptionplural</span><a + id="dx1-5043"></a> <span +class="cmr-8">key is a throwback to the base package’s original acronym mechanism</span> +<span +class="cmr-8">before the introduction of the </span><span +class="cmss-8">long</span><a + id="dx1-5044"></a> <span +class="cmr-8">and </span><span +class="cmss-8">short</span><a + id="dx1-5045"></a> <span +class="cmr-8">keys, where the long form was stored in the </span><span +class="cmss-8">description</span><a + id="dx1-5046"></a> +<span +class="cmr-8">field and the short form was stored in the </span><span +class="cmss-8">symbol</span><a + id="dx1-5047"></a> <span +class="cmr-8">field.</span></p> +<!--l. 5176--><p class="indent" > <span class="footnote-mark"><a +href="#fn1x3-bk" id="fn1x3"><sup class="textsuperscript">3.1</sup></a></span><span +class="cmr-8">For compatibility with earlier versions, </span><span +class="cmtt-8">\glsabbrvscfont </span><span +class="cmr-8">is defined to </span><span +class="cmtt-8">\glsxtrscfont</span><span +class="cmr-8">, which</span> +<span +class="cmr-8">is defined to use </span><span +class="cmtt-8">\textsc</span><span +class="cmr-8">. Direct use of </span><span +class="cmtt-8">\glsxtrscfont </span><span +class="cmr-8">is now deprecated. Likewise for similar</span> +<span +class="cmr-8">commands.</span></p> +<!--l. 8622--><p class="indent" > <span class="footnote-mark"><a +href="#fn1x9-bk" id="fn1x9"><sup class="textsuperscript">9.1</sup></a></span><span +class="cmr-8">Version 1.11 only allowed one use of </span><span +class="cmtt-8">\GlsXtrLoadResources </span><span +class="cmr-8">per document.</span></p> +<!--l. 8642--><p class="indent" > <span class="footnote-mark"><a +href="#fn2x9-bk" id="fn2x9"><sup class="textsuperscript">9.2</sup></a></span><span +class="cmr-8">v1.08 assumed </span>⟨<span +class="cmti-8">filename</span>⟩<span +class="cmtt-8">.tex </span><span +class="cmr-8">but that’s potentially dangerous if, for example, </span>⟨<span +class="cmti-8">filename</span>⟩ +<span +class="cmr-8">happens to be the same as </span><span +class="cmtt-8">\jobname</span><span +class="cmr-8">. The </span><span +class="cmtt-8">.glstex </span><span +class="cmr-8">extension was enforced by version</span> +<span +class="cmr-8">1.11.</span></p> +<!--l. 10683--><p class="indent" > <span class="footnote-mark"><a +href="#fn1x10-bk" id="fn1x10"><sup class="textsuperscript">10.1</sup></a></span><span +class="cmr-8">Pre version 1.28 used </span><span +class="cmtt-8">\csedef</span><span +class="cmr-8">.</span></p> </div> + +</body></html> + + + + diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf Binary files differnew file mode 100644 index 0000000000..3af0f7a83e --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex new file mode 100644 index 0000000000..674b704722 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex @@ -0,0 +1,12125 @@ +\documentclass[report,inlinetitle,widecs]{nlctdoc} + +\makeatletter +\@ifpackageloaded{tex4ht} +{ + \DeclareUnicodeCharacter{00FE}{\HCode{&\#x00FE;}} + \DeclareUnicodeCharacter{00D0}{\HCode{&\#x00D0;}} + \DeclareUnicodeCharacter{01F7}{\HCode{&\#x01F7;}} + \DeclareUnicodeCharacter{A77D}{\HCode{&\#xA77D;}} + \DeclareUnicodeCharacter{017F}{\HCode{&\#x017F;}} + \DeclareUnicodeCharacter{018F}{\HCode{&\#x018F;}} +} +{ + \usepackage{fontspec} + \setmainfont{FreeSerif} +} +\makeatother + +\usepackage{alltt} +\usepackage{hologo} +\usepackage[colorlinks, + hyperindex=false, + pdfauthor={Nicola L.C. Talbot}, + pdftitle={glossaries-extra.sty: an extension to the glossaries +package}, + pdfkeywords={LaTeX,package,glossary,abbreviations}]{hyperref} +\usepackage[nogroupskip,nonumberlist]{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableEntryUnitCounting{general}{0}{page} + +\renewcommand*{\glsxtrifcounttrigger}[3]{#3} + +\renewcommand*{\glslinkcheckfirsthyperhook}{% + \ifnum\glsentrycurrcount\glslabel>0 + \setkeys{glslink}{hyper=false}% + \fi +} + +\newcommand*{\XeLaTeX}{\hologo{XeLaTeX}} +\newcommand*{\LuaLaTeX}{\hologo{LuaLaTeX}} +\newcommand*{\pdfLaTeX}{\hologo{pdfLaTeX}} + +\IndexPrologue{\chapter*{\indexname} + \addcontentsline{toc}{chapter}{\indexname}% + \markboth{\indexname}{\indexname}} + +\renewcommand*{\main}[1]{\hyperpage{#1}} +\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}} + +\glssetcategoryattribute{general}{indexname}{htextbf} +\glssetcategoryattribute{general}{dualindex}{main} + +\newglossaryentry{xindy}{ + name={\appfmt{xindy}}, + sort={xindy}, + description={An flexible indexing application with multilingual + support written in Perl.} +} + +\newglossaryentry{makeindex}{% + name={\appfmt{makeindex}},% + sort={makeindex},% + description={An indexing application.}, +} + +\newglossaryentry{makeglossaries}{% +name={\appfmt{makeglossaries}},% +sort={makeglossaries},% +description={A custom designed Perl script interface +provided with the \styfmt{glossaries} package +to run \gls{xindy} or \gls{makeindex} according to +the document settings.}} + +\newglossaryentry{makeglossaries-lite.lua}{% +name={\appfmt{makeglossaries-lite}\index{makeglossaries-lite=\appfmt{makeglossaries-lite}|htextbf}},% +sort={makeglossaries-lite},% +text={\appfmt{makeglossaries-lite}\iapp{makeglossaries-lite}},% +description={A custom designed Lua script interface +to \gls{xindy} and \gls{makeindex} provided with the +\styfmt{glossaries} +package. This is a cut-down alternative to the Perl +\appfmt{makeglossaries} script. If you have Perl installed, use the +Perl script instead. This script is distributed in the source code +on CTAN with the file name +\texttt{makeglossaries-lite.lua} but TeX Live on Unix-like systems +creates a symbolic link +called \texttt{makeglossaries-lite} (without the \texttt{.lua} +extension) to the actual \texttt{makeglossaries-lite.lua} script, and +\TeX\ distributions on Windows convert the script to an executable +\texttt{makeglossaries-lite.exe}.} +} + +\newglossaryentry{bib2gls}{% +name={\appfmt{bib2gls}},% +sort={bib2gls},% +description={A command line Java application that selects +entries from a .bib file and converts them to glossary +definitions (like \appfmt{bibtex} but also performs hierarchical +sorting and collation, thus omitting the need for \gls{xindy} or +\gls{makeindex}). Further details at: +\url{http://www.dickimaw-books.com/software/bib2gls/}.}% +} + +\newglossaryentry{numberlist}{% +name={number list},% +description={A list of \glspl{entrylocation} (also +called a location list). The number list can be suppressed using the +\pkgopt{nonumberlist} package option.} +} + +\newglossaryentry{entrylocation}{% +name={entry location},% +description={The location of the entry in the document. This +defaults to the page number on which the entry appears. An entry may +have multiple locations.} +} + +\newglossaryentry{locationlist}{% +name={location list},% +description={A list of \glspl{entrylocation}. +See \gls{numberlist}.}% +} + +\newglossaryentry{linktext}{% +name={link-text}, +description={The text produced by commands such as \ics{gls}. It may +or may not have a hyperlink to the glossary.} +} + +\let\glsd\glsuseri +\let\glsation\glsuserii + +\newglossaryentry{firstuseflag}{% +name={first use flag}, +description={A conditional that determines whether or not the entry +has been used according to the rules of \gls{firstuse}.}% +} + +\newglossaryentry{firstusetext}{% +name={first use text}, +description={The text that is displayed on \gls{firstuse}, which is +governed by the \gloskey{first} and \gloskey{firstplural} keys of +\ics{newglossaryentry}. (May be overridden by +\ics{glsdisp}.)}% +} + +\newglossaryentry{firstuse}{% + name={first use}, + user1={first used}, + see={firstuseflag,firstusetext}, + description={The first time a glossary entry is used (from the start + of the document or after a reset) with one of the + following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl}, + \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}.}% +} + +\setcounter{IndexColumns}{2} + +\newrobustcmd*{\eq}{\protect=}% hide from makeindex + +\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}} +\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}} +\newcommand*{\optfmt}[1]{\textsf{#1}} + +\newcommand*{\glostyle}[1]{\textsf{#1}\index{glossary styles:>#1={\protect\sffamily#1}|main}} + +\newcommand*{\acrstyle}[1]{\textsf{#1}\index{acronym +styles (glossaries):>#1={\protect\ttfamily#1}|main}} + +\newcommand*{\abbrstylenolink}[1]{% + \textsf{#1}\index{abbreviation styles:>#1={\protect\sffamily#1}|main}} + +\newcommand*{\abbrstyle}[1]{% + \hyperlink{abbrstyle.#1}{\textsf{#1}}% + \index{abbreviation styles:>#1={\protect\sffamily#1}|main}% +} + +\makeatletter +\newcommand{\htarget}[2]{\Hy@raisedlink{\hypertarget{#1}{}}#2} +\makeatother + +\newcommand*{\abbrstyledef}[1]{% + \htarget{abbrstyle.#1}{\textsf{#1}}% + \index{abbreviation styles:>#1={\protect\sffamily#1}|main}% +} + +\newcommand*{\depabbrstyle}[1]{\textsf{#1}\index{abbreviation styles (deprecated):>#1={\protect\sffamily#1}|main}} + +\newcommand*{\category}[1]{\textsf{#1}\index{categories:>#1={\protect\sffamily#1}|main}} + +\newcommand*{\catattrnolink}[1]{% + \textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}} + +\newcommand*{\catattr}[1]{% + \hyperlink{catattr.#1}{\textsf{#1}}% + \index{category attributes:>#1={\protect\sffamily#1}|main}% +} + +\newcommand*{\catattrdef}[1]{% + \htarget{catattr.#1}{\textsf{#1}}% + \index{category attributes:>#1={\protect\sffamily#1}|main}% +} + +\newcommand*{\postlinkcat}{% + \cs{glsxtrpostlink}\meta{category}% + \index{glsxtrpostlinkcategory=\cs{glsxtrpostlink}\meta{category}|hyperpage}% +} + +\renewcommand*{\pkgopt}[2][]{% + \hyperlink{styopt.#2}{\pkgoptfmt{#2}}% + \ifstrempty{#1}{}{\pkgoptfmt{=#1}}% + \ipkgopt[#1]{#2}% +} + +\newcommand*{\pkgoptdef}[1]{% + \htarget{styopt.#1}{\pkgoptfmt{#1}}% + \ipkgopt{#1}% +} + +\setlength\marginparwidth{70pt} + +\begin{document} +\DeleteShortVerb{\|} +\MakeShortVerb{"} + + \title{glossaries-extra.sty v1.41: + an extension to the glossaries package} + \author{Nicola L.C. Talbot\\[10pt] +Dickimaw Books\\ +\url{http://www.dickimaw-books.com/}} + + \date{2019-04-09} + \maketitle + +\begin{abstract} +The \styfmt{glossaries-extra} package is an extension to the +\styfmt{glossaries} package, providing additional features. +Some of the features provided by this package are only available +with \styfmt{glossaries} version 4.19 (or above). +This document assumes familiarity with the \styfmt{glossaries} package. + +The file \texttt{example-glossaries-xr.tex} contains dummy +entries with cross-references that may be used for creating +minimal working examples for testing the \styfmt{glossaries-extra} +package. (The base \styfmt{glossaries} package provides additional files, +but this one needs \styfmt{glossaries-extra}.) There are equivalent +\texttt{.bib} files for use with \gls{bib2gls}. + +\end{abstract} + +\begin{important} +Since \styfmt{glossaries-extra} internally loads the \styfmt{glossaries} +package, you also need to have \styfmt{glossaries} installed and +all the packages that \styfmt{glossaries} depends on (including, but +not limited to, \sty{tracklang}, \sty{mfirstuc}, \sty{etoolbox}, +\sty{xkeyval} (at least version dated 2006/11/18), \sty{textcase}, +\sty{xfor}, \sty{datatool-base} and \sty{amsgen}. These +packages are all available in the current \TeX\ Live and Mik\TeX\ +distributions. If any of them are missing, please update your +\TeX\ distribution using your update manager. +(For help on this see, for example, +\href{http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \TeX\ distribution?} +or +\href{http://tex.stackexchange.com/questions/14925/updating-tex-on-linux}{Updating +\TeX\ on Linux}.) +\end{important} + +Additional resources: +\begin{itemize} +\item The \styfmt{glossaries-extra} documented code +\href{http://mirrors.ctan.org/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf}{glossaries-extra-code.pdf}. + +\item The +\href{http://www.dickimaw-books.com/gallery/#glossaries-extra}{\styfmt{glossaries-extra} gallery}. + +\item \styfmt{glossaries-extra} and \gls{bib2gls}: An Introductory +Guide. (\href{http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf}{\texttt{bib2gls-begin.pdf}}). + +\item +\href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating +makeglossaries or makeglossaries-lite or bib2gls into the document +build}. + +\item The +\href{http://www.dickimaw-books.com/software/bib2gls}{\appfmt{bib2gls}} +application. + +\item The base \href{https://ctan.org/pkg/glossaries}{\styfmt{glossaries}} package. +\end{itemize} + +\tableofcontents + +\chapter{Introduction} +\label{sec:intro} + +The \styfmt{glossaries} package is a flexible package, but it's also a +heavy-weight package that uses a lot of resources. As package +developer, I'm caught between those users who complain about the +drawbacks of a heavy-weight package with a large user manual and +those users who want more features (which necessarily adds to the +package weight and manual size). + +The \styfmt{glossaries-extra} package is an attempt to provide +a~compromise for this +conflict. Version 4.22 of the \styfmt{glossaries} package is +the last version to incorporate new features.\footnote{4.21 was +originally intended as the last release of \styfmt{glossaries} to +incorporate new features, but a few new minor features slipped in with +some bug fixes in v4.21.} Future versions of +\styfmt{glossaries} will just be bug fixes. New features will +instead be added to \styfmt{glossaries-extra}. +This means that the base \styfmt{glossaries} package won't increase +in terms of package loading time and allocation of resources, but +those users who do want extra features available will have more of a +chance of getting their feature requests accepted. + +\section{Package Defaults} +\label{sec:defaults} + +I'm not happy with some of the default settings assumed by the +\styfmt{glossaries} package, and, judging from code I've seen, other +users also seem unhappy with them, as certain package options are +often used in questions posted on various sites. I can't change the default +behaviour of \styfmt{glossaries} as it would break backward +compatibility, but since \styfmt{glossaries-extra} is a separate +package, I have decided to implement some of these commonly-used +options by default. You can switch them back if they're not +appropriate. + +The new defaults are: +\begin{itemize} +\item \pkgopt[true]{toc} (add the glossaries to the table of +contents). Use \pkgopt[false]{toc} to switch this back off. + +\item \pkgopt[true]{nopostdot} (suppress the terminating full stop +after the description in the glossary). Use +\pkgopt[false]{nopostdot} or just \pkgopt{postdot} to restore the +terminating full stop (period). + +\item \pkgopt[true]{noredefwarn} (suppress the warnings that occur when +the \env{theglossary} environment and \cs{printglossary} are redefined while +\styfmt{glossaries} is loading). To restore the warnings, use +\pkgopt[false]{noredefwarn}. Note that this won't have any effect if +the \styfmt{glossaries} package has already been loaded before you use +the \styfmt{glossaries-extra} package. + +\item If \sty{babel} has been loaded, the \pkgopt[babel]{translate} +option is switched on. To revert to using the \sty{translator} +interface, use \pkgopt[true]{translate}. There is no change to the +default if \sty{babel} hasn't been loaded. + +\end{itemize} + +The examples below illustrate the difference in explicit +package options between \styfmt{glossaries} and +\styfmt{glossaries-extra}. There may be other differences +resulting from modifications to commands provided by +\styfmt{glossaries} (see \sectionref{sec:modifications}). + +\begin{enumerate} +\item +\begin{verbatim} +\documentclass{article} +\usepackage{glossaries-extra} +\end{verbatim} +This is like: +\begin{verbatim} +\documentclass{article} +\usepackage[toc,nopostdot]{glossaries} +\usepackage{glossaries-extra} +\end{verbatim} + +\item +\begin{verbatim} +\documentclass[british]{article} +\usepackage{babel} +\usepackage{glossaries-extra} +\end{verbatim} +This is like: +\begin{verbatim} +\documentclass[british]{article} +\usepackage{babel} +\usepackage[toc,nopostdot,translate=babel]{glossaries} +\usepackage{glossaries-extra} +\end{verbatim} + +\item +\begin{verbatim} +\documentclass{memoir} +\usepackage{glossaries-extra} +\end{verbatim} +This is like: +\begin{verbatim} +\documentclass{memoir} +\usepackage[toc,nopostdot,noredefwarn]{glossaries} +\usepackage{glossaries-extra} +\end{verbatim} +\emph{However} +\begin{verbatim} +\documentclass{memoir} +\usepackage{glossaries} +\usepackage{glossaries-extra} +\end{verbatim} +This is like: +\begin{verbatim} +\documentclass{memoir} +\usepackage[toc,nopostdot]{glossaries} +\usepackage{glossaries-extra} +\end{verbatim} +Since by the time \styfmt{glossaries-extra} has been loaded, +\styfmt{glossaries} has already redefined \cls{memoir}'s +glossary-related commands. +\end{enumerate} + +Another noticeable change is that by default \cs{printglossary} +will now display information text in the document if the external +glossary file doesn't exist. This is explanatory text to help new +users who can't work out what to do next to complete the document +build. Once the document is set up correctly and the external files +have been generated, this text will disappear. + +This change is mostly likely to be noticed by users +with one or more redundant empty glossaries who ignore +transcript messages, explicitly use \gls{makeindex}\slash\gls{xindy} +on just the non-empty glossary (or glossaries) and use +the iterative +\ics{printglossaries} command instead of \ics{printglossary}. For example, +consider the following: +\begin{verbatim} +\documentclass{article} + +\usepackage[acronym]{glossaries} + +\makeglossaries + +\newacronym{laser}{laser}{light amplification by stimulated +emission of radiation} + +\begin{document} + +\gls{laser} + +\printglossaries + +\end{document} +\end{verbatim} +The above document will only display the list of +acronyms at the place where \ics{printglossaries} occurs. However it +will also attempt to input the \texttt{.gls} file associated with +the \texttt{main} glossary. + +If you use \gls{makeglossaries}, you'll get the warning message: +\begin{verbatim} +Warning: File 'test.glo' is empty. +Have you used any entries defined in glossary 'main'? +Remember to use package option 'nomain' if you +don't want to use the main glossary. +\end{verbatim} +(where the original file is called \texttt{test.tex}) +but if you simply call \gls{makeindex} directly to generate the +\texttt{.acr} file (without attempting to create the \texttt{.gls} +file) then the transcript file will always contain the message: +\begin{verbatim} +No file test.gls. +\end{verbatim} +This doesn't occur with \gls{makeglossaries} as it will create +the \texttt{.gls} file containing the single command \cs{null}. + +If you simply change from \styfmt{glossaries} to +\styfmt{glossaries-extra} in this document, you'll find a change in the +resulting PDF if you don't use \gls{makeglossaries} and you only +generate the \texttt{.acr} file with \gls{makeindex}. + +The transcript file will still contain the message +about the missing \texttt{.gls}, but now you'll also see +information in the actual PDF document. The simplest remedy is to +follow the advice inserted into the document at that point, which is +to add the \pkgopt{nomain} package option: +\begin{verbatim} +\documentclass{article} + +\usepackage[nomain,acronym,postdot]{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle[acronym]{long-short} + +\newacronym{laser}{laser}{light amplification by stimulated +emission of radiation} + +\begin{document} + +\gls{laser} + +\printglossaries + +\end{document} +\end{verbatim} +(Note the need to set the acronym style using +\cs{setabbreviationstyle} before \cs{newacronym}. +See \sectionref{sec:abbreviations} for further details.) + +\section{New or Modified Package Options} +\label{sec:pkgopts} + +If you haven't already loaded \styfmt{glossaries}, you can use any of +the package options provided by \styfmt{glossaries} when you load +\styfmt{glossaries-extra} and they will automatically be passed to +\styfmt{glossaries} (which \styfmt{glossaries-extra} will load). If +\styfmt{glossaries} has already been loaded, then those options will be +passed to \ics{setupglossaries}, but remember that not all of the +\styfmt{glossaries} package options may be used in that command. + +\begin{important} +This section only lists options that are either unrecognised by +the \styfmt{glossaries} package or are a modified version of options +of the same name provided by \styfmt{glossaries}. See the +\styfmt{glossaries} user manual for details about the unmodified +options. +\end{important} + +The new and modified options provided by \styfmt{glossaries-extra} +are described below: + +\begin{description} + +\item[{\pkgoptdef{debug}}] The \styfmt{glossaries} package +has a \pkgoptfmt{debug} option that allows the values +\pkgoptfmt{false}, \pkgoptfmt{true} and \pkgoptfmt{showtargets}. +The \pkgopt[showtargets]{debug} option was introduced to +\styfmt{glossaries} v4.32, so if you want to use this option +with \styfmt{glossaries-extra} you must make sure that +your version of \styfmt{glossaries} supports it. + +The \styfmt{glossaries-extra} package extends this option +to provide the additional values \pkgopt[showwrgloss]{debug} +and \pkgopt[all]{debug}. + +The \pkgopt[showwrgloss]{debug} option implements +\pkgopt[true]{debug} and uses +\begin{definition}[\DescribeMacro\glsxtrwrglossmark] +\cs{glsxtrwrglossmark} +\end{definition} +to show a mark \ensuremath{\cdot} just before the write operation +performed by the indexing commands. If you use +\pkgopt[alsoindex]{record} there will be a mark for the +write operation to the \texttt{.aux} file for \gls{bib2gls} +and a mark for the write operation to the associated glossary +file for \gls{makeindex} or \gls{xindy}. + +The \pkgopt[all]{debug} option implements both \pkgopt[showtargets]{debug} +and \pkgopt[showwrgloss]{debug}. + +\item[{\pkgoptdef{postdot}}] (New to version 1.12.) +This option is just a shortcut for \pkgopt[false]{nopostdot}. + +\item[{\pkgoptdef{postpunc}}] (New to version 1.21.) +This option sets the post-description punctuation to the given +value. For example: \pkgoptfmt{postpunc={;}} does +\begin{verbatim} +\renewcommand{\glspostdescription}{;} +\end{verbatim} +The value may also be one of the following keywords: +\begin{description} +\item[\texttt{comma}:] \pkgopt[comma]{postpunc} is +equivalent to +\begin{verbatim} +\renewcommand{\glspostdescription}{,} +\end{verbatim} + +\item[\texttt{dot}:] \pkgopt[dot]{postpunc} is +equivalent to +\begin{verbatim} +\renewcommand{\glspostdescription}{.\spacefactor\sfcode`\. } +\end{verbatim} + +\item[\texttt{none}:] \pkgopt[none]{postpunc} is +equivalent to +\begin{verbatim} +\renewcommand{\glspostdescription}{} +\end{verbatim} +\end{description} +The default definition is +\begin{verbatim} +\newcommand*{\glspostdescription}{% + \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi +} +\end{verbatim} +where the conditional is determined by the \pkgopt{nopostdot} +package option. The \pkgopt{postpunc} option removes the conditional +from the definition of \cs{glspostdescription}. The package options +\pkgopt{nopostdot} and \pkgopt{postdot} will restore the original definition of +\cs{glspostdescription}. + +The \sty{glossaries-extra-stylemods} package adjusts +the predefined styles that had a hard-coded \cs{space} +before the \gls{numberlist} so that they use \cs{glsxtrprelocation} +instead (which is defined to \cs{space}). You can therefore +redefine this command in combination with \pkgopt{postpunc} +to alter the separator before the \gls{numberlist}. +For example, to have a comma followed by \cs{hfil}: +\begin{verbatim} +\usepackage[postpunc=comma,stylemods]{glossaries-extra} +\renewcommand{\glsxtrprelocation}{\hfil} +\end{verbatim} +Be careful with doing this as it will look odd if the \gls{numberlist} is +missing. (With \gls{bib2gls} you can instead redefine +\cs{glsxtrprelocation} to do nothing and set the +location prefixes with \texttt{loc-prefix} which will only +apply if the entry has a \gls{numberlist}.) + +\item[{\pkgoptdef{accsupp}}] Load the \sty{glossaries-accsupp} +package (if not already loaded). + +If you want to define styles that can interface with the +accessibility support provided by \sty{glossaries-accsupp} use +the \cs{glsaccess\meta{xxx}} type of commands instead of +\cs{glsentry\meta{xxx}} (for example, \ics{glsaccesstext} instead of +\ics{glsentrytext}). If \sty{glossaries-accsupp} hasn't been loaded +those commands are equivalent (for example, \cs{glsaccesstext} +just does \cs{glsentrytext}) but if it has been loaded, then the +\cs{glsaccess\meta{xxx}} commands will add the accessibility +information. (See \sectionref{sec:accsupp} for further details.) + +Note that the \pkgopt{accsupp} option can only be used as +a~package option (and can't be set with \ics{glossariesextrasetup}) since the \sty{glossaries-accsupp} +package must be loaded before \styfmt{glossaries-extra} if it's +required. + +\item[{\pkgoptdef{stylemods}}] This is a +\meta{key}=\meta{value} option used to load the +\sty{glossaries-extra-stylemods} package. The value may be a +comma-separated list of options to pass to that package. (Remember +to group \meta{value} if it contains any commas.) The value may be +omitted if no options need to be passed. See \sectionref{sec:glosstylemods} +for further details. There are two special keyword values: +\pkgopt[default]{stylemods} (equivalent to omitting the value) +and \pkgopt[all]{stylemods}, which loads all the +predefined styles. + +\item[{\pkgoptdef{undefaction}}] This is a \meta{key}=\meta{value} +option, which has two allowed values: \pkgoptfmt{warn} and +\pkgoptfmt{error}. This indicates what to do if an undefined +glossary entry is referenced. The default behaviour is +\pkgopt[error]{undefaction}, which produces an error message (the +default for \styfmt{glossaries}). You can switch this to a warning +message (and ?? appearing in the text) with +\pkgopt[warn]{undefaction}. + +\begin{important} +Undefined entries can't be picked up by any commands that iterate +over a glossary list. This includes \ics{forglsentries} and +\ics{glsaddall}. +\end{important} + +Note that \ics{ifglsused} will display ?? in the document text with +\pkgopt[warn]{undefaction} if the entry hasn't been defined, as the +underlying boolean variable doesn't exist and so is neither true nor +false. (There will also be a warning in the transcript.) See +\sectionref{sec:glsunset} for further details. + +\item[{\pkgoptdef{indexcrossrefs}}] This is a boolean option. +If \pkgoptfmt{true}, this will automatically index any +cross-referenced entries that haven't been marked as used at +the end of the document. Note that this necessarily adds to +the overall document build time, especially if you have defined +a large number of entries, so this defaults to \pkgoptfmt{false}, +but it will be automatically switched on if you use the \gloskey{see} +or \gloskey{seealso} keys in any entries (unless +\pkgopt[false]{autoseeindex}). To force it off, even if you use the +\gloskey{see} or \gloskey{seealso} key, you +need to explicitly set \pkgopt{indexcrossrefs} to \pkgoptfmt{false}. + +Note that \gls{bib2gls} can automatically find dependent +entries when it parses the \texttt{.bib} source file. +The \pkgopt{record} option automatically implements +\pkgopt[false]{indexcrossrefs}. + +\item[{\pkgoptdef{autoseeindex}}]\label{opt:autoseeindex} (New to +v1.16.) This is a boolean option. If true (default), this makes +the \gloskey{see} and \gloskey{seealso} keys automatically index the +cross-reference when an entry is defined. If false, the value +of those keys will still be stored in their corresponding fields +(and can be accessed using commands like \cs{glsxtrusesee} and +\cs{glsxtruseseealso}) but cross-reference won't be automatically +indexed. + +Note that the \pkgopt[only]{record} option automatically implements +\pkgopt[false]{autoseeindex}. + +For example, if an entry is defined as +\begin{verbatim} +\newglossaryentry{foo}{name={foo},description={},see={bar,baz}} +\end{verbatim} +then with \texttt{autoseeindex=true}, this is equivalent to +\begin{verbatim} +\newglossaryentry{foo}{name={foo},description={}} +\glssee{foo}{bar,baz} +\glossariesextrasetup{indexcrossrefs=true} +\GlsXtrSetField{foo}{see}{bar,baz} +\end{verbatim} +but with \texttt{autoseeindex=false}, this is equivalent to +\begin{verbatim} +\newglossaryentry{foo}{name={foo},description={}} +\GlsXtrSetField{foo}{see}{bar,baz} +\end{verbatim} +Note that \pkgopt{indexcrossrefs} isn't automatically implemented +by the presence of the \gloskey{see} key when \pkgopt{autoseeindex} +is false. + +It's therefore possible to remove the cross-references from the +location lists and set their position within the glossary style. + +Another method of preventing the automatic indexing is to +define the entries before the external indexing files have been +opened with \cs{makeglossaries}. Since the appropriate file isn't +open, the information can't be written to it. This will need +the package option \pkgoptfmt{seenoindex=ignore} (provided by +\styfmt{glossaries}) to prevent an error occurring. + +\item[{\pkgoptdef{record}}]\label{opt:record}(New to v1.08.) This is +a \meta{key}=\meta{value} option provided for the benefit of +\gls{bib2gls} (see \sectionref{sec:bib2gls}). + +The option may only be set in the preamble and can't be used after +\cs{GlsXtrLoadResources}. If the value is missing +\pkgopt[only]{record} is assumed. Permitted values: +\begin{description} +\item[\pkgoptfmt{off}] This is the default setting. The indexing +is performed as normal using either \cs{makeglossaries} +or \cs{makenoidxglossaries}. This setting implements \pkgopt[error]{undefaction}. + +\item[\pkgoptfmt{only}] The indexing is performed by +\gls{bib2gls} (see \sectionref{sec:bib2gls}). Neither +\cs{makeglossaries} nor \cs{makenoidxglossaries} is permitted. +This setting implements \pkgopt[warn]{undefaction} and automatically +loads the supplementary \sty{glossaries-extra-bib2gls} package. +(There should be no need to explicitly load \sty{glossaries-extra-bib2gls}.) + +The glossaries should be displayed using \cs{printunsrtglossary} +(or \cs{printunsrtglossaries}). + +The document build process is (assuming the file is called +\texttt{myDoc.tex}): +\begin{verbatim} +pdflatex myDoc +bib2gls myDoc +pdflatex myDoc +\end{verbatim} + +Note that \pkgopt[only]{record} will prevent the \gloskey{see} from +automatically implementing \cs{glssee}. (\gls{bib2gls} deals with the +\gloskey{see} field.) You may explicitly use \cs{glssee} in the +document, but \gls{bib2gls} will ignore the cross-reference if the +\gloskey{see} field was already set for that entry. + +The \pkgopt[only]{record} option will automatically set +the \styfmt{glossaries} package's \pkgopt[none]{sort} option +if available. (That option value was only introduced to +\styfmt{glossaries} v4.30.) + +\item[\pkgoptfmt{nameref}] (New to v1.37 and requires \gls{bib2gls} +v1.8+.) This option is like \pkgopt[only]{record} but additionally +records the current label information given by \cs{@currentlabel} +and \cs{@currentHref}, and provides a more reliable way of saving +the \cs{theH}\meta{counter} for the given location. This option +requires \sty{hyperref} otherwise it will fall back on the usual +location records. Remember that \cs{@currentHref} is always globally +updated whenever \cs{refstepcounter} is used, but \cs{@currentlabel} +isn't. This can cause some undesired side-effects with some settings. Remember also that the \pkgopt{indexcounter} option +increments the associated counter every time an entry is indexed, +which affects this option. See \sectionref{sec:recordnameref} for +further details. + +This option is best used with \pkgopt[chapter]{counter} or +\pkgopt[section]{counter} if you want the title included in the +location list. If the indexing counter is the default +\ctr{page}, only the location number is shown. Similarly for +\pkgopt[equation]{counter} (or \pkgopt[true]{equations}). + +\item[\pkgoptfmt{alsoindex}] This is a hybrid setting +that uses \gls{bib2gls} to fetch entry information from +\texttt{.bib} files, but uses \gls{makeindex} or \gls{xindy} +to create the glossary files. This option should be used +with \cs{makeglossaries} but not with its optional argument. +This option should not be used with \cs{makenoidxglossaries}. +You may need to change the transcript file used by \gls{bib2gls} +to avoid a clash with the transcript file used by +\gls{makeindex} or \gls{xindy}. (This can be done with +\gls{bib2gls}['s] \verb|--log-file| or \verb|-t| option.) + +The glossaries should be displayed using \cs{printglossary} +(or \cs{printglossaries}). This option is expected to be used with +\gls{bib2gls}'s \texttt{sort=none} setting and so +\sty{glossaries-extra-bib2gls} is not automatically loaded. + +The document build process is (assuming the file is called +\texttt{myDoc.tex}): +\begin{verbatim} +pdflatex myDoc +bib2gls myDoc +pdflatex myDoc +makeglossaries myDoc +pdflatex myDoc +\end{verbatim} +\end{description} + +With the recording on (\pkgopt[only]{record} or +\pkgopt[alsoindex]{record}), any of the commands that would typically +index the entry (such as \cs{gls}, \cs{glstext} or \cs{glsadd}) +will add a \cs{glsxtr@record} entry to the \texttt{.aux} file. +\gls{bib2gls} can then read these lines to find +out which entries have been used. (Remember that commands like +\cs{glsentryname} don't index, so any use of these commands won't +add a corresponding \cs{glsxtr@record} entry to the \texttt{.aux} +file.) See \sectionref{sec:bib2gls} for further details. + +\item[{\pkgoptdef{equations}}] (New to v1.37.) This option will +cause the default location counter to automatically switch +to \ctr{equation} when inside a numbered equation environment, such +as \env{equation} or \env{align}. The counter can be explicitly +overridden with \gloskey[glslink]{counter} in the optional +arguments of commands like \cs{glslink} or \cs{gls} as usual. + +\item[{\pkgoptdef{floats}}] (New to v1.37.) This option will +cause the default location counter to automatically switch +to the corresponding counter when inside a floating environment, +such as \env{figure} or \env{table}. The counter can be explicitly +overridden with \gloskey[glslink]{counter} in the optional +arguments of commands like \cs{glslink} or \cs{gls} as usual. +Remember that within floats it's the \cs{caption} command that actually uses +\cs{refstepcounter}, so indexing before the caption will result in +the wrong reference. The commands for use in captions and sections, +such as \cs{glsfmttext} and \cs{glsfmtshort}, don't index. (See +\sectionref{sec:headtitle}). You may +want to consider using \cs{glsadd} after the caption (not before). For example: +\begin{verbatim} +\begin{figure}[htbp] + \centering + \includegraphics{example-image} + \caption{Sample \glsfmttext{foobar} figure} + \glsadd{foobar} +\end{figure} +\end{verbatim} + +\item[{\pkgoptdef{indexcounter}}] (New to v1.29.) This option (which +doesn't take a value) is primarily intended for use with +\gls{bib2gls} (v1.4+) and \sty{hyperref}. It can be used with +\gls{makeindex} or \gls{xindy} but it will interfere with the +\gls{numberlist} collation, so you won't have ranges and you'll have +duplicate page numbers present (but each page number will link to +the relevant part of the page where the indexing occurred). This +option automatically implements \pkgopt[wrglossary]{counter}. + +\begin{important} +This option works by incrementing \ctr{wrglossary} and +adding \ics{label}. This can cause a problem if the indexing +occurs in an \env{equation} environment as \sty{amsmath} +forbids multiple occurrences of \cs{label} (resulting in the +\qt{Multiple \cs{label}'s} error). It's best to change the counter +to \ctr{page} or \ctr{equation} when in maths mode with this option. +For example: +\begin{verbatim} +\renewcommand{\glslinkpresetkeys}{% + \ifmmode \setkeys{glslink}{counter=equation}\fi} +\renewcommand{\glsaddpresetkeys}{% + \ifmmode \setkeys{glossadd}{counter=equation}\fi} +\end{verbatim} +\end{important} + +By default (with \sty{hyperref}), the page numbers in +\glspl{numberlist} link back to the top of the relevant page +(provided the format uses \cs{glshypernumber}). The +\pkgopt{indexcounter} option is designed to link back to the place +within the page where the indexing occurred. It does this by +creating a new counter (called \ctr{wrglossary}) that's incremented +with \cs{refstepcounter} every time an entry is indexed (but not via +cross-referencing commands, such as \cs{glssee}). A \cs{label} is +placed immediately after the increment command allowing the +back-referenced to be obtained with \cs{pageref}. The location, as +seen by the indexing application, is the value of the +\ctr{wrglossary} counter but this value is substituted with the page +reference when \gls{numberlist} is typeset. Since the counter is +used by all entries and is incremented every time any indexing +occurs, neither \gls{makeindex} nor \gls{xindy} can correctly +collate the lists. For example, if the first term to be referenced +is indexed three times on page~5 without any intervening terms then +the actual locations obtained from \ctr{wrglossary} will be 1, 2 and +3, which \gls{xindy} and \gls{makeindex} will try to form into the +range 1--3, but they should actually all simply appear as page~5, +whereas it can actually end up with 5--5. Conversely, a range may +not be formed where it would naturally occur if just the \ctr{page} +counter was used. + +Since \gls{bib2gls} is designed specifically to work with +\styfmt{glossaries-extra}, \gls{bib2gls} (v1.4+) will check for +\ctr{wrglossary} locations. If the default +\texttt{--merge-wrglossary-records} is on, then any records for the +same page for a given entry will be merged. In the above example +with three references on page~5, only a single record for page~5 for +that entry will be added to the \gls{numberlist} and it will link +back to the first instance on that page. Whereas if you use the +\texttt{--no-merge-wrglossary-records} switch, the \gls{numberlist} +will contain three instance of page~5, with each linking to the +corresponding place on that page. In both cases, consecutive pages +can form ranges, but it may look strange in the second case. + +See the \gls{bib2gls} documentation for the +\texttt{save-index-counter} resource option for more details. + +\item[{\pkgoptdef{docdef}}] This option governs the use of +\cs{newglossaryentry}. It was originally a boolean option, +but as from version 1.06, it can now take one of the following values (if +the value is omitted, \pkgoptfmt{true} is assumed): +\begin{itemize} +\item[{\pkgopt[false]{docdef}}] \ics{newglossaryentry} is not +permitted in the \env{document} environment (default). + +\item[{\pkgopt[true]{docdef}}] \cs{newglossaryentry} behaves as it +does in the base \styfmt{glossaries} package. That is, where +its use is permitted in the \env{document} environment, it +uses the \texttt{.glsdefs} temporary file to store the entry +definitions so that on the next \LaTeX\ run the entries are +defined at the beginning of the \env{document} environment. +This allows the entry information to be referenced in the glossary, +even if the glossary occurs before \cs{newglossaryentry}. +(For example, when the glossary is displayed in the front matter.) +This method of saving the definitions for the next \LaTeX\ run +has drawbacks that are detailed in the \styfmt{glossaries} user +manual. + +Remember that if \cs{newglossaryentry} wouldn't be allowed +in the \env{document} environment with the +base \styfmt{glossaries} package, then it still won't +be allowed with \pkgopt[true]{docdefs}. +If your glossaries occur at the end of the document, consider using +\pkgopt[restricted]{docdef} instead. + +\item[{\pkgopt[restricted]{docdef}}] (new to version 1.06) +\ics{newglossaryentry} is permitted in the \env{document} +environment without using the \texttt{.glsdefs} file. This means +that all entries must be defined before the glossary is displayed, +but it avoids the complications associated with saving the +entry details in a temporary file. You will still need to take +care about any changes made to characters that are required +by the \meta{key}=\meta{value} mechanism (that is, the comma and +equal sign) and any \gls{makeindex} or \gls{xindy} character that +occurs in the \gloskey{sort} key or label. If any of those +characters are made active in the document, then it can cause +problems with the entry definition. This option will allow +\cs{newglossaryentry} to be used in the document with +\cs{makenoidxglossaries}, but note that \cs{longnewglossaryentry} +remains a preamble-only command. + +With this option, if an entry appears in the glossary before +it has been defined, an error will occur (or a warning if +the \pkgopt[warn]{undefaction} option is used.) If you edit your +document and either remove an entry or change its label, you may +need to delete the document's temporary files (such as the +\texttt{.aux} and \texttt{.gls} files). + +\item[{\pkgopt[atom]{docdef}}] (new to version 1.34) +This option behaves like \pkgopt[restricted]{docdef} but creates the +\texttt{.glsdefs} file for +\href{https://atom.io/packages/autocomplete-glossaries}{atom's +autocomplete support}. This file isn't input by +\styfmt{glossaries-extra} and so associated problems with the use of +this file are avoided, but it allows the autocomplete support to +find the labels in the file. As with \pkgopt[restricted]{docdef}, +entries may be defined in the preamble or anywhere in the document, +but they may only be referenced after they have been defined. +Entries must be defined before the associated glossary is displayed. + +\end{itemize} + +The \styfmt{glossaries} package allows +\cs{newglossaryentry} within the \env{document} environment (when +used with \gls{makeindex} or \gls{xindy}) but the user manual warns +against this usage. By default the \styfmt{glossaries-extra} package +\emph{prohibits} this, only allowing definitions within the +preamble. If you are really determined to define entries in the +\env{document} environment, despite all the associated drawbacks, +you can restore this with \pkgopt[true]{docdef}. Note that this +doesn't change the prohibitions that the \styfmt{glossaries} +package has in certain circumstances (for example, when using +\qt{option~1}). See the \styfmt{glossaries} user manual for further +details. A better option if document definitions are required +is \pkgopt[restricted]{docdef}. Only use \pkgopt[true]{docdef} +if document definitions are necessary and one or more of the +glossaries occurs in the front matter. + +\begin{sloppypar} +This option affects commands that internally use +\cs{newglossaryentry}, such as \cs{newabbreviation}, but not +the \qt{on-the-fly} commands described in \sectionref{sec:onthefly}. +\end{sloppypar} + +\item[{\pkgoptdef{nomissingglstext}}] This is a boolean option. +If true, this will suppress the warning written to the transcript +and the warning text that will appear in the +document if the external glossary files haven't been generated due +to an incomplete document build. However, it's probably simpler +just to fix whatever has caused the failure to build the external +file or files. + +\item[{\pkgoptdef{abbreviations}}] This option has no value and can't +be cancelled. If used, +it will automatically create a new glossary with the label +\texttt{abbreviations} and redefines \cs{glsxtrabbrvtype} to this +label. In addition, it defines a shortcut command +\begin{definition}[\DescribeMacro\printabbreviations] +\cs{printabbreviations}\oarg{options} +\end{definition} +which is equivalent to +\begin{alltt} +\cs{printglossary}[type=\cs{glsxtrabbrvtype},\meta{options}] +\end{alltt} +If \sty{glossaries-extra-bib2gls} is also loaded then this option +will additionally provide: +\begin{definition}[\DescribeMacro\printunsrtabbreviations] +\cs{printunsrtabbreviations}\oarg{options} +\end{definition} +which uses \ics{printunsrtglossary}. + +The title of the new glossary is given by +\begin{definition}[\DescribeMacro\abbreviationsname] +\cs{abbreviationsname} +\end{definition} +If this command is already defined, it's left unchanged. Otherwise +it's defined to \qt{Abbreviations} if \sty{babel} hasn't been loaded +or \cs{acronymname} if \sty{babel} has been loaded. However, if +you're using \sty{babel} it's likely you will need to change this. +(See \sectionref{sec:lang} for further details.) + +\begin{important} +If you don't use the \pkgopt{abbreviations} package option, +the \cs{abbreviationsname} command won't be defined (unless it's +defined by an included language file). +\end{important} + +If the \pkgopt{abbreviations} option is used and the +\pkgopt{acronym} option provided by the \styfmt{glossaries} +package hasn't been used, then \ics{acronymtype} +will be set to \ics{glsxtrabbrvtype} so that acronyms defined with +\ics{newacronym} can be added to the list of abbreviations. If you +want acronyms in the \texttt{main} glossary and other abbreviations in the +\texttt{abbreviations} glossary then you will need to redefine +\cs{acronymtype} to \texttt{main}: +\begin{verbatim} +\renewcommand*{\acronymtype}{main} +\end{verbatim} + +Note that there are no analogous options to the \styfmt{glossaries} +package's \pkgopt{acronymlists} option (or associated commands) +as the abbreviation mechanism is handled differently with +\styfmt{glossaries-extra}. + +\item[{\pkgoptdef{symbols}}] This is passed to \styfmt{glossaries} but +will additionally define +\begin{definition}[\DescribeMacro\glsxtrnewsymbol] +\cs{glsxtrnewsymbol}\oarg{options}\marg{label}\marg{symbol} +\end{definition} +which is equivalent to +\begin{alltt} +\cs{newglossaryentry}\marg{label}\{name=\marg{symbol}, + sort=\marg{label},type=symbols,category=symbol,\meta{options}\} +\end{alltt} +Note that the \gloskey{sort} key is set to the \meta{label} +not the \meta{symbol} as the symbol will likely contain commands. + +If \sty{glossaries-extra-bib2gls} is also loaded then this option +will additionally provide: +\begin{definition}[\DescribeMacro\printunsrtsymbols] +\cs{printunsrtsymbols}\oarg{options} +\end{definition} +which uses \ics{printunsrtglossary}. + +\item[{\pkgoptdef{numbers}}] This is passed to \styfmt{glossaries} but +will additionally define +\begin{definition}[\DescribeMacro\glsxtrnewnumber] +\cs{glsxtrnewnumber}\oarg{options}\marg{number} +\end{definition} +which is equivalent to +\begin{alltt} +\cs{newglossaryentry}\marg{label}\{name=\marg{number}, + sort=\marg{label},type=numbers,category=number,\meta{options}\} +\end{alltt} + +If \sty{glossaries-extra-bib2gls} is also loaded then this option +will additionally provide: +\begin{definition}[\DescribeMacro\printunsrtnumbers] +\cs{printunsrtnumbers}\oarg{options} +\end{definition} +which uses \ics{printunsrtglossary}. + +\item[{\pkgoptdef{acronyms} (or \pkgoptdef{acronym})}] This is +passed to \styfmt{glossaries} but if +\sty{glossaries-extra-bib2gls} is also loaded then this option +will additionally provide: +\begin{definition}[\DescribeMacro\printunsrtacronyms] +\cs{printunsrtacronyms}\oarg{options} +\end{definition} +which uses \ics{printunsrtglossary}. + +\begin{important} +This option defines a new glossary with the label \texttt{acronym} +not \texttt{acronyms}. You may find it easier to reference it +with the command \ics{acronymtype}. +\end{important} + +\item[{\pkgoptdef{index}}] This is +passed to \styfmt{glossaries} but if +\sty{glossaries-extra-bib2gls} is also loaded then this option +will additionally provide: +\begin{definition}[\DescribeMacro\printunsrtindex] +\cs{printunsrtindex}\oarg{options} +\end{definition} +which uses \ics{printunsrtglossary}. + +\item[{\pkgoptdef{shortcuts}}] Unlike the \styfmt{glossaries} package +option of the same name, this option isn't boolean but has multiple +values: +\begin{itemize} +\item \pkgopt[acronyms]{shortcuts} (or \pkgopt[acro]{shortcuts}): +set the shortcuts provided by the \styfmt{glossaries} package for +acronyms (such as \cs{ac}). Note that the short and long forms don't +use \cs{glsxtrshort} and \cs{glsxtrlong} but use the original +\cs{acrshort} and \cs{acrlong}, which don't recognise multiple +abbreviation styles. The better option with \styfmt{glossaries-extra} +is \pkgopt[ac]{shortcuts}. + +\item \pkgopt[ac]{shortcuts}: +set the shortcuts provided by the \styfmt{glossaries} package for +acronyms (such as \cs{ac}) but uses the \styfmt{glossaries-extra} +interface (such as \cs{glsxtrshort} rather than \cs{acrshort}). +In this case \cs{ac} is defined as \cs{cgls} rather than +\cs{gls}. + +\item \pkgopt[abbreviations]{shortcuts} (or +\pkgopt[abbr]{shortcuts}): +set the abbreviation shortcuts provided by \styfmt{glossaries-extra}. (See +\sectionref{sec:abbrshortcuts}.) These settings don't switch on the +acronym shortcuts provided by the \styfmt{glossaries} package. + +\item \pkgopt[other]{shortcuts}: set the \qt{other} +shortcut commands, but not the shortcut commands for abbreviations +or the acronym shortcuts provided by \styfmt{glossaries}. +The \qt{other} shortcuts are: +\begin{itemize} +\item \ics{newentry} equivalent to \ics{newglossaryentry} +\item \ics{newsym} equivalent to \ics{glsxtrnewsymbol} (see the +\pkgopt{symbols} option). +\item \ics{newnum} equivalent to \ics{glsxtrnewnumber} (see the +\pkgopt{numbers} option). +\end{itemize} + +\item \pkgopt[all]{shortcuts} (or \pkgopt[true]{shortcuts}): +implements \pkgopt[ac]{shortcuts}, \pkgopt[abbreviations]{shortcuts} +and \pkgopt[other]{shortcuts}. + +\item \pkgopt[none]{shortcuts} (or \pkgopt[false]{shortcuts}): +don't define any of the shortcut commands (default). +\end{itemize} + +Note that multiple invocations of the \pkgopt{shortcuts} option +\emph{within the same option list} will override each other. +\end{description} + +After the \styfmt{glossaries-extra} package has been loaded, you can +set available options using +\begin{definition}[\DescribeMacro\glossariesextrasetup] +\cs{glossariesextrasetup}\marg{options} +\end{definition} +The \pkgopt{abbreviations} and \pkgopt{docdef} options may only be +used in the preamble. Additionally, \pkgopt{docdef} can't be used +after \ics{makenoidxglossaries}. + +\chapter{Modifications to Existing Commands and Styles} +\label{sec:modifications} + +The \styfmt{glossaries} package provides \ics{nopostdesc} +which may be used in the \gloskey{description} to suppress +the post-description hook. The \styfmt{glossaries-extra} package +provides another command +\begin{definition}[\DescribeMacro\glsxtrnopostpunc] +\cs{glsxtrnopostpunc} +\end{definition} +which has a similar function but only suppresses the +post-description punctuation. It doesn't suppress the use of +\cs{glsxtrpostdescription} which allows the use of +category-dependent post-description hooks. (Note that the +punctuation, which is in the original base hook \cs{glspostdescription}, +comes after the extended post-description hook +\cs{glsxtrpostdescription} not before.) The post-description hook +can counter-act the effect of \cs{glsxtrnopostpunc} using +\begin{definition}[\DescribeMacro\glsxtrrestorepostpunc] +\cs{glsxtrrestorepostpunc} +\end{definition} +These commands have no effect outside of the glossary (except with +standalone entries that use \cs{glsxtractivatenopost} and +\cs{glspostdescription}, see \sectionref{sec:glossentry}). + +The \styfmt{glossaries} package provides +\begin{definition}[\DescribeMacro\glsseeitemformat] +\cs{glsseeitemformat}\marg{label} +\end{definition} +to format items in a cross-reference list (identified with the +\gloskey{see} key or \cs{glssee}). This was originally defined to +use \cs{glsentryname}\marg{label} since it makes more sense for the +cross-reference to match the way the term appears in the glossary. +Unfortunately this caused a problem when the \gloskey{name} field +was sanitized, which used to be the default setting, so +\styfmt{glossaries} v3.0 changed the default definition of this +command to use \cs{glsentrytext} instead. Since the \gloskey{name} +and \gloskey{text} field are quite often the same, this change +usually doesn't have a noticeable effect. However, now that the +\gloskey{name} field is no longer sanitized (following the redesign +of \styfmt{glossaries} v4.0) it makes more sense to restore this +command to its original behaviour, but to take account of +abbreviations \styfmt{glossaries-extra} redefines this as: +\begin{verbatim} +\renewcommand*{\glsseeitemformat}[1]{% + \ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}% +} +\end{verbatim} +If you want to restore the \styfmt{glossaries} v3.0+ definition just do: +\begin{verbatim} +\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} +\end{verbatim} +The \sty{glossaries-extra} package provides \ics{glsxtrhiername} +and its case-changing variants that may be used within +the definition of \cs{glsseeitemformat} if required. These +display the hierarchy for sub-entries rather than just the name, +which may be more helpful in cross-references. See +\sectionref{sec:see} for further details. + +The commands used by \styfmt{glossaries} to automatically produce an +error if an entry is undefined (such as \ics{glsdoifexists}) are +changed to take the \pkgopt{undefaction} option into account. + +The \ics{newignoredglossary}\marg{type} command now (as from v1.11) has a starred +version that doesn't automatically switch off the hyperlinks. +This starred version may be used with the \catattr{targeturl} +attribute to create a link to an external URL. (See +\sectionref{sec:categories} for further details.) +As from v1.12 both the starred and unstarred version check +that the glossary doesn't already exist. (The \styfmt{glossaries} +package omits this check.) + +You can now provide an ignored glossary with: +\begin{definition}[\DescribeMacro\provideignoredglossary] +\cs{provideignoredglossary}\marg{type} +\end{definition} +which will only define the glossary if it doesn't already exist. +This also has a starred version that doesn't automatically switch +off hyperlinks. + +The individual glossary displaying commands \ics{printglossary}, +\ics{printnoidxglossary} and \cs{printunsrtglossary} have two extra +keys: + +\begin{itemize} +\item \gloskey[printglossary]{target}. This is a boolean key which can +be used to switch off the automatic hypertarget for each entry. +Unlike \cs{glsdisablehyper} this doesn't switch off hyperlinks, so +any cross-references within the glossary won't be affected. This is +a way of avoiding duplicate target warnings if a glossary needs to +be displayed multiple times. +\item +\gloskey[printglossary]{targetnameprefix}\texttt{=}\marg{prefix}. Another way +of avoiding duplicate target names is to set a prefix +used for the names. Unlike changing \cs{glolinkprefix} this doesn't affect +any hyperlinks (such as those created with \cs{gls}). +\item +\gloskey[printglossary]{prefix}\texttt{=}\marg{prefix}. If you do +actually want to locally change \cs{glolinkprefix}, you can use +the \gloskey{prefix} key instead. You need to use the matching +\gloskey[glslink]{prefix} key in commands like \cs{gls}. + +\item +\gloskey[printglossary]{label}\texttt{=}\marg{label}. Labels +the glossary with \texttt{\cs{label}\marg{label}} and also +defines \cs{@currentlabelname} to the glossary's TOC title +(to provide text for \cs{nameref}). You can also set the +label before the glossary using: +\begin{definition}[\DescribeMacro\glsxtrsetglossarylabel] +\cs{glsxtrsetglossarylabel}\marg{label} +\end{definition} +but take care of duplicate labels if it's not scoped. +\end{itemize} + +The \cs{newglossaryentry} command has three new keys: +\begin{itemize} +\item \gloskey{category}, which sets the category label for the given +entry. By default this is \texttt{general}. See +\sectionref{sec:categories} for further information about +categories. +\item \gloskey{alias}, which allows an entry to be alias to another +entry. See \sectionref{sec:alias} for further details. +\item \gloskey{seealso}, which performs much like \gloskey{see}, but +allows for separate \qt{see} and \qt{see also} treatment. +See \sectionref{sec:see} for further details. +\end{itemize} +The test file \texttt{example-glossaries-xr.tex} contains +dummy entries with a mixture of \gloskey{see}, \gloskey{alias} +and \gloskey{seealso} keys for use with minimal working examples. +There are also \texttt{example-glossaries-*.bib} files that +correspond to each \texttt{example-glossaries-*.tex} file +for testing \gls{bib2gls}. + +The \cs{longnewglossaryentry} command now has a starred version +(as from v1.12) that doesn't automatically insert +\begin{verbatim} +\leavevmode\unskip\nopostdesc +\end{verbatim} +at the end of the description field. +\begin{definition}[\DescribeMacro\longnewglossaryentry] +\cs{longnewglossaryentry}*\marg{label}\marg{options}\marg{description} +\end{definition} +The \gloskey{descriptionplural} key is left unset unless explicitly +set in \meta{options}. + +The unstarred version no longer hard-codes the above code (which +removes trailing space and suppresses the post-description hook) but instead +uses: +\begin{definition}[\DescribeMacro\glsxtrpostlongdescription] +\cs{glsxtrpostlongdescription} +\end{definition} +This can be redefined to allow the post-description hook to work +but retain the \cs{unskip} part if required. +For example: +\begin{verbatim} +\renewcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip} +\end{verbatim} +This will discarded unwanted trailing space at the end of the description +but won't suppress the post-description hook. + +The unstarred version also alters the base \sty{glossaries} package's +treatment of the \gloskey{descriptionplural} key. Since a +plural description doesn't make much sense for multi-paragraph +descriptions, the default behaviour with +\sty{glossaries-extra}'s +\cs{longnewglossaryentry} is to simply leave the plural description +unset unless explicitly set using the \gloskey{descriptionplural} +key. The \styfmt{glossaries.sty} version of this command sets the description's +plural form to the same as the singular.\footnote{The +\gloskey{descriptionplural} key is a +throwback to the base package's original acronym mechanism before the introduction of +the \gloskey{long} and \gloskey{short} keys, where the long form was +stored in the \gloskey{description} field and the short form was stored in the +\gloskey{symbol} field.} + +Note that this modified unstarred version doesn't append +\cs{glsxtrpostlongdescription} to the description's plural form. + +The \ics{newterm} command (defined through the \pkgopt{index} package +option) is modified so that the category defaults to \category{index}. +The \ics{newacronym} command is modified to use the new abbreviation +interface provided by \styfmt{glossaries-extra}. +(See \sectionref{sec:abbreviations}.) + +The \cs{makeglossaries} command now has an optional argument. +\begin{definition}[\DescribeMacro\makeglossaries] +\cs{makeglossaries}\oarg{list} +\end{definition} +If \meta{list} is empty, \cs{makeglossaries} behaves as per +its original definition in the \styfmt{glossaries} package, +otherwise \meta{list} can be a comma-separated list of glossaries +that need processing with an external indexing application. + +This command is not permitted with the \pkgopt[only]{record} +package option. Without the optional argument, it's permitted +with \pkgopt[alsoindex]{record}. With the optional argument, +it's only permitted with the default \pkgopt[off]{record}. + +It should then be possible to use \cs{printglossary} for those +glossaries listed in \meta{list} and \cs{printnoidxglossary} +for the other glossaries. (See the accompanying file +\texttt{sample-mixedsort.tex} for an example.) + +\begin{important} +If you use the optional argument \meta{list}, you can't define +entries in the document (even with the \pkgopt{docdef} option). +\end{important} + +You will need at least version 2.20 of \gls{makeglossaries} or at +least version 1.3 of the Lua alternative \gls{makeglossaries-lite.lua} (both distributed +with \styfmt{glossaries} v4.27) to allow for this use of +\cs{makeglossaries}\oarg{list}. Alternatively, use the +\pkgopt{automake} option. + +\section{Entry Indexing} +\label{sec:wrglossary} + +As from version 1.31, there is a new command like \cs{glsadd} +where the mandatory argument is a comma-separated list +of labels: +\begin{definition}[\DescribeMacro\glsaddeach] +\cs{glsaddeach}\oarg{options}\marg{list} +\end{definition} +This simply iterates over \meta{list} and does +\cs{glsadd}\oarg{options}\marg{label} for each entry in the list. + +As from version 1.37, you can make commands like \cs{gls} or +\cs{glslink} automatically use \cs{glsadd} with specific options +when a given format is used (identified with +\texttt{format=\marg{format}} in the optional argument of the +corresponding \cs{gls}, \cs{glslink} etc). +\begin{definition}[\DescribeMacro\GlsXtrAutoAddOnFormat] +\cs{GlsXtrAutoAddOnFormat}\oarg{label}\marg{format list}\marg{glsadd options} +\end{definition} +The optional argument \meta{label} defaults to \cs{glslabel} and +indicates the label to use in \cs{glsadd} and so needs to be +expandable. The \meta{format list} is a comma-separated list +of format values that will trigger the automated adding. The +\meta{glsadd options} are the options to pass to \cs{glsadd} with +\texttt{format=\marg{format}} prepended to the list. + +For example, with: +\begin{verbatim} +\GlsXtrAutoAddOnFormat{hyperbf}{counter=chapter} +\end{verbatim} +then \verb|\gls[format=hyperbf]{sample}| will be equivalent to +\begin{verbatim} +\glsadd[format=hyperbf,counter=chapter]{sample}\gls[format=hyperbf]{sample} +\end{verbatim} +Note that the explicit range markers will prevent a match +unless you include them in \meta{format list} (in which case, be +sure to add both the start and end formats). + +Here's another example: +\begin{verbatim} +\GlsXtrAutoAddOnFormat[dual.\glslabel]{hyperbf}{} +\end{verbatim} +In this case \verb|\gls[format=hyperbf]{sample}| will now be +equivalent to: +\begin{verbatim} +\glsadd[format=hyperbf]{dual.sample}\gls[format=hyperbf]{sample} +\end{verbatim} + +\begin{important} +\cs{GlsXtrAutoAddOnFormat} is not applied to \cs{glsadd} +as it could cause an infinite loop. +\end{important} +The \styfmt{glossaries-extra} package provides extra keys for +commands like \cs{gls} and \cs{glstext}: +\begin{description} +\item[{\gloskey[glslink]{noindex}}] This is a boolean key. If true, +this suppresses the indexing. (That is, it prevents \cs{gls} or +whatever from adding a line to the external glossary file.) +This is more useful than the \pkgopt{indexonlyfirst} package option +provided by \styfmt{glossaries}, as the \gls{firstuse} might not be the most +pertinent use. (If you want to apply \pkgopt{indexonlyfirst} +to selected entries, rather than all of them, you can use +the \catattr{indexonlyfirst} attribute, see +\sectionref{sec:categories} for further details.) +Note that the \gloskey[glslink]{noindex} key isn't available +for \ics{glsadd} (and \ics{glsaddall}) since the whole purpose +of that command is to index an entry. + +\item[{\gloskey[glslink]{wrgloss}}] (New to v1.14.) +This is may only take the +values \optfmt{before} or \optfmt{after}. By default, commands +that both index and display link text (such as \cs{gls}, +\cs{glstext} and \cs{glslink}), perform the indexing before +the link text as the indexing creates a whatsit that can cause +problems if it occurs after the link text. However, it may +be that in some cases (such as long phrases) you may actually +want the indexing performed after the link text. In this +case you can use \texttt{wrgloss=after} for specific +instances. Note that this option doesn't +have an effect if the indexing has been suppressed through +other settings (such as \gloskey[glslink]{noindex}). + +The default value is set up using +\begin{definition}[\DescribeMacro\glsxtrinitwrgloss] +\cs{glsxtrinitwrgloss} +\end{definition} +which is defined as: +\begin{verbatim} +\newcommand*{\glsxtrinitwrgloss}{% + \glsifattribute{\glslabel}{wrgloss}{after}% + {% + \glsxtrinitwrglossbeforefalse + }% + {% + \glsxtrinitwrglossbeforetrue + }% +} +\end{verbatim} +This sets the conditional +\begin{definition}[\DescribeMacro\ifglsxtrinitwrglossbefore] +\cs{ifglsxtrinitwrgloss} +\end{definition} +which is used to determine where to perform the indexing. + +This means you can set the \catattr{wrgloss} +attribute to \optfmt{after} to automatically use this as +the default for entries with that category attribute. (Note that +adding \gloskey[glslink]{wrgloss} to the default options +in \ics{GlsXtrSetDefaultGlsOpts} will override +\cs{glsxtrinitwrgloss}.) + +\item[{\gloskey[glslink]{hyperoutside}}] (New to v1.21.) This is a +boolean key. The default is \texttt{hyperoutside=true}, which puts +the hyperlink outside \cs{glstextformat}, so that commands like +\cs{gls} will effectively do +\begin{alltt} +\cs{hyperlink}\marg{target}\{\cs{glstextformat}\marg{link text}\} +\end{alltt} +This is the same behaviour as with the base \styfmt{glossaries} +package. With \texttt{hyperoutside=false}, \cs{hyperlink} is placed +inside the argument of \cs{glstextformat}: +\begin{alltt} +\cs{glstextformat}\{\cs{hyperlink}\marg{target}\marg{link text}\} +\end{alltt} +You can use the \catattr{hyperoutside} category attribute to set +the default for a given category. This can be combined +with the use of the \catattr{textformat} attribute to counteract +any interference caused by \cs{hyperlink}. +For example: +\begin{verbatim} +\glssetcategoryattribute{mathrelation}{hyperoutside}{false} +\end{verbatim} +will set \texttt{hyperoutside=false} for all entries that are +assigned to the category \texttt{mathrelation} and +\begin{verbatim} +\glssetcategoryattribute{mathrelation}{textformat}{mathrel} +\end{verbatim} +will use \cs{mathrel} instead of \cs{glstextformat} resulting in: +\begin{alltt} +\cs{mathrel}\{\cs{hyperlink}\marg{target}\marg{link text}\} +\end{alltt} +for entries with the \gloskey{category} key set to +\texttt{mathrelation}. + +\item[{\gloskey[glslink]{textformat}}] This key must have a +control sequence name as its value. The command formed from +this name must exist and must take one argument. (Use +\texttt{relax} for default behaviour.) If set, this overrides +the \catattr{textformat} attribute and \cs{glstextformat}. +See the \sty{soul} example in \sectionref{sec:glsunset}. + +\item[{\gloskey[glslink]{prefix}}] Locally redefines +\ics{glolinkprefix} to the given value. It should match the prefix +for the desired glossary. + +\item[{\gloskey[glslink]{thevalue}}] Explicitly set the location to +this value (see below). + +\item[{\gloskey[glslink]{theHvalue}}] Set the corresponding +hyperlink location (see below). + +\end{description} + +There is a new hook that's used each time indexing information is +written to the external glossary files: +\begin{definition}[\DescribeMacro\glsxtrdowrglossaryhook] +\cs{glsxtrdowrglossaryhook}\marg{label} +\end{definition} +where \meta{label} is the entry's label. This does nothing by +default but may be redefined. (See, for example, the +accompanying sample file \texttt{sample-indexhook.tex}, +which uses this hook to determine which entries haven't been +indexed.) + +There's also a new hook (from v1.26) that's used immediately +before the options are set by the \cs{gls}-like and +\cs{glstext}-like commands: +\begin{definition}[\DescribeMacro\glslinkpresetkeys] +\cs{glslinkpresetkeys} +\end{definition} +(The base package provides \ics{glslinkpostsetkeys} that's +used immediately after the options are set.) + +As from version 1.30 there are also similar hooks for \cs{glsadd}: +\begin{definition}[\DescribeMacro\glsaddpresetkeys] +\cs{glsaddpresetkeys} +\end{definition} +and +\begin{definition}[\DescribeMacro\glsaddpostsetkeys] +\cs{glsaddpostsetkeys} +\end{definition} +For example, to default to using the \ctr{equation} counter in maths +mode: +\begin{verbatim} +\renewcommand{\glslinkpresetkeys}{% + \ifmmode \setkeys{glslink}{counter=equation}\fi} +\renewcommand{\glsaddpresetkeys}{% + \ifmmode \setkeys{glossadd}{counter=equation}\fi} +\end{verbatim} +In this case, the counter can be overridden with an explicit use of +\gloskey{counter} in the optional argument of \cs{gls} or +\cs{glsadd}. (As from version 1.37, a simpler method is to just use +the \pkgopt{equations} package option.) + +Alternatively, to enforce this (overriding the option +argument): +\begin{verbatim} +\renewcommand{\glslinkpostsetkeys}{% + \ifmmode \setkeys{glslink}{counter=equation}\fi} +\renewcommand{\glsaddpostsetkeys}{% + \ifmmode \setkeys{glossadd}{counter=equation}\fi} +\end{verbatim} + +As from version 1.14, there are two new keys for \cs{glsadd}: +\gloskey[glsadd]{thevalue} and \gloskey[glsadd]{theHvalue}. +These keys are designed for manually adding explicit locations +rather than obtaining the value from the associated counter. +As from version 1.19, these two keys are also available for commands +like \cs{gls} and \cs{glslink}. The \gloskey[glsadd]{thevalue} keys is +intended primarily for adding locations in supplementary material +that can't be obtained from a counter. + +The principle key \gloskey[glslink]{thevalue} is for the location value. The +other key \gloskey[glslink]{theHvalue} can be used to +extract a prefix value for the first argument of commands like +\ics{glsnoidxdisplayloc}. Its value must be in the format +\meta{prefix}\meta{location}. In general, there's little need for +this key as the prefix is typically associated with a counter that can be +used to form hypertargets. + +\begin{important} +If you use \gloskey[glsadd]{thevalue}, you must make sure that you +use an indexing application that will accept the given value. +\end{important} + +For example, \app{makeindex} will only accept locations in the form +[\meta{num}\meta{sep}]*\meta{num} where \meta{num} is an arabic +number (0, 1, \ldots), roman numeral (i, ii, \ldots\ or I, II, +\ldots) or a character from a, \ldots, z or A, \ldots, Z, and +[\meta{num}\meta{sep}]* indicates zero or more instances of a number +followed by the recognised separator character (set with +\cs{glsSetCompositor}). This means that \app{makeindex} won't +accept, for example, +\begin{verbatim} +\glsadd[thevalue={Supplementary Material}]{sample} +\end{verbatim} +This location value will be accepted by \gls{bib2gls}, since it will +allow any location and will only try forming ranges if the location +matches any of its numerical patterns. +In the case of \app{xindy}, you'll need to add a rule that can match +the value. If you're using \sty{hyperref}, you may need to use the +\gloskey[glslink]{format} key to prevent a hyperlink if one can't +naturally be formed from the prefix, counter and location value. + +For example, suppose the file \texttt{suppl.tex} contains: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} + +\newglossaryentry{sample}{name={sample},description={an example}} + +\renewcommand{\thepage}{S.\arabic{page}} + +\begin{document} +First page. +\newpage +\gls{sample}. +\end{document} +\end{verbatim} +This has an entry on page S.2. Suppose another document wants to +include this location in the glossary. Then this can be done by +setting \gloskey[glsadd]{thevalue} to \texttt{S.2}. For example: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\newglossaryentry{sample}{name={sample},description={an example}} + +\begin{document} +Some \gls{sample} text. + +\printglossaries +\glsadd[thevalue={S.2}]{sample} +\end{document} +\end{verbatim} +This location value will be accepted by \app{makeindex} as it's in +the form \meta{num}\meta{sep}\meta{num}. + +If you want hyperlinks, things are more complicated. First +you need to set the \catattr{externallocation} attribute to the location of +the PDF file. For example: +\begin{verbatim} +\glssetcategoryattribute{supplemental}{externallocation}{suppl.pdf} + +\newglossaryentry{sample}{category=supplemental, + name={sample},description={an example}} +\end{verbatim} +Next you need to add \texttt{glsxtrsupphypernumber} as the format: +\begin{verbatim} +\glsadd[thevalue={S.2},format=glsxtrsupphypernumber]{sample} +\end{verbatim} +Both documents will need to use the \sty{hyperref} package. +Remember that the counter used for the location also needs to match. +If \cs{theH}\meta{counter} is defined in the other document +and doesn't match in the referencing document, then you need +to use \gloskey[glsadd]{theHvalue} to set the appropriate value. +See the accompanying sample files \texttt{sample-suppl-hyp.tex} +and \texttt{sample-suppl-main-hyp.tex} for an example that uses +\sty{hyperref}. + +\begin{important} +The hyperlink for the supplementary location may or \emph{may not} +take you to the relevant place in the external PDF file +\emph{depending on your PDF viewer}. Some may not support external +links, and some may take you to the first page or last visited page. +\end{important} + +For example, if both \texttt{sample-suppl-hyp.pdf} +and \texttt{sample-suppl-main-hyp.pdf} are in the same directory, +then viewing \texttt{sample-suppl-main-hyp.pdf} in Evince will +take you to the correct location in the linked document (when you +click on the S.2 external link), but Okular will take you to the top +of the first page of the linked document. + +This method can only be used where there is one external source +for the designated category (identified by the +\catattr{externallocation} attribute). For multiple sources, you need to use +\gls{bib2gls} version 1.7+, which is the better method in general as it can +automatically fetch the relevant locations from the \texttt{.aux} +files of the designated external documents without the need to +explicitly use \cs{glsadd}. + +\section{Cross-References (\qt{see} and \qt{see also})} +\label{sec:see} + +The value of the \gloskey{see} key is now saved +as a field. This isn't the case with \styfmt{glossaries}, where +the \gloskey{see} value is simply used to directly +write a line to the corresponding glossary file and is then +discarded. This is why the \gloskey{see} key can't be +used before \ics{makeglossaries} (since the file hasn't been opened +yet). It's also the reason why the \gloskey{see} key doesn't have +any effect when used in entries that are defined in the +\env{document} environment. Since the value isn't saved, +it's not available when the \texttt{.glsdefs} file is created at the +end of the document and so isn't available at the start of the +\env{document} environment on the next run. + +This modification allows \styfmt{glossaries-extra} to provide +\begin{definition}[\DescribeMacro\glsxtraddallcrossrefs] +\cs{glsxtraddallcrossrefs} +\end{definition} +which is used at the end of the document to automatically add +any unused cross-references unless the package option +\pkgopt{indexcrossrefs} was set to false. + +As a by-product of this enhancement, the \gloskey{see} key will now +work for entries defined in the \env{document} environment, but it's still +best to define entries in the preamble, and the \gloskey{see} key +still can't perform any indexing before the file has been opened by +\cs{makeglossaries}. Note that \styfmt{glossaries} v4.24 introduced +the \pkgopt{seenoindex} package option, which can be used to +suppress the error when the \gloskey{see} key is used before +\cs{makeglossaries}, so \pkgopt[ignore]{seenoindex} will allow the +\gloskey{see} value to be stored even though it may not be possible +to index it at that point. + +As from version 1.06, you can display the cross-referenced +information for a given entry using +\begin{definition}[\DescribeMacro\glsxtrusesee] +\cs{glsxtrusesee}\marg{label} +\end{definition} +This internally uses +\begin{definition}[\DescribeMacro\glsxtruseseeformat] +\cs{glsxtruseseeformat}\marg{tag}\marg{xr list} +\end{definition} +where \meta{tag} and \meta{xr list} are obtained from the value of +the entry's \gloskey{see} field (if non-empty). +By default, this just does \cs{glsseeformat}\oarg{tag}\marg{xr +list}\verb|{}|, which is how the cross-reference is displayed in the +\gls{numberlist}. Note that \cs{glsxtrusesee} does nothing if the +\gloskey{see} field hasn't been set for the entry given by +\meta{label}. + +As with the base \sty{glossaries} package, \cs{glsseeformat} +is defined to do \texttt{\cs{emph}\marg{tag} \cs{glsseelist}\marg{xr +list}}. The third argument is always ignored and is present for +\app{makeindex}, which always requires a final argument to +encapsulate the associated location. The command +\begin{definition} +\ics{glsseelist}\marg{xr list} +\end{definition} +used to iterate over the list of cross-reference labels is also +unchanged from the base \sty{glossaries} package, with each item in +the list formatted according to: +\begin{definition} +\ics{glsseeitem}\marg{label} +\end{definition} +This is defined by the \sty{glossaries} package to: +\begin{alltt} +\cs{glshyperlink}[\cs{glsseeitemformat}\marg{label}]\marg{label} +\end{alltt} +So the actual formatting for each cross-referenced entry is +performed by \ics{glsseeitemformat}, which is redefined by +\sty{glossaries-extra}, as described in +\sectionref{sec:modifications}. This now displays the value +of the \gloskey{text} field for abbreviations and the value +of the \gloskey{name} field otherwise. There's no indication +of the entry hierarchy, which could confuse the reader. Therefore, +as from \sty{glossaries-extra} v1.37, there are some new commands +that include the hierarchical information. You may prefer to +redefine \cs{glsseeitemformat} to use one of this if you have +sub-entries. For example: +\begin{verbatim} +\renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}} +\end{verbatim} + +The command: +\begin{definition}[\DescribeMacro\glsxtrhiername] +\cs{glsxtrhiername}\marg{label} +\end{definition} +performs a recursive action: +\begin{enumerate} +\item If the entry given by \meta{label} has a parent, then +\cs{glsxtrhiername}\marg{parent label} is done followed by +\cs{glsxtrhiernamesep} then: +\item If the entry given by \meta{label} is an abbreviation +(that is, it has the \gloskey{short} field set) then +the short form is displayed (using \cs{glsaccessshort}) +otherwise the name is displayed (using \cs{glsaccessname}). +\end{enumerate} +The first step above is skipped if the entry doesn't have a parent. +Each level is separated by: +\begin{definition}[\DescribeMacro\glsxtrhiernamesep] +\cs{glsxtrhiernamesep} +\end{definition} +which defaults to \qt{\glsxtrhiernamesep}. This can be redefined as +appropriate. + +There are some case-changing variants: +\begin{definition}[\DescribeMacro\Glsxtrhiername] +\cs{Glsxtrhiername}\marg{label} +\end{definition} +The top-level has the first letter changed to upper case +(either \cs{Glsaccessshort} or \cs{Glsaccessname}). There's +no case-change for sub-entries. + +\begin{definition}[\DescribeMacro\GlsXtrhiername] +\cs{GlsXtrhiername}\marg{label} +\end{definition} +All levels have the first letter changed to upper case +(either \cs{Glsaccessshort} or \cs{Glsaccessname}). + +\begin{definition}[\DescribeMacro\GLSxtrhiername] +\cs{GLSxtrhiername}\marg{label} +\end{definition} +The top-level is converted to upper case +(either \cs{GLSaccessshort} or \cs{GLSaccessname}). There's +no case-change for sub-entries. + +\begin{definition}[\DescribeMacro\GLSXTRhiername] +\cs{GLSXTRhiername}\marg{label} +\end{definition} +All levels are converted to upper case +(either \cs{GLSaccessshort} or \cs{GLSaccessname}). + +Suppose you want to suppress the \gls*{numberlist} +using \pkgopt{nonumberlist}. This will automatically prevent the +cross-references from being displayed. The +\pkgopt{seeautonumberlist} package option will automatically +enable the \gls*{numberlist} for entries that have the \gloskey{see} +key set, but this will also show the rest of the \gls*{numberlist}. + +Another approach in this situation is to use the post description +hook with \cs{glsxtrusesee} to append the cross-reference after +the description. For example: +\begin{verbatim} +\renewcommand*{\glsxtrpostdescgeneral}{% + \ifglshasfield{see}{\glscurrententrylabel} + {, \glsxtrusesee{\glscurrententrylabel}}% + {}% +} +\end{verbatim} +Now the cross-references can appear even though the \gls{numberlist} +has been suppressed. + +As from v1.16, there's a separate \gloskey{seealso} key. Unlike +\gloskey{see}, this doesn't have an optional part for the textual +tag. The syntax \texttt{seealso=\marg{xr-labels}} works in much the same way as using +\texttt{see=[\cs{seealsoname}]\marg{xr-labels}} but the information +is stored in a separate field. If you need a different tag, use the +\gloskey{see} key instead (or redefine \cs{seealsoname} or +\cs{glsxtruseseealsoformat}, described below). + +You can display the formatted list of +cross-references stored in the \gloskey{seealso} key using: +\begin{definition}[\DescribeMacro\glsxtruseseealso] +\cs{glsxtruseseealso}\marg{label} +\end{definition} +This works in much the same way as \cs{glsxtrusesee} +but it internally uses +\begin{definition}[\DescribeMacro\glsxtruseseeformat] +\cs{glsxtruseseealsoformat}\marg{xr list} +\end{definition} +For example: +\begin{verbatim} +\renewcommand*{\glsxtrpostdescgeneral}{% + \ifglshasfield{see}{\glscurrententrylabel} + {, \glsxtrusesee{\glscurrententrylabel}}% + {}% + \ifglshasfield{seealso}{\glscurrententrylabel} + { (\glsxtruseseealso{\glscurrententrylabel})}% + {}% +} +\end{verbatim} + +The actual unformatted comma-separated list \meta{xr-list} +stored in the \gloskey{seealso} field can be accessed with: +\begin{definition}[\DescribeMacro\glsxtrseealsolabels] +\cs{glsxtrseealsolabels}\marg{label} +\end{definition} +This will just expand to the \meta{xr-labels} provided in the value +of the \gloskey{seealso} key. There's no corresponding command to +access the \gloskey{see} field. If you really need to access it, you +can use commands like \cs{glsxtrfielduse}, but remember that it +may start with \oarg{tag}, so it can't be automatically treated +as a simple comma-separated list. + +As mentioned above, the base \styfmt{glossaries} package provides \ics{glsseelist}, +which requires a comma-separated list of labels as the argument. +The argument isn't fully expanded, so it's not suitable to use, for +example, \cs{glsxtrseealsolabels}\marg{label} as the argument. +For convenience, \styfmt{glossaries-extra} provides +\begin{definition}[\DescribeMacro\glsxtrseelist] +\cs{glsxtrseelist}\marg{xr list} +\end{definition} +which fully expands its argument and passes it to \cs{glsseelist}. + +The \gloskey{seealso} key implements the automatic indexing using +\begin{definition}[\DescribeMacro\glsxtrindexseealso] +\cs{glsxtrindexseealso}\marg{label}\marg{xr list} +\end{definition} +which just does +\begin{alltt} +\cs{glssee}[\cs{seealsoname}]\marg{label}\marg{xr list} +\end{alltt} +unless the \pkgopt{xindy} option is used with \sty{glossaries} +v4.30+, in which case a distinct \texttt{seealso} cross-reference +class is used instead. + +\section{Entry Display Style Modifications} +\label{sec:entryfmtmods} + +Recall from the \styfmt{glossaries} package that commands such as \cs{gls} +display text at that point in the document (optionally with a +hyperlink to the relevant line in the glossary). This text is +referred to as the \qt{\gls{linktext}} regardless of whether or not it +actually has a hyperlink. The actual text and the way it's displayed +depends on the command used (such as \cs{gls}) and the entry format. + +The default entry format (\ics{glsentryfmt}) used in the +\gls{linktext} by commands like \ics{gls}, \ics{glsxtrfull}, +\ics{glsxtrshort} and \ics{glsxtrlong} (but not commands like +\ics{glslink}, \ics{glsfirst} and \cs{glstext}) is changed by \styfmt{glossaries-extra} to test for +regular entries, which are determined as follows: + +\begin{itemize} +\item If an entry is assigned to a category that has the +\catattr{regular} attribute set (see \sectionref{sec:categories}), the entry is considered a~regular +entry, even if it has a~value for the \gloskey{short} key. +In this case \cs{glsentryfmt} uses \ics{glsgenentryfmt} +(provided by \styfmt{glossaries}), which uses the \gloskey{first} +(or \gloskey{firstplural}) value on \gls{firstuse} and the +\gloskey{text} (or \gloskey{plural}) value on subsequent use. + +\item An entry that doesn't have a~value for the \gloskey{short} +key is assumed to be a~regular entry, even if the +\catattr{regular} attribute isn't set to \qt{true} (since it can't +be an abbreviation without the short form). +In this case \cs{glsentryfmt} uses \ics{glsgenentryfmt}. + +\item If an entry does has a~value for the \gloskey{short} key +and hasn't been marked as a~regular entry through the +\catattr{regular} attribute, it's not considered a regular entry. +In this case \cs{glsentryfmt} uses \ics{glsxtrgenabbrvfmt} +(defined by \styfmt{glossaries-extra}) which is governed +by the abbreviation style (see \sectionref{sec:abbrstyle}). + +\end{itemize} + +This means that entries with a short +form can be treated as regular entries rather than +abbreviations if it's more appropriate for the desired style. + +As from version 1.04, \ics{glsentryfmt} now puts \ics{glsgenentry} +in the argument of the new command +\begin{definition}[\DescribeMacro\glsxtrregularfont] +\cs{glsxtrregularfont}\marg{text} +\end{definition} +This just does its argument \meta{text} by default. This means that +if you want regular entries in a different font but don't want +that font to apply to abbreviations, then you can redefine +\cs{glsxtrregularfont}. This is more precise than changing +\ics{glstextformat} which is applied to all linking commands +for all entries, unless overridden by the \catattr{textformat} +attribute. + +For example: +\begin{verbatim} +\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}} +\end{verbatim} +You can access the label through \cs{glslabel}. For example, +you can query the category: +\begin{verbatim} +\renewcommand*{\glsxtrregularfont}[1]{% + \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}} +\end{verbatim} +or query the category attribute, for example, provide a custom +attribute called \texttt{font}: +\begin{verbatim} +\glssetcategoryattribute{general}{font}{sf} + +\renewcommand*{\glsxtrregularfont}[1]{% + \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}} +\end{verbatim} +As from version 1.21, it's simpler to just do, for example: +\begin{verbatim} +\glssetcategoryattribute{general}{textformat}{textsf} +\end{verbatim} +without redefining \cs{glsxtrregularfont}. + +As from version 1.30, there is also a command for abbreviations +that encapsulates \cs{glsxtrgenabbrvfmt}: +\begin{definition}[\DescribeMacro\glsxtrabbreviationfont] +\cs{glsxtrabbreviationfont}\marg{text} +\end{definition} +This also just does its argument by default. Font changes +made by abbreviation styles are within \meta{text}. + +The \cs{glspostlinkhook} provided by the \styfmt{glossaries} package to +insert information after the \gls{linktext} produced by commands like \cs{gls} and \cs{glstext} is +redefined to +\begin{definition}[\DescribeMacro\glsxtrpostlinkhook] +\cs{glsxtrpostlinkhook} +\end{definition} +This command will discard a following full stop (period) if the +\catattr{discardperiod} attribute is set to \qt{true} for the +current entry's category. It will also do +\begin{definition}[\DescribeMacro\glsxtrpostlink] +\cs{glsxtrpostlink} +\end{definition} +if a full stop hasn't be discarded and +\begin{definition}[\DescribeMacro\glsxtrpostlinkendsentence] +\cs{glsxtrpostlinkendsentence} +\end{definition} +if a full stop has been discarded. + +It may be that you want to check some other setting (rather +than a category attribute) to determine whether or not to discard +a following full stop. In which case you can redefine: +\begin{definition}[\DescribeMacro\glsxtrifcustomdiscardperiod] +\cs{glsxtrifcustomdiscardperiod}\marg{true}\marg{false} +\end{definition} +You can access the field's label using \cs{glslabel}. +This command should do \meta{true} if the post-link hook +should check if a period follows and \meta{false} otherwise. +The default definition is simply: +\begin{verbatim} +\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2} +\end{verbatim} +which means that no additional checks are performed. +(Only the recognised category attributes will be checked.) + +\begin{important} +Avoid the use of \cs{gls}-like and \cs{glstext}-like commands +within the post-link hook as they will cause interference. +Consider using commands like \cs{glsentrytext}, \cs{glsaccesstext} +or \cs{glsxtrp} (\sectionref{sec:nested}) instead. +\end{important} + +By default \cs{glsxtrpostlink} just does \postlinkcat\ if it exists, where +\meta{category} is the category label for the current entry. +(For example, for the \category{general} category, +\cs{glsxtrpostlinkgeneral} if it has been defined.) + +You can define the post-link hook command using \cs{newcommand}, for +example: +\begin{verbatim} +\newcommand*{\glsxtrpostlinkgeneral}{% + \glsxtrpostlinkAddDescOnFirstUse +} +\end{verbatim} +or, as from v1.31, you can use +\begin{definition}[\DescribeMacro\glsdefpostlink] +\cs{glsdefpostlink}\marg{category}\marg{definition} +\end{definition} +This is simply a shortcut for: +\begin{alltt} +\cs{csdef}\{glsxtrpostlink\meta{category}\}\marg{definition} +\end{alltt} +Note that it doesn't check if the command has already been defined. + +\begin{sloppypar} +The sentence-ending hook is slightly more complicated. +If the command \postlinkcat\ is defined the hook will do that +and then insert a full stop with the space factor adjusted to match +the end of sentence. If \postlinkcat\ hasn't +been defined, the space factor is adjusted to match the end of +sentence. This means that if you have, for example, an entry that +ends with a full stop, a redundant following full stop will be +discarded and the space factor adjusted (in case the entry is in +uppercase) unless the entry is followed by additional material, in +which case the following full stop is no longer redundant and needs +to be reinserted. +\end{sloppypar} + +There are some convenient commands you might want to use +when customizing the post-\gls{linktext} category hooks: +\begin{definition}[\DescribeMacro\glsxtrpostlinkAddDescOnFirstUse] +\cs{glsxtrpostlinkAddDescOnFirstUse} +\end{definition} +This will add the description in parentheses on \gls{firstuse}. + +For example, suppose you want to append the description in +parentheses on \gls{firstuse} for entries in the \category{symbol} +category: +\begin{verbatim} +\newcommand*{\glsxtrpostlinksymbol}{% + \glsxtrpostlinkAddDescOnFirstUse +} +\end{verbatim} + +\begin{definition}[\DescribeMacro\glsxtrpostlinkAddSymbolOnFirstUse] +\cs{glsxtrpostlinkAddSymbolOnFirstUse} +\end{definition} +This will append the symbol (if defined) in parentheses on +\gls{firstuse}. (Does nothing if the symbol hasn't been set.) + +\begin{definition}[\DescribeMacro\glsxtrpostlinkAddSymbolDescOnFirstUse] +\cs{glsxtrpostlinkAddSymbolDescOnFirstUse} +\end{definition} +(New to v1.31.) On \gls{firstuse}, +this will append \cs{space}(\meta{symbol}, \meta{description}) if +the symbol is defined otherwise it just appends +\cs{space}(\meta{description}). + +If you want to provide your own custom format be aware that you +can't use \ics{ifglsused} within the post-\gls{linktext} hook as by this point +the \gls{firstuseflag} will have been unset. Instead you can use +\begin{definition}[\DescribeMacro\glsxtrifwasfirstuse] +\cs{glsxtrifwasfirstuse}\marg{true}\marg{false} +\end{definition} +This will do \meta{true} if the last used entry was the +\gls{firstuse} +for that entry, otherwise it will do \meta{false}. (Requires at +least \styfmt{glossaries} v4.19 to work properly.) This command is +locally set by commands like \cs{gls}, so don't rely on it outside +of the post-\gls{linktext} hook. + +\begin{important} +Note that commands like \ics{glsfirst} and \ics{glsxtrfull} fake +\gls{firstuse} for the benefit of the post-\gls{linktext} hooks by setting +\cs{glsxtrifwasfirstuse} to \cs{@firstoftwo}. +(Although, depending on the styles in use, they may not exactly match +the text produced by \ics{gls}-like commands on \gls{firstuse}.) +However, the \abbrstyle{short-postfootnote} style alters \cs{glsxtrfull} +so that it fakes non-\gls{firstuse} otherwise the inline full format +would include the footnote, which is inappropriate. +\end{important} + +For example, if you want to place the description in a footnote +after the \gls{linktext} on \gls{firstuse} for the \category{general} category: +\begin{verbatim} +\newcommand*{\glsxtrpostlinkgeneral}{% + \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}% +} +\end{verbatim} + +The \abbrstyle{short-postfootnote} abbreviation style uses the +post-\gls{linktext} hook to +place the footnote after trailing punctuation characters. + +You can set the default options used by \ics{glslink}, \ics{gls} +etc with: +\begin{definition}[\DescribeMacro\GlsXtrSetDefaultGlsOpts] +\cs{GlsXtrSetDefaultGlsOpts}\marg{options} +\end{definition} +For example, if you mostly don't want to index entries then +you can do: +\begin{verbatim} +\GlsXtrSetDefaultGlsOpts{noindex} +\end{verbatim} +and then use, for example, \verb|\gls[noindex=false]{sample}| +when you actually want the location added to the \gls{numberlist}. +These defaults may be overridden by other settings (such as +category attributes) in addition to any settings passed in the +option argument of commands like \cs{glslink} and \cs{gls}. + +Note that if you don't want \emph{any} indexing, just omit +\cs{makeglossaries} and \cs{printglossaries} (or analogous +commands). If you want to adjust the default for +\gloskey[glslink]{wrgloss}, it's better to do this by redefining +\ics{glsxtrinitwrgloss} instead. + +\begin{important} +\cs{GlsXtrSetDefaultGlsOpts} doesn't affect \cs{glsadd}. +\end{important} + +If you want to change the default value of \gloskey[glsadd]{format}, +you can instead use: +\begin{definition}[\GlsXtrSetDefaultNumberFormat] +\cs{GlsXtrSetDefaultNumberFormat}\marg{format} +\end{definition} +This has the advantage of also working for \cs{glsadd}. +For example, if you want all locations in the back matter to appear +in italic (unless explicitly overridden): +\begin{verbatim} +\backmatter +\GlsXtrSetDefaultNumberFormat{hyperit} +\end{verbatim} + +Commands like \ics{gls} have star (\texttt{*}) and plus +(\texttt{+}) modifiers as a short cut for \texttt{hyper=false} +and \texttt{hyper=true}. The \styfmt{glossaries-extra} package +provides a way to add a third modifier, if required, using +\begin{definition}[\DescribeMacro\GlsXtrSetAltModifier] +\cs{GlsXtrSetAltModifier}\marg{char}\marg{options} +\end{definition} +where \meta{char} is the character used as the modifier and +\meta{options} is the default set of options (which may be +overridden). Note that \meta{char} must be a single character +(not a UTF-8 character, unless you are using \XeLaTeX\ or +\LuaLaTeX). + +\begin{important} +When choosing the character \meta{char} take care of any +changes in category code. +\end{important} + +Example: +\begin{verbatim} +\GlsXtrSetAltModifier{!}{noindex} +\end{verbatim} +This means that \verb|\gls!{sample}| will be equivalent to +\verb|\gls[noindex]{sample}|. It's not possible to mix modifiers. +For example, if you want to do +\begin{verbatim} +\gls[noindex,hyper=false]{sample} +\end{verbatim} +you can use \verb|\gls*[noindex]{sample}| or +\verb|\gls![hyper=false]{sample}| but you can't combine the +\texttt{*} and \texttt{!} modifiers. + +\Glspl{locationlist} displayed with \cs{printnoidxglossary} +internally use +\begin{definition}[\DescribeMacro\glsnoidxdisplayloc] +\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location} +\end{definition} +This command is provided by \styfmt{glossaries}, but is modified by +\styfmt{glossaries-extra} to check for the start and end range +formation identifiers \verb|(| and \verb|)| which are discarded to +obtain the actual control sequence name that forms the location +formatting command. + +If the range identifiers aren't present, this just uses +\begin{definition}[\DescribeMacro\glsxtrdisplaysingleloc] +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} +\end{definition} +otherwise it uses +\begin{definition}[\DescribeMacro\glsxtrdisplaystartloc] +\cs{glsxtrdisplaystartloc}\marg{format}\marg{location} +\end{definition} +for the start of a range (where the identifier has been stripped +from \meta{format}) or +\begin{definition}[\DescribeMacro\glsxtrdisplayendloc] +\cs{glsxtrdisplayendloc}\marg{format}\marg{location} +\end{definition} +for the end of a range (where the identifier has been stripped +from \meta{format}). + +By default the start range command saves the format in +\begin{definition}[\DescribeMacro\glsxtrlocrangefmt] +\cs{glsxtrlocrangefmt} +\end{definition} +and does +\begin{display} +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} +\end{display} +(If the format is empty, it will be replaced with +\texttt{glsnumberformat}.) + +The end command checks that the format matches the start of the +range, does +\begin{definition}[\DescribeMacro\glsxtrdisplayendlochook] +\cs{glsxtrdisplayendlochook}\marg{format}\marg{location} +\end{definition} +(which does nothing by default), followed by +\begin{display} +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} +\end{display} +and then sets \cs{glsxtrlocrangefmt} to empty. + +This means that the list +\begin{verbatim} +\glsnoidxdisplayloc{}{page}{(textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{)textbf}{1}. +\end{verbatim} +doesn't display any differently from +\begin{verbatim} +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}. +\end{verbatim} +but it does make it easier to define your own custom list handler +that can accommodate the ranges. + + +\section{Entry Counting Modifications} +\label{sec:entrycountmods} + +If you are using \gls{bib2gls} you may find it more convenient +to use the record count commands described in +\sectionref{sec:bib2gls} instead. + +The \ics{glsenableentrycount} command is modified to allow +for the \catattr{entrycount} attribute. This means that +you not only need to enable entry counting with +\cs{glsenableentrycount}, but you also need +to set the appropriate attribute (see \sectionref{sec:categories}). + +For example, instead of just doing: +\begin{verbatim} +\glsenableentrycount +\end{verbatim} +you now need to do: +\begin{verbatim} +\glsenableentrycount +\glssetcategoryattribute{abbreviation}{entrycount}{1} +\end{verbatim} +This will enable the entry counting for entries in the +\category{abbreviation} category, but any entries assigned to +other categories will be unchanged. + +Further information about entry counting, including the +new per-unit feature, is described in \sectionref{sec:entrycount}. + +\section{First Use Flag} +\label{sec:glsunset} + +The \styfmt{glossaries} package provides +\begin{definition} +\ics{ifglsused}\marg{label}\marg{true}\marg{false} +\end{definition} +to determine whether or not an entry has been used. This requires +the entry to have been defined. If the entry is undefined, then the +underlying boolean variable doesn't exist and so is neither true +nor false. This command will produce an error with the default +\pkgopt[error]{undefaction} mode and a warning with +\pkgopt[warn]{undefaction} and, where appropriate, displays ?? in +the document text to denote an undefined reference. With both modes, +neither \meta{true} nor \meta{false} will be performed if +\meta{label} doesn't exist. + +The \pkgopt{record} option automatically implements +\pkgopt[warn]{undefaction} since no entries will be defined until +they have been selected by \gls{bib2gls}. In this case, you +may prefer to use: +\begin{definition}[\DescribeMacro\GlsXtrIfUnusedOrUndefined] +\cs{GlsXtrIfUnusedOrUndefined}\marg{label}\marg{true}\marg{false} +\end{definition} +(new to v1.34) which does \meta{true} if the entry given by +\meta{label} is undefined or if the entry is marked as unused. +Remember that neither \cs{ifglsused} nor +\cs{GlsXtrIfUnusedOrUndefined} should be used in the post-link +hook as the \gls{firstuseflag} will have already been unset +before the hook is performed. (Instead, \ics{glsxtrifwasfirstuse} +should be used, see \sectionref{sec:entryfmtmods}.) + +There are two new commands provided with version 1.31+: +\begin{definition}[\DescribeMacro\glslocalreseteach] +\cs{glslocalreseteach}\marg{list} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslocalunseteach] +\cs{glslocalunseteach}\marg{list} +\end{definition} +These behave like \cs{glslocalreset} and \cs{glslocalunset} +but the argument is a comma-separated list of labels. + +The internal command used by \cs{glsunset} is modified first to +allow for the changing in entry counting, described above, but +also to allow for buffering pending unsets when commands like +\cs{gls} are used in a context where changing a boolean variable +can cause things to go wrong. One example of this is using +\cs{gls} in one of the commands provided with the \isty{soul} +package. For example: +\begin{verbatim} +\ul{Some text about \gls{html}.} +\end{verbatim} +This causes the confusing error: +\begin{verbatim} +Glossary entry `{html}' has not been defined. +\end{verbatim} +The simplest workaround is to put \verb|\gls{html}| inside the +argument of \cs{mbox}. For example: +\begin{verbatim} +\ul{Some text about \mbox{\gls{html}}.} +\end{verbatim} +This can work provided it's not the first use of this entry. +It if is, then unsetting the first use flag causes a problem +and results in the error: +\begin{verbatim} +! Package soul Error: Reconstruction failed. +\end{verbatim} +The \styfmt{glossaries-extra} package provides a way of temporarily +switching off \cs{glsunset} so that it just makes a note of the +entry's label but doesn't actually perform the change: +\begin{definition}[\DescribeMacro\GlsXtrStartUnsetBuffering] +\cs{GlsXtrStartUnsetBuffering} +\end{definition} +The unstarred version doesn't check for duplicates, so the internal +list may end up with multiple occurrences of the same label. The +starred version only adds a label to the internal list if it's not +already in it. Note that this buffering only applies to the +global \cs{glsunset} and does not affect the local +\cs{glslocalunset}. + +Later you can restore \cs{glsunset} and unset all buffered +labels using: +\begin{definition}[\DescribeMacro\GlsXtrStopUnsetBuffering] +\cs{GlsXtrStopUnsetBuffering} +\end{definition} +The starred form \cs{GlsXtrStopUnsetBuffering*} uses +\cs{glslocalunset} instead. For example: +\begin{verbatim} +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage{soul} +\usepackage{glossaries-extra} + +\newabbreviation{html}{HTML}{hypertext markup language} + +\begin{document} +\GlsXtrStartUnsetBuffering +\ul{Some text about \mbox{\gls{html}}.} +\GlsXtrStopUnsetBuffering + +Next use: \gls{html}. +\end{document} +\end{verbatim} +Before you stop the unset buffering, you can iterate over the +current buffer using +\begin{definition}[\DescribeMacro\GlsXtrForUnsetBufferedList] +\cs{GlsXtrForUnsetBufferedList}\marg{cs} +\end{definition} +where \meta{cs} is a control sequence that takes a single argument +(which is the entry label). This is best used with the starred +version \cs{GlsXtrStartUnsetBuffering*} to avoid duplicates. + +\begin{important} +Note that since the change in the first use flag now doesn't +occur until \cs{GlsXtrStopUnsetBuffering}, multiple references +of the same term within the buffering zone will always be +treated as first use (if the term wasn't used before the +buffering started). +\end{important} + +There can still be a problem here as content within \cs{mbox} +can't break across a line so you may end up with an overfull +line or excessive white space within the paragraph. + +An alternative is to use \cs{protect}: +\begin{verbatim} +\GlsXtrStartUnsetBuffering +\ul{Some text about \protect\gls{html}.} +\GlsXtrStopUnsetBuffering +\end{verbatim} +but the formatting (underlining in this example) won't be applied. +Another possibility is: +\begin{verbatim} +\usepackage[T1]{fontenc} +\usepackage{soul} +\usepackage{glossaries-extra} + +\newabbreviation{html}{HTML}{hypertext markup language} + +\newrobustcmd{\gul}[1]{% + {% + \def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + \def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + #1% + }% +} + +\begin{document} +\ul{Some text about }\gls[textformat=gul]{html}. + +Next use: \gls{html}. +\end{document} +\end{verbatim} +This moves \cs{gls} outside of \cs{ul} and uses +\gloskey[glslink]{textformat} to locally change the formatting +command used by \cs{gls} (which is normally given by +\cs{glstextformat} or the \catattr{textformat} attribute) +to a custom command \cs{gul}, which locally changes the regular font +and the default abbreviation font to use \cs{ul}. It then uses +\begin{definition}[\DescribeMacro\GlsXtrExpandedFmt] +\cs{GlsXtrExpandedFmt}\marg{cs}\marg{text} +\end{definition} +which (protected) fully expands \meta{text} before applying +\meta{cs}, which must be a control sequence that takes a single +argument. This allows \cs{ul} to move much further inside +and increases its chances of working. It can still break if +\meta{text} expands to something that \cs{ul} can't deal with. +For example, if an abbreviation style is used that contains +complex formatting or if the field value contains problematic +content. + +\section{Plurals} + +Some languages, such as English, have a general rule that plurals +are formed from the singular with a suffix appended. This isn't +an absolute rule. There are plenty of exceptions (for example, +geese, children, churches, elves, fairies, sheep). The +\sty{glossaries} package allows the \gloskey{plural} key to be +optional when defining entries. In some cases a plural may not make +any sense (for example, the term is a symbol) and in some cases +the plural may be identical to the singular. + +To make life easier for languages where the majority of plurals can +simply be formed by appending a suffix to the singular, the +\sty{glossaries} package lets the \gloskey{plural} field default +to the value of the \gloskey{text} field with \ics{glspluralsuffix} +appended. This command is defined to be just the letter \qt{s}. +This means that the majority of terms don't need to have the +\gloskey{plural} supplied as well, and you only need to use it for the +exceptions. + +For languages that don't have this general rule, the \gloskey{plural} +field will always need to be supplied, where needed. + +There are other plural fields, such as \gloskey{firstplural}, +\gloskey{longplural} and \gloskey{shortplural}. Again, if you are using +a language that doesn't have a simple suffix rule, you'll have to +supply the plural forms if you need them (and if a plural makes +sense in the context). + +If these fields are omitted, the \sty{glossaries} package follows +these rules: +\begin{itemize} +\item If \gloskey{firstplural} is missing, then \cs{glspluralsuffix} +is appended to the \gloskey{first} field, if that field has been +supplied. If the \gloskey{first} field hasn't been supplied but the +\gloskey{plural} field has been supplied, then the \gloskey{firstplural} +field defaults to the \gloskey{plural} field. If the \gloskey{plural} +field hasn't been supplied, then both the \gloskey{plural} and +\gloskey{firstplural} fields default to the \gloskey{text} field (or +\gloskey{name}, if no \gloskey{text} field) with \cs{glspluralsuffix} +appended. + +\item If the \gloskey{longplural} field is missing, then +\cs{glspluralsuffix} is appended to the \gloskey{long} field, if the +\gloskey{long} field has been supplied. + +\item If the \gloskey{shortplural} field is missing then, \emph{with +the base \sty{glossaries} acronym mechanism}, \ics{acrpluralsuffix} +is appended to the \gloskey{short} field. + +\end{itemize} + +This \emph{last case is changed} with \styfmt{glossaries-extra}. +With this extension package, the \gloskey{shortplural} field +defaults to the \gloskey{short} field with \ics{abbrvpluralsuffix} +appended unless overridden by category attributes. This +suffix command is set by the abbreviation styles. This means that +every time an abbreviation style is implemented, +\cs{abbrvpluralsuffix} is redefined. In most cases its redefined to +use +\begin{definition}[\DescribeMacro\glsxtrabbrvpluralsuffix] +\cs{glsxtrabbrvpluralsuffix} +\end{definition} +which defaults to just \cs{glspluralsuffix}. Some of the +abbreviation styles have their own command for the plural suffix, +such as \cs{glsxtrscsuffix}, +so if you want to completely strip all the plural suffixes used for +abbreviations then you need to redefine \cs{glsxtrabbrvpluralsuffix} +\emph{not} \cs{abbrvpluralsuffix}, which changes with the style. Redefining +\cs{acrpluralsuffix} will have no affect, since it's not used by the +new abbreviation mechanism. + +If you require a mixture (for example, in a multilingual document), +there are two attributes that affect the short plural suffix +formation. The first is \catattr{aposplural} which uses the suffix +\begin{verbatim} +'\abbrvpluralsuffix +\end{verbatim} +That is, an apostrophe followed by \cs{abbrvpluralsuffix} is +appended. The second attribute is \catattr{noshortplural} which +suppresses the suffix and simply sets \gloskey{shortplural} to the +same as \gloskey{short}. + +\section{Nested Links} +\label{sec:nested} + +Complications arise when you use \ics{gls} in the +value of the \gloskey{name} field (or \gloskey{text} +or \gloskey{first} fields, if set). This tends to occur with +abbreviations that extend other abbreviations. For example, +SHTML is an abbreviation for SSI enabled HTML, where SSI +is an abbreviation for Server Side Includes and HTML +is an abbreviation for Hypertext Markup Language. + +Things can go wrong if we try the following with the +\styfmt{glossaries} package: +\begin{verbatim} +\newacronym{ssi}{SSI}{Server Side Includes} +\newacronym{html}{HTML}{Hypertext Markup Language} +\newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}} +\end{verbatim} + +The main problems are: +\begin{enumerate} +\item\label{itm:nestedfirstucprob} The first letter upper casing commands, such as \ics{Gls}, +won't work for the \texttt{shtml} entry on \gls{firstuse} if the +long form is displayed before the short form (which is the +default abbreviation style). This will attempt to do +\begin{verbatim} +\gls{\uppercase ssi} enabled \gls{html} +\end{verbatim} +which just doesn't work. Grouping the \verb|\gls{ssi}| doesn't +work either as this will effectively try to do +\begin{verbatim} +\uppercase{\gls{ssi}} enabled \gls{html} +\end{verbatim} +This will upper case the label \texttt{ssi} so the entry won't be +recognised. This problem will also occur if you use the all capitals +version, such as \ics{GLS}. + +\item\label{itm:nonexpandprob} The long and abbreviated forms accessed through +\ics{glsentrylong} and \ics{glsentryshort} are no longer expandable +and so can't be used be used in contexts that require this, +such as PDF bookmarks. + +\item\label{itm:nestedsortprob} The nested commands may end up in the \gloskey{sort} key, +which will confuse the indexing. + +\item\label{itm:inconsistentfirstuseprob} The \texttt{shtml} entry produces inconsistent results +depending on whether the \texttt{ssi} or \texttt{html} entries have +been used. Suppose both \texttt{ssi} and \texttt{html} are used +before \texttt{shtml}. For example: +\begin{verbatim} +This section discusses \gls{ssi}, \gls{html} and \gls{shtml}. +\end{verbatim} +This produces: +\begin{quote} +This section discusses server side includes (SSI), hypertext markup +language (HTML) and SSI enabled HTML (SHTML). +\end{quote} +So the \gls{firstuse} of the \texttt{shtml} entry produces +\qt{SSI enabled HTML (SHTML)}. + +Now let's suppose the \texttt{html} entry is used before the +\texttt{shtml} but the \texttt{ssi} entry is used after the +\texttt{shtml} entry, for example: +\begin{verbatim} +The sample files are either \gls{html} or \gls{shtml}, but let's +first discuss \gls{ssi}. +\end{verbatim} +This produces: +\begin{quote} +The sample files are either hypertext markup language (HTML) or +server +side includes (SSI) enabled HTML (SHTML), but let's first discuss +SSI. +\end{quote} +So the \gls{firstuse} of the \texttt{shtml} entry now produces +\qt{server side includes (SSI) enabled HTML (SHTML)}, which looks +a bit strange. + +Now let's suppose the \texttt{shtml} entry is used before (or +without) the other two entries: +\begin{verbatim} +This article is an introduction to \gls{shtml}. +\end{verbatim} +This produces: +\begin{quote} +This article is an introduction to server side includes (SSI) +enabled hypertext markup language (HTML) (SHTML). +\end{quote} +So the \gls{firstuse} of the \texttt{shtml} entry now produces +\qt{server side includes (SSI) enabled hypertext markup language (HTML) +(SHTML)}, which is even more strange. + +This is all aggravated by setting the style using the +\styfmt{glossaries} package's +\cs{setacronymstyle}. For example: +\begin{verbatim} +\setacronymstyle{long-short} +\end{verbatim} +as this references the label through the use of \cs{glslabel} +when displaying the long and short forms, but this value +changes with each use of \cs{gls}, so instead of displaying +\qt{(SHTML)} at the end of the \gls{firstuse}, it now displays +\qt{(HTML)}, since \cs{glslabel} has been changed to \texttt{html} +by \verb|\gls{html}|. + +Another oddity occurs if you reset the \texttt{html} entry between +uses of the \texttt{shtml} entry. For example: +\begin{verbatim} +\gls{shtml} ... \glsreset{html}\gls{shtml} +\end{verbatim} +The next use of \texttt{shtml} produces \qt{Shypertext markup +language (HTML)}, which is downright weird. + +Even without this, the short form has nested formatting commands, +which amount to \verb|\acronymfont{S\acronymfont{HTML}}|. This +may not be a problem for some styles, but if you use one of the +\qt{sm} styles (that use \ics{textsmaller}), this will produce +an odd result. + +\item\label{itm:indexingprob} Each time the \texttt{shtml} entry is used, the +\texttt{html} entry will also be indexed and marked as used, +and on \gls{firstuse} this will happen to both the \texttt{ssi} +and \texttt{html} entries. This kind of duplication in the location +list isn't usually particularly helpful to the reader. + +\item\label{itm:nestedhyplinkprob} If \sty{hyperref} is in use, you'll get nested hyperlinks +and there's no consistent way of dealing with this across the +available PDF viewers. If on the \gls{firstuse} case, the user +clicks on the \qt{HTML} part of the \qt{SSI enabled HTML (SHTML)} +link, they may be directed to the HTML entry in the glossary or +they may be directed to the SHTML entry in the glossary. + +\end{enumerate} + +For these reasons it's better to use the simple expandable commands like +\ics{glsentrytext} or \ics{glsentryshort} in the definition +of other entries (although that doesn't fix the first problem). +Alternatively use something like: +\begin{verbatim} +\newacronym + [description={\acrshort{ssi} enabled \acrshort{html}}] + {shtml}{SHTML}{SSI enabled HTML} +\end{verbatim} +with \styfmt{glossaries} or: +\begin{verbatim} +\newabbreviation + [description={\glsxtrshort{ssi} enabled \glsxtrshort{html}}] + {shtml}{SHTML}{SSI enabled HTML} +\end{verbatim} +with \styfmt{glossaries-extra}. This fixes all the above +listed problems (as long as you don't use \ics{glsdesc}). +Note that replacing \cs{gls} with \cs{acrshort} in the original +example may fix the \gls{firstuse} issue, but it doesn't +fix any of the other problems listed above. + +If it's simply that you want to use the abbreviation font, you can +use \cs{glsabbrvfont}: +\begin{verbatim} +\setabbreviationstyle{long-short-sc} + +\newabbreviation{ssi}{ssi}{server-side includes} +\newabbreviation{html}{html}{hypertext markup language} +\newabbreviation{shtml}{shtml}{\glsabbrvfont{ssi} enabled +\glsabbrvfont{html}} +\end{verbatim} +This will pick up the font style setting of the outer entry (shtml, +in the above case). This isn't a problem in the above example as all +the abbreviations use the same style. + +However if you're really determined to use +\ics{gls} in a field that may be included within +some \gls{linktext}, \styfmt{glossaries-extra} patches internals +used by the linking commands so that if \cs{gls} (or plural or +case changing variants) occurs in the \gls{linktext} it will +behave as though you used +\texttt{\ics{glstext}[hyper=false,noindex]} +instead. Grouping is also added so that, for example, when +\verb|\gls{shtml}| is used for the first time the long form +\begin{verbatim} +\gls{ssi} enabled \gls{html} +\end{verbatim} +is treated as +\begin{verbatim} +{\glstext[hyper=false,noindex]{ssi}} enabled +{\glstext[hyper=false,noindex]{html}} +\end{verbatim} +This overcomes problems~\ref{itm:inconsistentfirstuseprob}, +\ref{itm:indexingprob} and \ref{itm:nestedhyplinkprob} listed +above, but still doesn't fix problems~\ref{itm:nestedfirstucprob} +and \ref{itm:nonexpandprob}. +Problem~\ref{itm:nestedsortprob} usually won't be an issue as most abbreviation +styles set the \gloskey{sort} key to the short form, so using these +commands in the long form but not the short form will only affect +entries with a style that sorts according to the long form (such as +\abbrstyle{long-noshort-desc}). + +Additionally, any instance of the long form commands, such +as \ics{glsxtrlong} or \ics{acrlong} will be temporarily +redefined to just use +\begin{alltt} +\{\ics{glsentrylong}\marg{label}\meta{insert}\} +\end{alltt} +(or case-changing versions). Similarly the short form commands, +such as \ics{glsxtrshort} or \ics{acrshort} will use +\ics{glsentryshort} in the argument of either \cs{glsabbrvfont} +(for \cs{glsxtrshort}) or \cs{acronymfont} (for \cs{acrshort}). +So if the \texttt{shtml} entry had instead been defined as: +\begin{verbatim} +\newacronym{shtml}{SHTML}{\acrshort{ssi} enabled \acrshort{html}} +\end{verbatim} +then (using the \abbrstyle{long-short} style) the \gls{firstuse} +will be like +\begin{verbatim} +{\acronymfont{\glsentryshort{ssi}}} enabled +{\acronymfont{\glsentryshort{html}}} (SHTML) +\end{verbatim} +whereas if the entry is defined as: +\begin{verbatim} +\newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi} enabled +\glsxtrshort{html}} +\end{verbatim} +then the \gls{firstuse} will be like: +\begin{verbatim} +{\glsabbrvfont{\glsentryshort{ssi}}} enabled +{\glsabbrvfont{\glsentryshort{html}}} (SHTML) +\end{verbatim} +Note that the first optional argument of +\cs{acrshort} or \cs{glsxtrshort} is ignored in this context. +(The final optional argument will be inserted, if present.) +The abbreviation style that governs \ics{glsabbrvfont} will be +set for \ics{glsxtrshort}. Note that \cs{acrshort} doesn't +set the abbreviation style. + +Alternatively you can use: +\begin{definition}[\DescribeMacro\glsxtrp] +\cs{glsxtrp}\marg{field}\marg{label} +\end{definition} +where \meta{field} is the field label and corresponds to a +command in the form \cs{gls}\meta{field} (e.g.\ \cs{glstext}) or +in the form \cs{glsxtr}\meta{field} (e.g.\ \cs{glsxtrshort}). + +There's a shortcut command for the most common fields: +\begin{definition}[\DescribeMacro\glsps] +\cs{glsps}\marg{label} +\end{definition} +which is equivalent to \verb|\glsxtrp{short}|\marg{label}, and +\begin{definition}[\DescribeMacro\glspt] +\cs{glspt}\marg{label} +\end{definition} +which is equivalent to \verb|\glsxtrp{text}|\marg{label}. + +The \cs{glsxtrp} command behaves much like the +\cs{glsfmt}\meta{field} commands described in +\sectionref{sec:headtitle} but the post-link hook is also +suppressed and extra grouping is added. It automatically sets +\gloskey[glslink]{hyper} to \texttt{false} and +\gloskey[glslink]{noindex} to \texttt{true}. If you want to change +this, you can use +\begin{definition}[\DescribeMacro\glsxtrsetpopts] +\cs{glsxtrsetpopts}\marg{options} +\end{definition} +For example: +\begin{verbatim} +\glsxtrsetpopts{hyper=false} +\end{verbatim} +will just switch off the hyperlinks but not the indexing. +Be careful using this command or you can end up back to the +original problem of nested links. + +The hyper link is re-enabled within glossaries. This is +done through the command: +\begin{definition}[\DescribeMacro\glossxtrsetpopts] +\cs{glossxtrsetpopts} +\end{definition} +which by default just does +\begin{verbatim} +\glsxtrsetpopts{noindex} +\end{verbatim} +You can redefine this if you want to adjust the setting when +\cs{glsxtrp} is used in the glossary. For example: +\begin{verbatim} +\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}} +\end{verbatim} + +For example, +\begin{verbatim} +\glsxtrp{short}{ssi} +\end{verbatim} +is equivalent to +\begin{verbatim} +{\let\glspostlinkhook\relax + \glsxtrshort[hyper=false,noindex]{ssi}[]% +} +\end{verbatim} +in the main body of the document or +\begin{verbatim} +{\let\glspostlinkhook\relax + \glsxtrshort[noindex]{ssi}[]% +} +\end{verbatim} +inside the glossary. (Note the post-link hook is locally disabled.) + +If \verb|\glsxtrp{short}{ssi}| occurs in a sectioning mark, +it's equivalent to +\begin{verbatim} +{\glsxtrheadshort{ssi}} +\end{verbatim} +(which recognises the \catattr{headuc} attribute.) + +If \sty{hyperref} has been loaded, then the bookmark will +use \cs{glsentry}\meta{field} +(\verb|\glsentryshort{ssi}| in the above example). + +There are similar commands +\begin{definition}[\DescribeMacro\Glsxtrp] +\cs{Glsxtrp}\marg{field}\marg{label} +\end{definition} +for first letter upper case and +\begin{definition}[\DescribeMacro\GLSxtrp] +\cs{GLSxtrp}\marg{field}\marg{label} +\end{definition} +for all upper case. + +\begin{important} +If you use any of the case-changing commands, such as \ics{Gls} +or \ics{Glstext}, (either all caps or first letter upper casing) +don't use any of the linking commands, such as \ics{gls} or +\ics{glstext}, in the definition of entries for any of the +fields that may be used by those case-changing commands. +\end{important} + +You can, with care, protect against issue~\ref{itm:nestedfirstucprob} by +inserting an empty group at the start if the long form starts with a +command that breaks the first letter uppercasing commands like +\cs{Gls}, but you still won't be able to use the all caps commands, +such as \cs{GLS}. + +If you \emph{really need} nested commands, the safest method is +\begin{verbatim} +\newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi} enabled +\glsxtrp{short}{html}} +\end{verbatim} +but be aware that it may have some unexpected results occasionally. + +Example document: +\begin{verbatim} +\documentclass{report} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{slantsc} +\usepackage[colorlinks]{hyperref} +\usepackage[nopostdot=false]{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle{long-short-sc} + +\newabbreviation{ssi}{ssi}{server-side includes} +\newabbreviation{html}{html}{hypertext markup language} +\newabbreviation{shtml}{shtml}{{}\glsps{ssi} enabled {}\glsps{html}} + +\pagestyle{headings} + +\glssetcategoryattribute{abbreviation}{headuc}{true} +\glssetcategoryattribute{abbreviation}{glossdesc}{title} + +\begin{document} + +\tableofcontents + +\chapter{\glsfmtfull{shtml}} + +First use: \gls{shtml}, \gls{ssi} and \gls{html}. + +Next use: \gls{shtml}, \gls{ssi} and \gls{html}. + +\newpage +Next page. + +\printglossaries +\end{document} +\end{verbatim} + +\section{Acronym Style Modifications} +\label{sec:acronymmods} + +The \styfmt{glossaries-extra} package provides a new way of dealing +with abbreviations and redefines \ics{newacronym} to +use \cs{newabbreviation} (see \sectionref{sec:abbreviations}). +The simplest way to update a document that uses +\cs{newacronym} from \styfmt{glossaries} to +\styfmt{glossaries-extra} is do just add +\begin{verbatim} +\setabbreviationstyle[acronym]{long-short} +\end{verbatim} +before you define any entries. +For example, the following document using just \styfmt{glossaries} +\begin{verbatim} +\documentclass{article} +\usepackage[acronym,nopostdot,toc]{glossaries} +\makeglossaries +\setacronymstyle{long-short} +\newacronym{html}{HTML}{hypertext markup language} +\begin{document} +\gls{html} +\printglossaries +\end{document} +\end{verbatim} +can be easily adapted to use \styfmt{glossaries-extra}: +\begin{verbatim} +\documentclass{article} +\usepackage[acronym]{glossaries-extra} +\makeglossaries +\setabbreviationstyle[acronym]{long-short} +\newacronym{html}{HTML}{hypertext markup language} +\begin{document} +\gls{html} +\printglossaries +\end{document} +\end{verbatim} +Table~\ref{tab:acrabbrvstyles} lists the nearest equivalent +\styfmt{glossaries-extra} abbreviation styles for +the predefined acronym styles provided by \styfmt{glossaries}, but +note that the new styles use different formatting commands. See +\sectionref{sec:predefabbrvstyles} for further details. + +\begin{table}[htbp] +\caption[Old Acronym Styles Verses New Abbreviation Styles]{Old Acronym Styles +\cs{setacronymstyle}\marg{old-style-name} Verses New Abbreviation +Styles \cs{setabbreviationstyle}\oarg{category}\marg{new-style-name}} +\label{tab:acrabbrvstyles} +\centering +\begin{tabular}{@{}p{\dimexpr0.3\textwidth-2\tabcolsep}p{0.7\textwidth}@{}} +\bfseries Old Style Name & +\bfseries New Style Name\\ +\acrstyle{long-sc-short} & \abbrstyle{long-short-sc}\\ +\acrstyle{long-sm-short} & \abbrstyle{long-short-sm}\\ +\acrstyle{long-sp-short} & \abbrstyle{long-short} \newline with +\ttfamily\cs{renewcommand}\{\cs{glsxtrfullsep}\}[1]\{\cs{glsacspace}\{\#1\}\}\\ +\acrstyle{short-long} & \abbrstyle{short-long}\\ +\acrstyle{sc-short-long} & \abbrstyle{short-sc-long}\\ +\acrstyle{sm-short-long} & \abbrstyle{short-sm-long}\\ +\acrstyle{long-short-desc} & \abbrstyle{long-short-desc}\\ +\acrstyle{long-sc-short-desc} & \abbrstyle{long-short-sc-desc}\\ +\acrstyle{long-sm-short-desc} & \abbrstyle{long-short-sm-desc}\\ +\acrstyle{long-sp-short-desc} & \abbrstyle{long-short-desc} \newline with +\ttfamily\cs{renewcommand}\{\cs{glsxtrfullsep}\}[1]\{\cs{glsacspace}\{\#1\}\}\\ +\acrstyle{short-long-desc} & \abbrstyle{short-long-desc}\\ +\acrstyle{sc-short-long-desc} & \abbrstyle{short-sc-long-desc}\\ +\acrstyle{sm-short-long-desc} & \abbrstyle{short-sm-long-desc}\\ +\acrstyle{dua} & \abbrstyle{long-noshort}\\ +\acrstyle{dua-desc} & \abbrstyle{long-noshort-desc}\\ +\acrstyle{footnote} & \abbrstyle{short-footnote}\\ +\acrstyle{footnote-sc} & \abbrstyle{short-sc-footnote}\\ +\acrstyle{footnote-sm} & \abbrstyle{short-sm-footnote}\\ +\acrstyle{footnote-desc} & \abbrstyle{short-footnote-desc}\\ +\acrstyle{footnote-sc-desc} & \abbrstyle{short-sc-footnote-desc}\\ +\acrstyle{footnote-sm-desc} & \abbrstyle{short-sm-footnote-desc} +\end{tabular} +\end{table} + +The reason for introducing the new style of abbreviation commands +provided by \styfmt{glossaries-extra} is because the original +acronym commands provided by \styfmt{glossaries} are too restrictive +to work with the internal modifications made by +\styfmt{glossaries-extra}. However, if you really want to restore +the generic acronym function provided +by \styfmt{glossaries} you can use +\begin{definition}[\DescribeMacro\RestoreAcronyms] +\cs{RestoreAcronyms} +\end{definition} +(before any use of \cs{newacronym}). + +\cs{RestoreAcronyms} should not be used in combination with the newer +\styfmt{glossaries-extra} abbreviations. Don't combine old and +new style entries with the same \gloskey{type}. The +original \styfmt{glossaries} acronym mechanism doesn't work well +with the newer \styfmt{glossaries-extra} commands. + +\begin{important} +If you use \cs{RestoreAcronyms}, don't use any of the commands +provided by \styfmt{glossaries-extra} intended for abbreviations +(such as \ics{glsxtrshort} or \ics{glsfmtshort}) with entries +defined via \ics{newacronym} as it will cause unexpected +results. +\end{important} + +In general, there's rarely any need for \cs{RestoreAcronyms}. If you +have a document that uses \ics{newacronymstyle}, then it's best to +either stick with just \styfmt{glossaries} for that document or +define an equivalent abbreviation style with +\ics{newabbreviationstyle}. (See \sectionref{sec:newabbrvstyle} for +further details.) + +\begin{definition}[\DescribeMacro\glsacspace] +\cs{glsacspace}\marg{label} +\end{definition} +The space command \cs{glsacspace} used by the +\acrstyle{long-sp-short} acronym style provided by \styfmt{glossaries} +is modified so that it uses +\begin{definition}[\DescribeMacro\glsacspacemax] +\cs{glsacspacemax} +\end{definition} +instead of the hard-coded 3em. This is a command not a length +and so can be changed using \cs{renewcommand}. + +Any of the new abbreviation styles that use \ics{glsxtrfullsep} +(such as \abbrstyle{long-short}) can easily be changed to use +\cs{glsacspace} with +\begin{verbatim} +\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}} +\end{verbatim} + +The \gls{firstuse} acronym font command +\begin{definition}[\firstacronymfont] +\cs{firstacronymfont}\marg{text} +\end{definition} +is redefined to use the \gls{firstuse} abbreviation font command +\ics{glsfirstabbrvfont}. This will be reset if you use +\cs{RestoreAcronyms}. + +The subsequent use acronym font command +\begin{definition}[\acronymfont] +\cs{acronymfont}\marg{text} +\end{definition} +is redefined to use the subsequent use abbreviation font command +\ics{glsabbrvfont}. This will be reset if you use +\cs{RestoreAcronyms}. + +\section{\styfmt{glossary-bookindex} package} +\label{sec:bookindex} + +As from v1.21, \styfmt{glossaries-extra} has a new supplementary +package \sty{glossary-bookindex} which provides the glossary style +\glostyle{bookindex}. This is very similar to the +\glostyle{mcolindexgroup} style but is designed for indexes, so by +default only the name and location list are displayed. You can +either load this package explicitly and then set the style: +\begin{verbatim} +\usepackage{glossaries-extra} +\usepackage{glossary-bookindex} +\setglossarystyle{bookindex} +\end{verbatim} +or use both the \pkgopt{stylemods} and \sty{style} options: +\begin{verbatim} +\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} +\end{verbatim} +The \glostyle{bookindex} style only supports a maximum +hierarchical level of 2 (top-level, level~1 and level~2). It's +primarily designed for use with \gls{bib2gls}. It may be used with +other indexing options, but some features may not be present and +UTF-8 characters may cause a problem with non-Unicode engines in +letter group headings or PDF bookmarks. (\gls{bib2gls} uses numeric +identifies by default to avoid these problems. If numbers show up in +the group headings instead of the appropriate characters, check that +you have used the \pkgopt{record} package option.) + +The number of columns is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexcols] +\cs{glsxtrbookindexcols} +\end{definition} +which defaults to 2. + +This style uses the \env{multicols} environment. If +the command +\begin{definition}[\DescribeMacro\glsxtrbookindexcolspread] +\cs{glsxtrbookindexcolspread} +\end{definition} +isn't empty then it's supplied as the optional argument +following \verb|\begin{multicols}|\marg{n}. You can switch from +\env{multicols} to \env{multicols*} by redefining +\begin{definition}[\DescribeMacro\glsxtrbookindexmulticolsenv] +\cs{glsxtrbookindexmulticolsenv} +\end{definition} +For example +\begin{verbatim} +\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +\end{verbatim} + +Each top-level entry is displayed using +\begin{definition}[\DescribeMacro\glsxtrbookindexname] +\cs{glsxtrbookindexname}\marg{label} +\end{definition} +where the entry is identified by \meta{label}. This just +does \cs{glossentryname}\marg{label} by default. +For example, if you want the symbol to be included: +\begin{verbatim} +\renewcommand*{\glsxtrbookindexname}[1]{% + \glossentryname{#1}% + \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% +} +\end{verbatim} +or if you want the description (if set): +\begin{verbatim} +\renewcommand*{\glsxtrbookindexname}[1]{% + \glossentryname{#1}% + \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% +} +\end{verbatim} +(which picks up the post-description hook). + +Alternatively you can use the \cs{glsxtrpostname\meta{category}} +hook to append information after the name according to the entry's +category. + +Sub-entries are displayed using +\begin{definition}[\DescribeMacro\glsxtrbookindexsubname] +\cs{glsxtrbookindexsubname}\marg{label} +\end{definition} +which just defaults to \cs{glsxtrbookindexname}\marg{label}. + +The separator used before the location list for top-level +entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexprelocation] +\cs{glsxtrbookindexprelocation}\marg{label} +\end{definition} +where \meta{label} is the entry's label. This checks if +the \texttt{location} field has been set. If it has, it +does +\begin{verbatim} +,\glsxtrprelocation +\end{verbatim} +otherwise it just does \cs{glsxtrprelocation} (which defaults +to \cs{space}). If you're not using +\gls{bib2gls}, the \gloskey{location} field won't be set. + +The separator used before the +location list for sub-entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubprelocation] +\cs{glsxtrbookindexsubprelocation}\marg{label} +\end{definition} +which defaults to \cs{glsxtrbookindexprelocation}\marg{label}. + +The actual location list is encapsulated with: +\begin{definition}[\DescribeMacro\glsxtrbookindexlocation] +\cs{glsxtrbookindexlocation}\marg{label}\marg{location list} +\end{definition} +for top-level entries and +\begin{definition}[\DescribeMacro\glsxtrbookindexsublocation] +\cs{glsxtrbookindexsublocation}\marg{label}\marg{location list} +\end{definition} +for sub-entries. These both just do \meta{location list} by default. + +The separator used between a top-level parent and child entry is +given by +\begin{definition}[\DescribeMacro\glsxtrbookindexparentchildsep] +\cs{glsxtrbookindexparentchildsep} +\end{definition} +This defaults to \cs{nopagebreak}. + +The separator used between a sub-level parent and child entry is +given by +\begin{definition}[\DescribeMacro\glsxtrbookindexparentsubchildsep] +\cs{glsxtrbookindexparentsubchildsep} +\end{definition} +This defaults to \cs{glsxtrbookindexparentchildsep}. + +The separator between top-level entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexbetween] +\cs{glsxtrbookindexbetween}\marg{label1}\marg{label2} +\end{definition} +This comes after the entry given by \meta{label1}, if the entry +has no children, or after the last descendent otherwise, +so it always comes immediately before the entry given +by \meta{label2} unless the entry occurs at the start of +a group. This does nothing by default. + +The separator between two level~1 entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubbetween] +\cs{glsxtrbookindexsubbetween}\marg{label1}\marg{label2} +\end{definition} + +The separator between two level~2 entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubbetween] +\cs{glsxtrbookindexsubsubbetween}\marg{label1}\marg{label2} +\end{definition} +At the end of each letter group, the following hooks +are done in order: +\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubatendgroup] +\cs{glsxtrbookindexsubsubatendgroup}\marg{sub-sub-label} +\end{definition} +\begin{definition}[\DescribeMacro\glsxtrbookindexsubatendgroup] +\cs{glsxtrbookindexsubatendgroup}\marg{sub-label} +\end{definition} +\begin{definition}[\DescribeMacro\glsxtrbookindexatendgroup] +\cs{glsxtrbookindexatendgroup}\marg{label} +\end{definition} +where \meta{sub-sub-label} is the label of the last +level~2 entry, \meta{sub-label} is the label of the last +level~1 entry and \meta{label} is the label of the last +level~0 entry. + +For example, the resource option \texttt{seealso=omit} +instructs \gls{bib2gls} to omit the \texttt{seealso} cross-reference +from the location list. (The \texttt{see} cross-reference +will still be added unless you also have \texttt{see=omit}.) +The \texttt{seealso} cross-reference can instead be appended after +the child entries using: +\begin{verbatim} +\renewcommand{\glsxtrbookindexatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% +} +\renewcommand{\glsxtrbookindexbetween}[2]{% + \glsxtrbookindexatendgroup{#1}% +}% + +\renewcommand{\glsxtrbookindexsubatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% +} + +\renewcommand{\glsxtrbookindexsubbetween}[2]{% + \glsxtrbookindexsubatendgroup{#1}% +} + +\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}% + {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% +} + +\renewcommand{\glsxtrbookindexsubsubbetween}[2]{% + \glsxtrbookindexsubsubatendgroup{#1}% +} +\end{verbatim} +This uses \cs{glstreesubitem} and \cs{glstreesubsubitem} +to indent the cross-reference according to the next level down, +so the cross-reference for a top-level entry is aligned with +the sub-entries, and a level~1 entry has its cross-reference +aligned with sub-sub-entries. In the event that a level~2 +entry has a cross-reference, this is indented a bit further +(but it won't be aligned with any deeper level as the +\glostyle{bookindex} style only supports a maximum of two +sub-levels). + +The \glostyle{bookindex} style uses group headings. (If you +use \gls{bib2gls} remember to invoke it with the \verb|--group| +or \verb|-g| switch.) The heading will use +\begin{definition}[\DescribeMacro\glsxtrbookindexbookmark] +\cs{glsxtrbookindexbookmark}\marg{group title}\marg{name} +\end{definition} +If \cs{pdfbookmark} has been defined, this will +use that command to bookmark the group title. If +\pkgopt[chapter]{section} is set (default if chapters are defined) +then this uses level~1 otherwise it uses level~2. You can +redefine this command if this isn't appropriate. +If \cs{pdfbookmark} hasn't been defined, this command does nothin. + +The group heading is formatted according to +\begin{definition}[\DescribeMacro\glsxtrbookindexformatheader] +\cs{glsxtrbookindexformatheader}\marg{group title} +\end{definition} +which is defined as +\begin{verbatim} +\newcommand*{\glsxtrbookindexformatheader}[1]{% + \par{\centering\glstreegroupheaderfmt{#1}\par}% +} +\end{verbatim} +where \cs{glstreegroupheaderfmt} is provided by the +\sty{glossary-tree} package, which is automatically loaded. +Note that the entry names aren't encapsulated with +\cs{glstreenamefmt}. + +The \sty{glossary-bookindex} package provides some supplementary +commands that aren't used by default, but may be used when +adjusting the style. These commands should only be +used within one of the \cs{print\ldots glossary} commands. +(That is, they should only be used in glossary styles.) +\begin{definition}[\DescribeMacro\glsxtrbookindexmarkentry] +\cs{glsxtrbookindexmarkentry}\marg{label} +\end{definition} +This writes information to the \texttt{.aux} file that +can be read on the next run to obtain the first and last entry on +each page of the glossary. + +You can display the first entry +associated with the current page using: +\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmark] +\cs{glsxtrbookindexfirstmark} +\end{definition} +and the last entry associated with the current page +using: +\begin{definition}[\DescribeMacro\glsxtrbookindexlastmark] +\cs{glsxtrbookindexlastmark} +\end{definition} +These do nothing if there are no entries marked on the current page +(or if the document build isn't up to date). + +The entry is formatted using: +\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmarkfmt] +\cs{glsxtrbookindexfirstmarkfmt}\marg{label} +\end{definition} +for the first instance and +\begin{definition}[\DescribeMacro\glsxtrbookindexlastmarkfmt] +\cs{glsxtrbookindexlastmarkfmt}\marg{label} +\end{definition} +for the last. + +These commands are designed for use in page headers or footers +where the page number is stable. For example, \cs{glsxtrbookindexname} +can be redefined to mark the current entry: +\begin{verbatim} +\renewcommand{\glsxtrbookindexname}[1]{% + \glsxtrbookindexmarkentry{#1}% + \glossentryname{#1}% +} +\end{verbatim} +If you only want to mark the top-level entries, remember +to redefine \cs{glsxtrbookindexsubname} as it defaults +to \cs{glsxtrbookindexname}: +\begin{verbatim} +\renewcommand{\glsxtrbookindexsubname}[1]{% + \glossentryname{#1}% +} +\end{verbatim} + +Then if you're using \sty{fancyhdr} you can set the page style +to show the first and last entry for the current page with: +\begin{verbatim} + \pagestyle{fancy}% + \lhead{\thepage}% + \lfoot{\glsxtrbookindexfirstmark}% + \cfoot{}% + \rfoot{\glsxtrbookindexlastmark}% +\end{verbatim} + +\section{\styfmt{glossary-longextra} package} +\label{sec:longextra} + +As from version 1.37, the \styfmt{glossaries-extra} package comes +with the supplementary package \sty{glossary-longextra} that +provides additional styles, listed below, that use the +\env{longtable} environment. If you know that your glossary won't +span more than a page and you need to use it in a context that's +incompatible with \env{longtable}, you can instead setup these styles +to use \env{tabular} instead. In order to do this you must use +\begin{definition}[\DescribeMacro\GlsLongExtraUseTabulartrue] +\cs{GlsLongExtraUseTabulartrue} +\end{definition} +\emph{before the style is set}. For example: +\begin{verbatim} +\GlsLongExtraUseTabulartrue +\setglossarystyle{long-name-desc} +\end{verbatim} +or +\begin{verbatim} +\GlsLongExtraUseTabulartrue +\printunsrtglossary[style={long-name-desc}] +\end{verbatim} +If you use this setting, you can change the default vertical +alignment with: +\begin{definition}[\DescribeMacro\glslongextraTabularVAlign] +\cs{glslongextraTabularVAlign} +\end{definition} +The default definition is \texttt{c}. + +The column titles are formatted according to: +\begin{definition}[\DescribeMacro\glslongextraHeaderFmt] +\cs{glslongextraHeaderFmt}\marg{text} +\end{definition} +which simply does \cs{textbf}\marg{text} by default. + +The name column has the title given by \ics{entryname} and +the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraNameAlign] +\cs{glslongextraNameAlign} +\end{definition} +which expands to \texttt{l} (left) by default. + +The symbol column (where applicable) has the title given by +\ics{symbolname} and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraSymbolAlign] +\cs{glslongextraSymbolAlign} +\end{definition} +which expands to \texttt{c} (centred) by default. + +The location list column (where applicable) has the title given by +\ics{pagelistname} and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationAlign] +\cs{glslongextraLocationAlign} +\end{definition} +which expands to +\begin{verbatim} +>{\raggedright}p{\glspagelistwidth} +\end{verbatim} +by default. (Ragged-right paragraph, \ics{glspagelistwidth} is +defined in \sty{glossary-long}, which is automatically loaded.) + +The description column has the title given by \ics{descriptionname} +and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraDescAlign] +\cs{glslongextraDescAlign} +\end{definition} +which expands to +\begin{verbatim} +>{\raggedright}p{\glsdescwidth} +\end{verbatim} +by default. (Ragged-right paragraph, \ics{glsdescwidth} is +defined in \sty{glossary-long}, which is automatically loaded.) + +Unlike the long styles provided by the base \styfmt{glossaries} +package, these new styles try to determine the value of +\cs{glsdescwidth} at the start of the glossary according to the +number of columns provided by the style. The calculations are +performed by the following commands: +\begin{definition}[\DescribeMacro\glslongextraSetDescWidth] +\cs{glslongextraSetDescWidth} +\end{definition} +This is used by the styles that have a name and description +column. The value of \cs{glsdescwidth} is computed as: +\[ + \cs{glsdescwidth} = \cs{linewidth} - 4\cs{tabcolsep} - W +\] +where $W$ is a guess at the width of the name column. This is first +set to the width of the name column header: +\begin{alltt} +\cs{settowidth}\marg{width}\{\cs{glslongextraHeaderFmt}\cs{entryname}\} +\end{alltt} +If any names in that column are larger than this, then you need +to specify the widest name using: +\begin{definition}[\DescribeMacro\glslongextraSetWidest] +\cs{glslongextraSetWidest}\marg{widest name} +\end{definition} +or +\begin{definition}[\DescribeMacro\glslongextraUpdateWidest] +\cs{glslongextraUpdateWidest}\marg{text} +\end{definition} +These work like the analogous commands \cs{glssetwidest} and +\cs{glsupdatewidest} provided with the \glostyle{alttree} style, but +in this case there's no hierarchy. The default widest name +is obtained from the \glostyle{alttree} top-level name if set, +otherwise it's empty, so you can use \gls{bib2gls}['s] +\texttt{set-widest} option. If you have the entry counter enabled, +you will need to include this with the name for the extra material to +be taken into account. + +The name isn't shown for child entries by default, but if +you change this and you want to use \gls{bib2gls}['s] +\texttt{set-widest} option (for \gls{bib2gls} v1.8+) then you need to +redefine: +\begin{definition}[\DescribeMacro\glslongextraUpdateWidestChild] +\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text} +\end{definition} +This does nothing by default, but if you are including the child +names then you need to redefine this command: +\begin{verbatim} +\renewcommand{\glslongextraUpdateWidestChild}[2]{% + \glslongextraUpdateWidest{#2}% +} +\end{verbatim} + +If you prefer to set an explicit width for the description +column then you need to redefine \cs{glslongextraSetDescWidth}. For +example: +\begin{verbatim} +\renewcommand{\glslongextraSetDescWidth}{% + \setlength{\glsdescwidth}{0.6\linewidth}% +} +\end{verbatim} + +The styles that have a name, symbol and description, +\cs{glsdescwidth} is set with: +\begin{definition}[\DescribeMacro\glslongextraSymSetDescWidth] +\cs{glslongextraSymSetDescWidth} +\end{definition} +This first uses \cs{glslongextraSetDescWidth} and then subtracts +2\cs{tabcolsep} and the width of the symbol column header from +\cs{glsdescwidth}. This assumes that the symbol column header +is larger than any of the symbols. If this isn't appropriate +then you can redefine this command. For example: +\begin{verbatim} +\renewcommand{\glslongextraSymSetDescWidth}{% + \glslongextraSetDescWidth + \addtolength{\glsdescwidth}{-3cm}% +} +\end{verbatim} +or +\begin{verbatim} +\renewcommand{\glslongextraSymSetDescWidth}{% + \setlength{\glsdescwidth}{.5\linewidth}% +} +\end{verbatim} + +For the styles that have a name, description and location column, +\cs{glsdescwidth} is set using: +\begin{definition}[\DescribeMacro\glslongextraLocSetDescWidth] +\cs{glslongextraLocSetDescWidth} +\end{definition} +This uses \cs{glslongextraSetDescWidth} and then subtracts +2\cs{tabcolsep} and \cs{glspagelistwidth} from \cs{glsdescwidth}. +You can redefine this command to set both \cs{glsdescwidth} and +\cs{glspagelistwidth} if appropriate. + +For the styles that have a name, description, symbol and location +column, \cs{glsdescwidth} is set using: +\begin{definition}[\DescribeMacro\glslongextraSymLocSetDescWidth] +\cs{glslongextraSymLocSetDescWidth} +\end{definition} +This uses \cs{glslongextraSymSetDescWidth} and then subtracts +2\cs{tabcolsep} and \cs{glspagelistwidth} from +\cs{glsdescwidth}. Again, you can redefine this command +to explicitly set both lengths. + +In all cases, the top-level name is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraNameFmt] +\cs{glslongextraNameFmt}\marg{label} +\end{definition} +This does +\begin{alltt} +\cs{glsentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\} +\end{alltt} +which includes the entry counter (if enabled), the target and the post-name link. + +The top-level description is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraDescFmt] +\cs{glslongextraDescFmt}\marg{label} +\end{definition} +This does \cs{glossentrydesc}\marg{label} followed by the +post-description hook. + +The styles that have a symbol column format the symbol using: +\begin{definition}[\DescribeMacro\glslongextraSymbolFmt] +\cs{glslongextraSymbolFmt}\marg{label} +\end{definition} +This just does \cs{glossentrysymbol}\marg{label}. + +The styles that have a location list column format the list using: +\begin{definition}[\DescribeMacro\glslongextraLocationFmt] +\cs{glslongextraLocationFmt}\marg{label}\marg{locations} +\end{definition} +This just does \meta{locations} and ignores the label. + +The child entries have their name formatted according to: +\begin{definition}[\DescribeMacro\glslongextraSubNameFmt] +\cs{glslongextraSubNameFmt}\marg{level}\marg{label} +\end{definition} +where \meta{level} is the hierarchical level. This defaults to: +\begin{alltt} +\cs{glssubentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{strut}\} +\end{alltt} +This includes the sub-entry counter (if enabled) and the target +but doesn't show the name. The child description is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraSubDescFmt] +\cs{glslongextraSubDescFmt}\marg{level}\marg{label} +\end{definition} +which defaults to just \cs{glslongextraDescFmt}\marg{label} + +The child symbol is formatted (where appropriate) according to: +\begin{definition}[\DescribeMacro\glslongextraSubSymbolFmt] +\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label} +\end{definition} +This just does \cs{glslongextraSymbolFmt}\marg{label} by default. + +The styles that have a location list column format the list for +child entries using: +\begin{definition}[\DescribeMacro\glslongextraLocationFmt] +\cs{glslongextraSubLocationFmt}\meta{level}\marg{label}\marg{locations} +\end{definition} +This just does \meta{locations} and ignores the level and label. + +The letter group headings are formatted according to: +\begin{definition}[\DescribeMacro\glslongextraGroupHeading] +\cs{glslongextraGroupHeading}\marg{n}\marg{label} +\end{definition} +which does nothing by default. The first argument \meta{n} is the +number of columns in the table. The second argument \meta{label} +is the group label (not the title, although they may happen +to be the same). + +This can be redefined to show the group heading. For example: +\begin{verbatim} +\renewcommand*{\glslongextraGroupHeading}[2]{% + \glsxtrgetgrouptitle{#2}{\thisgrptitle}% + \glslongextraHeaderFmt{\thisgrptitle}% + \tabularnewline + \noalign{\vskip\normalbaselineskip}% +} +\end{verbatim} +This ignores the first argument and just puts the group +title in the first column formatted according to +\cs{glslongextraHeaderFmt} (to match the column header). + +Remember that you can also adjust the styles through category +attributes. The name column's title is given by +\cs{entryname}, the description column's title is given by +\cs{descriptionname} and (where present) the symbol column's +title is given by \cs{symbolname}, as for the other long styles +that have headers. + +\begin{description} +\item{\glostyle{long-name-desc}} This is like the +\glostyle{longragged-booktabs} style but doesn't show the location +list (regardless of the \pkgopt{nonumberlist} option). The name is +shown in the first column and the description in the second. + +The symbol is not displayed. The header +row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescHeader] +\cs{glslongextraNameDescHeader} +\end{definition} +This essentially uses the same code as for \glostyle{longragged-booktabs} +but makes it easier to adjust the header without having to define a +new style. This is defined as: +\begin{verbatim} +\glslongextraNameDescTabularHeader\endhead +\glslongextraNameDescTabularFooter\endfoot +\end{verbatim} +where: +\begin{definition}[\DescribeMacro\glslongextraNameDescTabularHeader] +\cs{glslongextraNameDescTabularHeader} +\end{definition} +sets up the header and +\begin{definition}[\DescribeMacro\glslongextraNameDescTabularFooter] +\cs{glslongextraNameDescTabularFooter} +\end{definition} +sets up the footer. If you have setup the \env{tabular} version +of this style then the above two commands are used at the +start and end of the \env{tabular} environment (and +\cs{glslongextraNameDescHeader} isn't used). + +For example, to simply remove the header and footer (for the default +\env{longtable} version of the style): +\begin{verbatim} +\renewcommand{\glslongextraNameDescHeader}{} +\end{verbatim} +Or to change the name alignment to centred: +\begin{verbatim} +\renewcommand{\glslongextraNameAlign}{c} +\end{verbatim} + +\item{\glostyle{long-name-desc-loc}} This is like the +\glostyle{long-name-desc} style but has a third column for the +location list. The \env{longtable} header is given by: +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationHeader] +\cs{glslongextraNameDescLocationHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularHeader] +\cs{glslongextraNameDescLocationTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularFooter] +\cs{glslongextraNameDescLocationTabularFooter} +\end{definition} + +\item{\glostyle{long-desc-name}} This is like the +\glostyle{long-name-desc} style but swaps the columns. Note that +if the entry counter is displayed it will appear at the start +of the second column by default. The \env{longtable} header is formatted according +to: +\begin{definition}[\DescribeMacro\glslongextraDescNameHeader] +\cs{glslongextraDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraDescNameTabularHeader] +\cs{glslongextraDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraDescNameTabularFooter] +\cs{glslongextraDescNameTabularFooter} +\end{definition} + +\item{\glostyle{long-loc-desc-name}} This has three columns +containing the location list, description and name. The +\env{longtable} header +is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameHeader] +\cs{glslongextraLocationDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularHeader] +\cs{glslongextraLocationDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularFooter] +\cs{glslongextraLocationDescNameTabularFooter} +\end{definition} + +\item{\glostyle{long-name-desc-sym}} This is has three columns, with +the name in the first, the description in the second and the symbol +in the third. + +The \env{longtable} header row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymHeader] +\cs{glslongextraNameDescSymHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularHeader] +\cs{glslongextraNameDescSymTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularFooter] +\cs{glslongextraNameDescSymTabularFooter} +\end{definition} + +\item{\glostyle{long-name-desc-sym-loc}} This is has four columns, with +the name in the first, the description in the second, the symbol +in the third and the location list in the fourth. + +The \env{longtable} header row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationHeader] +\cs{glslongextraNameDescSymLocationHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularHeader] +\cs{glslongextraNameDescSymLocationTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularFooter] +\cs{glslongextraNameDescSymLocationTabularFooter} +\end{definition} + +\item{\glostyle{long-name-sym-desc}} This is like the +\glostyle{long-name-desc-sym} but the second and third column are +swapped. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescHeader] +\cs{glslongextraNameSymDescHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularHeader] +\cs{glslongextraNameSymDescTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularFooter] +\cs{glslongextraNameSymDescTabularFooter} +\end{definition} + +\item{\glostyle{long-name-sym-desc-loc}} This is like the +\glostyle{long-name-desc-sym-loc} but the second and third column are +swapped. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationHeader] +\cs{glslongextraNameSymDescLocationHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularHeader] +\cs{glslongextraNameSymDescLocationTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularFooter] +\cs{glslongextraNameSymDescLocationTabularFooter} +\end{definition} + +\item{\glostyle{long-sym-desc-name}} This has the symbol in the +first column, the description in the second and the name in the +third. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraSymDescNameHeader] +\cs{glslongextraSymDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularHeader] +\cs{glslongextraSymDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularFooter] +\cs{glslongextraSymDescNameTabularFooter} +\end{definition} + +\item{\glostyle{long-loc-sym-desc-name}} This has the location list +in the first column, symbol in the +second column, the description in the third and the name in the +fourth. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameHeader] +\cs{glslongextraLocationSymDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularHeader] +\cs{glslongextraLocationSymDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularFooter] +\cs{glslongextraLocationSymDescNameTabularFooter} +\end{definition} + +\item{\glostyle{long-desc-sym-name}} This has the description in the +first column, the symbol in the second and the name in the +third. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraDescSymNameHeader] +\cs{glslongextraDescSymNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularHeader] +\cs{glslongextraDescSymNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularFooter] +\cs{glslongextraDescSymNameTabularFooter} +\end{definition} + +\item{\glostyle{long-loc-desc-sym-name}} This has the location list +in the first column, the description in the +second column, the symbol in the third and the name in the +fourth. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameHeader] +\cs{glslongextraLocationDescSymNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularHeader] +\cs{glslongextraLocationDescSymNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularFooter] +\cs{glslongextraLocationDescSymNameTabularFooter} +\end{definition} + +\end{description} + +\section{\styfmt{glossary-topic} package} +\label{sec:topic} + +As from version 1.40, the \styfmt{glossaries-extra} package comes +with the supplementary package \sty{glossary-topic} that +provides glossary styles designed for hierarchical glossaries +where the top-level entries are topic titles. This package +automatically loads the \sty{multicols} package. If the +\sty{glossary-tree} package is also loaded then commands like +\cs{glssetwidest} can be used on these styles in much the same way +as for the \glostyle{alttree} style. If a widest value isn't set +then these styles behave more like the \glostyle{tree} style. +\begin{description} +\item[\glostyle{topic}] This style is similar to the \glostyle{tree} +style but the indentation doesn't start until the second +sub-item level. The top-level entries have the name displayed +in a larger font with the description following in a new paragraph. +This style doesn't support the \pkgopt{nogroupskip} setting. + +\item[\glostyle{topicmcols}] This style is like the \glostyle{topic} +style but the sub-entries are placed inside a \env{multicols} +environment. The environment name is supplied in the value of +the command: +\begin{definition}[\DescribeMacro\glstopicColsEnv] +\cs{glstopicColsEnv} +\end{definition} +You can change this to the starred form. For example: +\begin{verbatim} +\renewcommand{\glstopicColsEnv}{multicols*} +\end{verbatim} +The number of columns is given by the command: +\begin{definition}[\DescribeMacro\glstopicCols] +\cs{glstopicCols} +\end{definition} +The default value is 2. +\end{description} +Both styles use the following commands. +\begin{definition}[\DescribeMacro\glstopicParIndent] +\cs{glstopicParIndent} +\end{definition} +This command is a length that's used for the paragraph indentation +in any multi-paragraph description for top-level entries, but not +for the first paragraph (at the start of the description) which +isn't indented. + +\begin{definition}[\DescribeMacro\glstopicSubIndent] +\cs{glstopicSubIndent} +\end{definition} +This command is a length that's used to calculate the hanging +indentation for sub-entries. The level~1 sub-entries don't indent +the name. Level~$n$ sub-entries have the name indented by +$(n-1)\times$\cs{glstopicSubIndent}. The hanging indent depends +on whether or not a widest name has been set for the level. + +\begin{definition}[\DescribeMacro\glstopicInit] +\cs{glstopicInit} +\end{definition} +Hook used at the start of the glossary. Does nothing by default. + +Although the styles don't support letter groups by default, if you +have many topics (top-level entries) and you feel that it would help +the reader to divide them up into headed letter groups, you can +redefine: +\begin{definition}[\DescribeMacro\glstopicGroupHeading] +\cs{glstopicGroupHeading}\marg{group label} +\end{definition} +This does nothing by default. If you want to redefine it, you can +fetch the title corresponding to the group label with +\cs{glsxtrgetgrouptitle}. For example: +\begin{verbatim} +\renewcommand*{\glstopicGroupHeading}[1]{% + \glsxtrgetgrouptitle{#1}{\thisgrptitle}% + \section*{\thisgrptitle}% +} +\end{verbatim} +Remember that if you use \gls{bib2gls}, you will need the +\verb|--group| (or \verb|-g|) switch to support this. + +\begin{definition}[\DescribeMacro\glstopicItem] +\cs{glstopicItem}\marg{label}\marg{location list} +\end{definition} +Used to format the name, symbol, description and location list +for the top-level entries. This starts with a paragraph break +followed by: +\begin{definition}[\DescribeMacro\glstopicPreSkip] +\cs{glstopicPreSkip} +\end{definition} +which defaults to \cs{medskip}. There is then a hook: +\begin{definition}[\DescribeMacro\glstopicMarker] +\cs{glstopicMarker}\marg{label} +\end{definition} +which does nothing by default, but may be redefined. For example, +to add a line to the table of contents. +The name and symbol are set in the +form of a title using: +\begin{definition}[\DescribeMacro\glstopicTitle] +\cs{glstopicTitle}\marg{label} +\end{definition} +This uses \cs{Glossentryname} which converts the first letter to +upper case. If there's a symbol, this is added in parentheses. +Both name and symbol (if present) are encapsulated by +\begin{definition}[\DescribeMacro\glstopicTitleFont] +\cs{glstopicTitleFont}\marg{text} +\end{definition} +This uses a bold, large font by default. + +If the entry has the description key set (tested with +\cs{ifglshasdesc}) then a paragraph break is inserted followed by: +\begin{definition}[\DescribeMacro\glstopicMidSkip] +\cs{glstopicMidSkip} +\end{definition} +which defaults to \cs{smallskip}. This is followed by the +description which is formatted according to: +\begin{definition}[\DescribeMacro\glstopicDesc] +\cs{glstopicDesc}\marg{label} +\end{definition} +This just does \cs{Glossentrydesc}\marg{label} followed +by the post-description hook. + +A paragraph break followed by: +\begin{definition}[\DescribeMacro\glstopicPostSkip] +\cs{glstopicPostSkip} +\end{definition} +comes next regardless of whether or not the description was +displayed. This defaults to \cs{smallskip}. This is then followed +by: +\begin{definition}[\DescribeMacro\glstopicLoc] +\cs{glstopicLoc}\marg{label}\marg{location list} +\end{definition} +which may be used to display the location list, but does nothing by +default. + +The sub-entries first set up the paragraph and hanging indentations +using: +\begin{definition}[\DescribeMacro\glstopicAssignSubIndent] +\cs{glstopicAssignSubIndent}\marg{level} +\end{definition} +This uses: +\begin{definition}[\DescribeMacro\glstopicAssignWidest] +\cs{glstopicAssignWidest}\marg{level} +\end{definition} +to determine if a widest name has been set for the given level. + +The sub-entry has its information displayed using: +\begin{definition}[\DescribeMacro\glstopicSubItem] +\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location} +\end{definition} +This encapsulates the name with: +\begin{definition}[\DescribeMacro\glstopicSubNameFont] +\cs{glstopicSubNameFont}\marg{text} +\end{definition} +By default this just uses \cs{textbf}. This is followed by: +\begin{definition}[\DescribeMacro\glstopicSubItemSep] +\cs{glstopicSubItemSep} +\end{definition} +which defaults to \cs{quad}. The name and separator are +passed in the \meta{text} argument of: +\begin{definition}[\DescribeMacro\glstopicSubItemBox] +\cs{glstopicSubItemBox}\marg{level}\marg{text} +\end{definition} +If a widest name was set for the given level, this will +put \meta{text} inside a box of that width otherwise it just does +\meta{text}. + +This is followed by the symbol in parentheses if set. Then, if the +description is set, the description and post-description hook are +displayed followed by: +\begin{definition}[\DescribeMacro\glstopicSubPreLocSep] +\cs{glstopicSubPreLocSep} +\end{definition} +(This command isn't used if the description isn't set.) + +Finally the location list is displayed using: +\begin{definition}[\DescribeMacro\glstopicSubLoc] +\cs{glstopicSubLoc}\marg{label}\marg{location} +\end{definition} +which just does \meta{location} by default. + +\section{Glossary Style Modifications} +\label{sec:glosstylemods} + +The \sty{glossaries-extra-stylemods} package (more conveniently +loaded through the \styfmt{glossaries-extra} +\pkgopt{stylemods} option) modifies some of the predefined +styles that are provided with the \styfmt{glossaries} package. +These modifications are described in more detail in +\sectionref{sec:stylemods}. + +The \sty{glossaries} package tries to determine the group +title from its label by first checking if +\cs{}\meta{label}\texttt{groupname} exists. If it doesn't exist, +then the title is assumed to be the same as the label. +For example, when typesetting the \qt{A} letter group, +\sty{glossaries} first checks if \cs{Agroupname} exists. +This could potentially cause conflict with another package +that may have some other meaning for \cs{Agroupname}, so +\sty{glossaries-extra} first checks for the existence +of the internal command \cs{glsxtr@grouptitle@}\meta{label} +which shouldn't clash with another package. You can set the +group title using +\begin{definition}[\DescribeMacro\glsxtrsetgrouptitle] +\cs{glsxtrsetgrouptitle}\marg{label}\marg{title} +\end{definition} +For example: +\begin{verbatim} +\glsxtrsetgrouptitle{A}{A (a)} +\end{verbatim} +This uses a global assignment. If you need to scope the change +you can use +\begin{definition}[\DescribeMacro\glsxtrlocalsetgrouptitle] +\cs{glsxtrlocalsetgrouptitle}\marg{label}\marg{title} +\end{definition} + +\subsection{Style Hooks} +\label{sec:stylehooks} + +The commands \ics{glossentryname} and \ics{glossentrydesc} are +modified to take into account the \catattr{glossname}, +\catattr{glossdesc} and \catattr{glossdescfont} attributes (see \sectionref{sec:categories}). +This means you can make simple case-changing modifications to +the name and description without defining a new glossary style. + +If you want to adapt a style to use another field instead +of \gloskey{name}, you can use +\begin{definition}[\DescribeMacro\glossentrynameother] +\cs{glossentrynameother}\marg{label}\marg{field} +\end{definition} +This behaves just like \cs{glossentryname} (that is, it obeys +\catattr{glossname}, \catattr{glossnamefont} or \cs{glsnamefont} and uses the post-name +hook) but it uses the given \meta{field} instead of \gloskey{name}. +The \meta{field} argument must be the internal field name +(for example \texttt{desc} rather than \texttt{description}). +See the key to field mappings table in the \styfmt{glossaries} +user manual. + +There is a hook after \ics{glossentryname} and +\ics{Glossentryname}: +\begin{definition}[\DescribeMacro\glsxtrpostnamehook] +\cs{glsxtrpostnamehook}\marg{label} +\end{definition} +By default this checks the \catattr{indexname} attribute. +If the attribute exists for the category to which the label belongs, +then the name is automatically indexed using +\begin{definition} +\ics{glsxtrdoautoindexname}\marg{label}\texttt{\{indexname\}} +\end{definition} +See \sectionref{sec:autoindex} for further details. + +\begin{sloppypar} +As from version 1.04, the post-name hook \cs{glsxtrpostnamehook} +will also use \cs{glsxtrpostname}\meta{category} if it exists. +You can use \ics{glscurrententrylabel} to obtain the entry label +with the definition of this command. For example, suppose you are +using a glossary style the doesn't display the symbol, you can +insert the symbol after the name for a particular category, say, +the \qt{symbol} category: +\end{sloppypar} +\begin{verbatim} +\newcommand*{\glsxtrpostnamesymbol}{\space + (\glsentrysymbol{\glscurrententrylabel})} +\end{verbatim} +For convenience, as from v1.31, you can use +\begin{definition}[\DescribeMacro\glsdefpostname] +\cs{glsdefpostname}\marg{category}\marg{definition} +\end{definition} +This is simply a shortcut for: +\begin{alltt} +\cs{csdef}\{glsxtrpostname\meta{category}\}\marg{definition} +\end{alltt} +Note that it doesn't check if the command has already been defined. + +As from version 1.25, the post-name hook also does +\begin{definition}[\DescribeMacro\glsextrapostnamehook] +\cs{glsextrapostnamehook}\marg{label} +\end{definition} +(before \cs{glsxtrpostname}\meta{category}) +to allow for additional non-category related code. This does nothing +by default. + +The post-description code used within the glossary is modified so +that it also does +\begin{definition}[\DescribeMacro\glsxtrpostdescription] +\cs{glsxtrpostdescription} +\end{definition} +This occurs before the original \cs{glspostdescription}, so if the +\pkgopt[false]{nopostdot} option is used, it will be inserted before +the terminating full stop. + +This new command will do \cs{glsxtrpostdesc\meta{category}} +if it exists, where \meta{category} is the category label associated +with the current entry. For example \cs{glsxtrpostdescgeneral} +for entries with the category set to \category{general} +or \cs{glsxtrpostdescacronym} for entries with the category set to +\category{acronym}. +For convenience, as from v1.31, you can use +\begin{definition}[\DescribeMacro\glsdefpostdesc] +\cs{glsdefpostdesc}\marg{category}\marg{definition} +\end{definition} +This is simply a shortcut for: +\begin{alltt} +\cs{csdef}\{glsxtrpostdesc\meta{category}\}\marg{definition} +\end{alltt} +Note that it doesn't check if the command has already been defined. + +Since both \cs{glossentry} and \cs{subglossentry} set +\begin{definition}[\DescribeMacro\glscurrententrylabel] +\cs{glscurrententrylabel} +\end{definition} +to the label for the current entry, you can use this within the +definition of these post-description hooks if you need to reference +the label. + +For example, suppose you want to insert the plural form in brackets +after the description in the glossary, but only for entries in the +\category{general} category, then you could do: +\begin{verbatim} +\renewcommand{\glsxtrpostdescgeneral}{\space + (plural: \glsentryplural{\glscurrententrylabel})} +\end{verbatim} +This means you don't have to define a custom glossary style, which +you may find more complicated. (It also allows more flexibility if +you decide to change the underlying glossary style.) + +\begin{important} +This feature can't be used for glossary styles that ignore +\cs{glspostdescription} or if you redefine +\cs{glspostdescription} without including \cs{glsxtrpostdescription}. +(For example, if you redefine \cs{glspostdescription} to do +nothing instead of using the \pkgopt{nopostdot} option to suppress +the terminating full stop.) See \sectionref{sec:stylemods} to patch +the predefined styles provided by \styfmt{glossaries} that are missing +\cs{glspostdescription}. +\end{important} + +\subsection{Number List} +\label{sec:glosstylenumlist} + +The \gls{numberlist} is now placed inside the argument of +\begin{definition}[\DescribeMacro\GlsXtrFormatLocationList] +\cs{GlsXtrFormatLocationList}\marg{number list} +\end{definition} +This is internally used by \cs{glossaryentrynumbers}. The +\pkgopt{nonumberlist} option redefines \cs{glossaryentrynumbers} so that it +doesn't display the \gls{numberlist}, but it still saves the +\gls{numberlist} in case it's required. + +\begin{important} +If you want to suppress the \gls{numberlist} always use the +\pkgopt{nonumberlist} option instead of redefining +\cs{glossaryentrynumbers} to do nothing. +\end{important} + +If you want to, for example, change the font for the entire +\gls{numberlist} then redefine \cs{GlsXtrFormatLocationList} as +appropriate. Don't modify \cs{glossaryentrynumbers}. + +Sometimes users like to insert \qt{page} or \qt{pages} in front of +the \gls{numberlist}. This is quite fiddly to do with the base +\styfmt{glossaries} package, but \styfmt{glossaries-extra} +provides a way of doing this. First you need to enable this +option and specify the text to display using: +\begin{definition}[\DescribeMacro\GlsXtrEnablePreLocationTag] +\cs{GlsXtrEnablePreLocationTag}\marg{page}\marg{pages} +\end{definition} +where \meta{page} is the text to display if the \gls{numberlist} only +contains a single location and \meta{pages} is the text to display +otherwise. For example: +\begin{verbatim} +\GlsXtrEnablePreLocationTag{Page: }{Pages: } +\end{verbatim} +An extra run is required when using this command. + +\begin{important} +Use \texttt{glsignore} not \texttt{@gobble} as the format if you +want to suppress the page number (and only index the entry once). +\end{important} + +See the accompanying sample file \texttt{sample-pages.tex}. + +Note that \gls{bib2gls} can be instructed to insert +a prefix at the start of non-empty location lists, which +can be used as an alternative to \cs{GlsXtrEnablePreLocationTag}. + +\subsection{The \styfmt{glossaries-extra-stylemods} Package} +\label{sec:stylemods} + +As from v1.02, \styfmt{glossaries-extra} now includes the package +\sty{glossaries-extra-stylemods} that will redefine the predefined +styles to include the post-description hook (for those that are +missing it). You will need to make sure the styles have already +been defined before loading \styfmt{glossaries-extra}. For example: +\begin{verbatim} +\usepackage{glossaries-extra} +\usepackage{glossary-longragged} +\usepackage{glossaries-extra-stylemods} +\end{verbatim} +Alternatively you can load +\texttt{glossary-}\meta{name}\texttt{.sty} at the same time by +passing \meta{name} as a package option to +\sty{glossaries-extra-stylemods}. For example: +\begin{verbatim} +\usepackage{glossaries-extra} +\usepackage[longragged]{glossaries-extra-stylemods} +\end{verbatim} +Another option is to use the \pkgopt{stylemods} key when you +load \styfmt{glossaries-extra}. You can omit a value if you only want to use +the predefined styles that are automatically loaded by +\styfmt{glossaries} (for example, the \glostyle{long3col} style): +\begin{verbatim} +\usepackage[style=long3col,stylemods]{glossaries-extra} +\end{verbatim} +Or the value of \pkgopt{stylemods} may be a comma-separated list +of the style package identifiers. For example: +\begin{verbatim} +\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra} +\end{verbatim} +Remember to group the value if it contains any commas: +\begin{verbatim} +\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} +\end{verbatim} + +Note that the \glostyle{inline} style is dealt with slightly +differently. The original definition provided by the +\sty{glossary-inline} package uses \cs{glspostdescription} at the +end of the glossary (not after each entry description) within the +definition of \cs{glspostinline}. The style modification changes +this so that \cs{glspostinline} just does a full stop followed by +space factor adjustment, and the description +\cs{glsinlinedescformat} and sub-entry description formats +\cs{glsinlinesubdescformat} are redefined to include +\cs{glsxtrpostdescription} (not \cs{glspostdescription}). This means +that the modified \glostyle{inline} style isn't affected by the +\pkgopt{nopostdot} option, but the post-description category hook +can still be used. + +The \env{tabular}-like styles, such as \glostyle{long} are +adjusted so that the \ics{ifglsnogroupskip} conditional (set with +\pkgopt{nogroupskip}) is moved outside of the definition of +\cs{glsgroupskip} to avoid problems that cause an \qt{Incomplete +\cs{iftrue}} error with \cs{printunsrtglossary} and +\cs{printnoidxglossary}. This means that if you want to change this +conditional using \cs{setupglossaries} or using the +\gloskey[printglossary]{nogroupskip} option in \cs{printglossary}, +\cs{printnoidxglossary} or \cs{printunsrtglossary}, you must also +reset the glossary style. + +As from version 1.21, the hard-coded \cs{space} before the +\gls{numberlist} in many of the predefined styles is replaced +with +\begin{definition}[\DescribeMacro\glsxtrprelocation] +\cs{glsxtrprelocation} +\end{definition} +This just defaults to \cs{space} but may be redefined as required. +For example: +\begin{verbatim} +\renewcommand{\glsxtrprelocation}{\dotfill} +\end{verbatim} + +The \glostyle{list} styles use +\begin{definition}[\DescribeMacro\glslistprelocation] +\cs{glslistprelocation} +\end{definition} +(which defaults to \cs{glsxtrprelocation}) for top-level items and +\begin{definition}[\DescribeMacro\glslistchildprelocation] +\cs{glslistchildprelocation} +\end{definition} +(which defaults to \cs{glslistprelocation}) for child items. + +As from v1.31, the description (including the post-description hook) +is governed by: +\begin{definition}[\DescribeMacro\glslistdesc] +\cs{glslistdesc}\marg{label} +\end{definition} +for the \glostyle{list} and \glostyle{altlist} styles (but not the +\glostyle{listdotted} variations). + +For just the \glostyle{list} style and its letter group variations +(not the \glostyle{altlist} or \glostyle{listdotted} variations) the +\gls{numberlist} for child entries is followed by +\begin{definition}[\DescribeMacro\glslistchildpostlocation] +\cs{glslistchildpostlocation} +\end{definition} +which defaults to a full stop. + +The default value of \ics{glslistdottedwidth} is changed so that +it's set at the start of the document (if it hasn't been changed in +the preamble). This should take into account situations where +\cs{hsize} isn't set until the start of the document. + +The separator between groups (if not \pkgopt{nogroupskip}) is now +given by: +\begin{definition}[\DescribeMacro\glslistgroupskip] +\cs{glslistgroupskip} +\end{definition} +This defaults to \cs{indexspace} with penalties to deter page +breaks. +This command isn't used if \pkgopt{nogroupskip} is set. + +The \sty{glossary-tree} package introduced two new commands in +\sty{glossaries} version 4.22, \ics{glstreegroupheaderfmt} +and \ics{glstreenavigationfmt}, which are used to format +the letter group headings and the navigation elements for the +appropriate styles. These two new commands are defined in terms of +\ics{glstreenamefmt} since that was the command originally used +for the group headings and navigation. This now allows these +different elements to be defined independently, but the most common +redefinition is for \cs{glstreenamefmt} to remove the bold in the +name. If the bold is still required for the group heading and navigation +elements, then both other commands also need redefining. To simplify +matters, if \cs{glstreenamefmt} has been defined, as from v1.31 +\sty{glossaries-extra-stylemods} defines: +\begin{definition}[\DescribeMacro\glstreedefaultnamefmt] +\cs{glstreedefaultnamefmt}\marg{text} +\end{definition} +which simply does \cs{textbf}\marg{text} and redefines +\cs{glstreenamefmt}, \cs{glstreegroupheaderfmt} and +\cs{glstreenavigationfmt} all in terms of +\cs{glstreedefaultnamefmt}. This means that if you want to change +all three to use a particular style you only need to redefine +\cs{glstreedefaultnamefmt}, but if you only want to redefine +\cs{glstreenamefmt} without affecting the other two commands, then +you now can. + +The separator between groups (if not \pkgopt{nogroupskip}) is now +given by: +\begin{definition}[\DescribeMacro\glstreegroupskip] +\cs{glstreegroupskip} +\end{definition} +This defaults to \cs{indexspace} with penalties to deter page +breaks. +This command isn't used if \pkgopt{nogroupskip} is set (except for +the styles that display the group titles). + +The styles that display the group titles now use: +\begin{definition}[\DescribeMacro\glstreePreHeader] +\cs{glstreePreHeader}\marg{label}\marg{title} +\end{definition} +where \meta{label} is the group label and \meta{title} is the group +title. This does nothing by default +and is inserted before the group title. You can redefine it to add +the group title to the PDF bookmarks. For example, if the +glossary title uses \cs{chapter} then: +\begin{verbatim} +\renewcommand{\glstreePreHeader}[2]{% + \pdfbookmark[1]{#2}{\currentglossary.#1}% +} +\end{verbatim} +will insert section-level bookmarks. The use of \cs{currentglossary} +helps to provide unique bookmark labels in the event of multiple +glossaries. + +The \glostyle{index}-like and \glostyle{tree}-like styles +insert the pre-\gls{numberlist} space with +\begin{definition}[\DescribeMacro\glstreeprelocation] +\cs{glstreeprelocation} +\end{definition} +(which defaults to \cs{glsxtrprelocation}) for top-level items and +\begin{definition}[\DescribeMacro\glstreechildprelocation] +\cs{glstreechildprelocation} +\end{definition} +(which defaults to \cs{glstreeprelocation}) for child items. + +As from version 1.31, the \styfmt{glossaries-extra-stylemods} +package also provides: +\begin{definition}[\DescribeMacro\glstreenonamedesc] +\cs{glstreenonamedesc}\marg{label} +\end{definition} +which is used by the \glostyle{treenoname} styles to display the +pre-description separator, the description and the post-description +hook. Similarly for the symbol: +\begin{definition}[\DescribeMacro\glstreenonamesymbol] +\cs{glstreenonamesymbol}\marg{label} +\end{definition} +The above are just used for top-level entries. Child entries don't +have the name or symbol displayed for the \glostyle{treenoname} +styles, so there's only a command for the child description: +\begin{definition}[\DescribeMacro\glstreenonamechilddesc] +\cs{glstreenonamechilddesc}\marg{label} +\end{definition} + +For the \glostyle{tree} styles (but not the \glostyle{treenoname} or +\glostyle{alttree} styles), the description is displayed using: +\begin{definition}[\DescribeMacro\glstreedesc] +\cs{glstreedesc}\marg{label} +\end{definition} +and the symbol with: +\begin{definition}[\DescribeMacro\glstreesymbol] +\cs{glstreesymbol}\marg{label} +\end{definition} +Again the above two commands are just for top-level entries. The +child entries use: +\begin{definition}[\DescribeMacro\glstreechilddesc] +\cs{glstreechilddesc}\marg{label} +\end{definition} +for the description and +\begin{definition}[\DescribeMacro\glstreechildsymbol] +\cs{glstreechildsymbol}\marg{label} +\end{definition} +for the symbol. + +As from version 1.41, there are now wrapper commands for +\cs{glstreedesc} and \cs{glstreechilddesc} that check for +the description and symbol to determine whether or not to insert a +space (\cs{glstreeprelocation} or \cs{glstreechildprelocation}) +before the page list. These are: +\begin{definition}[\DescribeMacro\glstreeDescLoc] +\cs{glstreeDescLoc}\marg{label}\marg{location} +\end{definition} +for top-level entries and +\begin{definition}[\DescribeMacro\glstreeChildDescLoc] +\cs{glstreeChildDescLoc}\marg{label}\marg{location} +\end{definition} +for sub-entries. This prevents a spurious space for terms that don't +have a symbol or description but do have a location list (for +example, aliases). + +As from version 1.05, the \styfmt{glossaries-extra-stylemods} +package provides some additional commands for use with the +\glostyle{alttree} style to make it easier to modify. +These commands are only defined if the +\sty{glossary-tree} package has already been loaded, which is +typically the case unless the \pkgopt{notree} option has been used +when loading \styfmt{glossaries}. + +\begin{definition}[\DescribeMacro\gglssetwidest] +\cs{gglssetwidest}\oarg{level}\marg{name} +\end{definition} +(New to version 1.21.) +This is like \cs{glssetwidest} (provided by \sty{glossary-tree}) +but performs a global assignment. + +\begin{definition}[\DescribeMacro\eglssetwidest] +\cs{eglssetwidest}\oarg{level}\marg{name} +\end{definition} +This is like \cs{glssetwidest} +but performs a protected expansion on \meta{name}. This has +a localised effect. For a global setting, use +\begin{definition}[\DescribeMacro\xglssetwidest] +\cs{xglssetwidest}\oarg{level}\marg{name} +\end{definition} +The following only set the value if \meta{name} is wider than the +current value (new to version 1.23). Local update: +\begin{definition}[\DescribeMacro\glsupdatewidest] +\cs{glsupdatewidest}\oarg{level}\marg{name} +\end{definition} +Global update: +\begin{definition}[\DescribeMacro\gglsupdatewidest] +\cs{gglsupdatewidest}\oarg{level}\marg{name} +\end{definition} +Locale update (expands \meta{name}): +\begin{definition}[\DescribeMacro\eglsupdatewidest] +\cs{eglsupdatewidest}\oarg{level}\marg{name} +\end{definition} +Global update (expands \meta{name}): +\begin{definition}[\DescribeMacro\xglsupdatewidest] +\cs{xglsupdatewidest}\oarg{level}\marg{name} +\end{definition} + + +The widest entry value can later be retrieved using +\begin{definition}[\DescribeMacro\glsgetwidestname] +\cs{glsgetwidestname} +\end{definition} +for the top-level entries and +\begin{definition}[\DescribeMacro\glsgetwidestsubname] +\cs{glsgetwidestsubname}\marg{level} +\end{definition} +for sub-entries, where \meta{level} is the level number. + +Note that if you are using \gls{bib2gls}, you can use the +resource option \texttt{set-widest} which will try to determine the +widest name of all the selected entries. This isn't guaranteed +to work as it may depend on fonts or commands that \gls{bib2gls} +can't replicate, but it should be suitable for names that just +consist of text, and can be more efficient than iterating over all +the defined entries using \TeX. + +The command \cs{glsfindwidesttoplevelname} provided by +\sty{glossary-tree} has a CamelCase synonym: +\begin{definition}[\DescribeMacro\glsFindWidestTopLevelName] +\cs{glsFindWidestTopLevelName}\oarg{glossary list} +\end{definition} +Similar commands are also provided: +\begin{definition}[\DescribeMacro\glsFindWidestUsedTopLevelName] +\cs{glsFindWidestUsedTopLevelName}\oarg{glossary list} +\end{definition} +This has an additional check that the entry has been used. +Naturally this is only useful if the glossaries that use +the \glostyle{alttree} style occur at the end of the document. +This command should be placed just before the start of the glossary. +(Alternatively, place it at the end of the document and save +the value in the auxiliary file for the next run.) + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyName] +\cs{glsFindWidestUsedAnyName}\oarg{glossary list} +\end{definition} +This is like the previous command but if doesn't check the +\gloskey{parent} key. This is useful if all levels should have the +same width for the name. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyName] +\cs{glsFindWidestAnyName}\oarg{glossary list} +\end{definition} +This is like the previous command but doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedLevelTwo] +\cs{glsFindWidestUsedLevelTwo}\oarg{glossary list} +\end{definition} +This is like \cs{glsFindWidestUsedTopLevelName} but also sets +the first two sub-levels as well. Any entry that has a +great-grandparent is ignored. + +\begin{definition}[\DescribeMacro\glsFindWidestLevelTwo] +\cs{glsFindWidestLevelTwo}\oarg{glossary list} +\end{definition} +This is like the previous command but doesn't check if the entry has +been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbol] +\cs{glsFindWidestUsedAnyNameSymbol}\oarg{glossary +list}\marg{register} +\end{definition} +This is like \cs{glsFindWidestUsedAnyName} but also measures the +symbol. The length of the widest symbol is stored in +\meta{register}. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbol] +\cs{glsFindWidestAnyNameSymbol}\oarg{glossary list}\marg{register} +\end{definition} +This is like the previous command but it doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbolLocation] +\cs{glsFindWidestUsedAnyNameSymbolLocation}\oarg{glossary +list}\marg{symbol register}\marg{location register} +\end{definition} +This is like \cs{glsFindWidestUsedAnyNameSymbol} but also +measures the \gls{numberlist}. This requires +\ics{glsentrynumberlist} (see the \styfmt{glossaries} user manual). +The length of the widest symbol is stored in \meta{symbol register} +and the length of the widest \gls*{numberlist} is stored in +\meta{location register}. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbolLocation] +\cs{glsFindWidestAnyNameSymbolLocation}\oarg{glossary +list}\marg{symbol register}\marg{location register} +\end{definition} +This is like the previous command but it doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameLocation] +\cs{glsFindWidestUsedAnyNameLocation}\oarg{glossary +list}\marg{register} +\end{definition} +This is like \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't +measure the symbol. The length of the widest \gls{numberlist} +is stored in \meta{register}. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameLocation] +\cs{glsFindWidestAnyNameLocation}\oarg{glossary +list}\marg{register} +\end{definition} +This is like the previous command but doesn't check if the entry has +been used. + +The layout of the symbol, description and \gls{numberlist} +is governed by +\begin{definition}[\DescribeMacro\glsxtralttreeSymbolDescLocation] +\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{number list} +\end{definition} +for top-level entries and +\begin{definition}[\DescribeMacro\glsxtralttreeSubSymbolDescLocation] +\cs{glsxtralttreeSubSymbolDescLocation}\marg{label}\marg{number list} +\end{definition} +for sub-entries. + +There is now a user level command that performs the initialisation +for the \glostyle{alttree} style: +\begin{definition}[\DescribeMacro\glsxtralttreeInit] +\cs{glsxtralttreeInit} +\end{definition} + +The paragraph indent for subsequent paragraphs in multi-paragraph +descriptions is provided by the length +\begin{definition}[\DescribeMacro\glsxtrAltTreeIndent] +\cs{glsxtrAltTreeIndent} +\end{definition} + +For additional commands that are available with the +\glostyle{alttree} style, see the documented code +(\texttt{glossaries-extra-code.pdf}). For examples, see +the accompanying sample files \texttt{sample-alttree.tex}, +\texttt{sample-alttree-sym.tex} and +\texttt{sample-alttree-marginpar.tex}. + +\chapter{Abbreviations} +\label{sec:abbreviations} + +The new abbreviation system provided by \styfmt{glossaries-extra} +is more flexible than the acronym handling provided by the +base \styfmt{glossaries} package. The \styfmt{glossaries-extra} +package modifies the underlying formatting used by +\cs{gls} (and its variants) so that terms that are recognised as +abbreviations can have their formatting dealt with by the style. You +therefore need to select an abbreviation style that ensures that +\cs{gls} (and its variants) displays the desired output. + +\begin{important} +Don't use commands like \cs{glstext} or \cs{glsfirst} with +abbreviations as they aren't flexible enough to handle some +abbreviation styles and unexpected results may occur. Use commands +like \cs{glsfmtshort} or \cs{glsfmtlong} in section headings or +captions instead of \cs{gls}. If you don't want the full form to +show on first use of \cs{gls} use one of the \qt{nolong} or +\qt{noshort} styles. +\end{important} + +Abbreviations include acronyms (words formed from initial letters, +such as \qt{laser}), +initialisms (initial letters of a phrase, such as \qt{html}, that +aren't pronounced as words) and contractions (where +parts of words are omitted, often replaced by an apostrophe, such as +\qt{don't}). +The \qt{acronym} code provided by the \styfmt{glossaries} package is +misnamed as it's more often than not used for initialisms instead. +Acronyms tend not to be \emph{expanded} on \gls{firstuse} (although they may +need to be \emph{described} for readers unfamiliar with the term). They are therefore more like a regular term, +which may or may not require a description in the glossary. + +The \styfmt{glossaries-extra} package corrects this misnomer, and +provides better abbreviation handling, with +\begin{definition}[\DescribeMacro\newabbreviation] +\cs{newabbreviation}\oarg{options}\marg{label}\marg{short}\marg{long} +\end{definition} + +This sets the \gloskey{category} key to \texttt{abbreviation} by +default, but that value may be overridden in \meta{options}. +The category may have attributes that modify the way abbreviations +are defined. For example, the \catattr{insertdots} attribute will +automatically insert full stops (periods) into \meta{short} or the +\catattr{noshortplural} attribute will set the default value +of the \gloskey{shortplural} key to just \meta{short} (without +appending the plural suffix). See \sectionref{sec:categories} for +further details. + +See \sectionref{sec:nested} regarding the pitfalls of using +commands like \ics{gls} or \ics{glsxtrshort} within +\meta{short} or \meta{long}. + +\begin{important} +Make sure that you set the category attributes before defining new +abbreviations or they may not be correctly applied. +\end{important} + +The \ics{newacronym} command provided by the \styfmt{glossaries} +package is redefined by \styfmt{glossaries-extra} to use +\cs{newabbreviation} with the \gloskey{category} set to +\texttt{acronym} (see also \sectionref{sec:acronymmods}) so +\begin{definition}[\DescribeMacro\newacronym] +\cs{newacronym}\oarg{options}\marg{label}\marg{short}\marg{long} +\end{definition} +is now equivalent to +\begin{display}\raggedright\ttfamily +\cs{newabbreviation}[type=\cs{acronymtype},category=acronym,\meta{options}]\marg{label}\marg{short}\marg{long} +\end{display} + +\begin{sloppypar} +The \cs{newabbreviation} command is superficially similar to the +\styfmt{glossaries} package's \cs{newacronym} but you can apply +different styles to different categories. The default style is +\abbrstyle{short-nolong} for entries in the \category{acronym} category and +\abbrstyle{short-long} for entries in the \category{abbreviation} +category. (These aren't the same as the acronym styles provided by +the \styfmt{glossaries} package, although they may produce similar +results.) +\end{sloppypar} + +The way the abbreviations are displayed by commands like \cs{gls} +varies according to the abbreviation style. The styles are set +according to the entry's category so, unlike the base +\styfmt{glossaries} package, you can have different abbreviation +styles within the same glossary. + +There are two types of full forms. The display full form, which is +used on \gls{firstuse} by commands like \ics{gls} and the inline full +form, which is used by commands like \ics{glsxtrfull}. +For some of the abbreviation styles, such as \abbrstyle{long-short}, the display and inline forms +are the same. In the case of styles such as \abbrstyle{short-nolong} or +\abbrstyle{short-footnote}, the display and inline full forms are different. + +These formatting commands aren't stored in the \gloskey{short}, +\gloskey{shortplural}, \gloskey{long} or \gloskey{longplural} +fields, which means they won't be used within commands like +\cs{glsentryshort} (but they are used within commands like +\cs{glsxtrshort} and \cs{glsfmtshort}). +Note that \ics{glsxtrlong} and the case-changing variants don't use +\cs{glsfirstlongfont}. + +You can apply the formatting command used for the short form +to some arbitrary text using +\begin{definition}[\DescribeMacro\glsuseabbrvfont] +\cs{glsuseabbrvfont}\marg{text}\marg{category} +\end{definition} +where \meta{category} is the category label that identifies +the abbreviation style. Similarly for the formatting command +use by the long form: +\begin{definition}[\DescribeMacro\glsuselongfont] +\cs{glsuselongfont}\marg{text}\marg{category} +\end{definition} + +\section{Tagging Initials} +\label{sec:tagging} + +If you would like to tag the initial letters in the long form +such that those letters are underlined in the glossary but +not in the main part of the document, you can use +\begin{definition}[\DescribeMacro\GlsXtrEnableInitialTagging] +\cs{GlsXtrEnableInitialTagging}\marg{categories}\marg{cs} +\end{definition} +before you define your abbreviations. + +This command (robustly) defines \meta{cs} (a control sequence) +to accept a single argument, which is the letter (or letters) +that needs to be tagged. The normal behaviour of this command +within the document is to simply do its argument, but in the +glossary it's activated for those categories that have +the \catattr{tagging} attribute set to \qt{true}. For those +cases it will use +\begin{definition}[\DescribeMacro\glsxtrtagfont] +\cs{glsxtrtagfont}\marg{text} +\end{definition} +This command defaults to \ics{underline}\marg{text} +but may be redefined as required. + +The control sequence \meta{cs} can't already be defined when +used with the unstarred version of +\cs{GlsXtrEnableInitialTagging} for safety reasons. +The starred version will overwrite any previous definition +of \meta{cs}. As with redefining any commands, ensure that +you don't redefine something important. In fact, just forget +the existence of the starred version and let's pretend I didn't +mention it. + +The first argument of \cs{GlsXtrEnableInitialTagging} is a +comma-separated list of category names. The \catattr{tagging} +attribute will automatically be set for those categories. +You can later set this attribute for other categories (see +\sectionref{sec:categories}) but this must be done before the +glossary is displayed. + +The accompanying sample file \texttt{sample-mixtures.tex} +uses initial tagging for both the \category{acronym} and +\category{abbreviation} categories: +\begin{verbatim} +\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag} +\end{verbatim} +This defines the command \cs{itag} which can be used in the +definitions. For example: +\begin{verbatim} +\newacronym + [description={a system for detecting the location and + speed of ships, aircraft, etc, through the use of radio + waves}% description of this term + ] + {radar}% identifying label + {radar}% short form (i.e. the word) + {\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging} + +\newabbreviation{xml}{XML} + {e\itag{x}tensible \itag{m}arkup \itag{l}anguage} +\end{verbatim} +The underlining of the tagged letters only occurs in the +glossary and then only for entries with the \catattr{tagging} +attribute set. + +\section{Abbreviation Styles} +\label{sec:abbrstyle} + +The abbreviation style must be set before abbreviations are defined +using: +\begin{definition}[\DescribeMacro\setabbreviationstyle] +\cs{setabbreviationstyle}\oarg{category}\marg{style-name} +\end{definition} +where \meta{style-name} is the name of the style and \meta{category} +is the category label (\texttt{abbreviation} by default). New +abbreviations will pick up the current style according to their +given category. If there is no style set for the category, the +fallback is the style for the \texttt{abbreviation} category. +Some styles may automatically modify one or more of the attributes +associated with the given category. For example, the +\abbrstyle{long-noshort} and \abbrstyle{short-nolong} styles set the +\catattr{regular} attribute to \texttt{true}. + +\begin{important} +If you want to apply different styles to groups of abbreviations, +assign a different category to each group and set the style for the +given category. +\end{important} + +Note that \ics{setacronymstyle} is disabled by +\styfmt{glossaries-extra}. Use +\begin{alltt} +\cs{setabbreviationstyle}[acronym]\marg{style-name} +\end{alltt} +instead. The original acronym interface can be restored with +\ics{RestoreAcronyms} (see \sectionref{sec:acronymmods}). However the +original acronym interface is incompatible with all the commands +described here. + +Abbreviations can be used with the standard \styfmt{glossaries} +commands, such as \ics{gls}, but don't use the acronym commands +like \ics{acrshort} (which use \ics{acronymfont}). The short form can be +produced with: +\begin{definition}[\DescribeMacro\glsxtrshort] +\cs{glsxtrshort}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(Use this instead of \ics{acrshort}.) + +The long form can be produced with +\begin{definition}[\DescribeMacro\glsxtrlong] +\cs{glsxtrlong}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(Use this instead of \ics{acrlong}.) + +The \emph{inline} full form can be produced with +\begin{definition}[\DescribeMacro\glsxtrfull] +\cs{glsxtrfull}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(This this instead of \ics{acrfull}.) + +\begin{important} +In general, it's best not to use commands like \ics{glsfirst} +for abbreviations, especially if you use the \meta{insert} +optional argument. Use either \cs{gls} (possibly with a reset) +or \cs{glsxtrfull}. +\end{important} + +As mentioned earlier, the inline full form may not necessarily match the format used on +\gls{firstuse} with \cs{gls}. For example, the +\abbrstyle{short-nolong} style +only displays the short form on \gls{firstuse}, but the full +form will display the long form followed by the short form in +parentheses. + +\begin{important} +If you want to use an abbreviation in a chapter or section +title, use the commands described in \sectionref{sec:headtitle} +instead. +\end{important} + +The arguments \meta{options}, \meta{label} and \meta{insert} are the +same as for commands such as \cs{glstext}. There are also analogous +case-changing commands: + +First letter upper case short form: +\begin{definition}[\DescribeMacro\Glsxtrshort] +\cs{Glsxtrshort}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +First letter upper case long form: +\begin{definition}[\DescribeMacro\Glsxtrlong] +\cs{Glsxtrlong}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +First letter upper case inline full form: +\begin{definition}[\DescribeMacro\Glsxtrfull] +\cs{Glsxtrfull}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +All upper case short form: +\begin{definition}[\DescribeMacro\Glsxtrshort] +\cs{GLSxtrshort}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +All upper case long form: +\begin{definition}[\DescribeMacro\Glsxtrlong] +\cs{GLSxtrlong}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +All upper case inline full form: +\begin{definition}[\DescribeMacro\GLSxtrfull] +\cs{GLSxtrfull}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +Plural forms are also available. + +Short form plurals: +\begin{definition}[\DescribeMacro\glsxtrshortpl] +\cs{glsxtrshortpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\Glsxtrshortpl] +\cs{Glsxtrshortpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\GLSxtrshortpl] +\cs{GLSxtrshortpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +Long form plurals: +\begin{definition}[\DescribeMacro\glsxtrlongpl] +\cs{glsxtrlongpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\Glsxtrlongpl] +\cs{Glsxtrlongpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\GLSxtrlongpl] +\cs{GLSxtrlongpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +Full form plurals: +\begin{definition}[\DescribeMacro\glsxtrfullpl] +\cs{glsxtrfullpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\Glsxtrfullpl] +\cs{Glsxtrfullpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\GLSxtrfullpl] +\cs{GLSxtrfullpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} + +\begin{important} +Be careful about using \cs{glsentryfull}, \cs{Glsentryfull}, +\cs{glsentryfullpl} and \cs{Glsentryfullpl}. These commands will use +the currently applied style rather than the style in use when the +entry was defined. If you have mixed styles, you'll need to use +\ics{glsxtrfull} instead. Similarly for \cs{glsentryshort} etc. +\end{important} + +\section{Shortcut Commands} +\label{sec:abbrshortcuts} + +The abbreviation shortcut commands can be enabled using +the package option \pkgopt[abbreviation]{shortcuts} +(or \pkgopt[abbr]{shortcuts}) or \pkgopt[ac]{shortcuts}. +(You can use both settings at the same time.) +The provided shortcut commands listed in +\tableref{tab:abbrshortcuts}. + +\begin{table}[htbp] +\caption{Abbreviation Shortcut Commands} +\label{tab:abbrshortcuts} +\centering +\begin{tabular}{lll} +\bfseries Shortcut & +\bfseries Shortcut & +\bfseries Equivalent Command\\ +\bfseries (\pkgopt[abbreviation]{shortcuts}) & +\bfseries (\pkgopt[ac]{shortcuts})\\ +\ics{ab} & \ics{ac} & \ics{cgls}\\ +\ics{abp} & \ics{acp} & \ics{cglspl}\\ +\ics{as} & \ics{acs} & \ics{glsxtrshort}\\ +\ics{asp} & \ics{acsp} & \ics{glsxtrshortpl}\\ +\ics{al} & \ics{acl} & \ics{glsxtrlong}\\ +\ics{alp} & \ics{aclp} & \ics{glsxtrlongpl}\\ +\ics{af} & \ics{acf} & \ics{glsxtrfull}\\ +\ics{afp} & \ics{acfp} & \ics{glsxtrfullpl}\\ +\ics{Ab} & \ics{Ac} & \ics{cgls}\\ +\ics{Abp} & \ics{Acp} & \ics{cglspl}\\ +\ics{As} & \ics{Acs} & \ics{Glsxtrshort}\\ +\ics{Asp} & \ics{Acsp} & \ics{Glsxtrshortpl}\\ +\ics{Al} & \ics{Acl} & \ics{Glsxtrlong}\\ +\ics{Alp} & \ics{Aclp} & \ics{Glsxtrlongpl}\\ +\ics{Af} & \ics{Acf} & \ics{Glsxtrfull}\\ +\ics{Afp} & \ics{Acfp} & \ics{Glsxtrfullpl}\\ +\ics{AB} & \ics{AC} & \ics{cGLS}\\ +\ics{ABP} & \ics{ACP} & \ics{cGLSpl}\\ +\ics{AS} & \ics{ACS} & \ics{GLSxtrshort}\\ +\ics{ASP} & \ics{ACSP} & \ics{GLSxtrshortpl}\\ +\ics{AL} & \ics{ACL} & \ics{GLSxtrlong}\\ +\ics{ALP} & \ics{ACLP} & \ics{GLSxtrlongpl}\\ +\ics{AF} & \ics{ACF} & \ics{GLSxtrfull}\\ +\ics{AFP} & \ics{ACFP} & \ics{GLSxtrfullpl}\\ +\ics{newabbr} & \ics{newabbr} & \ics{newabbreviation} +\end{tabular} +\end{table} + +\section{Predefined Abbreviation Styles} +\label{sec:predefabbrvstyles} + +There are two types of abbreviation styles: those that treat the +abbreviation as a regular entry (so that \ics{gls} uses +\ics{glsgenentryfmt}) and those that don't treat the abbreviation as +a regular entry (so that \ics{gls} uses \ics{glsxtrgenabbrvfmt}). + +The regular entry abbreviation styles set the \catattr{regular} +attribute to \qt{true} for the category assigned to each +abbreviation with that style. This means that on \gls{firstuse}, +\ics{gls} uses the value of the \gloskey{first} field and on +subsequent use \ics{gls} uses the value of the \gloskey{text} field +(and analogously for the plural and case-changing versions). The +\gloskey{short} and \gloskey{long} fields are set as appropriate +and may be accessed through commands like \ics{glsxtrshort}. + +The other abbreviation styles don't modify the \catattr{regular} +attribute. The \gloskey{first} and \gloskey{text} fields (and their +plural forms) are set and can be accessed through commands like +\cs{glsfirst}, but they aren't used by commands like \ics{gls}, +which instead use the short form (stored in the \gloskey{short} key) +and the display full format (through commands like +\ics{glsxtrfullformat} that are defined by the style). + +In both cases, the \gls{firstuse} of \ics{gls} may not match the +text produced by \ics{glsfirst} (and likewise for the plural +and case-changing versions). + +The sample file \texttt{sample-abbr-styles.tex} demonstrates all +predefined styles described here. + +\begin{important} +For the \qt{sc} styles that use \ics{textsc}, be careful about your choice +of fonts as some only have limited support. For +example, you may not be able to combine bold and small-caps. I +recommend that you at least use the \sty{fontenc} package with the +\pkgoptfmt{T1} option or something similar. +\end{important} + +The parenthetical styles, such as \abbrstyle{long-short}, +use +\begin{definition}[\DescribeMacro\glsxtrparen] +\cs{glsxtrparen}\marg{text} +\end{definition} +to set the parenthetical material. This just puts parentheses around +the text: (\meta{text}). + +The basic abbreviation styles, such as \abbrstyle{long-short} +and \abbrstyle{short-long} use +\begin{definition}[\DescribeMacro\glsabbrvdefaultfont] +\cs{glsabbrvdefaultfont}\marg{text} +\end{definition} +for the short form. This just does \meta{text} by default. +(That is, no font change is applied.) On first use, +\begin{definition}[\DescribeMacro\glsfirstabbrvdefaultfont] +\cs{glsfirstabbrvdefaultfont}\marg{text} +\end{definition} +is used instead. By default, this just does +\cs{glsabbrvdefaultfont}. The long form is formatted according to +\begin{definition}[\DescribeMacro\glslongdefaultfont] +\cs{glslongdefaultfont}\marg{text} +\end{definition} +which again just does \meta{text} (no font change). On first use, +\begin{definition}[\DescribeMacro\glsfirstlongdefaultfont] +\cs{glsfirstlongdefaultfont}\marg{text} +\end{definition} +is used instead. This just does \cs{glslongdefaultfont}. +The plural suffix used for the short form is given by +\begin{definition}[\DescribeMacro\glsxtrabbrvpluralsuffix] +\cs{glsxtrabbrvpluralsuffix} +\end{definition} +which defaults to \ics{glspluralsuffix}. + +The small-cap styles, such as \abbrstyle{long-short-sc} +and \abbrstyle{short-sc-long}, use +\begin{definition}[\DescribeMacro\glsabbrvscfont] +\cs{glsabbrvscfont}\marg{text} +\end{definition} +which uses \cs{textsc}.\footnote{For compatibility with earlier +versions, \cs{glsabbrvscfont} is defined to \cs{glsxtrscfont}, +which is defined to use \cs{textsc}. Direct use of +\cs{glsxtrscfont} is now deprecated. Likewise for similar commands.} +On first use +\begin{definition}[\DescribeMacro\glsabbrvdefaultfont] +\cs{glsfirstabbrvscfont}\marg{text} +\end{definition} +is used instead. This uses \cs{glsabbrvscfont} by default. +So redefine, \cs{glsabbrvscfont} to change first and subsequent uses or +\cs{glsfirstabbrvscfont} to change just the first use. + +The long form for the small-cap styles uses \cs{glslongdefaultfont} +or \cs{glsfirstlongdefaultfont}, as with the basic style. +The suffix is given by +\begin{definition}[\DescribeMacro\glsxtrscsuffix] +\cs{glsxtrscsuffix} +\end{definition} +This is defined as +\begin{verbatim} +\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}} +\end{verbatim} +The \ics{glstextup} command is provided by \styfmt{glossaries} +and is used to switch off the small caps font for the suffix. +If you override the default short plural using the +\gloskey{shortplural} key when you define the abbreviation +you will need to make the appropriate adjustment if necessary. +(Remember that the default plural suffix behaviour can be modified +through the use of the \catattr{aposplural} and +\catattr{noshortplural} attributes. See +\sectionref{sec:categories} for further details.) + +The small styles, such as \abbrstyle{long-short-sm} +and \abbrstyle{short-sm-long}, use +\begin{definition}[\DescribeMacro\glsabbrvsmfont] +\cs{glsabbrvsmfont}\marg{text} +\end{definition} +which uses \cs{textsmaller}. (This requires the \sty{relsizes} +package, which isn't loaded by \styfmt{glossaries-extra}, so must be +loaded explicitly.) +On first use +\begin{definition}[\DescribeMacro\glsfirstabbrvsmfont] +\cs{glsfirstabbrvsmfont}\marg{text} +\end{definition} +is used instead. This uses \cs{glsabbrvsmfont} by default. + +The long form for the smaller styles uses \cs{glslongdefaultfont} +or \cs{glsfirstlongdefaultfont}, as with the basic style. +The suffix is given by +\begin{definition}[\DescribeMacro\glsxtrsmsuffix] +\cs{glsxtrsmsuffix} +\end{definition} +which defaults to just \cs{glsxtrabbrvpluralsuffix}. + +The \qt{short-em} (emphasize short) styles, such as +\abbrstyle{long-short-em} or \abbrstyle{short-em-long}, use +\begin{definition}[\DescribeMacro\glsabbrvemfont] +\cs{glsabbrvemfont}\marg{text} +\end{definition} +On first use +\begin{definition}[\DescribeMacro\glsfirstabbrvemfont] +\cs{glsfirstabbrvemfont}\marg{text} +\end{definition} +is used instead. This uses \cs{glsabbrvemfont} by default. +The suffix is given by +\begin{definition}[\DescribeMacro\glsxtremsuffix] +\cs{glsxtremsuffix} +\end{definition} +which defaults to just \cs{glsxtrabbrvpluralsuffix}. +The long form is as for the basic style unless the style +is a \qt{long-em} style. + +The \qt{long-em} (emphasize long) styles, such as +\abbrstyle{long-em-short-em} or \abbrstyle{short-em-long-em}, use +\begin{definition}[\DescribeMacro\glsfirstlongemfont] +\cs{glsfirstlongemfont}\marg{long-form} +\end{definition} +instead of \cs{glsfirstlongdefaultfont}\marg{long-form} and +\begin{definition}[\DescribeMacro\glslongemfont] +\cs{glslongemfont}\marg{long-form} +\end{definition} +instead of \cs{glslongdefaultfont}\marg{long-form}. The first form +\cs{glsfirstlongemfont} is initialised to use \cs{glslongemfont}. + +The user styles have similar commands: +\begin{definition}[\DescribeMacro\glsabbrvuserfont] +\cs{glsabbrvuserfont}\marg{text} +\end{definition} +for the short form, +\begin{definition}[\DescribeMacro\glsfirstabbrvuserfont] +\cs{glsfirstabbrvuserfont}\marg{text} +\end{definition} +for the first use short form, +\begin{definition}[\DescribeMacro\glslonguserfont] +\cs{glslonguserfont}\marg{text} +\end{definition} +for the long form, +\begin{definition}[\DescribeMacro\glsfirstlonguserfont] +\cs{glsfirstlonguserfont}\marg{text} +\end{definition} +for the first use long form, and +\begin{definition}[\DescribeMacro\glsxtrusersuffix] +\cs{glsxtrusersuffix} +\end{definition} +for the short plural suffix. + +Similarly for the hyphen styles: +\begin{definition}[\DescribeMacro\glsabbrvhyphenfont] +\cs{glsabbrvhyphenfont}\marg{text} +\end{definition} +for the short form, +\begin{definition}[\DescribeMacro\glsfirstabbrvhyphenfont] +\cs{glsfirstabbrvhyphenfont}\marg{text} +\end{definition} +for the first use short form, +\begin{definition}[\DescribeMacro\glslonghyphenfont] +\cs{glslonghyphenfont}\marg{text} +\end{definition} +for the long form, +\begin{definition}[\DescribeMacro\glsfirstlonghyphenfont] +\cs{glsfirstlonghyphenfont}\marg{text} +\end{definition} +for the first use long form, and +\begin{definition}[\DescribeMacro\glsxtrhyphensuffix] +\cs{glsxtrhyphensuffix} +\end{definition} +for the short plural suffix. + +Similarly for the \qt{only} styles, such as +\abbrstyle{long-only-short-only}: +\begin{definition}[\DescribeMacro\glsabbrvonlyfont] +\cs{glsabbrvonlyfont}\marg{text} +\end{definition} +for the short form, +\begin{definition}[\DescribeMacro\glsfirstabbrvonlyfont] +\cs{glsfirstabbrvonlyfont}\marg{text} +\end{definition} +for the first use short form, +\begin{definition}[\DescribeMacro\glslongonlyfont] +\cs{glslongonlyfont}\marg{text} +\end{definition} +for the long form, +\begin{definition}[\DescribeMacro\glsfirstlongonlyfont] +\cs{glsfirstlongonlyfont}\marg{text} +\end{definition} +for the first use long form, and +\begin{definition}[\DescribeMacro\glsxtronlysuffix] +\cs{glsxtronlysuffix} +\end{definition} +for the short plural suffix. + +Note that by default inserted material (provided in the final +optional argument of commands like \cs{gls}), is placed outside the +font command in the predefined styles. To move it inside, use: +\begin{definition}[\DescribeMacro\glsxtrinsertinsidetrue] +\cs{glsxtrinsertinsidetrue} +\end{definition} +This applies to all the predefined styles. For example: +\begin{verbatim} +\setabbreviationstyle{long-short} +\renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}} +\glsxtrinsertinsidetrue +\end{verbatim} +This will make the long form and the inserted text emphasized, +whereas the default (without \cs{glsxtrinsertinsidetrue}) would +place the inserted text outside of the emphasized font. + +Note that for some styles, such as the \abbrstyle{short-long}, the +inserted text would be placed inside the font command for the short +form (rather than the long form in the above example). + +Remember that \cs{textsc} renders \emph{lowercase} letters as small +capitals. Uppercase letters are rendered as normal uppercase +letters, so if you specify the short form in uppercase, you won't +get small capitals unless you redefine \cs{glsabbrvscfont} to +convert its argument to lowercase. For example: +\begin{verbatim} +\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}} +\end{verbatim} + +If you want to +easily switch between the \qt{sc} and \qt{sm} styles, you may find +it easier to redefine this command to convert case: +\begin{verbatim} +\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}} +\renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}} +\end{verbatim} + +Some of the styles use +\begin{definition}[\DescribeMacro\glsxtrfullsep] +\cs{glsxtrfullsep}\marg{label} +\end{definition} +as a separator between the long and short forms. This is defined as +a space by default, but may be changed as required. For example: +\begin{verbatim} +\renewcommand*{\glsxtrfullsep}[1]{~} +\end{verbatim} +or +\begin{verbatim} +\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}} +\end{verbatim} + +The new naming scheme for abbreviation styles is as follows: +\begin{itemize} +\item +\meta{field1}[\texttt{-}\meta{modifier1}]\texttt{-}[post]\meta{field2}[\texttt{-}\meta{modifier2}][\texttt{-user}] + +This is for the parenthetical styles. The \texttt{-}\meta{modifier} parts may +be omitted. These styles display \meta{field1} followed by +\meta{field2} in parentheses. If \meta{field1} or \meta{field2} starts +with \qt{no} then that element is omitted from the display style (no +parenthetical part) but is included in the inline style. + +If the \texttt{-}\meta{modifier} part is present, then the field has +a font changing command applied to it. The special modifier +\texttt{-only} indicates that field is only present according to +whether or not the entry has been used. + +If \texttt{post} is present then \meta{field2} is +placed after the \gls{linktext} using the post-link hook. + +If the \texttt{-user} part is present, then the \gloskey{user1} +value, if provided, is inserted into the parenthetical material . +(The field used for the inserted material may be changed.) + +Examples: + \begin{itemize} + \item\abbrstyle{long-noshort-sc}: \meta{field1} is the long +form, the short form is set in smallcaps but omitted in the display +style. + \item\abbrstyle{long-em-short-em}: both the long form and the +short form are emphasized. The short form is in parentheses. + \item\abbrstyle{long-short-em}: the +short form is emphasized but not the long form. The short form is in parentheses. + \item\abbrstyle{long-short-user}: if the \gloskey{user1} key has +been set, this produces the style \meta{long} (\meta{short}, +\meta{user1}) otherwise it just produces \meta{long} (\meta{short}). + + \item\abbrstyle{long-hyphen-postshort-hyphen}: the short +form and the inserted material (provided by the final optional +argument of commands like \cs{gls}) is moved to the post-link hook. +The long form is formatted according to \cs{glslonghyphenfont} +(or \cs{glsfirstlonghyphenfont} on first use). +The short form is formatted according to \cs{glsabbrvhyphenfont} +(or \cs{glsfirstabbrvhyphenfont} on first use). + \end{itemize} + +\item \meta{style}\texttt{-noreg} + +Some styles set the \catattr{regular} attribute. In some cases, +there's a version of the style that doesn't set this attribute. +For example, \abbrstyle{long-em-noshort-em} sets the +\catattr{regular} attribute. The +\abbrstyle{long-em-noshort-em-noreg} style is a minor variation +that style that doesn't set the attribute. + +There are a few \qt{noshort} styles, such as +\abbrstyle{long-hyphen-noshort-noreg}, that have +\qt{-noreg} version without a regular version. This is because the +style won't work properly with the \catattr{regular} set, but the +naming scheme is maintained for consistency with the other +\qt{noshort} styles. + +\item +\meta{field1}[\texttt{-}\meta{modifier1}]\texttt{-}[\texttt{post}]\texttt{footnote} + +The display style uses \meta{field1} followed by a footnote with the +other field in it. If \texttt{post} is present then the footnote is +placed after the \gls{linktext} using the post-link hook. +The inline style does \meta{field1} followed by the other field in +parentheses. + +If \texttt{-}\meta{modifier1} is present, \meta{field1} has a +font-changing command applied to it. + +Examples: +\begin{itemize} +\item \abbrstyle{short-footnote}: short form in the text with the +long form in the footnote. +\item \abbrstyle{short-sc-postfootnote}: short form in smallcaps +with the long form in the footnote outside of the \gls{linktext}. +\end{itemize} + +\begin{important} +Take care with the footnote styles. Remember that there are some +situations where \ics{footnote} doesn't work. +\end{important} + +\item \meta{style}\texttt{-desc} + +Like \meta{style} but the \gloskey{description} key must be provided +when defining abbreviations with this style. + +Examples: +\begin{itemize} + +\item \abbrstyle{short-long-desc}: like \abbrstyle{short-long} but +requires a description. +\item \abbrstyle{short-em-footnote-desc}: like +\abbrstyle{short-em-footnote} but requires a description. +\end{itemize} +\end{itemize} + +Not all combinations that fit the above syntax are provided. +Pre-version 1.04 styles that didn't fit this naming scheme are either +provided with a synonym (where the former name wasn't ambiguous) or +provided with a deprecated synonym (where the former name was +confusing). +The deprecated style names generate a warning using: +\begin{definition}[\DescribeMacro\GlsXtrWarnDeprecatedAbbrStyle] +\cs{GlsXtrWarnDeprecatedAbbrStyle}\marg{old-name}\marg{new-name} +\end{definition} +where \meta{old-name} is the deprecated name and \meta{new-name} is +the preferred name. You can suppress these warnings by redefining +this command to do nothing. + +\subsection{Predefined Abbreviation Styles that Set the Regular +Attribute} +\label{sec:predefregabbrvstyles} + +The following abbreviation styles set the \catattr{regular} +attribute to \qt{true} for all categories that have abbreviations +defined with any of these styles. + +\begin{description} +\item[\abbrstyledef{short-nolong}] +This only displays the short form on \gls{firstuse}. The \gloskey{name} +is set to the short form through the command +\begin{definition}[\DescribeMacro\glsxtrshortnolongname] +\cs{glsxtrshortnolongname} +\end{definition} +(Similarly for the other +\texttt{short}\meta{modifier}\texttt{-nolong}\meta{modifier} styles, +unless indicated otherwise.) +This command is expanded as the entry is defined, so any +redefinition must be done before \cs{newabbreviation} (or +\cs{newacronym}) for it to take effect. Make sure to \cs{protect} +any formatting commands (or anything else that shouldn't be expanded). + +The \gloskey{description} is set to the +long form. The inline full form displays +\meta{short} (\meta{long}). The long form on its own can be +displayed through commands like \ics{glsxtrlong}. + +\item[\abbrstyledef{short}] A synonym for \abbrstyle{short-nolong}. + +\item[\abbrstyledef{nolong-short}] Like \abbrstyle{short-nolong} +but the inline full form displays +\meta{long} (\meta{short}). + +\item[\abbrstyledef{short-sc-nolong}] +Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont} (which defaults to \cs{textsc}). + +\item[\abbrstyledef{short-sc}] A synonym for \abbrstyle{short-sc-nolong} + +\item[\abbrstyledef{nolong-short-sc}] Like \abbrstyle{short-sc-nolong} +but the inline full form displays +\meta{long} (\meta{short}). The name is still obtained from +\cs{glsxtrshortnolongname} (similarly for the other styles in the +form \texttt{nolong}\meta{modifier}\texttt{-short}\meta{modifier} +unless indicated otherwise). + +\item[\abbrstyledef{short-sm-nolong}] +Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont} (which defaults to \cs{textsmaller}). + +\item[\abbrstyledef{short-sm}] A synonym for \abbrstyle{short-sm-nolong}. + +\item[\abbrstyledef{nolong-short-sm}] Like \abbrstyle{short-sm-nolong} +but the inline full form displays +\meta{long} (\meta{short}). + +\item[\abbrstyledef{short-em-nolong}] +Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{short-em}] A synonym for \abbrstyle{short-em-nolong} + +\item[\abbrstyledef{nolong-short-em}] Like \abbrstyle{short-em-nolong} +but the inline full form displays +\meta{long} (\meta{short}). + +\item[\abbrstyledef{short-nolong-desc}] +Like the \abbrstyle{short-nolong} style, but the \gloskey{name} is set to +the full form obtained by expanding +\begin{definition}[\DescribeMacro\glsxtrshortdescname] +\cs{glsxtrshortdescname} +\end{definition} +(Similarly for the other +\texttt{short}\meta{modifier}\texttt{-nolong}\meta{modifier}\texttt{-desc} +styles, unless indicated otherwise.) This command is expanded when the entry is defined, so +\cs{protect} fragile and formatting commands and only redefine this +command before \cs{newabbreviation} (or \cs{newacronym}). + +The \gloskey{description} must be supplied by the +user. You may prefer to use the \abbrstyle{short-nolong} style with the +post-description hook set to display the long form and override +the \gloskey{description} key. (See the sample file +\texttt{sample-acronym-desc.tex}.) + +\item[\abbrstyledef{short-desc}] A synonym for +\abbrstyle{short-nolong-desc}. + +\item[\abbrstyledef{short-sc-nolong-desc}] +Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont} (which defaults to \cs{textsc}). + +\item[\abbrstyledef{short-sc-desc}] A synonym for +\abbrstyle{short-sc-nolong-desc}. + +\item[\abbrstyledef{short-sm-nolong-desc}] +Like \abbrstyle{short-nolong-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont} (which defaults to \cs{textsmaller}). + +\item[\abbrstyledef{short-sm-desc}] A synonym for +\abbrstyle{short-sm-nolong-desc}. + +\item[\abbrstyledef{short-em-nolong-desc}] +Like \abbrstyle{short-nolong-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{short-em-desc}] A synonym for +\abbrstyle{short-em-nolong-desc}. + +\item[\abbrstyledef{long-noshort-desc}] +This style only displays the long form, regardless of first or +subsequent use of commands \ics{gls}. The short form may be +accessed through commands like \ics{glsxtrshort}. The inline full +form displays \meta{long} (\meta{short}). + +The \gloskey{sort} key are set to the long form. +The \gloskey{name} key is also set to the long form, but this is +done by expanding +\begin{definition}[\DescribeMacro\glsxtrlongnoshortdescname] +\cs{glsxtrlongnoshortdescname} +\end{definition} +(Similarly for the other +\texttt{long}\meta{modifier}\texttt{-noshort}\meta{modifier}\texttt{-desc} +styles, unless indicated otherwise.) This command should only be redefined before abbreviations +are defined, and any fragile or formatting commands within it need protecting. + +The \gloskey{description} must be provided by the user. The predefined +glossary styles won't display the short form. You can use the +post-description hook to automatically append the short form to the +description. The inline full form will display \meta{long} +(\meta{short}). + +\item[\abbrstyledef{long-desc}] A synonym for +\abbrstyle{long-noshort-desc}. + +\item[\abbrstyledef{long-noshort-sc-desc}] +Like the \abbrstyle{long-noshort-desc} style but the short form (accessed +through commands like \ics{glsxtrshort}) use \ics{glsabbrvscfont}. +(This style was originally called \depabbrstyle{long-desc-sc}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-noshort-sm-desc}] +Like \abbrstyle{long-noshort-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. +(This style was originally called \depabbrstyle{long-desc-sm}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-noshort-em-desc}] +Like \abbrstyle{long-noshort-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. The long form isn't emphasized. +(This style was originally called \depabbrstyle{long-desc-em}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-em-noshort-em-desc}] +New to version 1.04, like \abbrstyle{long-noshort-desc} but redefines +\cs{glsabbrvfont} to use \ics{glsabbrvemfont}. The long form uses +\ics{glsfirstlongemfont} and \ics{glslongemfont}. + +\item[\abbrstyledef{long-noshort}] +This style doesn't really make sense if you don't use the short +form anywhere in the document, but is provided for completeness. +This is like the \abbrstyle{long-noshort-desc} style, but +the \gloskey{sort} key is set to the short form. The \gloskey{name} +key is also set to the short form, but this is done by expanding +\begin{definition}[\DescribeMacro\glsxtrlongnoshortname] +\cs{glsxtrlongnoshortname} +\end{definition} +(Similarly for other +\texttt{long}\meta{modifier}\texttt{-noshort}\meta{modifier} styles, +unless indicated otherwise.) +This command should only be redefined before abbreviations are +defined, and fragile or formatting commands should be protected. + +The \gloskey{description} is set to the long form. + +\item[\abbrstyledef{long}] A synonym for \abbrstyle{long-noshort} + +\item[\abbrstyledef{long-noshort-sc}] +Like the \abbrstyle{long-noshort} style but the short form (accessed +through commands like \ics{glsxtrshort}) use \ics{glsabbrvscfont}. +(This style was originally called \depabbrstyle{long-sc}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-noshort-sm}] +Like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. +(This style was originally called \depabbrstyle{long-sm}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-noshort-em}] +This style is like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. The long form isn't emphasized. +(This style was originally called \depabbrstyle{long-em}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{long-em-noshort-em}] +New to version 1.04, this style is like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}, \cs{glsfirstlongfont} to use +\cs{glsfirstlongemfont} and \cs{glslongfont} to use +\cs{glslongemfont}. The short form isn't used by commands like +\ics{gls}, but can be obtained using \ics{glsxtrshort}. +The related style \abbrstyledef{long-em-noshort-em-noreg} +doesn't set the \catattr{regular} attribute. + +\end{description} + +\subsection{Predefined Abbreviation Styles that Don't Set the Regular +Attribute} +\label{sec:predefnonregabbrvstyles} + +The following abbreviation styles will set the +\catattr{regular} attribute to \qt{false} if it has previously +been set. If it hasn't already been set, it's left unset. +Other attributes may also be set, depending on the style. + +\begin{description} +\item[\abbrstyledef{long-short}] +On \gls{firstuse}, this style uses the format \meta{long} (\meta{short}). +The inline and display full forms are the same. The + \gloskey{sort} key is set to the short form. The \gloskey{name} is +also set to the short form through +\begin{definition}[\DescribeMacro\glsxtrlongshortname] +\cs{glsxtrlongshortname} +\end{definition} +(Similarly for other +\texttt{long}\meta{modifier}\texttt{-short}\meta{modifier} styles, +unless indicated otherwise.) +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +The \gloskey{description} is set to the long form. The long and short +forms are separated by \cs{glsxtrfullsep}. If you want to insert +material within the parentheses (such as a~translation), try the +\abbrstyle{long-short-user} style. + +\item[\abbrstyledef{long-short-sc}] +Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{long-short-sm}] +Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{long-short-em}] +Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{long-em-short-em}] +New to version 1.04, this style is like \abbrstyle{long-short-em} but redefines \cs{glsfirstlongfont} to +use \ics{glsfirstlongemfont}. + +\item[\abbrstyledef{long-only-short-only}] +New to version 1.17, this style only shows the long form +on first use and only shows the short form on subsequent use. +The inline full form \cs{glsxtrfull} shows the long form +followed by the short form in parentheses. The \gloskey{name} +field is obtained from +\begin{definition}[\DescribeMacro\glsxtronlyname] +\cs{glsxtronlyname} +\end{definition} +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +\item[\abbrstyledef{long-only-short-only-desc}] +New to version 1.17, this style is like +\abbrstyle{long-only-short-only} but the user must supply the +description. The \gloskey{name} +field is obtained from +\begin{definition}[\DescribeMacro\glsxtronlydescname] +\cs{glsxtronlydescname} +\end{definition} +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +\item[\abbrstyledef{long-em-noshort-em-noreg}] +New to version 1.17, this style is like +\abbrstyle{long-em-noshort-em} but +doesn't set the \catattr{regular} attribute. + +\item[\abbrstyledef{long-short-user}] +This style was introduced in version 1.04. It's like the +\abbrstyle{long-short} style but additional information can be +inserted into the parenthetical material. This checks the value +of the field given by +\begin{definition}[\DescribeMacro\glsxtruserfield] +\cs{glsxtruserfield} +\end{definition} +(which defaults to \texttt{useri}) using \ics{ifglshasfield} +(provided by \styfmt{glossaries}). If the field hasn't been set, +the style behaves like the \abbrstyle{long-short} style and +produces \meta{long} (\meta{short}) but if the field has been set, +the contents of that field are inserted within the parentheses in +the form \meta{long} (\meta{short}, \meta{field-value}). +The format is governed by +\begin{definition}[\DescribeMacro\glsxtruserparen] +\cs{glsxtruserparen}\marg{text}\marg{label} +\end{definition} +where \meta{text} is the short form (for the +\abbrstyle{long-short-user} style) or the long form (for the +\abbrstyle{short-long-user} style). This command first inserts +a space using \cs{glsxtrfullsep} and then the parenthetical content +(using \ics{glsxtrparen}). +The \gloskey{description} is set to +\begin{definition}[\DescribeMacro\glsuserdescription] +\cs{glsuserdescription}\marg{long}\marg{label} +\end{definition} +The default definition ignores the \meta{label} and encapsulates +\meta{long} with \cs{glslonguserfont}. + +The \gloskey{name} is obtained by expanding +\cs{glsxtrlongshortname} (see above). +The \meta{text} argument includes the font formatting command, +\cs{glsfirstabbrvfont}\marg{short} in the case of the +\abbrstyle{long-short-user} style and +\cs{glsfirstlongfont}\marg{long} in the +case of the \abbrstyle{short-long-user} style. + +For example: +\begin{verbatim} +\setabbreviationstyle[acronym]{long-short-user} + +\newacronym{tug}{TUG}{\TeX\ User Group} + +\newacronym + [user1={German Speaking \TeX\ User Group}] + {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V} + +\end{verbatim} +On first use, \verb|\gls{tug}| will appear as: +\begin{quote} +\TeX\ User Group (TUG) +\end{quote} +whereas \verb|\gls{dante}| will appear as: +\begin{quote} +Deutschsprachige Anwendervereinigung \TeX\ e.V (DANTE, German Speaking \TeX\ User Group) +\end{quote} + +The short form is formatted according to +\begin{definition}[\DescribeMacro\glsabbrvuserfont] +\cs{glsabbrvuserfont}\marg{text} +\end{definition} +and the plural suffix is given by +\begin{definition}[\DescribeMacro\glsxtrusersuffix] +\cs{glsxtrusersuffix} +\end{definition} + +These may be redefined as appropriate. For example, +if you want a~smallcaps style, you can just set these commands +to those used by the \abbrstyle{long-short-sc} style: +\begin{verbatim} +\renewcommand{\glsabbruserfont}[1]{\glsabbrvscfont{#1}} +\renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix} +\end{verbatim} + +\item[\abbrstyledef{long-noshort-noreg}] +This style is like \abbrstyle{long-noshort} but it doesn't +set the \catattr{regular} attribute. + +\item[\abbrstyledef{long-noshort-desc-noreg}] +This style is like \abbrstyle{long-noshort-desc} but it doesn't +set the \catattr{regular} attribute. + +\item[\abbrstyledef{long-short-desc}] +On \gls{firstuse}, this style uses the format \meta{long} (\meta{short}). +The inline and display full forms are the same. The \gloskey{name} +is set to the full form. The \gloskey{sort} key is set to +\meta{long} (\meta{short}). Before version 1.04, this was +incorrectly set to the short form. If you want to revert back to +this you can redefine +\begin{definition}[\DescribeMacro\glsxtrlongshortdescsort] +\cs{glsxtrlongshortdescsort} +\end{definition} +For example: +\begin{verbatim} +\renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok} +\end{verbatim} +The \gloskey{description} must be supplied by the user. +The long and short forms are separated by \cs{glsxtrfullsep}. The \gloskey{name} +field is obtained from +\begin{definition}[\DescribeMacro\glsxtrlongshortdescname] +\cs{glsxtrlongshortdescname} +\end{definition} +(Similarly for other +\texttt{long}\meta{modifier}\texttt{-short}\meta{modifier}\texttt{-desc} +styles, unless indicated otherwise.) +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +\item[\abbrstyledef{long-short-sc-desc}] +Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{long-short-sm-desc}] +Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{long-short-em-desc}] +Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{long-em-short-em-desc}] +New to version 1.04, this style is like \abbrstyle{long-short-em-desc} but redefines \cs{glsfirstlongfont} to +use \ics{glsfirstlongemfont}. + +\item[\abbrstyledef{long-em-noshort-em-desc-noreg}] +New to version 1.17, this style is like +\abbrstyle{long-em-noshort-em-desc} but +doesn't set the \catattr{regular} attribute. + + +\item[\abbrstyledef{long-short-user-desc}] +New to version 1.04, this style is like a~cross between the +\abbrstyle{long-short-desc} style and the +\abbrstyle{long-short-user} style. The display and inline forms are +as for \abbrstyle{long-short-user} and the \gloskey{name} key is +obtained from +\begin{definition}[\DescribeMacro\glsxtrlongshortuserdescname] +\cs{glsxtrlongshortuserdescname} +\end{definition} +Again, this should only be redefined before \cs{newabbreviation} (or +\cs{newacronym}), and fragile and formatting commands need protecting. + +The \gloskey{description} key must be +supplied in the optional argument of \cs{newabbreviation} +(or \cs{newacronym}). The \gloskey{sort} key is set to \meta{long} +(\meta{short}) as per the \abbrstyle{long-short-desc} style. + +\item[\abbrstyledef{short-nolong-noreg}] +This is like \abbrstyle{short-nolong} but doesn't set the +\catattr{regular} attribute. + +\item[\abbrstyledef{nolong-short-noreg}] +This is like \abbrstyle{nolong-short} but doesn't set the +\catattr{regular} attribute. + +\item[\abbrstyledef{short-long}] +On \gls{firstuse}, this style uses the format \meta{short} (\meta{long}). +The inline and display full forms are the same. The \gloskey{name} +and \gloskey{sort} keys are set to the short form. The +\gloskey{description} is set to the long form. +The short and long forms are separated by \cs{glsxtrfullsep}. +If you want to insert +material within the parentheses (such as a~translation), try the +\abbrstyle{short-long-user} style. + +The \gloskey{name} field is obtained from +\begin{definition}[\DescribeMacro\glsxtrshortlongname] +\cs{glsxtrshortlongname} +\end{definition} +(Similarly for other +\texttt{short}\meta{modifier}\texttt{-long}\meta{modifier} styles, +unless indicated otherwise.) +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + + +\item[\abbrstyledef{short-sc-long}] +Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{short-sm-long}] +Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{short-em-long}] +Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{short-em-long-em}] +New to version 1.04, this style is like \abbrstyle{short-em-long} but redefines \cs{glsfirstlongfont} to +use \ics{glsfirstlongemfont}. + +\item[\abbrstyledef{short-long-user}] +New to version 1.04. This style is like the +\abbrstyle{long-short-user} style but with the long and short forms +switched. The parenthetical material is governed by the same command +\ics{glsxtruserparen}, but the first argument supplied to it is +the long form instead of the short form. The \gloskey{name} field is +obtained by expanding +\begin{definition}[\DescribeMacro\glsxtrshortlongname] +\cs{glsxtrshortlongname} +\end{definition} +Again, this should only be redefined before \cs{newabbreviation} (or +\cs{newacronym}) and commands that should be expanded need to be +protected. The \gloskey{description} is set to +\cs{glsuserdescription}\marg{long}\marg{label}. + +\item[\abbrstyledef{short-nolong-desc-noreg}] +This style is like \abbrstyle{short-nolong-desc} but it doesn't +set the \catattr{regular} attribute. + +\item[\abbrstyledef{short-long-desc}] +On \gls{firstuse}, this style uses the format \meta{short} (\meta{long}). +The inline and display full forms are the same. The \gloskey{name} +is set to the full form. The +\gloskey{description} must be supplied by the user. +The short and long forms are separated by \cs{glsxtrfullsep}. The \gloskey{name} +field is obtained from +\begin{definition}[\DescribeMacro\glsxtrshortlongdescname] +\cs{glsxtrshortlongdescname} +\end{definition} +(Similarly for other +\texttt{short}\meta{modifier}\texttt{-long}\meta{modifier}\texttt{-desc} +styles, unless indicated otherwise.) +Any redefinition of this command must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +\item[\abbrstyledef{short-sc-long-desc}] +Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{short-sm-long-desc}] +Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{short-em-long-desc}] +Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + +\item[\abbrstyledef{short-em-long-em-desc}] +New to version 1.04, this style is like \abbrstyle{short-em-long-desc} but redefines \cs{glsfirstlongfont} to +use \ics{glsfirstlongemfont}. + +\item[\abbrstyledef{short-long-user-desc}] +New to version 1.04, this style is like a~cross between the +\abbrstyle{short-long-desc} style and the +\abbrstyle{short-long-user} style. The display and inline forms are +as for \abbrstyle{short-long-user}, but the \gloskey{name} key is +obtained from +\begin{definition}[\DescribeMacro\glsxtrshortlonguserdescname] +\cs{glsxtrshortlonguserdescname} +\end{definition} +Again, this should only be redefined before \cs{newabbreviation} (or +\cs{newacronym}), and fragile and formatting commands need protecting. + +The \gloskey{description} key must be +supplied in the optional argument of \cs{newabbreviation} +(or \cs{newacronym}). + +\item[\abbrstyledef{short-footnote}] +On \gls{firstuse}, this style displays the short form with the long form +as a footnote. This style automatically sets the +\catattr{nohyperfirst} attribute to \qt{true} for the supplied +category, so the \gls{firstuse} won't be hyperlinked (but the footnote +marker may be, if the \sty{hyperref} package is used). + +The inline full form uses the \meta{short} +(\meta{long}) style. The \gloskey{name} is set to the short form. +The \gloskey{description} is set to the long form. The +\gloskey{name} key is obtained by expanding +\begin{definition}[\DescribeMacro\glsxtrfootnotename] +\cs{glsxtrfootnotename} +\end{definition} +(Similarly for other +\texttt{short\meta{modifier}-\meta{modifier}footnote} styles, unless +indicated otherwise.) Again, this command should only be redefined +before \cs{newabbreviation} (or \cs{newacronym}), and fragile or +formatting commands should be protected from expansion. + +As from version 1.05, all the footnote styles use: +\begin{definition}[\DescribeMacro\glsfirstlongfootnotefont] +\cs{glsfirstlongfootnotefont}\marg{text} +\end{definition} +to format the long form on \gls{firstuse} or for the full form and +\begin{definition}[\DescribeMacro\glslongfootnotefont] +\cs{glslongfootnotefont}\marg{text} +\end{definition} +to format the long form elsewhere (for example, when used with +\cs{glsxtrlong}). + +As from version 1.07, all the footnote styles use: +\begin{definition}[\DescribeMacro\glsxtrabbrvfootnote] +\cs{glsxtrabbrvfootnote}\marg{label}\marg{long} +\end{definition} +By default, this just does \ics{footnote}\marg{long} (the first +argument is ignored). For example, to make the footnote text +link to the relevant place in the glossary: +\begin{verbatim} +\renewcommand{\glsxtrabbrvfootnote}[2]{% + \footnote{\glshyperlink[#2]{#1}}% +} +\end{verbatim} +or to include the short form with a hyperlink: +\begin{verbatim} +\renewcommand{\glsxtrabbrvfootnote}[2]{% + \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}% +} +\end{verbatim} +Note that I haven't used commands like \cs{glsxtrshort} to +avoid interference (see \sectionref{sec:entryfmtmods} +and \sectionref{sec:nested}). + +\item[\abbrstyledef{footnote}] A synonym for +\abbrstyle{short-footnote}. + +\item[\abbrstyledef{short-sc-footnote}] +Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. +(This style was originally called \depabbrstyle{footnote-sc}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-sc-footnote}] +Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. +(This style was originally called \depabbrstyle{footnote-sm}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-em-footnote}] +Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. +(This style was originally called \depabbrstyle{footnote-em}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-postfootnote}] +This is similar to the \abbrstyle{short-footnote} style but doesn't modify +the category attribute. Instead it changes \postlinkcat\ to +insert the footnote after the +\gls{linktext} on \gls{firstuse}. This will also defer the footnote until after any +following punctuation character that's recognised by +\ics{glsxtrifnextpunc}. + +The inline full form uses the \meta{short} +(\meta{long}) style. The \gloskey{name} is set to the short form. +The \gloskey{description} is set to the long form. +Note that this style will change \cs{glsxtrfull} (and its variants) +so that it fakes non-\gls{firstuse}. (Otherwise the footnote would +appear after the inline form.) + +\item[\abbrstyledef{postfootnote}] A synonym for +\abbrstyle{short-postfootnote}. + +\item[\abbrstyledef{short-sc-postfootnote}] +Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. +(This style was originally called \depabbrstyle{postfootnote-sc}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-sm-postfootnote}] +Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. +(This style was originally called \depabbrstyle{postfootnote-sm}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-em-postfootnote}] +Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. +(This style was originally called \depabbrstyle{postfootnote-em}. Renamed in version +1.04, but original name retained as a deprecated synonym for +backward-compatibility.) + +\item[\abbrstyledef{short-postlong-user}] +This style was introduced in version 1.12. It's like the +\abbrstyle{short-long-user} style but defers the parenthetical +material to after the link-text. This means that you don't have such +a long hyperlink (which can cause problems for the DVI \LaTeX\ format) +and it also means that the user supplied material can include a +hyperlink to another location. The \gloskey{name} key is obtained +from \cs{glsxtrshortlongname}. + +\item[\abbrstyledef{short-postlong-user-desc}] +This style was introduced in version 1.12. It's like the above +\abbrstyle{short-postlong-user} style but the \gloskey{description} +must be specified. The \gloskey{name} is obtained from +\cs{glsxtrshortlonguserdescname}. + +\item[\abbrstyledef{long-postshort-user}] +This style was introduced in version 1.12. It's like the above +\abbrstyle{short-postlong-user} style but the long form is shown +first and the short form is in the parenthetical material (as for +\abbrstyle{long-short-user}) style. + +\item[\abbrstyledef{long-postshort-user-desc}] +This style was introduced in version 1.12. It's like the above +\abbrstyle{long-postshort-user} style but the \gloskey{description} +must be specified. The \gloskey{name} is obtained from +\cs{glsxtrlongshortuserdescname}. + +\item[\abbrstyledef{long-hyphen-short-hyphen}] +This style (new to v1.17) is designed to work with the \catattr{markwords} +category attribute. The full form is formatted using +\begin{definition}[\DescribeMacro\glsxtrlonghyphenshort] +\cs{glsxtrlonghyphenshort}\marg{label}\marg{long}\marg{short}\marg{insert} +\end{definition} +where \meta{insert} is the inserted material +provided in the final optional argument of commands like +\cs{insert}. If \meta{insert} start with a hyphen, then this +locally redefines \ics{glsxtrwordsep} to a hyphen, which means that +if the \catattr{markwords} attribute is set then the long form +will become hyphenated. (If this attribute isn't set, there's +no alteration to the way the long form is displayed.) +The \gloskey{name} key is obtained from \cs{glsxtrlongshortname}. + +Unlike the other \meta{long} (\meta{short}) type of styles, +such as \abbrstyle{long-short}, this style +also repeats the insertion in the parenthetical part, so that the +first use form is: +\begin{quote} +\cs{glsfirstlonghyphenfont}\marg{long}\meta{insert} +(\cs{glsfirstabbrvhyphenfont}\marg{short}\meta{insert}) +\end{quote} +The space before the parenthetical material is actually given by +\cs{glsxtrfullsep}\marg{label} which defaults to a space. +The \meta{insert} may be moved into the formatting commands +according to the conditional \cs{ifglsxtrinsertinside}. + +For example, if \texttt{ip} is defined using: +\begin{verbatim} +\glssetcategoryattribute{english}{markwords}{true} +\setabbreviationstyle[english]{long-hyphen-short-hyphen} +\newabbreviation[category=english]{ip}{IP}{Internet Protocol} +\end{verbatim} +then +\begin{verbatim} +\gls{ip}[-Adressen] +\end{verbatim} +will do +\begin{quote} +Internet-Protocol-Adressen (IP-Adressen) +\end{quote} +on first use, whereas +\begin{verbatim} +\gls{ip}[ Address] +\end{verbatim} +will do +\begin{quote} +Internet Protocol Address (IP Address) +\end{quote} +on first use. + +\begin{important} +Note that the hyphenation isn't applied when using commands like +\cs{glsxtrlong}. This means that +\begin{verbatim} +\glsxtrlong{ip}[-Adressen] +\end{verbatim} +will do +\begin{quote} +Internet Protocol-Adressen +\end{quote} +\end{important} + +If the \catattr{markwords} attribute hadn't been set, then the +first use of +\begin{verbatim} +\gls{ip}[-Adressen] +\end{verbatim} +would do +\begin{quote} +Internet Protocol-Adressen (IP-Adressen) +\end{quote} +instead. + +\begin{important} +If the inserted material \meta{insert} is likely to contain commands like +\cs{gls}, then use \abbrstyle{long-hyphen-postshort-hyphen} +instead to avoid nested links. +\end{important} + +If you want the short version in small-caps, you can +just redefine \cs{glsabbrvhyphenfont} and \cs{glsxtrhyphensuffix} +to use the small-caps versions. For example: +\begin{verbatim} +\renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont} +\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix} +\end{verbatim} +Similarly for other font-changing variations. + +\item[\abbrstyledef{long-hyphen-noshort-desc-noreg}] +New to version 1.17, this style is like +\abbrstyle{long-hyphen-short-hyphen-desc} except that the +parenthetical part is omitted and the long form is displayed +on subsequent use. The short form can be accessed +with \cs{glsxtrshort} but just uses the default abbreviation font. +There's no regular version of this style as the regular form +doesn't have the flexibility to deal with the hyphen switch. +The \gloskey{name} is obtained from \cs{glsxtrlongnoshortdescname}. + +\item[\abbrstyledef{long-hyphen-noshort-noreg}] +New to version 1.17, this style is like +\abbrstyle{long-hyphen-noshort-desc-noreg} but the +name is set to the short form and the description is set to the long +form. + +\item[\abbrstyledef{long-hyphen-short-hyphen-desc}] + +New to version 1.17. +This is similar to \abbrstyle{long-hyphen-short-hyphen} but the user +supplies the description. The \gloskey{name} is obtained from +\cs{glsxtrlongshortdescname}. + +\item[\abbrstyledef{long-hyphen-postshort-hyphen}] + +New to version 1.17. +This is similar to \abbrstyle{long-hyphen-short-hyphen} but the +inserted and parenthetical material are moved to the post-link hook. +On first use, \cs{gls}\marg{label}\oarg{insert} will do +\begin{display} +\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert}\cs{glsxtrposthyphenshort}\marg{label}\meta{insert} +\end{display} +where +\begin{definition}[\DescribeMacro\glsxtrposthyphenshort] +\cs{glsxtrposthyphenshort}\marg{label}\meta{insert} +\end{definition} +is in the post-link hook. This uses the format: +\begin{display} +\meta{insert} (\cs{glsfirstabbrvhyphenfont}\marg{short}\meta{isnert}) +\end{display} + +\begin{important} +The singular short form is always used here, even with \cs{glspl}. +(Unlike \abbrstyle{long-hyphen-long-hyphen}.) +\end{important} + +The part in the link-text on first use: +\begin{definition}[\DescribeMacro\glsxtrlonghyphen] +\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert} +\end{definition} +checks if \meta{insert} starts with a hyphen. If it does, then +\cs{glsxtrwordsep} is locally redefined to a hyphen. This command +only uses \meta{insert} to test if it starts with a hyphen. +The actual insertion code isn't typeset until the post-link +hook and it's also localised, which means that you can use +commands like \cs{gls} in \meta{insert} for this style without +causing nested hyperlinks, but only for commands like \cs{gls}. + +\begin{important} +Don't use \cs{gls} in the \meta{insert} part for commands +like \cs{glsxtrfull}, \cs{glsxtrshort} or \cs{glsxtrlong}. +\end{important} + +The inline full display format used by commands like \cs{glsxtrfull} +behaves differently to the first use of \cs{gls} with this style. +It's better to use \cs{glsreset}\marg{label}\cs{gls}\marg{label} +if you want to ensure the full format. + +\item[\abbrstyledef{long-hyphen-postshort-hyphen-desc}] + +New to version 1.17. +This is similar to \abbrstyle{long-hyphen-postshort-hyphen} but the +user supplies the description. The \gloskey{name} is obtained from +\cs{glsxtrlongshortdescname}. + + +\item[\abbrstyledef{short-hyphen-long-hyphen}] +This style (new to v1.17) is like +\abbrstyle{long-hyphen-short-hyphen}, except that the short form +is displayed first followed by the long form in parentheses. The full form is formatted using +\begin{definition}[\DescribeMacro\glsxtrshorthyphenlong] +\cs{glsxtrshorthyphenlong}\marg{label}\marg{short}\marg{long}\marg{insert} +\end{definition} +which behaves in an analogous way to \cs{glsxtrlonghyphenshort}. +The \gloskey{name} is obtained from \cs{glsxtrshortlongname}. + +\item[\abbrstyledef{short-hyphen-long-hyphen-desc}] + +New to version 1.17. +This is similar to \abbrstyle{short-hyphen-long-hyphen} but the +user supplies the description. +The \gloskey{name} is obtained from \cs{glsxtrshortlongdescname}. + +\item[\abbrstyledef{short-hyphen-postlong-hyphen}] +This style (new to v1.17) is like +\abbrstyle{long-hyphen-postshort-hyphen}, but the +short form is displayed first followed by the long form in +parentheses. +On first use, \cs{gls}\marg{label}\oarg{insert} will do +\begin{display} +\cs{glsxtrshorthyphen}\marg{short}\marg{label}\marg{insert}\cs{glsxtrposthyphenlong}\marg{label}\meta{insert} +\end{display} +where +\begin{definition}[\DescribeMacro\glsxtrposthyphenlong] +\cs{glsxtrposthyphenlong}\marg{label}\meta{insert} +\end{definition} +is in the post-link hook. These commands behave in an analogous +manner to those used with \abbrstyle{long-hyphen-postshort-hyphen}. +The \gloskey{name} is obtained from \cs{glsxtrshortlongname}. + +\begin{important} +Don't use \cs{gls} in the \meta{insert} part for commands +like \cs{glsxtrfull}, \cs{glsxtrshort} or \cs{glsxtrlong}. +\end{important} + +The inline full display format used by commands like \cs{glsxtrfull} +behaves differently to the first use of \cs{gls} with this style. +It's better to use \cs{glsreset}\marg{label}\cs{gls}\marg{label} +if you want to ensure the full format. + +\item[\abbrstyledef{short-hyphen-postlong-hyphen-desc}] + +New to version 1.17. +This is similar to \abbrstyle{short-hyphen-postlong-hyphen} but the +user supplies the description. The \gloskey{name} is obtained from +\cs{glsxtrshortlongdescname}. + +\end{description} + +\section{Defining New Abbreviation Styles} +\label{sec:newabbrvstyle} + +New abbreviation styles may be defined using: +\begin{definition}[\DescribeMacro\newabbreviationstyle] +\cs{newabbreviationstyle}\marg{name}\marg{setup}\marg{fmts} +\end{definition} +\begin{sloppypar}\noindent +where \meta{name} is the name of the new style (as used in the +mandatory argument of \ics{setabbreviationstyle}). This is similar +but not identical to the \styfmt{glossaries} package's +\ics{newacronymstyle} command. +\end{sloppypar} + +\begin{important} +You can't use styles defined by +\cs{newacronymstyle} with \styfmt{glossaries-extra} unless you have +reverted \ics{newacronym} back to its generic definition from \styfmt{glossaries} +(using \ics{RestoreAcronyms}). The acronym styles from the +\styfmt{glossaries} package can't be used with abbreviations defined +with \cs{newabbreviation}. +\end{important} + +The \meta{setup} argument deals with the way the entry is defined +and may set attributes for the given abbreviation +category. This argument should redefine +\begin{definition}[\DescribeMacro\CustomAbbreviationFields] +\cs{CustomAbbreviationFields} +\end{definition} +to set the entry fields including the \gloskey{name} (defaults to +the short form if omitted), +\gloskey{sort}, \gloskey{first}, \gloskey{firstplural}. Other fields +may also be set, such as \gloskey{text}, \gloskey{plural} and +\gloskey{description}. + +\begin{important} +\cs{CustomAbbreviationFields} is expanded by \cs{newabbreviation} +so take care to protect commands that shouldn't be expanded. +\end{important} + +For example, the \abbrstyle{long-short} style has the following in +\meta{setup}: +\begin{verbatim} + \renewcommand*{\CustomAbbreviationFields}{% + name={\protect\glsabbrvfont{\the\glsshorttok}}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% +\end{verbatim} +Note that the \gloskey{first} and \gloskey{firstplural} are +set even though they're not used by \cs{gls}. + +The basic styles, such as \abbrstyle{long-short}, use commands like +\cs{glsabbrvfont} (which are redefined whenever the style formatting +is set) within \cs{CustomAbbreviationFields}. Other styles, such as +\abbrstyle{long-em-short-em} directly use their own custom commands, +such as \cs{glsabbrvemfont}. With these styles, commands like +\cs{glsabbrvfont} still need to be defined as appropriate in the +\meta{fmts} argument even if they're not used within +\cs{CustomAbbreviationFields}. + +The \meta{setup} argument may also redefine +\begin{definition}[\DescribeMacro\GlsXtrPostNewAbbreviation] +\cs{GlsXtrPostNewAbbreviation} +\end{definition} +which can be used to assign attributes. (This will automatically +be initialised to do nothing.) + +For example, the \abbrstyle{short-footnote} includes the following in +\meta{setup}: +\begin{verbatim} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +\end{verbatim} +This sets the \catattr{nohyperfirst} attribute to \qt{true}. +It also unsets the \catattr{regular} attribute if it has +previously been set. Note that the \catattr{nohyperfirst} +attribute doesn't get unset by other styles, so take care +not to switch styles for the same category. + +You can access the short, long, short plural and long plural +values through the following token registers. + +Short value (defined by \styfmt{glossaries}): +\begin{definition}[\DescribeMacro\glsshorttok] +\cs{glsshorttok} +\end{definition} + +Short plural value (defined by \styfmt{glossaries-extra}): +\begin{definition}[\DescribeMacro\glsshortpltok] +\cs{glsshortpltok} +\end{definition} +(This may be the default value or, if provided, the value provided by the user +through the \gloskey{shortplural} key in the optional argument +of \ics{newabbreviation}.) + +Long value (defined by \styfmt{glossaries}): +\begin{definition}[\DescribeMacro\glslongtok] +\cs{glslongtok} +\end{definition} + +Long plural value (defined by \styfmt{glossaries-extra}): +\begin{definition}[\DescribeMacro\glslongpltok] +\cs{glslongpltok} +\end{definition} +(This may be the default value or, if provided, the value provided by the user +through the \gloskey{longplural} key in the optional argument +of \ics{newabbreviation}.) + +The short or long values may be modified by attributes (such as +\catattr{markwords}). The above registers reflect the modification. +If you want to access the original (unmodified) short or long form +(as provided in the final two arguments of \cs{newabbreviation}), +then use the commands: +\begin{definition}[\DescribeMacro\glsxtrorgshort] +\cs{glsxtrorgshort} +\end{definition} +for the short form and +\begin{definition}[\DescribeMacro\glsxtrorglong] +\cs{glsxtrorglong} +\end{definition} +for the long form. (These may be useful for the \gloskey{sort} key +to avoid any formatting that may be added by the attribute setting.) + +There are two other registers available that are defined by +\styfmt{glossaries}: + +\begin{definition}[\DescribeMacro\glslabeltok] +\cs{glslabeltok} +\end{definition} +which contains the entry's label and +\begin{definition}[\DescribeMacro\glskeylisttok] +\cs{glskeylisttok} +\end{definition} +which contains the values provided in the optional argument +of \ics{newabbreviation}. + +Remember put \cs{the} in front of the register command as in the +examples above. The category label can be access through +the command (not a register): +\begin{definition}[\DescribeMacro\glscategorylabel] +\cs{glscategorylabel} +\end{definition} +This may be used inside the definition of +\cs{GlsXtrPostNewAbbreviation}. + +If you want to base a style on an existing style, you can use +\begin{definition}[\DescribeMacro\GlsXtrUseAbbrStyleSetup] +\cs{GlsXtrUseAbbrStyleSetup}\marg{name} +\end{definition} +where \meta{name} is the name of the existing style. +For example, the \abbrstyle{long-noshort-sc-desc} style simply does +\begin{verbatim} +\GlsXtrUseAbbrStyleSetup{long-noshort-desc} +\end{verbatim} +within \meta{setup}. + +The \meta{fmts} argument deals with the way the entry is displayed +in the document. This argument should redefine the following +commands. + +The default suffix for the plural short form (if not overridden by +the \gloskey{shortplural} key): +\begin{definition}[\DescribeMacro\abbrvpluralsuffix] +\cs{abbrvpluralsuffix} +\end{definition} +(Note that this isn't used for the plural long form, which +just uses the regular \cs{glspluralsuffix}.) + +The font used for the short form on \gls{firstuse} or in the full forms: +\begin{definition}[\DescribeMacro\glsfirstabbrvfont] +\cs{glsfirstabbrvfont}\marg{text} +\end{definition} + +The font used for the short form on subsequent use or through +commands like \ics{glsxtrshort}: +\begin{definition}[\DescribeMacro\glsabbrvfont] +\cs{glsabbrvfont}\marg{text} +\end{definition} + +The font used for the long form on \gls{firstuse} or in the full forms: +\begin{definition}[\DescribeMacro\glsfirstlongfont] +\cs{glsfirstlongfont}\marg{text} +\end{definition} + +The font used for the long form in commands like \cs{glsxtrlong} +use: +\begin{definition}[\DescribeMacro\glslongfont] +\cs{glslongfont}\marg{text} +\end{definition} + +Display full form singular no case-change (used by \ics{gls} on +\gls{firstuse} for abbreviations without the \catattr{regular} attribute +set): +\begin{definition}[\DescribeMacro\glsxtrfullformat] +\cs{glsxtrfullformat}\marg{label}\marg{insert} +\end{definition} + +Display full form singular first letter converted to upper case +(used by \ics{Gls} on \gls{firstuse} for abbreviations without the +\catattr{regular} attribute set): +\begin{definition}[\DescribeMacro\Glsxtrfullformat] +\cs{Glsxtrfullformat}\marg{label}\marg{insert} +\end{definition} + +Display full form plural no case-change +(used by \ics{glspl} on \gls{firstuse} for abbreviations without the +\catattr{regular} attribute set): +\begin{definition}[\DescribeMacro\glsxtrfullplformat] +\cs{glsxtrfullplformat}\marg{label}\marg{insert} +\end{definition} + +Display full form plural first letter converted to upper case +(used by \ics{Glspl} on \gls{firstuse} for abbreviations without the +\catattr{regular} attribute set): +\begin{definition}[\DescribeMacro\Glsxtrfullplformat] +\cs{Glsxtrfullplformat}\marg{label}\marg{insert} +\end{definition} + +In addition \meta{fmts} may also redefine the following commands that +govern the inline full formats. If the style doesn't redefine them, +they will default to the same as the display full forms. + +Inline singular no case-change (used by +\ics{glsentryfull}, \ics{glsxtrfull} and \ics{GLSxtrfull}): +\begin{definition}[\DescribeMacro\glsxtrinlinefullformat] +\cs{glsxtrinlinefullformat}\marg{label}\marg{insert} +\end{definition} + +Inline singular first letter converted to upper case (used by +\ics{Glsentryfull} and \ics{Glsxtrfull}): +\begin{definition}[\DescribeMacro\Glsxtrinlinefullformat] +\cs{Glsxtrinlinefullformat}\marg{label}\marg{insert} +\end{definition} + +Inline plural no case-change (used by +\ics{glsentryfullpl}, \ics{glsxtrfullpl} and \ics{GLSxtrfullpl}): +\begin{definition}[\DescribeMacro\glsxtrinlinefullplformat] +\cs{glsxtrinlinefullplformat}\marg{label}\marg{insert} +\end{definition} + +Inline plural first letter converted to upper case (used by +\ics{Glsentryfullpl} and \ics{Glsxtrfullpl}): +\begin{definition}[\DescribeMacro\Glsxtrinlinefullplformat] +\cs{Glsxtrinlinefullplformat}\marg{label}\marg{insert} +\end{definition} + +(New to version 1.17.) +You can also modify the way the subsequent use is formatted by +redefining the following four commands, but these won't be used for +abbreviations with the \catattr{regular} attribute set. If the style +doesn't redefine these commands, the default values are used. + +Singular with no case-change: +\begin{definition}[\DescribeMacro\glsxtrsubsequentfmt] +\cs{glsxtrsubsequentfmt}\marg{label}\marg{insert} +\end{definition} + +Singular with first letter upper case: +\begin{definition}[\DescribeMacro\Glsxtrsubsequentfmt] +\cs{Glsxtrsubsequentfmt}\marg{label}\marg{insert} +\end{definition} + +Plural with no case-change: +\begin{definition}[\DescribeMacro\glsxtrsubsequentplfmt] +\cs{glsxtrsubsequentplfmt}\marg{label}\marg{insert} +\end{definition} + +Plural with first letter upper case: +\begin{definition}[\DescribeMacro\Glsxtrsubsequentplfmt] +\cs{Glsxtrsubsequentplfmt}\marg{label}\marg{insert} +\end{definition} + +If you want to provide support for \sty{glossaries-accsupp} +use the following \cs{glsaccess\meta{xxx}} commands +(\sectionref{sec:accsupp}) within the definitions of +\cs{glsxtrfullformat} etc instead of the analogous +\cs{glsentry}\meta{xxx} commands. (If you don't use +\sty{glossaries-accsupp}, they will just do the corresponding +\cs{glsentry}\meta{xxx} command.) + +For example, the \abbrstyle{short-long} style has the following in +\meta{fmts}: +\begin{verbatim} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% +\end{verbatim} +Since the inline full commands aren't redefined, they default +to the same as the display versions. + +If you want to base a style on an existing style, you can use +\begin{definition}[\DescribeMacro\GlsXtrUseAbbrStyleFmts] +\cs{GlsXtrUseAbbrStyleFmts}\marg{name} +\end{definition} +within \meta{fmts}, where \meta{name} is the name of the existing +style. For example, the \abbrstyle{long-short-desc} style has the +following in \meta{fmts}: +\begin{verbatim} + \GlsXtrUseAbbrStyleFmts{long-short}% +\end{verbatim} + +Here's an example of an abbreviation style that's based on +\abbrstyle{long-short} that displays the short form within +\cs{textsf}: +\begin{verbatim} +\newabbreviationstyle +{custom-sf}% label +{% setup + \GlsXtrUseAbbrStyleSetup{short-long}% +}% +{% fmts + \GlsXtrUseAbbrStyleFmts{short-long}% + \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}% +} +\end{verbatim} +Note that this wouldn't work if it was instead based on one of the +modified versions such as \abbrstyle{short-sc-long} as they +explicitly use their own formatting commands, such as +\cs{glsabbrvemfont}. The base styles, such as \abbrstyle{short-long}, +use the more generic \cs{glsabbrvfont} etc which makes them easier +to adapt than the modified styles. + +For further details, see the \qt{Abbreviations} section in the documented code +(\texttt{glossaries-extra-code.pdf}). + +\chapter{Entries in Sectioning Titles, Headers, Captions and Contents} +\label{sec:headtitle} + +The \styfmt{glossaries} user manual cautions against using commands +like \cs{gls} in chapter or section titles. The principle problems +are: +\begin{itemize} +\item if you have a table of contents, the \gls{firstuseflag} +will be unset in the contents rather than later in the document; +\item if you have the location lists displayed in the glossary, +unwanted locations will be added to it corresponding to the table of +contents (if present) and every page that contains the entry in the +page header (if the page style in use adds the chapter or section +title to the header); +\item if the page style in use adds the chapter or section title to +the header and attempts to convert it to upper case, the entry label +(in the argument of \cs{gls} etc) will be converted to upper case +and the entry won't be recognised; +\item if you use \sty{hyperref}, commands like \cs{gls} can't be +expanded to a simple string and only the label will appear in the +PDF bookmark (with a warning from \sty{hyperref}); +\item if you use \sty{hyperref}, you will end up with nested hyperlinks +in the table of contents. +\end{itemize} +Similar problems can also occur with captions (except for the page +header and bookmark issues). + +To get around all these problems, the \styfmt{glossaries} user manual +recommends using the expandable non-hyperlink commands, such as +\ics{glsentrytext} (for regular entries) or \ics{glsentryshort} +(for abbreviations). This is the simplest solution, but doesn't +allow for special formatting that's applied to the entry through +commands like \cs{glstext} or \cs{glsxtrshort}. This means that if, +for example, you are using one of the abbreviation styles that uses +\ics{textsc} then the short form displayed with \cs{glsentryshort} won't use small +caps. If you only have one abbreviation style in use, you can +explicitly enclose \cs{glsentryshort}\marg{label} in the argument of +\cs{glsabbrvfont}, like this: +\begin{verbatim} +\chapter{A Chapter about \glsabbrvfont{\glsentryshort{html}}} +\end{verbatim} +Or, if you are using \sty{hyperref}: +\begin{verbatim} +\chapter{A Chapter about +\texorpdfstring{\glsabbrvfont{\glsentryshort{html}}}{\glsentryshort{html}}} +\end{verbatim} + +Since this is a bit cumbersome, you might want to define a new +command to do this for you. However, if you have mixed styles this +won't work as commands like \cs{gls} and \cs{glsxtrshort} redefine +\cs{glsabbrvfont} to match the entry's style before displaying it. +In this case, the above example doesn't take into account the +shifting definitions of \cs{glsabbrvfont} and will use whatever +happens to be the last abbreviation style in use. More complicated +solutions interfere with the upper casing used by the standard +page styles that display the chapter or section title in the page +header using \ics{MakeUppercase}. + +The \styfmt{glossaries-extra} package tries to resolve this by +modifying \ics{markright} and \ics{markboth} and \cs{@starttoc}. If you don't like this +change, you can restore their former definitions using +\begin{definition}[\DescribeMacro\glsxtrRevertMarks] +\cs{glsxtrRevertMarks} +\end{definition} +If you only want to restore \cs{@starttoc} you can use: +\begin{definition}[\DescribeMacro\glsxtrRevertTocMarks] +\cs{glsxtrRevertTocMarks} +\end{definition} +If you restore the header or table of contents commands, you'll have to use the \styfmt{glossaries} manual's +recommendations of either simply using \cs{glsentryshort} (as above) +or use the sectioning command's option argument to provide an +alternative for the table of contents and page header. For example: +\begin{verbatim} +\chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}} +\end{verbatim} +Alternatively, you need to find a way to insert \cs{glsxtrmarkhook} and +\cs{@glsxtrinmark} at the start of the header or table of contents +either scoped or afterwards cancelled with \cs{@glsxtrnotinmark} and +\cs{glsxtrrestoremarkhook}. + +If you don't revert the mark commands back with +\cs{glsxtrRevertMarks}, you can use the commands described below in +the argument of sectioning commands. You can still use them even +if the mark commands have been reverted, but only where they don't +conflict with the page style. + +The commands listed below all use \ics{texorpdfstring} if +\sty{hyperref} has been loaded so that the expandable non-formatted +version is added to the PDF bookmarks. Note that since the commands +that convert the first letter to upper case aren't expandable, the +non-case-changing version is used for the bookmarks. + +These commands essentially behave as though you have used +\cs{glsxtrshort} (or equivalent) with the options +\gloskey[glslink]{noindex} and \gloskey[glslink]{hyper\eq false}. +The text produced won't be converted to upper case in the page +headings by default. If you want the text converted to upper case +you need to set the \catattr{headuc} attribute to \qt{true} +for the appropriate category. + +\begin{important} +If you use one of the \ics{textsc} styles, be aware that the default +fonts don't provide bold small-caps or italic small-caps. This +means that if the chapter or section title style uses bold, this +may override the small-caps setting, in which case the abbreviation +will just appear as lower case bold. If the heading style uses +italic, the abbreviation may appear in upright small-caps, +\emph{even if you have set the \catattr{headuc} attribute} since +the all-capitals form still uses \cs{glsabbrvfont}. +You may want to consider using the \sty{slantsc} package in this +case. +\end{important} + +Display the short form: +\begin{definition}[\DescribeMacro\glsfmtshort] +\cs{glsfmtshort}\marg{label} +\end{definition} + +Display the plural short form: +\begin{definition}[\DescribeMacro\glsfmtshortpl] +\cs{glsfmtshortpl}\marg{label} +\end{definition} + +First letter upper case singular short form: +\begin{definition}[\DescribeMacro\Glsfmtshort] +\cs{Glsfmtshort}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +First letter upper case plural short form: +\begin{definition}[\DescribeMacro\Glsfmtshortpl] +\cs{Glsfmtshortpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +Display the long form: +\begin{definition}[\DescribeMacro\glsfmtlong] +\cs{glsfmtlong}\marg{label} +\end{definition} + +Display the plural long form: +\begin{definition}[\DescribeMacro\glsfmtlongpl] +\cs{glsfmtlongpl}\marg{label} +\end{definition} + +First letter upper case singular long form: +\begin{definition}[\DescribeMacro\Glsfmtlong] +\cs{Glsfmtlong}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +First letter upper case plural long form: +\begin{definition}[\DescribeMacro\Glsfmtlongpl] +\cs{Glsfmtlongpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +There are similar commands for the full form, but note that these +use the \emph{inline} full form, which may be different from the +full form used by \cs{gls}. + +Display the full form: +\begin{definition}[\DescribeMacro\glsfmtfull] +\cs{glsfmtfull}\marg{label} +\end{definition} + +Display the plural full form: +\begin{definition}[\DescribeMacro\glsfmtfullpl] +\cs{glsfmtfullpl}\marg{label} +\end{definition} + +First letter upper case singular full form: +\begin{definition}[\DescribeMacro\Glsfmtfull] +\cs{Glsfmtfull}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +First letter upper case plural full form: +\begin{definition}[\DescribeMacro\Glsfmtfullpl] +\cs{Glsfmtfullpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +There are also equivalent commands for the value of the +\gloskey{text} field: +\begin{definition}[\DescribeMacro\glsfmttext] +\cs{glsfmttext}\marg{label} +\end{definition} + +First letter converted to upper case: +\begin{definition}[\DescribeMacro\Glsfmttext] +\cs{Glsfmttext}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +The plural equivalents: +\begin{definition}[\DescribeMacro\glsfmtplural] +\cs{glsfmtplural}\marg{label} +\end{definition} +and +\begin{definition}[\DescribeMacro\Glsfmtplural] +\cs{Glsfmtplural}\marg{label} +\end{definition} + +Likewise for the value of the +\gloskey{name} field: +\begin{definition}[\DescribeMacro\glsfmtname] +\cs{glsfmtname}\marg{label} +\end{definition} + +First letter converted to upper case: +\begin{definition}[\DescribeMacro\Glsfmtname] +\cs{Glsfmtname}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +Similarly for the value of the +\gloskey{first} field: +\begin{definition}[\DescribeMacro\glsfmtfirst] +\cs{glsfmtfirst}\marg{label} +\end{definition} + +First letter converted to upper case: +\begin{definition}[\DescribeMacro\Glsfmtfirst] +\cs{Glsfmtfirst}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +The plural equivalents: +\begin{definition}[\DescribeMacro\glsfmtfirstpl] +\cs{glsfmtfirstpl}\marg{label} +\end{definition} +and +\begin{definition}[\DescribeMacro\Glsfmtfirstpl] +\cs{Glsfmtfirstpl}\marg{label} +\end{definition} + +\chapter{Categories} +\label{sec:categories} + +Each entry defined by \ics{newglossaryentry} (or commands that +internally use it such as \ics{newabbreviation}) +is assigned a category +through the \gloskey{category} key. You may add any category that +you like, but since the category is a label used in the creation +of some control sequences, avoid problematic characters within the +category label. (So take care if you have \sty{babel} shorthands on +that make some characters active.) + +The use of categories can give you more control over the way entries +are displayed in the text or glossary. Note that an entry's category +is independent of the glossary type. Be careful not to confuse +\gloskey{category} with \gloskey{type}. + +The default category assumed by +\cs{newglossaryentry} is labelled \category{general}. Abbreviations +defined with \cs{newabbreviation} have the category set to +\category{abbreviation} by default. Abbreviations defined with +\cs{newacronym} have the category set to \category{acronym} by +default. + +Additionally, if you have enabled \ics{newterm} with the +\pkgopt{index} package option that command +will set the category to \category{index} by default. If you have +enabled \ics{glsxtrnewsymbol} with the \pkgopt{symbols} package +option, that command will set the category to \category{symbol}. If you have +enabled \ics{glsxtrnewnumber} with the \pkgopt{numbers} package +option, that command will set the category to \category{number}. + +You can obtain the category label for a given entry using +\begin{definition}[\DescribeMacro\glscategory] +\cs{glscategory}\marg{label} +\end{definition} +This is equivalent to commands like \cs{glsentryname} and so may be +used in an expandable context. No error is generated if the entry +doesn't exist. + +You can test the category for a given entry using +\begin{definition}[\DescribeMacro\glsifcategory] +\cs{glsifcategory}\marg{entry-label}\marg{category-label}\marg{true +part}\marg{false part} +\end{definition} +This is equivalent to +\begin{alltt} +\ics{ifglsfieldeq}\marg{entry-label}\{category\}\marg{category-label}\marg{true +part}\marg{false part} +\end{alltt} +so any restrictions that apply to \cs{ifglsfieldeq} also apply to +\cs{glsifcategory}. + +Each category may have a set of attributes. For example, the +\category{general} and \category{acronym} categories have the +attribute \catattr{regular} set to \qt{true} to indicate that all +entries with either of those categories are regular entries (as +opposed to abbreviations). This attribute is accessed by +\cs{glsentryfmt} to determine whether to use \cs{glsgenentryfmt} or +\cs{glsxtrgenabbrvfmt}. + +Other attributes recognised by \styfmt{glossaries-extra} are: + +\begin{description} + +\item[\catattrdef{nohyperfirst}] When using commands like \ics{gls} +this will automatically suppress the hyperlink on \gls{firstuse} for entries with a +category that has this attribute set to \qt{true}. +(This settings can be overridden by explicitly setting +the \gloskey[glslink]{hyper} key on or off in the optional argument of +commands like \cs{gls}.) As from version 1.07, \cs{glsfirst}, +\cs{Glsfirst}, \cs{GLSfirst} and their plural versions (which should ideally +behave in a similar way to the \gls{firstuse} of \cs{gls} or +\cs{glspl}) now honour +this attribute (but not the package-wide \pkgopt[false]{hyperfirst} +option, which matches the behaviour of \sty{glossaries}). If you +want commands like \cs{glsfirst} to ignore the +\catattr{nohyperfirst} attribute then just redefine +\begin{definition}[\DescribeMacro\glsxtrchecknohyperfirst] +\cs{glsxtrchecknohyperfirst}\marg{label} +\end{definition} +to do nothing. + +\item[\catattrdef{nohyper}] When using commands like \ics{gls} +this will automatically suppress the hyperlink for entries with a +category that has this attribute set to \qt{true}. +(This settings can be overridden by explicitly setting +the \gloskey[glslink]{hyper} key on or off in the optional argument of +commands like \cs{gls}.) + +\item[\catattrdef{indexonlyfirst}] This is similar to the +\pkgopt{indexonlyfirst} package option but only for entries +that have a category with this attribute set to \qt{true}. + +\item[\catattrdef{wrgloss}] When using commands like \ics{gls}, +if this attribute is set to \qt{after}, it will automatically +implement \gloskey[glslink]{wrgloss}\optfmt{=after}. (New to v1.14.) + +\item[\catattrdef{discardperiod}] If set to \qt{true}, the +post-\gls{linktext} hook will +discard a~full stop (period) that follows \emph{non-plural} commands like \cs{gls} or +\cs{glstext}. (Provided for entries such as abbreviations that end +with a full stop.) This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) This attribute +doesn't apply to the accessibility fields. + +Note that this can cause a problem if you access a field that +doesn't end with a full stop. For example: +\begin{verbatim} +\newabbreviation + [user1={German Speaking \TeX\ User Group}] + {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ +e.V.} +\end{verbatim} +Here the \gloskey{short} and \gloskey{long} fields end with a full stop, but the +\gloskey{user1} field doesn't. The simplest solution in this +situation is to put the sentence terminator in the final optional +argument. For example: +\begin{verbatim} +\glsuseri{dante}[.] +\end{verbatim} +This will bring the punctuation character inside the \gls{linktext} +and it won't be discarded. + +\item[\catattrdef{pluraldiscardperiod}] If this attribute is set to +\qt{true} \emph{and} the \catattr{discardperiod} attribute is set to +\qt{true}, this will behave as above for the plural commands like +\cs{glspl} or \cs{glsplural}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{retainfirstuseperiod}] If this attribute is set +to \qt{true} then the full stop won't be discarded for +\gls{firstuse} instances, even if \catattr{discardperiod} or +\catattr{pluraldiscardperiod} are set. This is useful for +\meta{short} (\meta{long}) abbreviation styles where only the short +form has a trailing full stop. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) This attribute doesn't apply to the +accessibility fields. + +\item[\catattrdef{markwords}] If this attribute is set to \qt{true} +any entry defined using \ics{newabbreviation} will automatically +have spaces in the long form replaced with +\begin{definition}[\DescribeMacro\glsxtrwordsep] +\cs{glsxtrwordsep} +\end{definition} +and each word is encapsulated with +\begin{definition}[\DescribeMacro\glsxtrword] +\cs{glsxtrword}\marg{word} +\end{definition} +For example: +\begin{verbatim} +\glssetcategoryattribute{abbreviation}{markwords}{true} +\newabbreviation{ip}{IP}{Internet Protocol} +\end{verbatim} +is essentially the same as +\begin{verbatim} +\newabbreviation{ip}{IP} +{\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}} +\end{verbatim} +The \qt{hyphen} styles, such as +\abbrstyle{long-hyphen-short-hyphen}, take advantage of this +markup. If the inserted material (provided in the final argument +of commands like \ics{gls}) starts with a hyphen then +\cs{glsxtrwordsep} is locally redefined to a hyphen. (The default +value is a space). Note that this only applies to commands +like \cs{gls} and not like \cs{glsxtrlong}. You can provide your own +localised switch, if required. For example: +\begin{verbatim} +\newcommand{\hyplong}[2][]{% + {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}} +\end{verbatim} + +This setting will also adjust the long plural. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\begin{important} +This setting may result in the +\cs{glsxtrword} and \cs{glsxtrwordsep} markup ending up in the +\gloskey{sort} field, depending on the style in use. +\end{important} + +\item[\catattrdef{markshortwords}] This is similar to +\catattr{markwords} but applies to the short form. (Only useful for +abbreviations that contain spaces.) This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +This setting will only adjust the short plural if the +\gloskey{shortplural} key isn't used. This setting will +take precedence over \catattr{insertdots}. + +\begin{important} +This setting may result in the +\cs{glsxtrword} and \cs{glsxtrwordsep} markup ending up in the +\gloskey{sort} field, depending on the style in use. +\end{important} + +\item[\catattrdef{insertdots}] If this attribute is set to \qt{true} +any entry defined using \ics{newabbreviation} will automatically +have full stops (periods) inserted after each letter. The entry will +be defined with those dots present as though they had been present +in the \meta{short} argument of \cs{newabbreviation} (rather than +inserting them every time the entry is used). The short plural +form defaults to the new dotted version of the original \meta{short} +form with the plural suffix appended. \emph{This setting is incompatible +with \catattr{markshortwords}.} This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\begin{important} +If you explicitly override +the short plural using the \gloskey{shortplural} key, you must +explicitly insert the dots yourself (since there's no way for the +code to determine if the plural has a suffix that shouldn't be +followed by a dot). +\end{important} + +This attribute is best used with the \catattr{discardperiod} +attribute set to \qt{true}. + +\item[\catattrdef{aposplural}] If this attribute is set to \qt{true}, +\ics{newabbreviation} will insert an apostrophe (') before +the plural suffix for the \emph{short} plural form (unless explicitly +overridden with the \gloskey{shortplural} key). The long plural form +is unaffected by this setting. This setting overrides +\catattr{noshortplural}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) Check with your supervisor, publisher or +editor if you want to use this attribute as this +usage is controversial. + + +\item[\catattrdef{noshortplural}] If this attribute is set to +\qt{true}, \ics{newabbreviation} won't append the plural suffix for +the short plural form. This means the \gloskey{short} and +\gloskey{shortplural} values will be the same unless explicitly +overridden. \emph{This setting is incompatible with \catattr{aposplural}.} This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{accessinsertdots}] If this attribute is set to +\qt{true} and the \sty{glossaries-accsupp} package has been loaded +(with the \pkgopt{accsupp} option), then this behaves like +\catattr{insertdots} but for the \gloskey{shortaccess} field instead +of the \gloskey{short} field. This can be used to assist the +screen reader for initialisms that should be read out letter by +letter rather than as a word. For example: +\begin{verbatim} +\glssetcategoryattribute{initialism}{accessinsertdots}{true} + +\newabbreviation[category=initialism]{pi}{PI}{Private Investigator} +\end{verbatim} +This setting will be overridden by an explicit use of +the \gloskey{shortaccess} key in the optional argument +of \cs{newabbreviation} (or \cs{newacronym}). This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{nameshortaccess}] If this attribute is set to +\qt{true}, the \gloskey{access} field (used for the \gloskey{name} +field's accessibility support) is set to the \gloskey{shortaccess} +value. This attribute has no effect if there's no accessibility +support or if the \gloskey{shortaccess} field hasn't been assigned +or if the \gloskey{access} field is used explicitly. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{textshortaccess}] Like \gloskey{nameshortaccess} +but applies to the \gloskey{textaccess} field (for use with +regular abbreviations). + +\item[\catattrdef{firstshortaccess}] Like \gloskey{nameshortaccess} +but applies to the \gloskey{firstaccess} field (for use with +regular abbreviations). + +\item[\catattrdef{accessaposplural}] This boolean attribute overrides +\catattr{aposplural} for the \gloskey{shortpluralaccess} key. +Has no effect if there's no accessibility support or if +the \gloskey{shortaccess} key hasn't been set or if the +\gloskey{shortpluralaccess} key is explicitly set. If +the \catattr{aposplural} is set and this attribute isn't set +and the \gloskey{shortaccess} key is set, then the +\catattr{aposplural} setting governs the default +\gloskey{shortpluralaccess} setting. If you want +\catattr{aposplural} but don't want it applied to the accessibility +support, set the \catattr{accessaposplural} attribute to \qt{false}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{accessnoshortplural}] This boolean attribute overrides +\catattr{noshortplural} for the \gloskey{shortpluralaccess} key. +The same conditions apply as for \catattr{accessaposplural}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{headuc}] If this attribute is set to \qt{true}, +commands like \ics{glsfmtshort} will use the upper case version +in the page headers. + +\item[\catattrdef{tagging}] If this attribute is set to \qt{true}, +the tagging command defined by \ics{GlsXtrEnableInitialTagging} +will be activated to use \ics{glsxtrtagfont} in the glossary +(see \sectionref{sec:tagging}). + +\item[\catattrdef{entrycount}] Unlike the above attributes, +this attribute isn't boolean but instead must be an integer +value and is used in combination with \ics{glsenableentrycount} +(see \sectionref{sec:entrycountmods}). Leave blank or undefined +for categories that shouldn't have this facility enabled. The +value of this attribute is used by \ics{glsxtrifcounttrigger} +to determine how commands such as \ics{cgls} should behave. + +With \styfmt{glossaries}, commands like \cs{cgls} use \cs{cglsformat} +only if the previous usage count for that entry was equal to~1. +With \styfmt{glossaries-extra} the test is now for entries that +have the \catattr{entrycount} attribute set and +where the previous usage count for that entry is less than or +equal to the value of that attribute. + +\item[\catattrdef{linkcount}] This attribute is set to +\texttt{true} by \ics{GlsXtrEnableLinkCounting} (see +\sectionref{sec:linkcount}). + +\item[\catattrdef{linkcountmaster}] This attribute is set to +the name of the master counter by \ics{GlsXtrEnableLinkCounting} +if the optional argument is provided (see +\sectionref{sec:linkcount}). + +\item[\catattrdef{glossdesc}] The \ics{glossentrydesc} command +(used in the predefined glossary styles) is modified by +\styfmt{glossaries-extra} to check for this attribute. +The attribute may have one of the following values: +\begin{itemize} +\item \texttt{firstuc}: the first letter of the description will be +converted to upper case (using \ics{Glsentrydesc}). + +\item \texttt{title}: the description will be used in the argument of the +title casing command \ics{capitalisewords} (provided by +\sty{mfirstuc}). If you want to use a different command +you can redefine: +\begin{definition}[\DescribeMacro\glsxtrfieldtitlecasecs] +\cs{glsxtrfieldtitlecasecs}\marg{phrase cs} +\end{definition} +For example: +\begin{verbatim} +\newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}} +\end{verbatim} +(Note that the argument to \cs{glsxtrfieldtitlecasecs} +will be a control sequence whose replacement text is the +entry's description, which is why \cs{xcapitalisefmtwords} +is needed instead of \cs{capitalisefmtwords}.) + +\end{itemize} +Any other values of this attribute are ignored. Remember +that there are design limitations for both the first letter +uppercasing and the title casing commands. See the \sty{mfirstuc} +user manual for further details. + +\item[\catattrdef{glossdescfont}] (New to version 1.04) +In addition to the above, the modified \ics{glossentrydesc} +command also checks this attribute. If set, it should be the name of +a control sequence (without the leading backslash) that takes one +argument. This control sequence will be applied to the description +text. For example: +\begin{verbatim} +\glssetcategoryattribute{general}{glossdescfont}{emph} +\end{verbatim} + + +\item[\catattrdef{glossname}] As \catattr{glossdesc} but applies +to \ics{glossentryname}. Additionally, if this attribute is +set to \qt{uc} the name is converted to all capitals. + +\item[\catattrdef{indexname}] If set, the \cs{glsxtrpostnamehook} hook +used at the end of \ics{glossentryname} +will index the entry using \ics{index}. See +\sectionref{sec:autoindex} for further details. + +\item[\catattrdef{glossnamefont}] (New to version 1.04) +In addition to the above, the modified \ics{glossentryname} +command also checks this attribute. If set, it should be the name of +a control sequence (without the leading backslash) that takes one +argument. This control sequence will be applied to the name +text. For example: +\begin{verbatim} +\glssetcategoryattribute{general}{glossnamefont}{emph} +\end{verbatim} +Note that this overrides \cs{glsnamefont} which will only +be used if this attribute hasn't been set. + +Remember that glossary styles may additionally apply a font change, +such as the list styles which put the name in the optional argument +of \cs{item}. + +\item[\catattrdef{textformat}] (New to version 1.21.) +Commands like \cs{gls} and \cs{glstext} have the link text +encapsulated in the argument of \cs{glstextformat} by default. If +this attribute is set, the control sequence given by the attribute +value will be used instead. As with the above, the attribute value +should be the name (without the leading backslash) of a command that +takes a single argument (the link text). Remember that the +abbreviation styles may apply an additional font change. + +\item[\catattrdef{hyperoutside}] (New to v1.21.) The attribute value +may be \texttt{false}, \texttt{true} or unset. If unset, +\texttt{true} is assumed. This indicates the default setting +of the \gloskey[glslink]{hyperoutside} key, described in +\sectionref{sec:wrglossary}. + +\item[\catattrdef{dualindex}] If set, whenever a glossary entry +has information written to the external glossary file +through commands like \ics{gls} and \ics{glsadd}, a~corresponding +line will be written to the indexing file using \ics{index}. See +\sectionref{sec:autoindex} for further details. + +\item[\catattrdef{targeturl}] If set, the hyperlink generated by +commands like \cs{gls} will be set to the URL provided by this +attributes value. For example: +\begin{verbatim} +\glssetcategoryattribute{general}{targeturl}{master-doc.pdf} +\end{verbatim} +(See also the accompanying sample file +\texttt{sample-external.tex}.) If the URL contains awkward +characters (such as \verb|%| or \verb|~|) remember that the base +\styfmt{glossaries} package provides commands like +\ics{glspercentchar} and \cs{glstildechar} that expand to literal +characters. + +If you want to a named anchor within the target URL (notionally +adding \texttt{\#}\meta{name} to the URL), then you also +need to set \catattr{targetname} to the anchor \meta{name}. You may +use \cs{glslabel} within \meta{name} which is set by commands +like \cs{gls} to the entry's label. + +All the predefined glossary styles start each entry +listing with \cs{glstarget} which sets the anchor to +\verb|\glolinkprefix\glslabel|, so if you want entries to link +to glossaries in the URL given by \catattr{targeturl}, you +can just do: +\begin{verbatim} +\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} +\end{verbatim} +(If the target document changed \cs{glolinkprefix} then you will +need to adjust the above as appropriate.) + +If the anchor is in the form \meta{name1}\texttt{.}\meta{name2} +then use \catattr{targetname} for the \meta{name2} part and +\catattr{targetcategory} for the \meta{name1} part. + +For example: +\begin{verbatim} +\glssetcategoryattribute{general}{targeturl}{master-doc.pdf} +\glssetcategoryattribute{general}{targetcategory}{page} +\glssetcategoryattribute{general}{targetname}{7} +\end{verbatim} +will cause all link text for \texttt{general} entries to +link to \texttt{master-doc.pdf\#page.7} (page 7 of that PDF). + +If you want a mixture in your document of entries that link to +an internal glossary and entries that link to an external URL +then you can use the starred form of \ics{newignoredglossary} +for the external list. For example: +\begin{verbatim} +\newignoredglossary*{external} + +\glssetcategoryattribute{external}{targeturl}{master-doc.pdf} +\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} + +\newglossaryentry{sample}{name={sample},description={local example}} + +\newglossaryentry{sample2}{name={sample2}, + type=external, + category=external, + description={external example}} +\end{verbatim} + +\item[\catattrdef{externallocation}] The value should be the +file name of the target document when manually indexing an +external location (see \sectionref{sec:wrglossary}). In general, +it's better to use \gls{bib2gls} v1.7+ which can handle multiple +external sources and doesn't require this attribute. + +\end{description} + +An attribute can be set using: +\begin{definition}[\DescribeMacro\glssetcategoryattribute] +\cs{glssetcategoryattribute}\marg{category-label}\marg{attribute-label}\marg{value} +\end{definition} +where \meta{category-label} is the category label, +\meta{attribute-label} is the attribute label and \meta{value} is +the new value for the attribute. + +There is a shortcut version to set the \catattr{regular} attribute +to \qt{true}: +\begin{definition}[\DescribeMacro\glssetregularcategory] +\cs{glssetregularcategory}\marg{category-label} +\end{definition} + +If you need to lookup the category label for a particular entry, you +can use the shortcut command: +\begin{definition}[\DescribeMacro\glssetattribute] +\cs{glssetattribute}\marg{entry-label}\marg{attribute-label}\marg{value} +\end{definition} +This uses \cs{glssetcategoryattribute} with \cs{glscategory} to set +the attribute. Note that this will affect all other entries that +share this entry's category. + +You can fetch the value of an attribute for a particular category +using: +\begin{definition}[\DescribeMacro\glsgetcategoryattribute] +\cs{glsgetcategoryattribute}\marg{category-label}\marg{attribute-label} +\end{definition} +Again there is a shortcut if you need to lookup the category label +for a given entry: +\begin{definition}[\DescribeMacro\glsgetattribute] +\cs{glsgetattribute}\marg{entry-label}\marg{attribute-label} +\end{definition} + +You can test if an attribute has been assigned to a given +category using: +\begin{definition}[\DescribeMacro\glshascategoryattribute] +\cs{glshascategoryattribute}\marg{category-label}\marg{attribute-label}\marg{true +code}\marg{false code} +\end{definition} +This uses \sty{etoolbox}'s +\cs{ifcsvoid} and does \meta{true code} if the attribute has been +set and isn't blank and isn't \cs{relax}. The shortcut if you need +to lookup the category label from an entry is: +\begin{definition}[\DescribeMacro\glshasattribute] +\cs{glshasattribute}\marg{entry-label}\marg{attribute-label}\marg{true +code}\marg{false code} +\end{definition} + +You can test the value of an attribute for a particular category +using: +\begin{definition}[\DescribeMacro\glsifcategoryattribute] +\cs{glsifcategoryattribute}\marg{category-label}\marg{attribute-label}\marg{value} \marg{true-part}\marg{false-part} +\end{definition} +This tests if the attribute (given by \meta{attribute-label}) for +the category (given by \meta{category-label}) is set and equal to +\meta{value}. If true, \meta{true-part} is done. If the attribute +isn't set or is set but isn't equal to \meta{value}, \meta{false +part} is done. + +For example: +\begin{verbatim} +\glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER} +\end{verbatim} +This does \qt{NO HYPER} if the \category{general} category has the +\catattr{nohyper} attribute set to \texttt{true} otherwise if +does \qt{HYPER}. + +With boolean-style attributes like \catattr{nohyper}, make sure you +always test for \texttt{true} not \texttt{false} in case the attribute hasn't been set. + +Again there's a shortcut if you need to lookup the category label +from a particular entry: +\begin{definition}[\DescribeMacro\glsifattribute] +\cs{glsifattribute}\marg{entry-label}\marg{attribute-label}\marg{value}\marg{true-part} \marg{false-part} +\end{definition} + +There's also a shortcut to determine if a particular category has +the \catattr{regular} attribute set to \qt{true}: +\begin{definition}[\DescribeMacro\glsifregularcategory] +\cs{glsifregularcategory}\marg{category-label}\marg{true-part}\marg{false-part} +\end{definition} +Alternatively, if you need to lookup the category for a particular +entry: +\begin{definition}[\DescribeMacro\glsifregular] +\cs{glsifregular}\marg{entry-label}\marg{true-part}\marg{false-part} +\end{definition} +Note that if the \catattr{regular} attribute hasn't be set, the +above do \meta{false-part}. There are also reverse commands that +test if the \catattr{regular} attribute has been set to \qt{false}: +\begin{definition}[\DescribeMacro\glsifnotregularcategory] +\cs{glsifnotregularcategory}\marg{category-label}\marg{true-part}\marg{false-part} +\end{definition} +or for a particular entry: +\begin{definition}[\DescribeMacro\glsifnotregular] +\cs{glsifnotregular}\marg{entry-label}\marg{true-part}\marg{false-part} +\end{definition} +Again, if the \catattr{regular} attribute hasn't been set, the above +do \meta{false-part}, so these reverse commands aren't logically +opposite in the strict sense. + +You can iterate through all entries with a given category using: +\begin{definition} +\cs{glsforeachincategory}\oarg{glossary-labels}\marg{category-label} \marg{glossary-cs}\marg{label-cs}\marg{body} +\end{definition} +This iterates through all entries in the glossaries identified by +the comma-separated list \meta{glossary-labels} that have the +category given by \meta{category-label} and performs \meta{body} for +each match. Within \meta{body}, you can use \meta{glossary-cs} and +\meta{label-cs} +(which much be control sequences) to access the current glossary and +entry label. If \meta{glossary-labels} is omitted, all glossaries +are assumed. + +Similarly, you can iterate through all entries that have a category +with a given attribute using: +\begin{definition}[\DescribeMacro\glsforeachwithattribute] +\cs{glsforeachwithattribute}\oarg{glossary-labels}\marg{attribute-label} \marg{attribute-value}\marg{glossary-cs}\marg{label-cs}\marg{body} +\end{definition} +This will do \meta{body} for each entry that has a category with the +attribute \meta{attribute-label} set to \meta{attribute-value}. +The remaining arguments are as the previous command. + +You can change the category for a particular entry using the +standard glossary field changing commands, such as +\ics{glsfielddef}. Alternatively, you can use +\begin{definition}[\DescribeMacro\glsxtrsetcategory] +\cs{glsxtrsetcategory}\marg{entry-labels}\marg{category-label} +\end{definition} +This will change the category to \meta{category-label} for each +entry listed in the comma-separated list \meta{entry-labels}. This +command uses \ics{glsfieldxdef} so it will expand +\meta{category-label} and make the change global. + +You can also change the category for all entries with a glossary or +glossaries using: +\begin{definition}[\DescribeMacro\glsxtrsetcategoryforall] +\cs{glsxtrsetcategoryforall}\marg{glossary-labels}\marg{category-label} +\end{definition} +where \meta{glossary-labels} is a comma-separated list of glossary +labels. + +\chapter{Counting References} +\label{sec:countref} + +There are three basic ways of counting entry references: +\begin{enumerate} +\item Counting the total number of times \cs{glsunset} is used +(\cs{glsreset} resets the count and is best avoided). +This is provided by the base \styfmt{glossaries} package and is +intended for documents where the term should be displayed +differently if it's only been used a certain number of times. +The information has to be written to the \texttt{.aux} file +so that it's available on the next \LaTeX\ run. + +This method is extended by \styfmt{glossaries-extra} and is +described in \sectionref{sec:entrycount}. + +\item Counting the total number of records. This method is +only available with \gls{bib2gls} and is intended +for documents where the term should be displayed differently +if it's only been recorded (indexed) a certain number of times. +See \sectionref{sec:recordcount} for further details. + +\item Counting the number of times the \cs{gls}-like or +\cs{glstext}-like commands are used. (That is, those commands +that internally use \cs{@gls@link}.) Unlike the other two methods, +this just provides a running total rather than the total from the +previous \LaTeX\ run. This method is intended to make it more +convenient to work with hooks like \cs{glslinkcheckfirsthyperhook}, +\cs{glslinkpostsetkeys} or \cs{glslinkpresetkeys}. +See \sectionref{sec:linkcount} for further details. +\end{enumerate} + +\section{Entry Counting (First Use Flag)} +\label{sec:entrycount} + +As mentioned in \sectionref{sec:entrycountmods}, +\styfmt{glossaries-extra} modifies the \ics{glsenableentrycount} command to allow +for the \catattr{entrycount} attribute. This means that +you not only need to enable entry counting with +\ics{glsenableentrycount}, but you also need +to set the appropriate attribute (see \sectionref{sec:categories}). + +\begin{important} +Remember that entry counting only counts the number of times an +entry is used by commands that change the \gls{firstuseflag}. (That +is, all those commands that mark the entry as having been used.) +There are many commands that don't modify this flag and they won't +contribute to the entry use count. +\end{important} + +With \styfmt{glossaries-extra}, you may use \ics{cgls} instead of +\ics{gls} even if you haven't enabled entry counting. You will only +get a warning if you use \cs{glsenableentrycount} without setting +the \catattr{entrycount} attribute. (With \styfmt{glossaries}, +commands like \ics{cgls} will generate a warning if +\cs{glsenableentrycount} hasn't been used.) The abbreviation +shortcut \ics{ab} uses \cs{cgls} (see +\sectionref{sec:abbrshortcuts}). The acronym shortcut +\ics{ac} uses \cs{cgls} if it's been defined with +\pkgopt[ac]{shortcuts} (or \pkgopt[all]{shortcuts}) +but uses \cs{gls} if it's been defined with +\pkgopt[acronyms]{shortcuts} (or \pkgopt[acro]{shortcuts}). + +All upper case versions (not provided by \styfmt{glossaries}) are +also available: +\begin{definition}[\DescribeMacro\cGLS] +\cs{cGLS}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +and +\begin{definition}[\DescribeMacro\cGLSpl] +\cs{cGLSpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +These are analogous to \cs{cgls} and \cs{cglspl} but they +use +\begin{definition}[\DescribeMacro\cGLSformat] +\cs{cGLSformat}\marg{label}\marg{insert} +\end{definition} +and +\begin{definition}[\DescribeMacro\cGLSplformat] +\cs{cGLSplformat}\marg{label}\marg{insert} +\end{definition} +which convert the analogous \cs{cglsformat} and +\cs{cglsplformat} to upper case. + +Just using \styfmt{glossaries}: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries} + +\makeglossaries + +\glsenableentrycount + +\newacronym{html}{HTML}{hypertext markup language} +\newacronym{xml}{XML}{extensible markup language} + +\begin{document} + +Used once: \cgls{html}. + +Used twice: \cgls{xml} and \cgls{xml}. + +\printglossaries + +\end{document} +\end{verbatim} + +If you switch to \styfmt{glossaries-extra} you must set the +\catattr{entrycount} attribute: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\glsenableentrycount + +\glssetcategoryattribute{abbreviation}{entrycount}{1} + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} + +\begin{document} + +Used once: \cgls{html}. + +Used twice: \cgls{xml} and \cgls{xml}. + +\printglossaries + +\end{document} +\end{verbatim} + +When activated with \cs{glsenableentrycount}, commands such as +\ics{cgls} now use +\begin{definition}[\DescribeMacro\glsxtrifcounttrigger] +\cs{glsxtrifcounttrigger}\marg{label}\marg{trigger code}\marg{normal +code} +\end{definition} +to determine if the entry trips the entry count trigger. +The \meta{trigger code} uses commands like \cs{cglsformat} and +unsets the \gls{firstuseflag}. The \meta{normal code} is the code that +would ordinarily be performed by whatever the equivalent +command is (for example, \cs{cgls} will use \cs{cglsformat} in +\meta{trigger code} but the usual \cs{gls} behaviour in \meta{normal +code}). + +The default definition is: +\begin{verbatim} +\newcommand*{\glsxtrifcounttrigger}[3]{% + \glshasattribute{#1}{entrycount}% + {% + \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax + #3% + \else + #2% + \fi + }% + {#3}% +} +\end{verbatim} +This means that if an entry is assigned to a category that has +the \catattr{entrycount} attribute then the \meta{trigger code} +will be used if the previous count value +(the number of times the entry was used on the last run) is greater +than the value of the attribute. + +For example, to trigger normal use if the previous count value +is greater than four: +\begin{verbatim} +\glssetcategoryattribute{abbreviation}{entrycount}{4} +\end{verbatim} + +There is a convenient command provided to enable entry counting, +set the \catattr{entrycount} attribute and redefine \ics{gls}, +etc to use \ics{cgls} etc: +\begin{definition}[\DescribeMacro\GlsXtrEnableEntryCounting] +\cs{GlsXtrEnableEntryCounting}\marg{categories}\marg{value} +\end{definition} +The first argument \meta{categories} is a comma-separated list +of categories. For each category, the \catattr{entrycount} +attribute is set to \meta{value}. In addition, this does: +\begin{verbatim} +\renewcommand*{\gls}{\cgls}% +\renewcommand*{\Gls}{\cGls}% +\renewcommand*{\glspl}{\cglspl}% +\renewcommand*{\Glspl}{\cGlspl}% +\renewcommand*{\GLS}{\cGLS}% +\renewcommand*{\GLSpl}{\cGLSpl}% +\end{verbatim} +This makes it easier to enable entry-counting on existing +documents. + +If you use \cs{GlsXtrEnableEntryCounting} more than once, subsequent uses will +just set the \catattr{entrycount} attribute for each listed +category. + +The above example document can then become: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableEntryCounting{abbreviation}{1} + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} + +\begin{document} + +Used once: \gls{html}. + +Used twice: \gls{xml} and \gls{xml}. + +\printglossaries + +\end{document} +\end{verbatim} + +The standard entry-counting function describe above counts +the number of times an entry has been marked as used throughout +the document. (The reset commands will reset the total back to +zero.) If you prefer to count per sectional-unit, you can +use +\begin{definition}[\DescribeMacro\GlsXtrEnableEntryUnitCounting] +\cs{GlsXtrEnableEntryUnitCounting}\marg{categories}\marg{value}\marg{counter-name} +\end{definition} +where \meta{categories} is a comma-separated list of categories +to which this feature should be applied, \meta{value} is the +trigger value and \meta{counter-name} is the name of the counter +used by the sectional unit. + +\begin{important} +Due to the asynchronous nature of \TeX's output routine, +discrepancies will occur in page spanning paragraphs if you +use the \ctr{page} counter. +\end{important} + +Note that you can't use both the document-wide counting and +the per-unit counting in the same document. + +The counter value is used as part of a label, which means +that \cs{the}\meta{counter-name} needs to be expandable. +Since \sty{hyperref} also has a similar requirement and provides +\cs{theH}\meta{counter-name} as an expandable alternative, +\styfmt{glossaries-extra} will use \cs{theH}\meta{counter-name} +if it exists otherwise it will use \cs{the}\meta{counter-name}. + +The per-unit counting function uses two attributes: \catattr{entrycount} +(as before) and \catattr{unitcount} (the name of the counter). + +Both the original document-wide counting mechanism and the +per-unit counting mechanism provide a command that can be +used to access the current count value for this run: +\begin{definition}[\DescribeMacro\glsentrycurrcount] +\cs{glsentrycurrcount}\marg{label} +\end{definition} +and the final value from the previous run: +\begin{definition}[\DescribeMacro\glsentryprevcount] +\cs{glsentryprevcount}\marg{label} +\end{definition} +In the case of the per-unit counting, this is the final value +\emph{for the current unit}. In both commands \meta{label} +is the entry's label. + +The per-unit counting mechanism additionally provides: +\begin{definition}[\DescribeMacro\glsentryprevtotalcount] +\cs{glsentryprevtotalcount}\marg{label} +\end{definition} +which gives the sum of all the per-unit totals from the previous run +for the entry given by \meta{label}, and +\begin{definition}[\DescribeMacro\glsentryprevmaxcount] +\cs{glsentryprevmaxcount}\marg{label} +\end{definition} +which gives the maximum per-unit total from the previous run. + +The above two commands are unavailable for the document-wide counting. + +Example of per-unit counting, where the unit is the chapter: +\begin{verbatim} +\documentclass{report} +\usepackage{glossaries-extra} + +\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter} + +\makeglossaries + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{css}{CSS}{cascading style sheet} + +\newglossaryentry{sample}{name={sample},description={sample}} + +\begin{document} +\chapter{Sample} + +Used once: \gls{html}. + +Used three times: \gls{css} and \gls{css} and \gls{css}. + +Used once: \gls{sample}. + +\chapter{Another Sample} + +Used once: \gls{css}. + +Used twice: \gls{html} and \gls{html}. + +\printglossaries +\end{document} +\end{verbatim} +In this document, the \texttt{css} entry is used three times in the +first chapter. This is more than the trigger value of 2, so +\verb|\gls{css}| is expanded on \gls{firstuse} with the short +form used on subsequent use, and the \texttt{css} entries in +that chapter are added to the glossary. In the second chapter, +the \texttt{css} entry is only used once, which trips the +suppression trigger, so in that chapter, the long form +is used and \verb|\gls{css}| doesn't get a line added to +the glossary file. + +The \texttt{html} is used a total of three times, but the +expansion and indexing suppression trigger is tripped +in both chapters because the per-unit total (1 for the first +chapter and 2 for the second chapter) is less than or equal +to the trigger value. + +The \texttt{sample} entry has only been used once, but it doesn't +trip the indexing suppression because it's in the \category{general} +category, which hasn't been listed in +\cs{GlsXtrEnableEntryUnitCounting}. + +The per-unit entry counting can be used for other purposes. +In the following example document the trigger value is set +to zero, which means the index suppression won't be triggered, +but the unit entry count is used to automatically suppress the +hyperlink for commands like \ics{gls} by modifying the +hook +\begin{definition}[\DescribeMacro\glslinkcheckfirsthyperhook] +\cs{glslinkcheckfirsthyperhook} +\end{definition} +which is used at the end of the macro the determines whether +or not to suppress the hyperlink. + +\begin{verbatim} +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableEntryUnitCounting{general}{0}{page} + +\newglossaryentry{sample}{name={sample},description={an example}} + +\renewcommand*{\glslinkcheckfirsthyperhook}{% + \ifnum\glsentrycurrcount\glslabel>0 + \setkeys{glslink}{hyper=false}% + \fi +} + +\begin{document} + +A \gls{sample} entry. +Next use: \gls{sample}. + +\newpage + +Next page: \gls{sample}. +Again: \gls{sample}. + +\printglossaries + +\end{document} +\end{verbatim} +This only produces a hyperlink for the first instance of +\verb|\gls{sample}| on each page. + +The earlier warning about using the \ctr{page} counter still +applies. If the first instance of \cs{gls} occurs at the top of the +page within a paragraph that started on the previous page, then +the count will continue from the previous page. + +\section{Link Counting} +\label{sec:linkcount} + +As from version 1.26, an alternative method of entry counting +is to count the number of times the \cs{gls}-like or +\cs{glstext}-like commands are used. (The \qt{link} in this method's +name refers to the use of the internal command \cs{@gls@link} +not to \cs{hyperlink} although \cs{@gls@link} may use +\cs{hyperlink} when displaying the \gls{linktext}.) + +To enable link counting use the preamble-only command: +\begin{definition}[\DescribeMacro\GlsXtrEnableLinkCounting] +\cs{GlsXtrEnableLinkCounting}\oarg{master counter}\marg{categories} +\end{definition} +where \meta{categories} is a list of category labels. The optional +argument \meta{master counter} may be used to identify a master +counter (which must be defined). If present, the associated +link counter will be reset when the master counter is incremented. +This command automatically sets the \catattr{linkcount} attribute +for the given categories. If the optional argument is +present, it also sets the \catattr{linkcountmaster} attribute. + +When enabled, commands like \cs{gls} and \cs{glstext} +increment the associated counter using +\begin{definition}[\DescribeMacro\glsxtrinclinkcounter] +\cs{glsxtrinclinkcounter}\marg{counter name} +\end{definition} +This just does +\texttt{\cs{stepcounter}\marg{counter name}} by default but if you +need \cs{refstepcounter} instead, just redefine this command: +\begin{verbatim} +\renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}} +\end{verbatim} + +You can access the internal count register using +\begin{definition}[\DescribeMacro\GlsXtrLinkCounterValue] +\cs{GlsXtrLinkCounterValue}\marg{label} +\end{definition} +where \meta{label} is the entry's label. This will expand +to 0 if the counter hasn't been defined. + +It's also possible to access the display value +(\cs{the}\meta{counter}) using +\begin{definition}[\DescribeMacro\GlsXtrTheLinkCounter] +\cs{GlsXtrTheLinkCounter}\marg{counter} +\end{definition} +(This will expand to 0 if the counter hasn't been defined.) + +\begin{important} +In order to conserve resources, the counter is only defined +when it first needs to be incremented so terms that have +been defined but haven't been used in the document +won't have the associated count register allocated. +\end{important} + +You can test if the counter has been defined using: +\begin{definition}[\DescribeMacro\GlsXtrIfLinkCounterDef] +\cs{GlsXtrIfLinkCounterDef}\marg{label}\marg{true}\marg{false} +\end{definition} +where \meta{label} is the entry's label. + +The counter name can be obtained using +\begin{definition}[\DescribeMacro\GlsXtrLinkCounterName] +\cs{GlsXtrLinkCounterName}\marg{label} +\end{definition} +This simply expands to the counter name associated with the +entry given by \meta{label} without any check for +existence. For example, to change the display command +(\cs{the}\meta{counter}) using \sty{etoolbox}: +\begin{verbatim} +\csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}} +\end{verbatim} +This is useful if you just want to change the display for +specific entries but isn't convenient if you want to change the +display for all entries. Instead, it's simpler to redefine +\cs{GlsXtrTheLinkCounter}. For example: +\begin{verbatim} +\renewcommand*{\GlsXtrTheLinkCounter}[1]{% + \GlsXtrIfLinkCounterDef{#1}% + {\Roman{\GlsXtrLinkCounterName{#1}}}% + {0}% +} +\end{verbatim} +In both cases, the redefinition should be implemented +after \cs{GlsXtrEnableLinkCounting}. + +Here's an example document that uses link counting to disable +the hyperlink after the first reference. This redefines +\ics{glslinkpresetkeys} (which is used by both \cs{gls} +and \cs{glstext}) instead of +\cs{glslinkcheckfirsthyperhook} (which is used by \cs{gls} +but not by \cs{glstext}). + +\begin{verbatim} +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\renewcommand*{\glslinkpresetkeys}{% + \ifnum\GlsXtrLinkCounterValue{\glslabel}>1 + \setkeys{glslink}{hyper=false}% + \fi +} + +\GlsXtrEnableLinkCounting{general} + +\newglossaryentry{sample1}{name={sample1},description={an example}} +\newglossaryentry{sample2}{name={sample2},description={another example}} + +\newabbreviation{ex}{ex}{example} + +\begin{document} + +\section{Sample Section} + +\Gls{sample1}, \gls{sample2} and \gls{ex}. +\Glstext{sample1} and \gls{ex} again. + +\section{Another Sample Section} + +\Gls{sample1}, \gls{sample2} and \gls{ex}. + +\printglossaries + +\end{document} +\end{verbatim} +The use of \ics{glslinkpresetkeys} +means that the options can override this. For example +\begin{verbatim} +\gls[hyper=true]{sample1} +\end{verbatim} +will override the \texttt{hyper=false} setting in +\ics{glslinkpresetkeys}. If \ics{glslinkpostsetkeys} is used +instead, the \texttt{hyper=false} setting will override +the setting provided in the optional argument. + +The \category{abbreviation} category doesn't have the +\catattr{linkcount} attribute set (since it's not +listed in the argument of \cs{GlsXtrEnableLinkCounting}). This means that +\cs{GlsXtrLinkCounterValue} +always expands to 0 for the abbreviation (\texttt{ex}), so the +inequality test +\begin{verbatim} +\ifnum\GlsXtrLinkCounterValue{\glslabel}>1 +\end{verbatim} +will always be false. This means that the abbreviation won't +have \texttt{hyper=false} applied. If the test is changed to +\begin{verbatim} +\ifnum\GlsXtrLinkCounterValue{\glslabel}=1 +\else + \setkeys{glslink}{hyper=false}% +\fi +\end{verbatim} +Then the abbreviation will always have \texttt{hyper=false} +applied. + +To reset the counter every section use the optional argument to set +the master counter: +\begin{verbatim} +\GlsXtrEnableLinkCounting[section]{general} +\end{verbatim} + +\chapter{Auto-Indexing} +\label{sec:autoindex} + +It's possible that you may also want a normal index as well as +the glossary, and you may want entries to automatically be +added to the index (as in this document). +There are two attributes that govern this: \catattr{indexname} +and \catattr{dualindex}. + +\begin{important} +The auto-indexing is designed for \gls{makeindex} syntax. If you've +used the \pkgopt{xindy} package option, the automatic escaping of +\gls{xindy} special characters in the \gloskey{sort} field may +result in an incorrect sort value for the \cs{index} command used by +the auto-indexing. Note also that \app{texindy} has a fixed set of +special characters (corresponding to \gls{makeindex}['s] defaults) +that can't be customized. You may want to consider using \gls{bib2gls} and +its dual entries as an alternative approach. +\end{important} + +\begin{sloppypar} +The \ics{glsxtrpostnamehook} macro, used +at the end of \ics{glossentryname} and \ics{Glossentryname}, +checks the \catattr{indexname} attribute for the category +associated with that entry. +Since \cs{glossentryname} is used in the default glossary +styles, this makes a convenient way of automatically indexing +each entry name at its location in the glossary without +fiddling around with the value of the \gloskey{name} key. +\end{sloppypar} + +The internal macro used by the \styfmt{glossaries} package to +write the information to the external glossary file is +modified to check for the \catattr{dualindex} attribute. + +In both cases, the indexing is done through +\begin{definition}[\DescribeMacro\glsxtrdoautoindexname] +\cs{glsxtrdoautoindexname}\marg{label}\marg{attribute-label} +\end{definition} +This uses the standard \ics{index} command with the sort value +taken from the entry's \gloskey{sort} key and the actual value +set to \cs{glsentryname}\marg{label}. As from v1.16, there are +user-level commands available to change the sort and actual +value used by the automated index. + +The actual value is given by +\begin{definition}[\DescribeMacro\glsxtrautoindexentry] +\cs{glsxtrautoindexentry}\marg{label} +\end{definition} +where \meta{label} is the entry's label. The default definition +is: +\begin{verbatim} +\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}} +\end{verbatim} +Note the use of \cs{string} to prevent \cs{glsentryname} from +being expanded as it's written to the index file. + +The sort value is assigned using: +\begin{definition}[\DescribeMacro\glsxtrautoindexassignsort] +\cs{glsxtrautoindexassignsort}\marg{cs}\marg{label} +\end{definition} +where \meta{label} is the entry label and \meta{cs} is the command +which needs to be set to the sort value. The default definition is: +\begin{verbatim} +\newcommand*{\glsxtrautoindexassignsort}[2]{% + \glsletentryfield{#1}{#2}{sort}% +} +\end{verbatim} +After this macro is called, \meta{cs} is then processed to escape +any of \app{makeindex}'s special characters. Note that this +escaping is only performed on the sort not on the actual value. +The escaping of the sort value is performed by +\begin{definition}[\DescribeMacro\glsxtrautoindexesc] +\cs{glsxtrautoindexesc} +\end{definition} +You can redefine this to do nothing if you want to omit the +escaping. You may want to consider providing another field to obtain +the appropriate sort value if the one provided in the \gloskey{sort} +field isn't suitable (because it may already have had special +characters escaped or it may be a numeric value in the case of +sort by use or definition). + +The command used to perform the actual indexing is: +\begin{definition}[\DescribeMacro\glsxtrautoindex] +\cs{glsxtrautoindex}\marg{text} +\end{definition} +This just does \cs{index}\marg{text} by default. + +\begin{important} +The entry's \gloskey{parent} field isn't referenced in this +automated indexing. +\end{important} + +For example, to index the value of the \gloskey{first} key, +instead of the \gloskey{name} key: +\begin{verbatim} +\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}} +\end{verbatim} +and if the sort value also needs to be set to the \gloskey{long} +field, if present, otherwise the \gloskey{sort} field: +\begin{verbatim} +\renewcommand*{\glsxtrautoindexassignsort}[2]{% + \ifglshaslong{#2}% + {\glsletentryfield{#1}{#2}{long}}% + {\glsletentryfield{#1}{#2}{sort}}% +} +\end{verbatim} + +If the value of the attribute given by \meta{attribute-label} +is \qt{true}, no encap +will be added, otherwise the encap will be the +attribute value. For example: +\begin{verbatim} +\glssetcategoryattribute{general}{indexname}{textbf} +\end{verbatim} +will set the encap to \texttt{textbf} which will display the +relevant page number in bold whereas +\begin{verbatim} +\glssetcategoryattribute{general}{dualindex}{true} +\end{verbatim} +won't apply any formatting to the page number in the index. + +\begin{important} +The location used in the index will always be the page number +not the counter used in the glossary. (Unless some other loaded +package has modified the definition of \cs{index} to use +some thing else.) +\end{important} + +By default the \gloskey[glslink]{format} key won't be used with +the \catattr{dualindex} attribute. You can allow the +\gloskey[glslink]{format} key to override the attribute value +by using the preamble-only command: +\begin{definition}[\DescribeMacro\GlsXtrEnableIndexFormatOverride] +\cs{GlsXtrEnableIndexFormatOverride} +\end{definition} +If you use this command and \sty{hyperref} has been loaded, +then the \env{theindex} environment will be modified to redefine +\ics{glshypernumber} to allow formats that use that command. + +\begin{important} +The \catattr{dualindex} attribute will still be used on +subsequent use even if the \catattr{indexonlyfirst} attribute +(or \pkgopt{indexonlyfirst} package option) is set. However, +the \catattr{dualindex} attribute will honour the +\gloskey[glslink]{noindex} key. +\end{important} + +The \cs{glsxtrdoautoindexname} command will attempt to escape any of +\ics{makeindex}'s special characters, but there may be special cases +where it fails, so take care. This assumes the default \gls{makeindex} actual, +level, quote and encap values (unless any of the commands +\ics{actualchar}, \ics{levelchar}, \ics{quotechar} or +\ics{encapchar} have been defined before \styfmt{glossaries-extra} +is loaded). + +If this isn't the case, you can use the following preamble-only +commands to set the correct characters. +\begin{important} +Be very careful of possible shifting category codes! +\end{important} + +\begin{definition}[\DescribeMacro\GlsXtrSetActualChar] +\cs{GlsXtrSetActualChar}\marg{char} +\end{definition} +Set the actual character to \meta{char}. + +\begin{definition}[\DescribeMacro\GlsXtrSetLevelChar] +\cs{GlsXtrSetLevelChar}\marg{char} +\end{definition} +Set the level character to \meta{char}. + +\begin{definition}[\DescribeMacro\GlsXtrSetEscChar] +\cs{GlsXtrSetEscChar}\marg{char} +\end{definition} +Set the escape (quote) character to \meta{char}. + +\begin{definition}[\DescribeMacro\GlsXtrSetEncapChar] +\cs{GlsXtrSetEncapChar}\marg{char} +\end{definition} +Set the encap character to \meta{char}. + +\chapter{On-the-Fly Document Definitions} +\label{sec:onthefly} + +\begin{important} +The commands described here may superficially look like +\meta{word}\cs{index}\marg{word}, but they behave rather +differently. If you want to use \cs{index} then just use +\cs{index}. +\end{important} + +The \styfmt{glossaries} package advises against defining entries +in the \env{document} environment. As mentioned in +\sectionref{sec:pkgopts} above, this ability is disabled by +default with \styfmt{glossaries-extra} but can be enabled using +the \pkgopt{docdefs} package options. + +Although this can be problematic, the \styfmt{glossaries-extra} +package provides a way of defining and using entries within +the \env{document} environment without the tricks used with the +\pkgopt{docdefs} option. \emph{There are limitations with this +approach, so take care with it.} This function is disabled by +default, but can be enabled using the preamble-only command: +\begin{definition}[\DescribeMacro\GlsXtrEnableOnTheFly] +\cs{GlsXtrEnableOnTheFly} +\end{definition} +When used, this defines the commands described below. + +\begin{important} +The commands \cs{glsxtr}, \cs{glsxtrpl}, \cs{Glsxtr} +and \cs{Glsxtrpl} can't be used after the glossaries have been +displayed (through \ics{printglossary} etc). It's best not to mix +these commands with the standard glossary commands, such +as \cs{gls} or there may be unexpected results. +\end{important} + +\begin{definition}[\DescribeMacro\glsxtr] +\cs{glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +If an entry with the label \meta{label} has already been defined, +this just does \cs{gls}\oarg{gls-options}\marg{label}. If +\meta{label} hasn't been defined, this will define the entry +using: +\begin{alltt} +\cs{newglossaryentry}\marg{label}\{name=\marg{label}, + category=\cs{glsxtrcat}, + description=\{\cs{nopostdesc}\}, + \meta{dfn-options}\} +\end{alltt} + +\begin{important} +The \meta{label} must contain any non-expandable commands, such as +formatting commands or problematic characters. +If the term requires any of these, they must be omitted from the +\meta{label} and placed in the \gloskey{name} key must be provided +in the optional argument \meta{dfn-options}. +\end{important} + +The second optional argument \meta{dfn-options} should be empty +if the entry has already been defined, since it's too late for +them. If it's not empty, a~warning will be generated with +\begin{definition}[\DescribeMacro\GlsXtrWarning] +\cs{GlsXtrWarning}\marg{dfn-options}\marg{label} +\end{definition} + +For example, this warning will be generated on the second instance +of \cs{glsxtr} below: +\begin{verbatim} +\glsxtr[][plural=geese]{goose} +% ... later +\glsxtr[][plural=geese]{goose} +\end{verbatim} + +If you are considering doing something like: +\begin{verbatim} +\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} +\renewcommand*{\GlsXtrWarning}[2]{} +% ... later +\goose\ some more text here +\end{verbatim} +then don't bother. It's simpler and less problematic to just +define the entries in the preamble with \ics{newglossaryentry} +and then use \cs{gls} in the document. + +There are plural and case-changing alternatives to \cs{glsxtr}: +\begin{definition}[\DescribeMacro\glsxtrpl] +\cs{glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{glspl} instead of \cs{gls}. + +\begin{definition}[\DescribeMacro\Glsxtr] +\cs{Glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{Gls} instead of \cs{gls}. + +\begin{definition}[\DescribeMacro\Glsxtrpl] +\cs{Glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{Glspl} instead of \cs{gls}. + +If you use UTF-8 and don't want the inconvenient of needing +to use an ASCII-only label, then it's better to use +\XeLaTeX\ or \LuaLaTeX\ instead of \LaTeX\ (or \pdfLaTeX). +If you really desperately want to use UTF-8 entry labels without +switching to \XeLaTeX\ or \LuaLaTeX\ then there is a starred +version of \cs{GlsXtrEnableOnTheFly} that allows you to +use UTF-8 characters in \meta{label}, but it's experimental and +may not work in some cases. + +\begin{important} +If you use the starred version of \cs{GlsXtrEnableOnTheFly} +don't use any commands in the \meta{label}, even if they expand +to just text. +\end{important} + +\chapter{\appfmt{bib2gls}: Managing Reference Databases} +\label{sec:bib2gls} + +There is a new command line application called +\gls{bib2gls}, which works in much the same way as +a combination of \appfmt{bibtex} and +\appfmt{makeindex}\slash\appfmt{xindy}. +Instead of storing all your entry definitions in a \texttt{.tex} and +loading them using \cs{input} or \cs{loadglsentries}, the entries +can instead be stored in a \texttt{.bib} file and \gls{bib2gls} can +selectively write the appropriate commands to a \texttt{.glstex} +file which is loaded using \cs{glsxtrresourcefile} (or +\cs{GlsXtrLoadResources}). + +This means that you can use a reference managing system, such as +JabRef, to maintain the database and it reduces the \TeX\ overhead +by only defining the entries that are actually required in the +document. If you currently have a \texttt{.tex} file that contains +hundreds of definitions, but you only use a dozen or so in your +document, then the build time is needlessly slowed by the unrequired +definitions that occur when the file is input. (You can convert an +existing \texttt{.tex} file containing glossary definitions to a +\texttt{.bib} file using \app{convertgls2bib}, supplied with +\gls{bib2gls}.) + +There are some new commands and options added to +\styfmt{glossaries-extra} to help assist the integration of +\gls{bib2gls} into the document build process. + +This chapter just provides a general overview of \gls{bib2gls}. +The full details and some sample documents are provided +in the \gls{bib2gls} \href{http://mirrors.ctan.org/support/bib2gls/bib2gls.pdf}{manual}. + +An example of the contents of \texttt{.bib} file that stores +glossary entries that can be extracted with \gls{bib2gls}: +\begin{verbatim} +@entry{bird, + name={bird}, + description = {feathered animal}, + see={[see also]{duck,goose}} +} + +@entry{duck, + name={duck}, + description = {a waterbird with short legs} +} + +@entry{goose, + name="goose", + plural="geese", + description={a waterbird with a long neck} +} +\end{verbatim} + +The follow provides some abbreviations: +\begin{verbatim} +@string{ssi={server-side includes}} +@string{html={hypertext markup language}} + +@abbreviation{shtml, + short="shtml", + long= ssi # " enabled " # html, + description={a combination of \gls{html} and \gls{ssi}} +} + +@abbreviation{html, + short ="html", + long = html, + description={a markup language for creating web pages} +} + +@abbreviation{ssi, + short="ssi", + long = ssi, + description={a simple interpreted server-side scripting language} +} +\end{verbatim} + +Here are some symbols: +\begin{verbatim} +preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"} + +@symbol{M, + name={$\mtx{M}$}, + text={\mtx{M}}, + description={a matrix} +} + +@symbol{v, + name={$\vec{v}$}, + text={\vec{v}}, + description={a vector} +} + +@symbol{S, + name={$\mathcal{S}$}, + text={\mathcal{S}}, + description={a set} +} +\end{verbatim} + +To ensure that \gls{bib2gls} can find out which entries have been +used in the document, you need the \pkgopt{record} package option: +\begin{verbatim} +\usepackage[record]{glossaries-extra} +\end{verbatim} +If this option's value is omitted (as above), the normal indexing +will be switched off, since \gls{bib2gls} can also sort the entries and +collate the locations. + +If you still want to use an indexing application (for example, you +need a custom \gls{xindy} rule), then just use +\pkgopt[alsoindex]{record} and continue to use \cs{makeglossaries} +and \cs{printglossary} (or \cs{printglossaries}), but you also need +to instruct \gls{bib2gls} to omit sorting to save time and +to prevent the \gloskey{sort} key from being set. + +The \texttt{.glstex} file created by \gls{bib2gls} is loaded using: +\begin{definition}[\DescribeMacro\glsxtrresourcefile] +\cs{glsxtrresourcefile}\oarg{options}\marg{filename} +\end{definition} +(Don't include the file extension in \meta{filename}.) +There's a shortcut version (recommended over the above) that sets \meta{filename} to use \cs{jobname}: +\begin{definition}[\DescribeMacro\GlsXtrLoadResources] +\cs{GlsXtrLoadResources}\oarg{options} +\end{definition} +On the first use, this command is a shortcut for +\begin{alltt} +\cs{glsxtrresourcefile}\oarg{options}\{\cs{jobname}\} +\end{alltt} +On subsequent use,\footnote{Version 1.11 only allowed one use +of \cs{GlsXtrLoadResources} per document.}\ this command is a shortcut for +\begin{alltt} +\cs{glsxtrresourcefile}\oarg{options}\{\cs{jobname}-\meta{n}\} +\end{alltt} +where \meta{n} is the current value of +\begin{definition} +\cs{glsxtrresourcecount} +\end{definition} +which is incremented at the end of \cs{GlsXtrLoadResources}. +Any advisory notes regarding \cs{glsxtrresourcefile} also +apply to \cs{GlsXtrLoadResources}. + +The \cs{glsxtrresourcefile} command writes the line +\begin{alltt} +\cs{glsxtr@resource}\marg{options}\marg{filename} +\end{alltt} +to the \texttt{.aux} file and will input +\meta{filename}\texttt{.glstex} if it exists.\footnote{v1.08 assumed +\meta{filename}\texttt{.tex} but that's potentially dangerous if, +for example, \meta{filename} happens to be the same as \cs{jobname}. +The \texttt{.glstex} extension was enforced by version 1.11.} + +Since the \texttt{.glstex} file won't exist on the first \LaTeX\ run, the +\pkgopt{record} package option additionally switches on +\pkgopt[warn]{undefaction}. Any use of commands like \cs{gls} or +\cs{glstext} will produce ?? in the document, since the entries are +undefined at this point. Once \gls{bib2gls} has created the +\texttt{.glstex} file the references should be resolved. +This may cause a shift in the locations if the actual text produced +once the entry is defined is significantly larger than the +placeholder ?? (as this can alter the page breaking). + +Note that as from v1.12, \cs{glsxtrresourcefile} temporarily +switches the category code of \texttt{@} to 11 (letter) while it +reads the file to allow for any internal commands stored in the +location field. + +\section{Selection} + +The default behaviour is for \gls{bib2gls} to select all entries +that have a record in the \texttt{.aux} file, and any dependent +entries (including parent and cross-references). The +\texttt{glsignore} format (for example, +\verb|\gls[format=glsignore]{duck}|) is recognised by \gls{bib2gls} +as a special ignored record. This means that it will match +the selection criteria but the record won't be added to +the location list. This means that you won't get spurious +commas in the location list (as can happen with the other indexing +methods), so you can do, for example, +\begin{verbatim} +\GlsXtrSetDefaultNumberFormat{glsignore} +\end{verbatim} +at the start of the front matter and +\begin{verbatim} +\GlsXtrSetDefaultNumberFormat{glsnumberformat} +\end{verbatim} +at the start of the main matter to prevent any records in the +front matter from occurring in the location lists. + +\begin{important} +Note that commands like \cs{glsaddall} and \cs{glsaddallunused} don't work with \gls{bib2gls} as the command +has to iterate over the internal lists of defined entry labels, which will be empty on the first +run and on subsequent runs will only contain those entries that have +been selected by \gls{bib2gls}. +\end{important} + +If you want to add all +entries to the glossary, you need to tell \gls{bib2gls} this in the +options list. For example: +\begin{verbatim} +\GlsXtrLoadResources[src={terms},selection={all}] +\end{verbatim} +This will add all entries, regardless of whether or not they +have any records in the \texttt{.aux} file. Those that don't +have any records will have an empty location list. +See the \gls{bib2gls} user manual for more details of this option. + +\section{Sorting and Displaying the Glossary} + +There are many sorting options provided by \gls{bib2gls}. +The default is to sort according to the system locale. +If the document has a language setting, you can use +\texttt{sort=doc} to instruct \gls{bib2gls} to sort according to +that. (The language tag obtained from \sty{tracklang}'s +interface is written to the \texttt{.aux} file.) For a multilingual +document you need to explicitly set the locale using a well-formed +language tag. For example: +\begin{verbatim} +\GlsXtrLoadResources[ + src=terms, % data in terms.bib + sort=de-DE-1996 % sort according to this locale +] +\end{verbatim} +The locale-sensitive sort methods usually ignore most +punctuation so for lists of symbols you may find it more +appropriate to use one of the letter-base sort methods +that sort according to the Unicode value of each character. +Alternatively you can provide a custom rule. +See the \gls{bib2gls} manual for full details of all the available +sort methods. + +Since the \texttt{.glstex} file only defines those references +required +within the document (selected according to the \texttt{selection} +option) and the definitions have been written in the +order corresponding to \gls{bib2gls}['s] sorted list, the glossaries can +simply be displayed using \cs{printunsrtglossary} (or +\cs{printunsrtglossaries}), described in \sectionref{sec:printunsrt}. + +Suppose the \texttt{.bib} examples shown above have been stored in +the files \texttt{terms.bib}, \texttt{abbrvs.bib} and +\texttt{symbols.bib} which may either be in the current directory or +on \TeX's path. Then the document might look like: +\begin{verbatim} +\documentclass{article} + +\usepackage[record]{glossaries-extra} + +\setabbreviationstyle{long-short-desc} + +\GlsXtrLoadResources[src={terms,abbrvs,symbols}] + +\begin{document} +\gls{bird} + +\gls{shtml} + +\gls{M} + +\printunsrtglossaries +\end{document} +\end{verbatim} +The document build process (assuming the document is called +\texttt{mydoc}) is: +\begin{verbatim} +pdflatex mydoc +bib2gls mydoc +pdflatex mydoc +\end{verbatim} +This creates a single glossary containing the entries: +\texttt{bird}, \texttt{duck}, \texttt{goose}, +\texttt{html}, \texttt{M}, \texttt{shtml} and \texttt{ssi} (in that +order). The \texttt{bird}, \texttt{shtml} and \texttt{M} entries +were added because \gls{bib2gls} detected (from the \texttt{.aux} +file) that they had been used in the document. The other entries +were added because \gls{bib2gls} detected (from the \texttt{.bib} +files) that they are referenced by the used entries. In the case of +\texttt{duck} and \texttt{goose}, they are in the \gloskey{see} +field for \texttt{bird}. In the case of \texttt{ssi} and +\texttt{html}, they are referenced in the \gloskey{description} +field of \texttt{shtml}. These cross-referenced entries won't have a +location list when the glossary is first displayed, but depending on +how they are referenced, they may pick up a location list on the +next document build. + +The entries can be separated into different glossaries with +different sort methods: +\begin{verbatim} +\documentclass{article} + +\usepackage[record,abbreviations,symbols]{glossaries-extra} + +\setabbreviationstyle{long-short-desc} + +\GlsXtrLoadResources[src={terms},sort={en-GB},type=main] + +\GlsXtrLoadResources + [src={abbrvs},sort={letter-nocase},type=abbreviations] + +\GlsXtrLoadResources + [src={symbols},sort={use},type={symbols}] + +\begin{document} +\gls{bird} + +\gls{shtml} + +\gls{M} + +\printunsrtglossaries +\end{document} +\end{verbatim} + +Or you can have multiple instance of \cs{GlsXtrLoadResources} +with the same \texttt{type}, which will produce a glossary +with ordered sub-blocks. For example: +\begin{verbatim} +\documentclass{article} + +\usepackage[record,style=indexgroup]{glossaries-extra} + +\setabbreviationstyle{long-short-desc} + +\GlsXtrLoadResources + [src={abbrvs},sort={letter-nocase},type=main, + group={Abbreviations}] + +\GlsXtrLoadResources + [src={symbols},sort={use},type=main, + group={Symbols}] + +\GlsXtrLoadResources[src={terms},sort={en-GB},type=main] + +\begin{document} +\gls{bird} + +\gls{shtml} + +\gls{M} + +\printunsrtglossaries +\end{document} +\end{verbatim} +This will result in a glossary where the first group has +the title \qt{Abbreviations}, the second group has the +title \qt{Symbols} and then follow the usual letter groups. +Note that for this example to work, you must run \gls{bib2gls} +with the \verb|--group| (or \verb|-g|) switch. For example, +if the document is called \texttt{myDoc.tex}: +\begin{verbatim} +pdflatex myDoc +bib2gls -g myDoc +pdflatex myDoc +\end{verbatim} +The value of the \gloskey{group} field must always be a label. You +can set the corresponding title with \cs{glsxtrsetgrouptitle} +(see \sectionref{sec:glosstylemods}). If no title is set then the +label is used as the group title. + +You can provide your own custom sort rule. For example, +if you are using \XeLaTeX\ or \LuaLaTeX: +\begin{alltt} +\cs{GlsXtrLoadResources}[ + src=terms, % entries in terms.bib + sort=custom, % custom sort rule + sort-rule=\{% required with sort=custom + < \ae;\AE\ < a;\'a;\aa;\"a,\"A;\'A;\AA;\"A < b,B + < c;\'c,C;\'C < d,D < e;\'e,E;\'E < f,F < g,G + < h,H < i;\'i,I;\'I < j,J < l;\l,L;\L < m,M < n,N + < o;\"o;\o,O;\"O;\O\ < p,P < q,Q < r,R < s;\'s,S;\'S + < t,T < u;\'u,U;\'U < v,V < w,W < x,X < y,Y < + z;\.z,Z;\.Z + \} +] +\end{alltt} +Remember that if you are using \sty{inputenc} then extended +characters, such as \'e or \o, are active and will expand when +written to the \texttt{.aux} file. So with PDF\LaTeX\ the +above would have to be changed to protect against expansion. +Some of the options, including \texttt{sort-rule}, +allow Unicode characters to be indicated in the format +\cs{u}\meta{hex} (or \cs{u}~\meta{hex}) \textbf{in the \texttt{.aux} file}. \gls{bib2gls} +will recognise this as the character +given by the hexadecimal value \meta{hex}. The \cs{u} also needs +protection from expansion, so with a non-Unicode aware +engine, the character \ae\ needs to be written as +\texttt{\cs{string}\cs{u}E6} and so on. This is quite cumbersome, +but you can use the shortcut \texttt{\ics{glshex} E6} instead, so +the above needs to be written as: +\begin{alltt} +\cs{GlsXtrLoadResources}[ + src=terms, % entries in terms.bib + sort=custom, % custom sort rule + sort-rule=\{% required with sort=custom + < \cs{glshex} E6;\cs{glshex} C6 + < a;\cs{glshex} E1;\cs{glshex} E5,\cs{glshex} E4,A;\cs{glshex} C1;\cs{glshex} C5;\cs{glshex} C4 + < b,B < c;\cs{glshex} 0107,C;\cs{glshex} 0106 < d,D + < e;\cs{glshex} E9,E;\cs{glshex} C9 < f,F < g,G + < h,H < i;\cs{glshex} ED,I;\cs{glshex} CD < j,J + < l;\cs{glshex} 0142,L;\cs{glshex} 0141 < m,M < n,N + < o;\cs{glshex} F6;\cs{glshex} F8,O;\cs{glshex} D6;\cs{glshex} D8 + < p,P < q,Q < r,R < s;\cs{glshex} 013F,S;\cs{glshex} 015A + < t,T < u;\cs{glshex} FA,U;\cs{glshex} DA < v,V < w,W < x,X < y,Y + < z;\cs{glshex} 017C,Z;\cs{glshex} 017B + \}] +\end{alltt} + +\section{The \styfmt{glossaries-extra-bib2gls} package} +\label{sec:bib2glssty} + +The package option \pkgopt[only]{record} (or simply \pkgopt{record}) +automatically loads the supplementary package +\sty{glossaries-extra-bib2gls}, which provides some commands +that are specific to \gls{bib2gls}. The package isn't +loaded by \pkgopt[alsoindex]{record} as that option is intended +for sorting with \gls{makeindex} or \gls{xindy} and it is expected +that the sorting will be switched off (with the resource option +\texttt{sort=none}). + +If \sty{glossaries-extra-bib2gls} is loaded via the +\pkgopt{record} package option then the check for associated +language resource files (see \sectionref{sec:lang}) will also +search for the existence of +\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} for each +document dialect (where \meta{script} is the four letter +script identifier, such as \texttt{Latn}). + +This package provides some shortcut commands that use +\ics{printunsrtglossary} if the relevant package option has defined +the associated glossary: \ics{printunsrtabbreviations}, +\ics{printunsrtacronyms}, \ics{printunsrtsymbols}, +\ics{printunsrtnumbers} and \ics{printunsrtindex}. + +\begin{definition}[\DescribeMacro\glsxtrprovidecommand] +\cs{glsxtrprovidecommand}\marg{cs}\oarg{n}\oarg{default}\marg{definition} +\end{definition} +This command is intended for use in \texttt{@preamble}. +It's simply defined to \cs{providecommand} in +\sty{glossaries-extra-bib2gls} but \gls{bib2gls}['s] interpreter +treats it as \cs{renewcommand}. This means that you can +override \gls{bib2gls}['s] internal definition of a command +without overriding the command definition in the document +(if it's already defined before the resource file is input). +For example +\begin{verbatim} +@preamble{"\glsxtrprovidecommand{\int}{integral}"} +\end{verbatim} +This will force \gls{bib2gls} to treat \cs{int} as the word +\qt{integral} to assist sorting but if this preamble code is written +to the \texttt{.glstex} file (as it is by default) then it won't +override the current definition (provided by the kernel or redefined +by a package). + +The helper commands in the resource files are defined using +\cs{providecommand}. For many of them, if you want to provide an +alternative definition then you need to define the command before +the resource file is loaded. There are a few that may be redefined +afterwards but if you use \cs{renewcommand} then you will get an +error on the first \LaTeX\ run when the \texttt{.glstex} file +doesn't exist. In this case, you may prefer to use: +\begin{definition}[\DescribeMacro\glsrenewcommand] +\cs{glsrenewcommand}\marg{cs}\oarg{n}\oarg{default}\marg{definition} +\end{definition} +This behaves like \cs{renewcommand} but only generates a warning +rather than an error if the command isn't already defined so it +won't interrupt the document build. + +\begin{definition}[\DescribeMacro\GlsXtrIndexCounterLink] +\cs{GlsXtrIndexCounterLink}\marg{text}\marg{label} +\end{definition} +If the \ics{hyperref} command has been defined (that is, +\sty{hyperref} has been loaded before \styfmt{glossaries-extra}) +then this command checks for the existence of the +\texttt{indexcounter} field. If this field is set for the entry +given by \meta{label}, this command does +\cs{hyperref}\texttt{[wrglossary.\meta{value}]\marg{text}}, where +\meta{value} is the value of the \texttt{indexcounter} field. If the +field isn't set or if \cs{hyperref} hasn't been defined, this just +does \meta{text}. This command is provided for use with the +\pkgopt{indexcounter} package option combined with \gls{bib2gls}['s] +\texttt{save-index-counter} resource option. See the \gls{bib2gls} +manual for further details (at least version 1.4). + +If you use the \texttt{set-widest} resource option, \gls{bib2gls} +v1.8+ will now use: +\begin{definition}[\DescribeMacro\glsxtrSetWidest] +\cs{glsxtrSetWidest}\marg{type}\marg{level}\marg{text} +\end{definition} +(if it has been defined) to set the widest name for the given +glossary type and level. This allows for both the \glostyle{alttree} +style and the styles provided by \sty{glossary-longextra}, which +need to know the widest name. + +If \gls{bib2gls} can't determine the widest name (typically because +the name field consists of commands that aren't recognised by the +interpreter) then \gls{bib2gls} v1.8+ will now use: +\begin{definition}[\DescribeMacro\glsxtrSetWidestFallback] +\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list} +\end{definition} +(if defined). Currently the maximum hierarchical depth \meta{max +depth} may only be 0 or 2. This command requires commands provided +by the \sty{glossaries-extra-stylemods} package with the +\glostyle{alttree} style enabled. In this case, it may be simpler +to just use \ics{glssetwidest}. + +\subsection{Supplemental Locations} +\label{sec:supplocations} + +\begin{definition}[\DescribeMacro\glsxtrdisplaysupploc] +\cs{glsxtrdisplaysupploc}\marg{prefix}\marg{counter}\marg{format}\marg{src}\marg{location} +\end{definition} +This is used by \gls{bib2gls} version 1.7+ for supplemental +locations, instead of using \cs{glsxtrsupphypernumber} with the +\catattr{externallocation} attribute. This command sets up the +location counter and prefix (used in the formation of hyperlinks) +and then uses +\begin{definition}[\DescribeMacro\glsxtrmultisupplocation] +\cs{glsxtrmultisupplocation}\marg{location}\marg{src}\marg{format} +\end{definition} +to format the actual location (with an external hyperlink, if +supported). + +\subsection{Nameref Record} +\label{sec:recordnameref} + +Normally locations are recorded in the \texttt{.aux} file +in the form: +\begin{definition} +\cs{glsxtr@record}\marg{label}\marg{prefix}\marg{counter}\marg{format}\marg{location} +\end{definition} +The \pkgopt[nameref]{record} option, which requires at least +\gls{bib2gls} v1.8, instead uses: +\begin{definition} +\cs{glsxtr@record@nameref}\marg{label}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{href}\marg{hcounter} +\end{definition} +where \meta{title} is obtained from \cs{@currentlabelname} +and \meta{href} is obtained from \cs{@currentHref}. These +commands require \sty{hyperref}. If they are undefined, +\meta{title} and \meta{href} will be left empty and \gls{bib2gls} +will treat it as a regular record. + +\begin{important} +Be careful with this option as \meta{href} will globally change on every +instance of \cs{refstepcounter} but \meta{title} won't necessarily +change. It can therefore cause unexpected behaviour. +\end{important} + +The final argument \meta{hcounter} is obtained from +\cs{theH}\meta{counter} which provides the partial target name associated +with the indexing counter. With the original +\gls{makeindex}\slash \gls{xindy} approach, it's not possible to +include this information in the location, so the base +\sty{glossaries} package attempts to derive a prefix from which the +\meta{hcounter} value can be reconstituted by appending the prefix. +Unfortunately, not all definitions of \cs{theH}\meta{counter} are in +the form \meta{prefix}\cs{the}\meta{counter} (most notably the +\ctr{equation} counter with chapters) so this can fail. + +Since \gls{bib2gls} is customized specifically for use with +\styfmt{glossaries-extra}, it's now possible to save +\meta{hcounter}, so the \pkgopt[nameref]{record} option does this. +By providing both \meta{href} and \meta{hcounter}, you can determine +which target you would rather use. The default is to use +\meta{hcounter}, which will take you to the place where the +corresponding counter was incremented with \cs{refstepcounter}. +However, you may choose to switch to using the \meta{href} target, +which will take you to the nearest target before the indexing took +place. + +With \gls{bib2gls} v1.8+, normal locations are displayed using: +\begin{definition} +\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location} +\end{definition} +This is provided by the base \sty{glossaries} package and is simply +defined to do: +\begin{definition} +\cs{setentrycounter}\oarg{prefix}\marg{counter}\cs{csuse}\marg{format}\marg{location} +\end{definition} +Earlier versions of \gls{bib2gls} only used this in the +\gloskey{loclist} field and explicitly used \cs{setentrycounter} in +the \gloskey{location} field followed by +\cs{}\meta{format}\marg{location}, which follows the code that's created +with the default \pkgopt{makeindex} setting. +The \cs{setentrycounter} command sets up the prefix needed for +\cs{glshypernumber} to reform the target name from the given +location. + +The locations identified by \cs{glsxtr@record@nameref} are written +by \gls{bib2gls} to the location list using: +\begin{definition}[\DescribeMacro\glsxtrdisplaylocnameref] +\cs{glsxtrdisplaylocnameref}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{href}\marg{hcounter}\marg{file} +\end{definition} +With normal internal locations, \meta{file} will always be empty. +With supplemental locations, \meta{file} will be the external file +reference. + +The default definition is: +\begin{verbatim} +\newcommand*{\glsxtrdisplaylocnameref}[8]{% + \ifstrequal{#2}{equation}% + {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + {% + \ifstrempty{#5}% + {% + \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% + }% + {% + \ifstrequal{#2}{page}% + {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% + {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% + }% + }% +} +\end{verbatim} +which uses: +\begin{definition}[\DescribeMacro\glsxtrnamereflink] +\cs{glsxtrnamereflink}\marg{format}\marg{title}\marg{target}\marg{file} +\end{definition} +This ignores the \meta{prefix}, \meta{counter} and \marg{location} +arguments and instead creates a hyperlink with the target name obtained from \meta{target} (and \meta{file}, if not empty). + +Since pages and equations typically don't have titles, the default +definition of \cs{glsxtrdisplaylocnameref} checks the counter was +used as the location. If it's \ctr{page} or if \meta{title} is empty, then just the location is +used as the hyperlink text. If the counter \ctr{equation}, then the +text is the location in parentheses. Otherwise the text is obtained +from \meta{title}. + +If \meta{file} is empty an internal link is created with: +\begin{definition}[\DescribeMacro\glsxtrfmtinternalnameref] +\cs{glsxtrfmtinternalnameref}\marg{target}\marg{format}\marg{title} +\end{definition} +otherwise an external link is created with: +\begin{definition}[\DescribeMacro\glsxtrfmtexternalnameref] +\cs{glsxtrfmtexternalnameref}\marg{target}\marg{format}\marg{title}\marg{file} +\end{definition} +The \meta{file} argument is set by \gls{bib2gls} for supplemental +locations. + +Here's alternative definition that uses the \meta{prefix} and +\meta{counter} to reform the target name (as +\cs{glsnoidxdisplayloc}) but uses the \meta{title} as the hyperlink text: +\begin{verbatim} +\renewcommand*{\glsxtrdisplaylocnameref}[7]{% + \glsxtrnamereflink{#3}{#5}{#6}{#7}% +} +\end{verbatim} +which uses: +\begin{definition}[\DescribeMacro\glsxtrnameloclink] +\cs{glsxtrnameloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{file} +\end{definition} +This uses the same commands as \cs{glsxtrnamereflink} +to produce the hyperlinks. + +In both cases, the link is encapsulated with the text-block command +whose name is given by \meta{format}, but \cs{glshypernumber} is +first locally redefined to \cs{@firstofone} to prevent a conflict with the +usual location hyperlink formation. This means that if the +\meta{format} is \texttt{hyperbf} then it will simply behave like +\texttt{textbf}. + +For compactness, \gls{bib2gls} merges normal records if the +\meta{prefix}, \meta{counter} and \meta{location} all match. (An +order of precedence can be provided for format conflicts.) With +nameref records, you can use the \verb|--merge-nameref-on| switch +provided by \gls{bib2gls} v1.8+ to determine how to merge nameref +records. This switch must be followed by one of the following +keywords: \texttt{hcounter} (merge on \meta{hcounter}, default) +\texttt{href} (merge on \meta{href}), \texttt{title} (merge +on \meta{title}) and \texttt{location} (merge on \meta{location}, as +regular records). In all cases, the \meta{counter} must also match. + +\subsection{Helper Commands for Resource Options} +\label{sec:resourcecommands} + +\begin{definition}[\DescribeMacro\glshex] +\cs{glshex} +\end{definition} +This is just defined as \verb|\string\u|, which is required +when you need to indicate a Unicode character in the form +\cs{u}\meta{hex} in some of +the resource options (as illustrated above). + +\begin{definition}[\DescribeMacro\glscapturedgroup] +\cs{glscapturedgroup} +\end{definition} +This is just defined as \verb|\string\$| and is used for +the captured group reference in a replacement part of a regular +expression substitution (requires at least \gls{bib2gls} version 1.5). For example: +\begin{verbatim} +sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}} +\end{verbatim} +This only removes a full stop that follows any of the characters +a,\ldots,z or A,\ldots,Z. + +If you use the \texttt{save-child-count} resource option, +you can test if the \texttt{childcount} field is non-zero using: +\begin{definition}[\DescribeMacro{\GlsXtrIfHasNonZeroChildCount}] +\cs{GlsXtrIfHasNonZeroChildCount}\marg{label}\marg{true}\marg{false} +\end{definition} +This internally uses \cs{GlsXtrIfFieldNonZero} and will do +\meta{false} if the field isn't set. Within \meta{true} and +\meta{false} you can use \cs{glscurrentfieldvalue} to access the +value. (It will be 0 in \meta{false} if the field isn't set.) + + +A convenient shortcut for use in the \texttt{entry-type-aliases} +setting: +\begin{definition}[\DescribeMacro\GlsXtrBibTeXEntryAliases] +\cs{GlsXtrBibTeXEntryAliases} +\end{definition} +This provides aliases for Bib\TeX's standard entry types to +\gls{bib2gls}['s] \texttt{@bibtexentry} entry type (requires at +least \gls{bib2gls} version 1.4). + +You may also want to provide storage keys for Bib\TeX's standard +fields rather than having to alias them all. This can be done with: +\begin{definition}[\DescribeMacro\GlsXtrProvideBibTeXFields] +\cs{GlsXtrProvideBibTeXFields} +\end{definition} +Note that Bib\TeX's \texttt{type} field clashes with the \sty{glossaries} +package's \gloskey{type} key, so this command provides the key +\texttt{bibtextype} instead. You can alias it with +\texttt{field-aliases={type=bibtextype}} in the resource options. +Each storage key is provided with a convenient command to access the +value in the form \cs{glsxtrbib}\meta{field}. For example, +\cs{glsxtrbibaddress}. The \texttt{bibtextype} field can be accessed +with \cs{glsxtrbibtype}. Each of these commands takes the entry +label as the sole argument. + +The \sty{glossaries-extra-bib2gls} package also provides definitions +of the missing mathematical Greek commands: \ics{Alpha}, +\ics{Beta}, \ics{Epsilon}, \ics{Zeta}, \ics{Eta}, \ics{Iota}, +\ics{Kappa}, \ics{Mu}, \ics{Nu}, \ics{Omicron}, \ics{Rho}, +\ics{Tau}, \ics{Chi}, \ics{Digamma}, \ics{omicron}. +These are all defined with \cs{providecommand}, so they won't override +any definitions provided by any package loaded before +\sty{glossaries-extra}. Since \gls{bib2gls}['s] interpreter +recognises these commands, using them instead of explicitly using +the Latin characters with the same shape helps to keep the Greek +symbols together when sorting. +Similarly, if \sty{upgreek} has been loaded, the missing upright +Greek commands are also provided. + +The remaining commands provide common rule blocks for use in +the \texttt{sort-rule} resource option. If you want a rule for +a specific locale, you can provide similar commands in a file called +\texttt{glossariesxtr-}\meta{tag}\texttt{.ldf}, where \meta{tag} +identifies the dialect, locale, region or root language. See the +description of \cs{IfTrackedLanguageFileExists} in the +\sty{tracklang} documentation for further details. If this file is +on \TeX's path and the \sty{tracklang} package (automatically loaded +by \styfmt{glossaries}) detects that the document has requested that +language or locale, then the file will automatically be loaded. +For example, if you want to provide a rule block for Welsh, then +create a file called \texttt{glossariesxtr-welsh.ldf} that contains: +\begin{verbatim} +\ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0] + +\@ifpackageloaded{glossaries-extra-bib2gls} +{ + \newcommand{\glsxtrWelshRules}{% + \glsxtrLatinA + \string<b,B + \string<c,C + \string<ch,CH + \string<d,D + \string<dd,DD + \string<\glsxtrLatinE + \string<f,F + \string<ff,FF + \string<g,G + \string<ng,NG + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J + \string<\glsxtrLatinL + \string<ll,LL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<ph,PH + \string<r,R + \string<rh,RH + \string<\glsxtrLatinS + \string<\glsxtrLatinT + \string<th,TH + \string<u,U + \string<w,W + \string<y,Y + } +} +{}% glossaries-extra-bib2gls.sty not loaded +\end{verbatim} +(The use of \cs{string} is in case the \texttt{<} character +has been made active.) You can provide more than one rule-block +per local, to allow for loanwords or foreign words. For example, +you could provide \cs{glsxtrWelshIRules}, \cs{glsxtrWelshIIRules} +etc. + +If the rules are for a particular script (independent of language +or region) then they can be provided in a file given by +\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} instead. For +example, the file \texttt{glossariesxtr-Cyrl.ldf} could contain: +\begin{verbatim} +\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0] +\newcommand*{\glsxtrGeneralCyrillicIRules}{% + % Cyrillic rules +} +\newcommand*{\glsxtrGeneralCyrillicIIRules}{% + % an alternative set of Cyrillic rules +} +\end{verbatim} +(Remember that the required document language scripts need to be tracked +through the \sty{tracklang} package, in order for these files to be +automatically loaded. This essentially means ensuring you load the +appropriate language package before \sty{tracklang} is loaded by +the base \sty{glossaries} package or any other package that uses it. +See the \sty{tracklang} documentation for further details.) + +Alternatively, if the rules are specific to a subject rather than +a region or language, then you can provide a supplementary +package. For example, if you have a package called, say, +\styfmt{mapsymbols} that provides map symbols, then the file +\texttt{mapsymbols.sty} might contain: +\begin{verbatim} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mapsymbols} +% some package or font loading stuff here to provide +% the appropriate symbols +\newcommand{\Stadium}{...} +\newcommand{\Battlefield}{...} +\newcommand{\Harbour}{...} +% etc + +% Provide a rule block: +\newcommand{\MapSymbolOrder}{% + \glshex 2694 % crossed-swords 0x2694 + \string< \glshex 2693 % anchor 0x2693 + \string< \glshex 26BD % football 0x26BD +} +\end{verbatim} +and the supplementary file \texttt{mapsymbols.bib} can provide +the appropriate definitions for \gls{bib2gls}: +\begin{verbatim} +@preamble{"\glsxtrprovidecommand{\Harbour}{\char"2693} +\glsxtrprovidecommand{\Battlefield}{\char"2694} +\glsxtrprovidecommand{\Stadium}{\char"26BD}"} +\end{verbatim} +Now both the preamble and rule block can be used in the resource +set: +\begin{verbatim} +\usepackage{mapsymbols}% my custom package +\usepackage[record]{glossaries-extra} + +\GlsXtrLoadResources[ + src={mapsymbols,% <--- my custom mapsymbols.bib + entries% data in entries.bib + }, + sort={custom}, + sort-rule={\glsxtrcontrolrules % control codes + ;\glsxtrspacerules % space characters + ;\glsxtrnonprintablerules % non-printable characters + ;\glsxtrcombiningdiacriticrules % combining diacritics + ,\glsxtrhyphenrules % hyphens + <\glsxtrgeneralpuncrules % general punctuation + <\glsxtrdigitrules % 0, ..., 9 + <\glsxtrfractionrules % fraction symbols + <\MapSymbolOrder % <--- custom map symbols + <\glsxtrMathItalicGreekIrules % math-greek symbols + <\glsxtrGeneralLatinIrules % Latin letters + } +] +\end{verbatim} + +The following commands are provided by +\sty{glossaries-extra-bib2gls}. They should be separated by +the rule separator characters \texttt{;}~(semi-colon) or \texttt{,}~(comma) +or \verb|&|~(ampersand) or \texttt{<}~(less than). See Java's +\href{http://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html}{Rule\-Based\-Collator} +documentation for details of the rule syntax. + +For example, the following will place the mathematical Greek +symbols (\ics{alpha}, \ics{Alpha}, \ics{beta}, \ics{Beta} etc) +in a block before Latin characters: +\begin{verbatim} +sort-rule={\glsxtrcontrolrules + ;\glsxtrspacerules + ;\glsxtrnonprintablerules + ;\glsxtrcombiningdiacriticrules + ,\glsxtrhyphenrules + <\glsxtrgeneralpuncrules + <\glsxtrdigitrules + <\glsxtrfractionrules + <\glsxtrMathItalicGreekIrules + <\glsxtrGeneralLatinIVrules + <\glsxtrLatinAA + <\glsxtrLatinOslash +} +\end{verbatim} + +\begin{definition}[\DescribeMacro\glsxtrcontrolrules] +\cs{glsxtrcontrolrules} +\end{definition} +These are control characters that are usually placed at the start of +a rule in the ignored section. They typically won't occur in +any sort values, but if they do they should normally be ignored. + +\begin{definition}[\DescribeMacro\glsxtrspacerules] +\cs{glsxtrspacerules} +\end{definition} +These are space characters. They typically come after the control +characters with the two blocks separated by a \texttt{;}~(semi-colon). + +\begin{definition}[\DescribeMacro\glsxtrnonprintablerules] +\cs{glsxtrnonprintablerules} +\end{definition} +These are non-printable characters (BOM, tabs, line feed and +carriage return). They typically come after the spaces separated by +a \texttt{;}~(semi-colon). These characters aren't checked for by +\gls{bib2gls} when it determines whether or not to use the +interpreter, so a~TAB or newline character may end up in the sort +value if it wasn't interpreted. + +\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticrules] +\cs{glsxtrcombiningdiacriticrules} +\end{definition} +These are combining diacritic marks which typically follow +the space and non-printable blocks (separated by a semi-colon). This command is +defined in terms of sub-block commands: +\begin{verbatim} +\newcommand*{\glsxtrcombiningdiacriticrules}{% + \glsxtrcombiningdiacriticIrules\string; + \glsxtrcombiningdiacriticIIrules\string; + \glsxtrcombiningdiacriticIIIrules\string; + \glsxtrcombiningdiacriticIVrules +} +\end{verbatim} +If you prefer, you can use the sub-blocks directly in your +required ordered. + +\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIrules] +\cs{glsxtrcombiningdiacriticIrules} +\end{definition} +This contains the combining diacritics: acute, grave, breve, +circumflex, caron, ring, vertical line above, diaeresis (umlaut), +double acute, tilde, dot above, combining macron. + +\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIIrules] +\cs{glsxtrcombiningdiacriticIIrules} +\end{definition} +This contains the combining diacritics: short solidus overlay, +cedilla, ogonek, dot below, low line, overline, hook above, +double vertical line above, double grave accent, candrabindu, +inverted breve, turned comma above, comma above, reversed comma +above, comma above right, grave accent below, acute accent below. + +\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIIIrules] +\cs{glsxtrcombiningdiacriticIIIrules} +\end{definition} +This contains the combining diacritics: left tack below, right tack +below, left angle above, horn, left half ring below, up tack below, +down tack below, plus sign below, minus sign below, palatalized hook +below, retroflex hook below, diaresis below, ring below, comma +below, vertical line below, bridge below, inverted double arch +below, caron below, circumflex accent below, breve below, inverted +breve below, tilde below, macron below, double low line, tilde +overlay, short stroke overlay, long stroke overlay, long solidus +overlay, right half ring below, inverted bridge below, square below, +seagull below, x above, vertical tilde, double overline, Greek +perispomeni, Greek dialytika tonos, Greek ypogegrammeni, double +tilde, double inverted breve, Cyrillic titlo, Cyrillic +palatalization, Cyrillic dasia pneumata, Cyrillic psili pneumata. + +\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIVrules] +\cs{glsxtrcombiningdiacriticIVrules} +\end{definition} +This contains the combining diacritics: +left harpoon above, right harpoon above, long vertical line overlay, +short vertical line overlay, anticlockwise arrow above, clockwise +arrow above, left arrow above, right arrow above, ring overlay, +clockwise ring overlay, anticlockwise ring overlay, three dots +above, four dots above, enclosing circle, enclosing square, +enclosing diamond, enclosing circle backslash, left right arrow +above. + +\begin{definition}[\DescribeMacro\glsxtrhyphenrules] +\cs{glsxtrhyphenrules} +\end{definition} +This contains hyphens (including the minus sign 0x2212). This rule +block typically comes after the diacritic rules separated by a +comma. + +\begin{definition}[\DescribeMacro\glsxtrgeneralpuncrules] +\cs{glsxtrgeneralpuncrules} +\end{definition} +This contains punctuation characters. This rule +block typically comes after the hyphen rules separated by a +less than (\texttt{<}). As with the combining diacritics, this +command is defined in terms of sub-blocks which may be used directly +instead if a different order is required: +\begin{verbatim} +\newcommand*{\glsxtrgeneralpuncrules}{% + \glsxtrgeneralpuncIrules + \string<\glsxtrcurrencyrules + \string<\glsxtrgeneralpuncIIrules +} +\end{verbatim} + +\begin{definition}[\DescribeMacro\glsxtrgeneralpuncIrules] +\cs{glsxtrgeneralpuncIrules} +\end{definition} +This is the first punctuation sub-block containing: +underscore, macron, comma, semi-colon, colon, exclamation mark, +inverted exclamation mark, question mark, inverted question mark, +solidus, full stop, acute accent, grave accent, circumflex accent, +diaersis, tilde, middle dot, cedilla, straight apostrophe, straight +double quote, left guillemet, right guillemet, left parenthesis, +right parenthesis, left square bracket, right square bracket, left +curly bracket, right curly bracket, section sign, pilcrow sign, +copyright sign, registered sign, at sign. + +\begin{definition}[\DescribeMacro\glsxtrcurrencyrules] +\cs{glsxtrcurrencyrules} +\end{definition} +This sub-block contains some currency symbols: +currency sign, Thai currency symbol baht, cent sign, colon sign, +cruzeiro sign, dollar sign, dong sign, euro sign, French franc sign, +lira sign, mill sign, naira sign, peseta sign, pound sign, rupee +sign, new sheqel sign, won sign, yen sign. + +\begin{definition}[\DescribeMacro\glsxtrgeneralpuncIIrules] +\cs{glsxtrgeneralpuncIIrules} +\end{definition} +This sub-block contains some other punctuation symbols: +asterisk, backslash, ampersand, hash sign, percent sign, plus sign, +plus-minus sign, division sign, multiplication sign, less-than sign, +equals sign, greater-than sign, not sign, vertical bar (pipe), +broken bar, degree sign, micron sign. + +\begin{definition}[\DescribeMacro\glsxtrdigitrules] +\cs{glsxtrdigitrules} +\end{definition} +This rule block contains the Basic Latin digits (0, \ldots, 9) +and the subscript and superscript digits (\textsubscript{0} +\textsuperscript{0} etc) made equivalent to the +corresponding Basic Latin digit. The digit block typically +comes after the punctuation rules separated by a less than +(\texttt{<}). + +\begin{definition}[\DescribeMacro\glsxtrBasicDigitrules] +\cs{glsxtrBasicDigitrules} +\end{definition} +This rule block contains just the Basic Latin digits (0, \ldots, 9). + +\begin{definition}[\DescribeMacro\glsxtrSubScriptDigitrules] +\cs{glsxtrSubScriptDigitrules} +\end{definition} +This rule block contains just the subscript digits +(\textsubscript{0} \ldots\ \textsubscript{9}). + +\begin{definition}[\DescribeMacro\glsxtrSuperScriptDigitrules] +\cs{glsxtrSuperScriptDigitrules} +\end{definition} +This rule block contains just the superscript digits +(\textsuperscript{0} \ldots\ \textsuperscript{9}). + +\begin{definition}[\DescribeMacro\glsxtrfractionrules] +\cs{glsxtrfractionrules} +\end{definition} +This rule block contains vulgar fraction characters. The digit block +typically comes after the digit rules separated by a less than +(\texttt{<}). + +There are a number of Latin rule blocks. Some of these included +extended characters or ligatures (such as \ss\ or \oe) but they don't +include accented characters. If you require a Latin rule block +that includes accented characters, digraphs, trigraphs or +other extended characters, then it's best to provide +similar commands in a \texttt{glossariesxtr-}\meta{tag}\texttt{.ldf} +file for the particular language or region. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIrules] +\cs{glsxtrGeneralLatinIrules} +\end{definition} +This is just the basic (non-extended) Latin alphabet with the superscript +and subscript Latin letters (\textsuperscript{a} \textsubscript{a} +etc) treated as the equivalent basic Latin letter. (If you don't +want the subscripts and superscripts included you can redefine +\cs{glsxtrLatinA} etc to omit them.) + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIIrules] +\cs{glsxtrGeneralLatinIIrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes eth +(Ð) between `D' and `E' and eszett (\ss) treated as `ss'. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIIIrules] +\cs{glsxtrGeneralLatinIIIrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes eth +(Ð) between `D' and `E' and eszett (\ss) treated as `sz'. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIVrules] +\cs{glsxtrGeneralLatinIVrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes eth +(Ð) between `D' and `E', ae-ligature (\ae) is treated as `ae', +oe-ligature (\oe) is treated as `oe', eszett (\ss) treated as `ss' +and thorn (þ) is treated as `th'. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVrules] +\cs{glsxtrGeneralLatinVrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes eth +(Ð) between `D' and `E', eszett (\ss) treated as `ss' +and thorn (þ) treated as `th'. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIrules] +\cs{glsxtrGeneralLatinVIrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes eth +(Ð) between `D' and `E', eszett (\ss) treated as `sz' +and thorn (þ) treated as `th'. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIIrules] +\cs{glsxtrGeneralLatinVIIrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but it includes +ae-ligature (\ae) between `A' and `B', eth (Ð) between `D' and +`E', insular G (Ᵹ) instead of `G', oe-ligature between `O' and `P', +long~s (ſ) equivalent to `s', thorn (þ) between `T' and `U' and wynn (Ƿ) +instead of W. + +\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIIIrules] +\cs{glsxtrGeneralLatinVIIIrules} +\end{definition} +This is like \cs{glsxtrGeneralLatinIrules} but ae-ligature (\ae) is treated as `ae', +oe-ligature (\oe) is treated as `oe', eszett (\ss) treated as `ss', +thorn (þ) is treated as `th', \O\ is treated as `O' and +`\L' is treated as `L'. + +\begin{definition}[\DescribeMacro\glsxtrLatinA] +\cs{glsxtrLatinA} +\end{definition} +A mini-rule that just covers `A' but includes the sub- and +superscript A. + +\begin{definition}[\DescribeMacro\glsxtrLatinE] +\cs{glsxtrLatinE} +\end{definition} +A mini-rule that just covers `E' but includes the +subscript E. + +\begin{definition}[\DescribeMacro\glsxtrLatinH] +\cs{glsxtrLatinH} +\end{definition} +A mini-rule that just covers `H' but includes the +subscript H. + +\begin{definition}[\DescribeMacro\glsxtrLatinK] +\cs{glsxtrLatinK} +\end{definition} +A mini-rule that just covers `K' but includes the +subscript K. + +\begin{definition}[\DescribeMacro\glsxtrLatinI] +\cs{glsxtrLatinI} +\end{definition} +A mini-rule that just covers `I' but includes the +superscript I. + +\begin{definition}[\DescribeMacro\glsxtrLatinL] +\cs{glsxtrLatinL} +\end{definition} +A mini-rule that just covers `L' but includes the +subscript L. + +\begin{definition}[\DescribeMacro\glsxtrLatinM] +\cs{glsxtrLatinM} +\end{definition} +A mini-rule that just covers `M' but includes the +subscript M. + +\begin{definition}[\DescribeMacro\glsxtrLatinN] +\cs{glsxtrLatinN} +\end{definition} +A mini-rule that just covers `N' but includes the +sub- and superscript N. + +\begin{definition}[\DescribeMacro\glsxtrLatinO] +\cs{glsxtrLatinO} +\end{definition} +A mini-rule that just covers `O' but includes the +sub- and superscript O. + +\begin{definition}[\DescribeMacro\glsxtrLatinP] +\cs{glsxtrLatinP} +\end{definition} +A mini-rule that just covers `P' but includes the +subscript P. + +\begin{definition}[\DescribeMacro\glsxtrLatinS] +\cs{glsxtrLatinS} +\end{definition} +A mini-rule that just covers `S' but includes the +subscript S. + +\begin{definition}[\DescribeMacro\glsxtrLatinT] +\cs{glsxtrLatinT} +\end{definition} +A mini-rule that just covers `T' but includes the +subscript T. + +\begin{definition}[\DescribeMacro\glsxtrLatinX] +\cs{glsxtrLatinX} +\end{definition} +A mini-rule that just covers `X' but includes the +subscript X. + +\begin{definition}[\DescribeMacro\glsxtrLatinEszettSs] +\cs{glsxtrLatinEszettSs} +\end{definition} +A mini-rule that just covers eszett (\ss) and makes long~s (ſ) followed +by short `s' equivalent to `\ss'. (This is used in the above blocks +that treat `\ss' as `ss'.) + +\begin{definition}[\DescribeMacro\glsxtrLatinEszettSz] +\cs{glsxtrLatinEszettSz} +\end{definition} +A mini-rule that just covers eszett (\ss) and makes long~s (ſ) followed +by `z' equivalent to `\ss'. (This is used in the above blocks +that treat `\ss' as `sz'.) + +\begin{definition}[\DescribeMacro\glsxtrLatinEth] +\cs{glsxtrLatinEth} +\end{definition} +A mini-rule for eth (Ð) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinThorn] +\cs{glsxtrLatinThorn} +\end{definition} +A mini-rule for thorn (þ) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinAELigature] +\cs{glsxtrLatinAELigature} +\end{definition} +A mini-rule for ae-ligature (\ae) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinOELigature] +\cs{glsxtrLatinOELigature} +\end{definition} +A mini-rule for oe-ligature (\oe) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinOslash] +\cs{glsxtrLatinOslash} +\end{definition} +A mini-rule for `\O' so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinLslash] +\cs{glsxtrLatinLslash} +\end{definition} +A mini-rule for `\L' so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinWynn] +\cs{glsxtrLatinWynn} +\end{definition} +A mini-rule for wynn (Ƿ) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinInsularG] +\cs{glsxtrLatinInsularG} +\end{definition} +A mini-rule for insular G (Ᵹ) so you don't need to remember the +Unicode values. + +\begin{definition}[\DescribeMacro\glsxtrLatinSchwa] +\cs{glsxtrLatinSchwa} +\end{definition} +A mini-rule that just covers schwa (Ə) but includes the +subscript schwa. (Not used in any of the provided Latin rule blocks +described above.) + +\begin{definition}[\DescribeMacro\glsxtrLatinAA] +\cs{glsxtrLatinAA} +\end{definition} +A mini-rule for `\AA' so you don't need to remember the +Unicode values. (Not used in any of the provided Latin rule blocks +described above.) + +\begin{definition}[\DescribeMacro\glsxtrMathGreekIrules] +\cs{glsxtrMathGreekIrules} +\end{definition} +A rule block for mathematical Greek (\ics{alpha}, \ics{beta} etc) +and upright Greek (\ics{upalpha}, etc, from the \sty{upgreek} +package) characters that includes digamma (\ics{digamma} and +\ics{Digamma}) between epsilon and zeta. The upright and italic +versions are gathered together into the same letter group. + +\begin{definition}[\DescribeMacro\glsxtrMathGreekIIrules] +\cs{glsxtrMathGreekIIrules} +\end{definition} +As \cs{glsxtrMathGreekIrules} but doesn't include digamma. + +\begin{definition}[\DescribeMacro\glsxtrMathUpGreekIrules] +\cs{glsxtrMathUpGreekIrules} +\end{definition} +A rule block for upright Greek (\ics{upalpha}, etc, from +the \sty{upgreek} package) +characters that includes digamma (\ics{digamma} and \ics{Digamma}) +between epsilon and zeta. + +\begin{definition}[\DescribeMacro\glsxtrMathUpGreekIIrules] +\cs{glsxtrMathUpGreekIIrules} +\end{definition} +A rule block for upright Greek (\ics{upalpha}, etc, from +the \sty{upgreek} package) that doesn't include digamma. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicGreekIrules] +\cs{glsxtrMathItalicGreekIrules} +\end{definition} +A rule block for mathematical Greek (\ics{alpha}, \ics{Alpha}, etc) +characters that includes digamma (\ics{diagamma} and \ics{Digamma}) +between epsilon and zeta. Note that even though the upper case +\cs{Delta} etc are actually rendered upright by \LaTeX, +\gls{bib2gls}['s] interpreter treats them as italic to help keep +them close to the lower case versions. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicGreekIIrules] +\cs{glsxtrMathItalicGreekIIrules} +\end{definition} +A rule block for mathematical Greek (\ics{alpha}, \ics{Alpha}, etc) +characters that doesn't include digamma. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicUpperGreekIrules] +\cs{glsxtrMathItalicUpperGreekIrules} +\end{definition} +A rule block for upper case mathematical Greek (\ics{Alpha}, +\ics{Beta}, etc) characters that includes digamma (\ics{Digamma}) +between epsilon and zeta. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicUpperGreekIIrules] +\cs{glsxtrMathItalicUpperGreekIIrules} +\end{definition} +A rule block for upper case mathematical Greek (\ics{Alpha}, +\ics{Beta}, etc) characters that doesn't include digamma. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicLowerGreekIrules] +\cs{glsxtrMathItalicLowerGreekIrules} +\end{definition} +A rule block for lower case mathematical Greek (\ics{alpha}, +\ics{beta}, etc) characters that includes digamma (\ics{digamma}) +between epsilon and zeta. + +\begin{definition}[\DescribeMacro\glsxtrMathItalicLowerGreekIIrules] +\cs{glsxtrMathItalicLowerGreekIIrules} +\end{definition} +A rule block for lower case mathematical Greek (\ics{alpha}, +\ics{beta}, etc) characters that doesn't include digamma. + +Additionally, there are commands in the form \cs{glsxtrUpAlpha}, +\cs{glsxtrUpBeta} etc and \cs{glsxtrMathItalicAlpha}, +\cs{glsxtrMathItalicBeta} etc +that just cover the upper and lower case forms of a special +Greek character (\cs{Upalpha}, \cs{upalpha} etc and \cs{Alpha}, +\cs{alpha} etc) as well as the following: + +\begin{definition}[\DescribeMacro\glsxtrMathItalicPartial] +\cs{glsxtrMathItalicPartial} +\end{definition} +The partial derivative symbol ($\partial$). + +\begin{definition}[\DescribeMacro\glsxtrMathItalicNabla] +\cs{glsxtrMathItalicNabla} +\end{definition} +The nabla symbol ($\nabla$). + + +\section{Supplementary Commands} + +These commands are provided by \styfmt{glossaries-extra} +for use with \gls{bib2gls}. + +The information provided with \cs{GlsXtrLoadResources} +is written to the \texttt{.aux} file using +\begin{alltt} +\cs{protected@write}\cs{@auxout}\{\cs{glsxtrresourceinit}\}\marg{information} +\end{alltt} +where \meta{information} is the information to pass to +\gls{bib2gls}. The command in the second argument +\begin{definition}[\DescribeMacro\glsxtrresourceinit] +\cs{glsxtrresourceinit} +\end{definition} +may be used to temporarily redefine commands before the +information is written to the file. This does nothing +by default, but may be redefined to allow the use of +short commands for convenience. For example, with: +\begin{verbatim} +\renewcommand{\glsxtrresourceinit}{\let\u\glshex} +\end{verbatim} +you can just use, for example, \verb|\u E6| instead of +\verb|\string\uE6| in the custom rule. This redefinition of \cs{u} +is scoped so its original definition is restored after the write operation. + +If you have multiple resource commands and you want a default set of +options you can supply them in the definition of: +\begin{definition}[\DescribeMacro\GlsXtrDefaultResourceOptions] +\cs{GlsXtrDefaultResourceOptions} +\end{definition} +For example: +\begin{verbatim} +\renewcommand{\GlsXtrDefaultResourceOptions}{selection=all} +\end{verbatim} +This should be done before the resource commands. + +It's possible to specify label prefixes. For example, modifying +the earlier example: +\begin{verbatim} +\documentclass{article} + +\usepackage[record,style=indexgroup]{glossaries-extra} + +\setabbreviationstyle{long-short-desc} + +\GlsXtrLoadResources + [src={abbrvs},sort={letter-nocase},type=main, + label-prefix={abr.}, + group={Abbreviations}] + +\GlsXtrLoadResources + [src={symbols},sort={use},type=main, + label-prefix={sym.}, + group={Symbols}] + +\GlsXtrLoadResources[src={terms},sort={en-GB},type=main + label-prefix={trm.}] + +\begin{document} +\gls{trm.bird} + +\gls{abr.shtml} + +\gls{sym.M} + +\printunsrtglossaries +\end{document} +\end{verbatim} +If you do something like this, you may find it more convenient +to define custom commands that set the prefix. For example: +\begin{verbatim} +\newcommand*{\sym}[2][]{\gls[#1]{sym.#2}} +\end{verbatim} +The problem with this is that the custom command \cs{sym} +doesn't allow for modifiers (such as \cs{gls*} or \cs{gls+}). +Instead you can use: +\begin{definition}[\DescribeMacro\glsxtrnewgls] +\cs{glsxtrnewgls}\oarg{default options}\marg{prefix}\marg{cs} +\end{definition} +which defines the command \meta{cs} that behaves like +\begin{alltt} +\cs{gls}\meta{modifier}[\meta{default options},\meta{options}]\{\meta{prefix}\meta{label}\}\oarg{insert} +\end{alltt} +For example: +\begin{verbatim} +\glsxtrnewgls{sym.}{\sym} +\end{verbatim} +or (to default to no hyperlinks) +\begin{verbatim} +\glsxtrnewgls[hyper=false]{sym.}{\sym} +\end{verbatim} +now you can use \verb|\sym+{M}| to behave like \verb|\gls+{sym.M}|. + +If you also want the plural and first letter upper case +versions you can use +\begin{definition}[\DescribeMacro\glsxtrnewglslike] +\cs{glsxtrnewglslike}\oarg{default +options}\marg{prefix}\marg{\cs{gls}-like cs}\marg{\cs{glspl}-like cs}\marg{\cs{Gls}-like cs}\marg{\cs{Glspl}-like cs} +\end{definition} +For example: +\begin{verbatim} +\glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl} +\end{verbatim} +For the all caps versions: +\begin{definition}[\DescribeMacro\glsxtrnewGLSlike] +\cs{glsxtrnewGLSlike}\oarg{default +options}\marg{prefix}\marg{\cs{GLS}-like cs}\marg{\cs{GLSpl}-like cs} +\end{definition} +For example: +\begin{verbatim} +\glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl} +\end{verbatim} + +There's an analogous command for \cs{rgls}: +\begin{definition}[\DescribeMacro\glsxtrnewrgls] +\cs{glsxtrnewrgls}\oarg{default options}\marg{prefix}\marg{cs} +\end{definition} +and for \cs{rgls}, \cs{rglspl}, \cs{rGls} +and \cs{rGlspl}: +\begin{definition}[\DescribeMacro\glsxtrnewrglslike] +\cs{glsxtrnewrglslike}\oarg{default +options}\marg{prefix}\marg{\cs{rgls}-like cs}\marg{\cs{rglspl}-like +cs}\marg{\cs{rGls}-like cs}\marg{\cs{rGlspl}-like cs} +\end{definition} +and for the all caps: +\begin{definition}[\DescribeMacro\glsxtrnewrGLSlike] +\cs{glsxtrnewrGLSlike}\oarg{default +options}\marg{prefix}\marg{\cs{rGLS}-like cs}\marg{\cs{rGLSpl}-like cs} +\end{definition} + +If you provide your own custom command with just +\cs{newcommand} that has syntax that starts with +\oarg{options}\marg{label}, then you can notify \gls{bib2gls} using: +\begin{definition}[\DescribeMacro\glsxtridentifyglslike] +\cs{glsxtridentifyglslike}\marg{prefix}\marg{command} +\end{definition} +This writes information to the \texttt{.aux} file so that +\gls{bib2gls} can search for the given command when looking +for dependencies. + +Another possibility is to set up known label prefixes, with each +one identified by: +\begin{definition}[\DescribeMacro\glsxtraddlabelprefix] +\cs{glsxtraddlabelprefix}\marg{prefix} +\end{definition} +These should be listed in order of precedence. Since no entries +are defined on the first \LaTeX\ run, the final prefix should +be the fallback. You can prepend a prefix to the list using: +\begin{definition}[\DescribeMacro\glsxtrprependlabelprefix] +\cs{glsxtrprependlabelprefix}\marg{prefix} +\end{definition} +which gives it the highest order of precedence. + +The \meta{prefix} argument may be empty. You can clear the list +with: +\begin{definition}[\DescribeMacro\glsxtrclearlabelprefixes] +\cs{glsxtrclearlabelprefixes} +\end{definition} + +You can test if a prefix is already in the list with: +\begin{definition}[\DescribeMacro\glsxtrifinlabelprefixlist] +\cs{glsxtrifinlabelprefixlist}\marg{prefix}\marg{true}\marg{false} +\end{definition} +In general it's best to avoid adding multiple instances of the same +prefix, so you can check with this command before adding a prefix to +the list. However, it can be useful to repeat a prefix at +the end of the list so that it can be used as a fallback for entries +that haven't yet been defined. + +With the list of possible prefixes set up (including an empty +prefix if necessary), you can use: +\begin{definition}[\DescribeMacro\dgls] +\cs{dgls}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +which behaves like +\begin{alltt} +\cs{gls}\oarg{options}\{\meta{prefix}\meta{label}\}\oarg{insert} +\end{alltt} +where \meta{prefix} is the first prefix in the list such that +\meta{prefix}\meta{label} matches a defined entry (or the last entry +in the prefix list if none match). + +There are also analogous commands for the plural and case-changing +versions: +\begin{definition}[\DescribeMacro\dglspl] +\cs{dglspl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{glspl}), +\begin{definition}[\DescribeMacro\dGls] +\cs{dGls}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{Gls}), +\begin{definition}[\DescribeMacro\dGlspl] +\cs{dGlspl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{Glspl}), +\begin{definition}[\DescribeMacro\dGLS] +\cs{dGLS}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{GLS}), +\begin{definition}[\DescribeMacro\dGLSpl] +\cs{dGLSpl}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{GLSpl}), +\begin{definition}[\DescribeMacro\dglslink] +\cs{dglslink}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{glslink}), +\begin{definition}[\DescribeMacro\dglsdisp] +\cs{dglsdisp}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +(uses \cs{glsdisp}). + +These commands are essentially provided for a mixture of single and +dual entries. Suppose the file \texttt{entries.bib} contains: +\begin{verbatim} +@index{duck} +@dualindexabbreviation{svm, + short={SVM}, + long={support vector machine} +} +@dualindexsymbol{pi, + symbol={\ensuremath{\pi}}, + description={ratio of a circle's circumference to its + diameter} +} +\end{verbatim} +and suppose the document code is: +\begin{verbatim} +\documentclass{article} +\usepackage{hyperref} +\usepackage[record,abbreviations,symbols]{glossaries-extra} + +\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% + \longnewglossaryentry*{#1}{name={#3},category={symbol}, + type={symbols},symbol={#4},#2}{#5}% +} + +\GlsXtrLoadResources[src=entries] + +\begin{document} +First use: \gls{duck}, \gls{svm}, \gls{pi}. +Next use: \gls{duck}, \gls{svm}, \gls{pi}. +\printunsrtglossaries +\end{document} +\end{verbatim} +This uses the default empty primary prefix and \texttt{dual.}\ for +the dual prefix, so \verb|\gls{svm}| is referencing the primary +entry, which is (essentially) an \texttt{@index} type not an +abbreviation. It therefore doesn't follow the abbreviation style, and +it also hyperlinks to the index not to the list of abbreviations. +Similarly for \verb|\gls{pi}|, which references the primary +\texttt{@index} entry rather than the symbol. + +What's really needed is: +\begin{verbatim} +\gls{duck}, \gls{dual.svm}, \gls{dual.pi}. +\end{verbatim} +or with +\begin{verbatim} +\GlsXtrLoadResources[src=entries, + label-prefix={idx.}, + dual-prefix={} +] +\end{verbatim} +then only the entries without a dual need a prefix: +\begin{verbatim} +\gls{idx.duck}, \gls{svm}, \gls{pi}. +\end{verbatim} +Using \cs{glsxtrnewglslike}, as earlier, this can be simplified to: +\begin{verbatim} +\idx{duck}, \gls{svm}, \gls{pi}. +\end{verbatim} +but this requires remembering which terms have duals. + +An alternative is to use \cs{dgls} instead: +\begin{verbatim} +\documentclass{article} +\usepackage{hyperref} +\usepackage[record,abbreviations,symbols]{glossaries-extra} + +\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% + \longnewglossaryentry*{#1}{name={#3},category={symbol}, + type={symbols},symbol={#4},#2}{#5}% +} + +\GlsXtrLoadResources[src=entries] + +\glsxtraddlabelprefix{dual.} +\glsxtraddlabelprefix{} + +\begin{document} +First use: \dgls{duck}, \dgls{svm}, \dgls{pi}. +Next use: \dgls{duck}, \dgls{svm}, \dgls{pi}. +\printunsrtglossaries +\end{document} +\end{verbatim} +On the first \LaTeX\ call (when the \texttt{.glstex} file doesn't exist), +neither \texttt{dual.svm} nor \texttt{svm} exists, so \cs{dgls} +uses the last prefix (which is empty in this case). This means +that on the first \LaTeX\ run, \verb|\dgls{svm}| behaves like +\verb|\gls{svm}|, which adds a record for the primary +\texttt{svm} entry. The default primary-dual dependency means +that this will cause both the primary (\texttt{svm}) and dual +(\texttt{dual.svm}) entry to be selected. The location will be +added to the primary entry's location list, unless overridden +by resource options, such as \texttt{combine-dual-locations}. + +Once \gls{bib2gls} has been run and the \texttt{.glstex} file +exists, then \texttt{dual.svm} exists. So \verb|\dgls{svm}| will +again first try \texttt{dual.svm} (as \texttt{dual.} is the +first in the list of label prefixes). That now exists, so +\verb|\dgls{svm}| now behaves like \verb|\gls{dual.svm}|, which +follows the abbreviation style and hyperlinks to the list +of abbreviations. + +Similarly for the index-symbol combination \texttt{dual.pi} and +\texttt{pi}. In the case of \verb|\dgls{duck}|, the label +\texttt{dual.duck} never exists, so that's never selected. +The empty prefix is the only one that matches, so +\verb|\dgls{duck}| always behaves like \verb|\gls{duck}|. + +If you haven't used \texttt{combine-dual-locations} an extra +\gls{bib2gls}+\LaTeX\ run may be required to correct the location +lists. + +If you change the label prefixes, remember to update the +corresponding \cs{glsxtraddlabelprefix}\marg{prefix}. +If no prefixes have been added to the list (or if the list is +cleared), just an empty prefix is assumed. + +As from version 1.8, \gls{bib2gls} provides hooks that identify +the label prefixes in the \texttt{.glstex} file: +\begin{alltt} +\ics{bibglstertiaryprefixlabel}\marg{prefix} +\ics{bibglsdualprefixlabel}\marg{prefix} +\ics{bibglsprimaryprefixlabel}\marg{prefix} +\end{alltt} +These do nothing by default, but they can be defined before +the resource file is loaded to set up the prefix list. For +example: +\begin{verbatim} +\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}} +\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}} +\GlsXtrLoadResources[src=entries] +\end{verbatim} +Remember that this will only have an effect once the +\texttt{.glstex} file has been created. The prefix list will be empty +on the first run (which is treated as a single empty prefix). +If this isn't a suitable fallback, it may be necessary to add one +after all the resource commands: +\begin{verbatim} +\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}} +\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}} +\GlsXtrLoadResources[src=entries,label-prefix={idx.}] +\glsxtraddlabelprefix{idx.} +\end{verbatim} +Although this rather defeats the purpose of using the hooks as you +still have to keep track of the fallback prefix. + +\section{Record Counting} +\label{sec:recordcount} + +As from version 1.1 of \gls{bib2gls}, you can save the total +record count for each entry by invoking \gls{bib2gls} +with the \texttt{-{}-record-count} or \texttt{-{}-record-count-unit} +switches. These options will ensure that when each entry +is written to the \texttt{.glstex} file \gls{bib2gls} will +additionally set the following internal fields for that entry: +\begin{itemize} +\item \texttt{recordcount}: set to the total +number of records found for the entry; +\item \texttt{recordcount.\meta{counter}}: set to the total +number of records found for the entry for the given counter. +\end{itemize} +If \texttt{-{}-record-count-unit} is used then additionally: +\begin{itemize} +\item \texttt{recordcount.\meta{counter}.\meta{location}}: set to the total +number of records found for the entry for the given counter with the +given location. +\end{itemize} +Only use the unit counting option if the locations don't contain any special +characters. If you really need it with locations that may contain +formatting commands, then you can try redefining: +\begin{definition}[\DescribeMacro\glsxtrdetoklocation] +\cs{glsxtrdetoklocation}\marg{location} +\end{definition} +so that it detokenizes \meta{location} but take care when +using \cs{GlsXtrLocationRecordCount} with commands like +\cs{thepage} as they can end up becoming detokenized +too early. + +Note that the record count includes locations that \gls{bib2gls} +discards, such as ignored records, duplicates and partial +duplicates. It doesn't include cross-reference records. For +example, if \verb|\gls{bird}| is used twice on page~1, once on +page~2 and fours times on page~3, and +\verb|\gls[counter=section]{bird}| is used once in section~3, then +the total record count (stored in the \texttt{recordcount} field) is +$2+1+4+1=8$, the total for the \texttt{page} counter (stored in the +\texttt{recordcount.page} field) is $2+1+4=7$, and the total for the +\texttt{section} counter (stored in the \texttt{recordcount.section} +field) is 1. + +With the unit counting on as well, the field +\texttt{recordcount.page.1} is set to 2, \texttt{recordcount.page.2} +is set to 1, \texttt{recordcount.page.3} is set to 4 and +\texttt{recordcount.section.3} is set to 1. + +You can access these fields using the following commands which +will expand to the field value if set or to 0 if unset: +\begin{definition}[\DescribeMacro\GlsXtrTotalRecordCount] +\cs{GlsXtrTotalRecordCount}\marg{label} +\end{definition} +This expands to the total record count for the entry given by +\meta{label}. +\begin{verbatim} +\GlsXtrTotalRecordCount{bird} +\end{verbatim} +expands to 8. + +\begin{definition}[\DescribeMacro\GlsXtrRecordCount] +\cs{GlsXtrRecordCount}\marg{label}\marg{counter} +\end{definition} +This expands to the counter total for the entry given by +\meta{label} where \meta{counter} is the counter name. +For example: +\begin{verbatim} +\GlsXtrRecordCount{bird}{page} +\end{verbatim} +expands to 7 and +\begin{verbatim} +\GlsXtrRecordCount{bird}{section} +\end{verbatim} +expands to 1. + +\begin{definition}[\DescribeMacro\GlsXtrLocationRecordCount] +\cs{GlsXtrLocationRecordCount}\marg{label}\marg{counter}\marg{location} +\end{definition} +This expands to the total for the given location. For example +\begin{verbatim} +\GlsXtrLocationRecordCount{bird}{page}{3} +\end{verbatim} +expands to 4. Be careful about using \cs{thepage} in the +\meta{location} part. Remember that due to \TeX's asynchronous +output routine, \cs{thepage} may not be correct. + +There are commands analogous to the entry counting commands like +\cs{cgls} and \cs{cglsformat} that are triggered by the record count. +These are listed below. + +\begin{definition}[\DescribeMacro\rgls] +\cs{rgls}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rglspl] +\cs{rglspl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGls] +\cs{rGls}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGlspl] +\cs{rGlspl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGLS] +\cs{rGLS}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGLSpl] +\cs{rGLSpl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +\end{definition} +These commands check the \catattr{recordcount} attribute +which, if set, should be a number. For example: +\begin{verbatim} +\glssetcategoryattribute{abbreviation}{recordcount}{1} +\end{verbatim} +For convenience, you can use +\begin{definition}[\DescribeMacro\GlsXtrSetRecordCountAttribute] +\cs{GlsXtrSetRecordCountAttribute}\marg{category list}\marg{n} +\end{definition} +to set the \catattr{recordcount} attribute to \meta{n} +for all the categories listed in \meta{category list}. + +The \cs{rgls}-like commands use +\begin{definition}[\DescribeMacro\glsxtrifrecordtrigger] +\cs{glsxtrifrecordtrigger}\marg{label}\marg{trigger +code}\marg{normal} +\end{definition} +to determine whether the \cs{rgls}-like command should behave like +its \cs{gls} counterpart (\meta{normal}) or whether it should +instead use \meta{trigger code}. + +This command checks if the \catattr{recordcount} attribute is set. +If not is just does \meta{normal}, otherwise it tests +if +\begin{definition}[\DescribeMacro\glsxtrrecordtriggervalue] +\cs{glsxtrrecordtriggervalue}\marg{label} +\end{definition} +is greater than the value given in the \catattr{recordcount} +attribute for that entry's category. If true, this does +\meta{normal} otherwise it does \meta{trigger code}. +The default definition of the trigger value command is: +\begin{verbatim} +\newcommand*{\glsxtrrecordtriggervalue}[1]{% + \GlsXtrTotalRecordCount{#1}% +} +\end{verbatim} +The \meta{trigger code} part writes a record with +the \gloskey[glslink]{format} set to \texttt{glstriggerrecordformat} (which +\gls{bib2gls} v1.1+ recognises as a special type of ignored location +format) and does \meta{trigger format}. Then it +unsets the \gls{firstuseflag}. Note that it doesn't +implement the post-link hook. This ensures that the record +count is correct on the next run. + +The \meta{trigger format} depends on the \cs{rgls}-like +command used and will be one of the following: +\begin{definition}[\DescribeMacro\rglsformat] +\cs{rglsformat}\marg{label}\marg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rglsplformat] +\cs{rglsplformat}\marg{label}\marg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGlsformat] +\cs{rGlsformat}\marg{label}\marg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGlsplformat] +\cs{rGlsplformat}\marg{label}\marg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGLSformat] +\cs{rGLSformat}\marg{label}\marg{insert} +\end{definition} +\begin{definition}[\DescribeMacro\rGLSplformat] +\cs{rGLSplformat}\marg{label}\marg{insert} +\end{definition} +These all behave much like their \cs{cglsformat} counterparts. If +the entry's \catattr{regular} attribute is set or if the entry +doesn't have a long form, the first or first plural is used, +otherwise the long or long plural form is used. + +You can use +\begin{definition}[\DescribeMacro\glsxtrenablerecordcount] +\cs{glsxtrenablerecordcount} +\end{definition} +to redefine \cs{gls}, \cs{glspl}, \cs{Gls}, \cs{Glspl}, +\cs{GLS}, \cs{GLSpl} to \cs{rgls}, \cs{rglspl}, \cs{rGls}, \cs{rGlspl}, +\cs{rGLS}, \cs{rGLSpl}, respectively, for convenience. + +If you don't want the entries that use \meta{trigger code} +to appear in the glossary, you need to use the resource option +\texttt{trigger-type} to assign them to another glossary. +For example: +\begin{verbatim} +\documentclass{article} + +\usepackage[record]{glossaries-extra} + +\newignoredglossary{ignored} + +\GlsXtrLoadResources[ + src=example-glossaries-acronym, + trigger-type=ignored, + category=abbreviation +] + +\glsxtrenablerecordcount +\GlsXtrSetRecordCountAttribute{abbreviation}{1} + +\begin{document} +\gls{lid}. \gls{stc}. \gls{lid}. \gls{aeu}. +\gls{upa}. \gls{aeu}. + +\printunsrtglossaries +\end{document} +\end{verbatim} +In the above, \texttt{stc} and \texttt{upa} both only have +one record, so they are assigned to the \texttt{ignored} +glossary instead of the \texttt{main} one. + +\chapter{Miscellaneous New Commands} +\label{sec:miscnew} + +The \styfmt{glossaries} package provides \ics{glsrefentry} entry to +cross-reference entries when used with the \pkgopt{entrycounter} or +\pkgopt{subentrycounter} options. The \styfmt{glossaries-extra} +package provides a supplementary command +\begin{definition}[\DescribeMacro\glsxtrpageref] +\cs{glsxtrpageref}\marg{label} +\end{definition} +that works in the same way except that it uses \ics{pageref} +instead of \ics{ref}. + +You can copy an entry to another glossary using +\begin{definition}[\DescribeMacro\glsxtrcopytoglossary] +\cs{glsxtrcopytoglossary}\marg{entry-label}\marg{glossary-type} +\end{definition} +This appends \meta{entry-label} to the end of the internal +list for the glossary given by \meta{glossary-type}. +Be careful if you use the \sty{hyperref} package as this +may cause duplicate hypertargets. You will need to change +\cs{glolinkprefix} to another value or disable hyperlinks +when you display the duplicate. Alternatively, use the new +\gloskey[printglossary]{target} key to switch off the targets: +\begin{verbatim} +\printunsrtglossary[target=false] +\end{verbatim} + +The \styfmt{glossaries} package allows you to set preamble code +for a given glossary type using \cs{setglossarypreamble}. This +overrides any previous setting. With \styfmt{glossaries-extra} +(as from v1.12) you can instead append to the preamble +using +\begin{definition}[\DescribeMacro\apptoglossarypreamble] +\cs{apptoglossarypreamble}\oarg{type}\marg{code} +\end{definition} +or prepend using +\begin{definition}[\DescribeMacro\pretoglossarypreamble] +\cs{pretoglossarypreamble}\oarg{type}\marg{code} +\end{definition} + +\section{Entry Fields} +\label{sec:fields} + +A field may now be used to store the name of a text-block command +that takes a single argument. The field is given by +\begin{definition}[\DescribeMacro\GlsXtrFmtField] +\cs{GlsXtrFmtField} +\end{definition} +The default value is \texttt{\GlsXtrFmtField}. Note that the +value must be the control sequence name \emph{without the initial +backslash}. + +For example: +\begin{verbatim} +\newcommand*{\mtx}[1]{\boldsymbol{#1}} +\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}} + +\newglossaryentry{matrix}{% + name={matrix}, + symbol={\ensuremath{\mtx{M}}}, + plural={matrices}, + user1={mtx}, + description={rectangular array of values} +} + +\newglossaryentry{identitymatrix}{% + name={identity matrix}, + symbol={\ensuremath{\mtx{I}}}, + plural={identity matrices}, + description={a diagonal matrix with all diagonal elements equal to +1 and all other elements equal to 0} +} + +\newglossaryentry{matrixinv}{% + name={matrix inverse}, + symbol={\ensuremath{\mtxinv{M}}}, + user1={mtxinv}, + description={a square \gls{matrix} such that + $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$} +} +\end{verbatim} + +There are two commands provided that allow you to apply the +command to an argument: +\begin{definition}[\DescribeMacro\glsxtrfmt] +\cs{glsxtrfmt}\oarg{options}\marg{label}\marg{text} +\end{definition} +This effectively does +\begin{alltt} +\cs{glslink}[\meta{default-options},\meta{options}]\marg{label}\{\cs{glsxtrfmtdisplay}\marg{cs name}\marg{text}\{\}\} +\end{alltt} +where \meta{cs name} is the control +sequence name supplied in the provided field, which must be defined +to take a single required argument. Although it effectively +acts like \cs{glslink} it misses out the post-link hook. + +The default \meta{default-options} are given by +\begin{definition}[\DescribeMacro\GlsXtrFmtDefaultOptions] +\cs{GlsXtrFmtDefaultOptions} +\end{definition} +This is defined as \texttt{\GlsXtrFmtDefaultOptions} but may +be redefined as appropriate. Note that the replacement text of +\cs{GlsXtrFmtDefaultOptions} is prepended to the optional +argument of \cs{glslink}. + +As from version 1.23, there's also a starred version of +this command that has a final optional argument: +\begin{definition}[\DescribeMacro{\glsxtrfmt*}] +\cs{glsxtrfmt*}\oarg{options}\marg{label}\marg{text}\oarg{insert} +\end{definition} +Both the starred and unstarred versions use: +\begin{definition}[\DescribeMacro\glsxtrfmtdisplay] +\cs{glsxtrfmtdisplay}\marg{cs name}\marg{text}\marg{insert} +\end{definition} +within the link text. +In the case of the unstarred version \meta{insert} will be empty. +It will also be empty if the final option argument is +missing from the starred form. If the entry given by \meta{label} +is undefined \cs{glsxtrfmt} and \cs{glsxtrfmt*} will issue +an error (or warning if \pkgopt[warn]{undefaction}). +There won't be a warning or error if the entry is defined by +the given field is missing. In either case, +(the entry is undefined or the field is missing) \meta{cs name} +will be \texttt{@firstofone} otherwise it will be the +field value. The default definition is: +\begin{verbatim} +\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3} +\end{verbatim} +which puts \meta{text} inside the argument of the control sequence +and \meta{insert} outside it (but it will still be inside the +link text). + +\begin{important} +Remember that nested links cause a problem so avoid using +commands like \cs{gls} or \cs{glsxtrfmt} within \meta{text}. +\end{important} + +For example: +\begin{verbatim} +\[ + \glsxtrfmt{matrix}{A} + \glsxtrfmt{matrixinv}{A} + = + \glssymbol{identitymatrix} +\] +\end{verbatim} +If the default options are set to \texttt{noindex} then +\cs{glsxtrfmt} won't index, but will create a hyperlink (if +\sty{hyperref} has been loaded). This can be changed so that +it also suppresses the hyperlink: +\begin{verbatim} +\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex} +\end{verbatim} + +Note that \cs{glsxtrfmt} won't work with PDF bookmarks. Instead +you can use +\begin{definition}[\DescribeMacro\glsxtrentryfmt] +\cs{glsxtrentryfmt}\marg{label}\marg{text} +\end{definition} +This uses \cs{texorpdfstring} and will simply expand to \meta{text} +within the PDF bookmarks, but in the document it will do +\meta{cs}\marg{text} if a control sequence name has been provided +or just \meta{text} otherwise. + +The \styfmt{glossaries} package provides \cs{glsaddstoragekey} to +add new keys. This command will cause an error if the key has +already been defined. The \styfmt{glossaries-extra} package provides +a supplementary command that will only define the key if it doesn't +already exist: +\begin{definition}[\DescribeMacro\glsxtrprovidestoragekey] +\cs{glsxtrprovidestoragekey}\marg{key}\marg{default}\marg{cs} +\end{definition} +If the key has already been defined, it will still provide the command given in +the third argument \meta{cs} (if it hasn't already been defined). Unlike +\cs{glsaddstoragekey}, \meta{cs} may be left empty if you're happy +to just use \cs{glsfieldfetch} to fetch the value of this new key. + +You can test if a key has been provided with: +\begin{definition}[\DescribeMacro\glsxtrifkeydefined] +\cs{glsxtrifkeydefined}\marg{key}\marg{true}\marg{false} +\end{definition} +This tests if \meta{key} is available for use in the +\meta{key}=\value{value} list in the second argument of +\cs{newglossaryentry} (or the optional argument of +commands like \cs{newabbreviation}). The corresponding +field may not have been set for any of the entries if no +default was provided. + +There are now commands provided to set individual fields. Note that +these only change the specified field, not any related values. For +example, changing the value of the \gloskey{text} field won't update +the \gloskey{plural} field. There are also some fields that +should really only be set when entries are defined (such +as the \gloskey{parent} field). Unexpected results may occur +if they are subsequently changed. + +\begin{definition}[\DescribeMacro\GlsXtrSetField] +\cs{GlsXtrSetField}\marg{label}\marg{field}\marg{value} +\end{definition} +Sets the field given by \meta{field} to \meta{value} for the entry +given by \meta{label}. No expansion is performed. It's not +necessary for the field to have been defined as a key. You +can access the value later with \cs{glsxtrusefield}. Note that +\cs{glsxtrifkeydefined} only tests if a key has been defined for use +with commands like \cs{newglossaryentry}. If a field without a +corresponding key is assigned a value, the key remains undefined. +This command is robust. + +\cs{GlsXtrSetField} uses +\begin{definition}[\DescribeMacro\glsxtrsetfieldifexists] +\cs{glsxtrsetfieldifexists}\marg{label}\marg{field}\marg{code} +\end{definition} +where \meta{label} is the entry label and \meta{code} is the +assignment code. + +This command just uses \ics{glsdoifexists}\marg{label}\marg{code} +(ignoring the \meta{field} argument), so by default it causes an +error if the entry doesn't exist. This can be changed to a warning +with \pkgopt[warn]{undefaction}. You can redefine +\cs{glsxtrsetfieldifexists} to simply do \meta{code} if you want to +skip the existence check. Alternatively you can instead use +\begin{definition}[\DescribeMacro\glsxtrdeffield] +\cs{glsxtrdeffield}\marg{label}\marg{field}\meta{arguments}\marg{replacement text} +\end{definition} +This simply uses \sty{etoolbox}'s \cs{csdef} without any checks. +This command isn't robust. There is also a version that uses +\cs{protected@csedef} instead:\footnote{Pre version 1.28 used +\cs{csedef}.} +\begin{definition}[\DescribeMacro\glsxtredeffield] +\cs{glsxtredeffield}\marg{label}\marg{field}\meta{arguments}\marg{replacement text} +\end{definition} + +\begin{definition}[\DescribeMacro\gGlsXtrSetField] +\cs{gGlsXtrSetField}\marg{label}\marg{field}\marg{value} +\end{definition} +As \cs{GlsXtrSetField} but globally. + +\begin{definition}[\DescribeMacro\eGlsXtrSetField] +\cs{eGlsXtrSetField}\marg{label}\marg{field}\marg{value} +\end{definition} +As \cs{GlsXtrSetField} but uses protected expansion. + +\begin{definition}[\DescribeMacro\xGlsXtrSetField] +\cs{xGlsXtrSetField}\marg{label}\marg{field}\marg{value} +\end{definition} +As \cs{gGlsXtrSetField} but uses protected expansion. + +\begin{definition}[\DescribeMacro\GlsXtrLetField] +\cs{GlsXtrLetField}\marg{label}\marg{field}\marg{cs} +\end{definition} +Sets the field given by \meta{field} to the replacement text of \meta{cs} +for the entry given by \meta{label} (using \cs{let}). + +\begin{definition}[\DescribeMacro\csGlsXtrLetField] +\cs{csGlsXtrLetField}\marg{label}\marg{field}\marg{cs name} +\end{definition} +As \cs{GlsXtrLetField} but the control sequence name is supplied +instead. + +\begin{definition}[\DescribeMacro\GlsXtrLetFieldToField] +\cs{GlsXtrLetFieldToField}\marg{label-1}\marg{field-1}\marg{label-2}\marg{field-2} +\end{definition} +Sets the field given by \meta{field-1} for the entry given by +\meta{label-1} to the field given by \meta{field-2} for the entry +given by \meta{label-2}. There's no check for the existence of +\meta{label-2}, but +\cs{glsxtrsetfieldifexists}\marg{label-1}\marg{field-1}\marg{code} +is still used, as for \cs{GlsXtrSetField}. + +The \styfmt{glossaries} package provides \ics{ifglshasfield} +to determine if a field has been set. The \styfmt{glossaries-extra} +package provides a simpler version: +\begin{definition}[\DescribeMacro\glsxtrifhasfield] +\cs{glsxtrifhasfield}\marg{field}\marg{label}\marg{true}\marg{false} +\end{definition} +(New to v1.19.) Note that in this case the \meta{field} must be the +\emph{internal} field label (for example, \texttt{useri} rather than +\texttt{user1}). +Unlike \cs{ifglshasfield}, this version doesn't complain if the +entry (given by \meta{label}) or the field don't exist and +will simply do \meta{false}. If the field does exist for the given +entry and it's not empty, the \meta{true} part is done otherwise it +does \meta{false}. Within \meta{true} you may use +\begin{definition}[\DescribeMacro\glscurrentfieldvalue] +\cs{glscurrentfieldvalue} +\end{definition} +to access the field value. This command includes grouping +which scopes the \meta{true} and \meta{false} parts. +The starred version +\begin{definition}[\DescribeMacro{\glsxtrifhasfield*}] +\cs{glsxtrifhasfield*}\marg{field}\marg{label}\marg{true}\marg{false} +\end{definition} +omits the implicit grouping. + +\begin{important} +Be careful of keys that use \cs{relax} as the default value +(such as the \gloskey{symbol}). Use \cs{ifglshassymbol} instead. +\end{important} + +There is also a version that simply uses \cs{ifcsundef}. It +doesn't save the field value, but can be used if you only +need to check if the field is defined without accessing it: +\begin{definition}[\DescribeMacro\GlsXtrIfFieldUndef] +\cs{GlsXtrIfFieldUndef}\marg{field}\marg{label}\marg{true}\marg{false} +\end{definition} + +\begin{important} +There's a difference between an undefined field and an unset field. +An undefined field hasn't been assigned any value (no +associated internal control sequence has been defined). If a defined +field has been defined to empty, then it's considered unset. +\cs{GlsXtrIfFieldUndef} implement \meta{false} for a defined +but empty field whereas \cs{glsxtrifhasfield} and \cs{ifglshasfield} +will implement \meta{false} a defined but empty field. +Remember that any keys that may be used in \cs{newglossaryentry} +will have a default value if not provided. In many cases, the +default value is empty, so only use \cs{GlsXtrIfFieldUndef} +for fields that can only be defined through commands like +\cs{GlsXtrSetField}. +\end{important} + +You can test if a field value equals a string using +\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqStr}] +\cs{GlsXtrIfFieldEqStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false} +\end{definition} +If the entry exists and has the given field set to the +given text then this does \meta{true} otherwise it does +\meta{false}. This uses \cs{glsxtrifhasfield} +to test if the field exists and then compares the replacement +text of \cs{glscurrentfieldvalue} with \meta{text} using +\sty{etoolbox}'s \cs{ifdefstring}. Version 1.39 introduced +a starred form of this command, which uses the starred form +of \cs{glsxtrifhasfield}. + +As from version 1.31, there's a similar command: +\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqXpStr}] +\cs{GlsXtrIfFieldEqXpStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false} +\end{definition} +This is like \cs{GlsXtrIfFieldEqStr} but first (protected) fully +expands \meta{text} (but not the field value). If you want to +compare the (protected) full expansion of both the field value and \meta{text} +use: +\begin{definition}[\DescribeMacro{\GlsXtrIfXpFieldEqXpStr}] +\cs{GlsXtrIfXpFieldEqXpStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false} +\end{definition} +Again, version 1.39 introduced a starred form of these commands, +which use the starred form of \cs{glsxtrifhasfield}. + +As from v1.31, if a field represents a numeric (integer) value, you +can use the following two numeric tests. If the field is set, it must +expand to an integer. You may use \cs{glscurrentfieldvalue} +within \meta{true} or \meta{false} to access the actual value. Both \meta{true} +and \meta{false} are scoped. If the field is undefined or empty, +the value is assumed to be 0, and \cs{glscurrentfieldvalue} is set +accordingly. As from version 1.39, these numeric tests have +starred versions. The unstarred versions add implicit grouping. +The starred versions don't. + +To test if the value is non-zero: +\begin{definition}[\DescribeMacro{\GlsXtrIfFieldNonZero}] +\cs{GlsXtrIfFieldNonZero}\marg{field}\marg{label}\marg{true}\marg{false} +\end{definition} +Alternatively, you can test if the field expands to a specific +number using: +\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqNum}] +\cs{GlsXtrIfFieldEqNum}\marg{field}\marg{label}\marg{n}\marg{true}\marg{false} +\end{definition} +This does \meta{true} if the field value equals \meta{n} +(using \cs{ifnum} for the comparison) otherwise it does +\meta{false}. For a more general numeric comparison you +can use: +\begin{definition}[\DescribeMacro{\GlsXtrIfFieldCmpNum}] +\cs{GlsXtrIfFieldCmpNum}\marg{field}\marg{label}\marg{comparison}\marg{n}\marg{true}\marg{false} +\end{definition} +where \meta{comparison} is one of \texttt{=}, \texttt{<} or +\texttt{>}. + +The \styfmt{glossaries} package provides \ics{glsfieldfetch} which +can be used to fetch the value of the given field and store it in a +control sequence. The \styfmt{glossaries-extra} package provides +another way of accessing the field value: +\begin{definition}[\DescribeMacro\glsxtrusefield] +\cs{glsxtrusefield}\marg{entry-label}\marg{field-label} +\end{definition} +This works in the same way as commands like \cs{glsentrytext} but +the field label is specified in the first argument. Note that the +\meta{field-label} corresponds to the internal field tag, which +isn't always the same as the key name. See Table~4.1 of the +\sty{glossaries} manual. No error occurs if the entry or field +haven't been defined. This command is not robust. + +There is also a version that converts the first letter to uppercase +(analogous to \cs{Glsentrytext}): +\begin{definition}[\DescribeMacro\Glsxtrusefield] +\cs{Glsxtrusefield}\marg{entry-label}\marg{field-label} +\end{definition} +and, as from v1.37, a command that converts the entire value to upper case: +\begin{definition}[\DescribeMacro\GLSxtrusefield] +\cs{GLSxtrusefield}\marg{entry-label}\marg{field-label} +\end{definition} + +If you want to use a field to store a list that can be used +as an \sty{etoolbox} internal list, you can use the following +command that adds an item to the field using \sty{etoolbox}'s +\cs{listcsadd}: +\begin{definition}[\DescribeMacro\glsxtrfieldlistadd] +\cs{glsxtrfieldlistadd}\marg{label}\marg{field}\marg{item} +\end{definition} +where \meta{label} is the entry's label, \meta{field} is +the entry's field and \meta{item} is the item to add. There +are analogous commands that use \cs{listgadd}, \cs{listeadd} +and \cs{listxadd}: +\begin{definition}[\DescribeMacro\glsxtrfieldlistgadd] +\cs{glsxtrfieldlistgadd}\marg{label}\marg{field}\marg{item} +\end{definition} +\begin{definition}[\DescribeMacro\glsxtrfieldlisteadd] +\cs{glsxtrfieldlisteadd}\marg{label}\marg{field}\marg{item} +\end{definition} +\begin{definition}[\DescribeMacro\glsxtrfieldlistxadd] +\cs{glsxtrfieldlistxadd}\marg{label}\marg{field}\marg{item} +\end{definition} +You can then iterate over the list using: +\begin{definition}[\DescribeMacro\glsxtrfielddolistloop] +\cs{glsxtrfielddolistloop}\marg{label}\marg{field} +\end{definition} +or +\begin{definition}[\DescribeMacro\glsxtrfieldforlistloop] +\cs{glsxtrfieldforlistloop}\marg{label}\marg{field}\marg{handler} +\end{definition} +that internally use \cs{dolistcsloop} and \cs{forlistloop}, +respectively. + +There are also commands that use \cs{ifinlistcs}: +\begin{definition}[\DescribeMacro\glsxtrfieldifinlist] +\cs{glsxtrfieldifinlist}\marg{label}\marg{field}\marg{item}\marg{true}\marg{false} +\end{definition} +and \cs{xifinlistcs} +\begin{definition}[\DescribeMacro\glsxtrfieldxifinlist] +\cs{glsxtrfieldxifinlist}\marg{label}\marg{field}\marg{item}\marg{true}\marg{false} +\end{definition} + +See the \sty{etoolbox}'s user manual for further +details of these commands, in particular the limitations +of \cs{ifinlist}. + +If the field has a comma-separated list value instead, you +can iterate over it using: +\begin{definition}[\DescribeMacro\glsxtrforcsvfield] +\cs{glsxtrforcsvfield}\marg{label}\marg{field}\marg{handler} +\end{definition} +where again \meta{handler} is a control sequence that takes +a single argument. Unlike the \sty{etoolbox} loops, this +doesn't ignore empty elements nor does it discard leading / trailing +spaces. Internally it uses \cs{@for} (modified by \sty{xfor} +which is automatically loaded by \sty{glossaries}). The +\sty{xfor} package modifies the behaviour of \cs{@for} to allow +the loop to be broken prematurely using \cs{@endfortrue}. +The \cs{glsxtrforcsvfield} command locally defines +a user level command: +\begin{definition}[\DescribeMacro\glsxtrendfor] +\cs{glsxtrendfor} +\end{definition} +which is just a synonym for \cs{@endfortrue}. + +The loop is performed within the true part of \cs{glsxtrifhasfield} +so scoping is automatically applied. + +As from version 1.32, if the field given by +\begin{definition}[\DescribeMacro\GlsXtrForeignTextField] +\cs{GlsXtrForeignTextField} +\end{definition} +(which defaults to \texttt{userii}) contains a locale tag, then +\begin{definition}[\DescribeMacro\GlsXtrForeignText] +\cs{GlsXtrForeignText}\marg{entry label}\marg{text} +\end{definition} +can be used to encapsulate \meta{text} in +\cs{foreignlanguage}\marg{dialect}\marg{text} where \meta{dialect} +is obtained from the locale tag through \sty{tracklang}'s +\ics{GetTrackedDialectFromLanguageTag} command. You need at least +\sty{tracklang} v1.3.6 for this to work properly. The \meta{dialect} +must be one that's tracked (which typically means that \sty{babel} +or \sty{polyglossia} has been loaded with the appropriate setting +for that language). If \cs{foreignlanguage} hasn't been defined, +this just does \meta{text}. +For example: +\begin{verbatim} +\documentclass{article} + +\usepackage[main=british,brazilian,ngerman]{babel} +\usepackage{glossaries-extra} + +\setabbreviationstyle{long-short-user} +\newabbreviation + [user1={Associa\c{c}\~ao Brasileria de Normas T\'ecnicas}, + user2= {pt-BR} + ] + {abnt}{ABNT}{Brazilian National Standards Organization} + +\newabbreviation + [user1={Deutsches Institut f\"ur Normung e.V.}, + user2={de-DE-1996}] + {din}{DIN}{German Institute for Standardization} + +\renewcommand*{\glsxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1% + \ifglshasfield{\glsxtruserfield}{#2}% + {, \emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}% + {}% + }% +} + +\begin{document} +\gls{abnt}, \gls{din}. +\end{document} +\end{verbatim} + + +When using the \pkgopt{record} option, in addition to recording the +usual location, you can also record the current value +of another counter at the same time using the preamble-only command: +\begin{definition}[\DescribeMacro\GlsXtrRecordCounter] +\cs{GlsXtrRecordCounter}\marg{counter name} +\end{definition} +For example: +\begin{verbatim} +\usepackage[record]{glossaries-extra} +\GlsXtrRecordCounter{section} +\end{verbatim} +Each time an entry is referenced with commands like \cs{gls} +or \cs{glstext}, the \texttt{.aux} file will not only contain +the \cs{glsxtr@record} command but also +\begin{alltt} +\cs{glsxtr@counterrecord}\marg{label}\{section\}\marg{n} +\end{alltt} +where \meta{n} is the current expansion of \cs{thesection} +and \meta{label} is the entry's label. On the next run, when the +\texttt{.aux} file is run, this command will do +\begin{alltt} +\cs{glsxtrfieldlistgadd}\marg{label}\{record.\meta{counter}\}\marg{n} +\end{alltt} +In the above example, if \verb|\gls{bird}| is used in section~1.2 +this would be +\begin{verbatim} +\glsxtrfieldlistgadd{bird}{record.section}{1.2} +\end{verbatim} +Note that there's no key corresponding to this new +\texttt{record.section} field, but its value can be +accessed with \cs{glsxtrfielduse} or the list can be +iterated over with \cs{glsxtrfielddolistloop} etc. + +\section{Display All Entries Without Sorting or Indexing} +\label{sec:printunsrt} + +\begin{definition}[\DescribeMacro\printunsrtglossary] +\cs{printunsrtglossary}\oarg{options} +\end{definition} +This behaves like \cs{printnoidxglossary} but never sorts the +entries and always lists all the defined entries for the given +glossary (and doesn't require \cs{makenoidxglossaries}). +If you want to use one of the \env{tabular}-like +styles with \cs{printunsrtglossary}, make sure you load +\sty{glossaries-extra-stylemods} which modifies +the definition of \cs{glsgroupskip} to avoid the +\qt{Incomplete \cs{iftrue}} error that may otherwise occur. + +There's also a starred form +\begin{definition}[\DescribeMacro{\printunsrtglossary*}] +\cs{printunsrtglossary}*\oarg{options}\marg{code} +\end{definition} +which is equivalent to +\begin{alltt} +\cs{begingroup} + \meta{code}\cs{printunsrtglossary}\oarg{options}\% +\cs{endgroup} +\end{alltt} +Note that unlike \cs{glossarypreamble}, the supplied \meta{code} is +done before the glossary header. + +This means you now have the option to simply list all entries on the +first \LaTeX\ run without the need for a post-processor, however +there will be no \gls{numberlist} in this case, as that has to be +set by a post-processor such as \gls{bib2gls} (see +\sectionref{sec:bib2gls}). + +\begin{important} +No attempt is made to gather hierarchical elements. +If child entries aren't defined immediately after their parent +entry, they won't be together in the glossary when using +\cs{printunsrtglossary}. +\end{important} + +There's a difference in behaviour depending on whether or not the +\gloskey{group} key is defined. If not defined (default), the +group label will be formed from the first letter of the +\gloskey{name} field. The corresponding group title will be obtained +as discussed in \sectionref{sec:glosstylemods}. This can lead to an +odd effect if you are using a style that separates letter groups +when the ordering isn't alphabetical. + +If the \gloskey{group} key is defined (which it is with the +\pkgopt{record} option) then the group label will be obtained from +the value of that field. If the field is empty, \emph{no grouping is +performed}, even if the style supports it. (That is, there won't be +a header or a vertical separation.) If the \gloskey{group} field is +non-empty, then the corresponding title is obtained as described +earlier. + +If you want to use a different field, you can redefine +\begin{definition}[\DescribeMacro\glsxtrgroupfield] +\cs{glsxtrgroupfield} +\end{definition} +to the relevant internal field label, but the \gloskey{group} +\emph{key} must still be defined (through the \pkgopt{record} option +or with commands like \cs{glsaddstoragekey}) to ensure that +\cs{printunsrtglossary} uses \cs{glsxtrgroupfield}. (This method is +used by \gls{bib2gls} for secondary entries, which have the group +label stored in the \texttt{secondarygroup} internal field.) + +If you have any entries with the \gloskey{see} key set, you will +need the \sty{glossaries} package option \pkgopt[ignore]{seenoindex} +or \pkgopt[warn]{seenoindex} to prevent an error occurring from the +automated \cs{glssee} normally triggered by this key. The +\pkgopt[only]{record} package option will automatically deal with +this. + +For example: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} + +\newglossaryentry{zebra}{name={zebra},description={stripy animal}} +\newglossaryentry{ant}{name={ant},description={an insect}} + +\begin{document} +\gls{ant} and \gls{zebra} + +\printunsrtglossaries +\end{document} +\end{verbatim} +In the above, zebra will be listed before ant as it was defined +first. + +If you allow document definitions with the \pkgopt{docdefs} option, +the document will require a second \LaTeX\ run if the entries are +defined after \cs{printunsrtglossary}. + +The optional argument is as for \cs{printnoidxglossary} (except for +the \gloskey[printnoidxglossary]{sort} key, which isn't available). + +All glossaries may be displayed in the order of their definition +using: +\begin{definition}[\DescribeMacro\printunsrtglossaries] +\cs{printunsrtglossaries} +\end{definition} +which is analogous to \cs{printnoidxglossaries}. This just +iterates over all defined glossaries (that aren't on the ignored +list) and does \cs{printunsrtglossary}[type=\meta{type}]. + +To avoid complications caused by \env{tabular}-like glossary +styles, \cs{printunsrtglossary} iterates over all entries +in the selected glossary and appends the appropriate code +to an internal command. Once the construction of this +command is complete, then it's performed to display the +glossary. This puts the loop outside the style code. +For convenience, there's a hook used within the loop: +\begin{definition}[\DescribeMacro\printunsrtglossaryentryprocesshook] +\cs{printunsrtglossaryentryprocesshook}\marg{label} +\end{definition} +This hook should not display any content, but may be used +to perform calculations. For example, to calculate widths. +Within this hook you can use: +\begin{definition}[\DescribeMacro\printunsrtglossaryskipentry] +\cs{printunsrtglossaryskipentry} +\end{definition} +to skip the current entry. This will prevent the entry from +being added to the internal command. + +There's another hook immediately before the internal command +containing the glossary code is performed: +\begin{definition}[\DescribeMacro\printunsrtglossarypredoglossary] +\cs{printunsrtglossarypredoglossary} +\end{definition} + +The internal command uses +\begin{definition}[\DescribeMacro\printunsrtglossaryhandler] +\cs{printunsrtglossaryhandler}\marg{label} +\end{definition} +to display each item in the list, where \meta{label} is the current label. + +By default the handler just does +\begin{definition}[\DescribeMacro\glsxtrunsrtdo] +\cs{glsxtrunsrtdo}\marg{label} +\end{definition} +which determines whether to use \cs{glossentry} or +\cs{subglossentry} and checks the \gloskey{location} and +\gloskey{loclist} fields for the \gls{numberlist}. If you want to +use a different field to be used instead of \gloskey{location} +then redefine: +\begin{definition}[\DescribeMacro\GlsXtrLocationField] +\cs{GlsXtrLocationField} +\end{definition} +to the internal name of the desired field. For example: +\begin{verbatim} +\renewcommand{\GlsXtrLocationField}{primarylocation} +\end{verbatim} +\begin{important} +Note that if the given location field is undefined or unset, +the handler will fallback on the \gloskey{loclist} field. +\end{important} +You can instruct \gls{bib2gls} to omit setting the \gloskey{loclist} +field with the resource option \texttt{--save-loclist=false} +to prevent it from being used as a fallback. + +You can redefine the handler if required. For example, +you may want to filter entries according to the category +label. You can test if a label is contained in a comma-separated +list of labels using: +\begin{definition}[\DescribeMacro\glsxtriflabelinlist] +\cs{glsxtriflabelinlist}\marg{label}\marg{label list}\marg{true}\marg{false} +\end{definition} +The \meta{label} and \meta{label list} will be fully expanded. + +\begin{important} +If you redefine the handler to exclude entries, you may end +up with an empty glossary. This could cause a problem for +the list-based styles. +\end{important} + +For example, if the preamble includes: +\begin{verbatim} +\usepackage[record,style=index]{glossaries-extra} +\GlsXtrRecordCounter{section} +\end{verbatim} +then you can print the glossary but first redefine the handler +to only select entries that include the current section number +in the \texttt{record.section} field: +\begin{verbatim} +\renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + {\glsxtrunsrtdo{#1}}% + {}% +} +\end{verbatim} + +Alternatively you can use the starred form of +\cs{printunsrtglossary} which will localise the change: + +\begin{verbatim} +\printunsrtglossary*{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + {\glsxtrunsrtdo{#1}}% + {}% + }% +} +\end{verbatim} + +If you are using the \sty{hyperref} package and want to +display the same glossary more than once, you can also +add a temporary redefinition of \cs{glolinkprefix} to +avoid duplicate hypertarget names. For example: + +\begin{verbatim} +\printunsrtglossary*{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + {\glsxtrunsrtdo{#1}}% + {}% + }% + \ifcsundef{theHsection}% + {% + \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + }% + {% + \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + }% +} +\end{verbatim} +Note that this will cause a problem if your descriptions +contain commands like \cs{gls} that need to link an entry that +doesn't appear in the summary. In this case, it's a better approach +to use: +\begin{verbatim} +\printunsrtglossary*{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + {\glsxtrunsrtdo{#1}}% + {}% + }% + \ifcsundef{theHsection}% + {% + \setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}% + }% + {% + \setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}% + }% +} +\end{verbatim} + +If it's a short summary at the start of a section, you might +also want to suppress the glossary header and add some vertical +space afterwards: +\begin{verbatim} +\printunsrtglossary*{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + {\glsxtrunsrtdo{#1}}% + {}% + }% + \ifcsundef{theHsection}% + {% + \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + }% + {% + \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + }% + \renewcommand*{\glossarysection}[2][]{}% + \appto\glossarypostamble{\glspar\medskip\glspar}% +} +\end{verbatim} + +There's a shortcut command that essentially does this: +\begin{definition}[\DescribeMacro\printunsrtglossaryunit] +\cs{printunsrtglossaryunit}\oarg{options}\marg{counter name} +\end{definition} +The above example can simply be replaced with: +\begin{verbatim} +\printunsrtglossaryunit{section} +\end{verbatim} + +This shortcut command is actually defined to use \cs{printunsrtglossary*} with +\begin{definition}[\DescribeMacro\printunsrtglossaryunitsetup] +\cs{printunsrtglossaryunitsetup}\marg{counter name} +\end{definition} +so if you want to just make some minor modifications you can +do +\begin{verbatim} +\printunsrtglossary*{\printunsrtglossaryunitsetup{section}% + \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}% +} +\end{verbatim} +which will start the list with a subsection header with the +title \qt{Summary} (overriding the glossary's title). + +Note that this shortcut command is only available with the +\pkgopt{record} (or \pkgopt[alsoindex]{record}) package option. + +This temporary change in the hypertarget prefix means you +need to explicitly use \cs{hyperlink} to create a link to it +as commands like \cs{gls} will try to link to the target +created with the default definition of \cs{gloslinkprefix}. +This isn't a problem if you want a primary glossary of all terms +produced using just \cs{printunsrtglossary} (in the front or back +matter) which can be the target for all glossary references +and then just use \cs{printunsrtglossaryunit} for a quick +summary at the start of a section etc. + +\section{Standalone Entry Items} +\label{sec:glossentry} + +It may be that you don't want a list but would rather display +entry details throughout the document. You can simply +do \cs{glsentryname} followed by \cs{glsentrydesc}. +(Remember that if you don't want a sorted list, use +\pkgopt[none]{sort} to skip the construction of the +\gloskey{sort} field.) +For example, in the preamble provide a custom command: +\begin{verbatim} +\newcommand{\displayterm}[1]{% + \par\medskip\par\noindent + Definition: \glsentryname{#1}.\par + \glsentrydesc{#1} + \par\medskip +} +\end{verbatim} +define your entries +\begin{verbatim} +\newglossaryentry{function}{name={function}, + description={a relation or expression involving variables} +} +\end{verbatim} +and then later in the text: +\begin{verbatim} +\displayterm{function} +\end{verbatim} + +However, if may be that you want to use \sty{hyperref} and +have commands like \cs{gls} link back to the place where +the term is described. Instead of using \cs{glsentryname} +use +\begin{definition}[\DescribeMacro\glsxtrglossentry] +\cs{glsxtrglossentry}\marg{label} +\end{definition} +where \meta{label} is the entry's label. + +This is designed to behave much like the way the name is displayed +in the glossary. It performs the following: +\begin{itemize} +\item Defines \cs{glscurrententrylabel} to the entry's label. +This is usually done at the start of the glossary style commands +\cs{glossentry} and \cs{subglossentry} and may be used by hooks, +such as the post-name hooks. Here the definition is localised +so that it's only available for use in \cs{glossentryname}. + +\item Defines \cs{currentglossary} to the entry's glossary type. +This is usually done at the start of commands like +\cs{printglossary} and may be used by style hooks. +Here the definition is localised so that it's only available for use +in \cs{glsentryitem} and \cs{glssubentryitem}. The value is obtained +by fully expanding: +\begin{definition}[\DescribeMacro\GlsXtrStandaloneGlossaryType] +\cs{GlsXtrStandaloneGlossaryType} +\end{definition} +which defaults to the value of the \gloskey{type} field for the +current entry. + +\item Increments and display the entry counters + if the \pkgopt{entrycounter} or \pkgopt{subentrycounter} + package options are set. If the entry doesn't have a parent, then + this does + \begin{itemize} + \item \cs{glsentryitem}\marg{label} + \end{itemize} + otherwise it does (as from v1.31) + \begin{itemize} + \item \ics{GlsXtrStandaloneSubEntryItem}\marg{label} +which defaults to \cs{glssubentryitem}\marg{label} if the entry +has a parent but not a grandparent. + \end{itemize} + This reflects the behaviour of the predefined hierarchical styles. +A bug in pre-version~1.31 used \cs{glsentryitem} for all child levels, +which doesn't match the hierarchical glossary styles. If you want to +restore this behaviour, just do: +\begin{verbatim} +\renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}} +\end{verbatim} + +\item Sets the hyper-target if supported (using \cs{glstarget}) +and displays the entry name using: +\begin{definition}[\DescribeMacro\GlsXtrStandaloneEntryName] +\cs{GlsXtrStandaloneEntryName}\marg{label} +\end{definition} + which uses + \cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\} + by default. + Remember that \cs{glossentryname} uses \cs{glsnamefont} or picks up + the style from category attributes such as + \catattr{glossnamefont}. +\end{itemize} +If you have used \ics{nopostdesc} or \ics{glsxtrnopostpunc} +in any of your description fields, you can use +\begin{definition}[\DescribeMacro\glsxtractivatenopost] +\cs{glsxtractivatenopost} +\end{definition} +to make these commands behave as they normally do within a glossary. +This needs to be placed before +\begin{alltt} +\cs{glossentrydesc}\marg{label}\cs{glspostdescription} +\end{alltt} +and scoped. Note that \cs{glsnonextpages} and \cs{glsnextpages} have no +effect outside of the glossary and are not intended for use in a +standalone context. + +It's also possible to select a different field (rather than +using \gloskey{name}): +\begin{definition}[\DescribeMacro\glsxtrglossentryother] +\cs{glsxtrglossentryother}\marg{header}\marg{label}\marg{field} +\end{definition} +The \meta{field} must be given using its internal field label +which may not be the same as the key used to set the field. +See the key to field mappings table in the \styfmt{glossaries} +user manual. The \meta{header} argument is the code +to pass to the third argument of \cs{glsxtrtitleorpdforheading}. +It may be left empty in which case the default is determined as follows: +\begin{itemize} +\item If \cs{glsxtrhead\meta{field}} is defined, then \meta{header} +is \cs{glsxtrhead\meta{field}}\marg{label}. +\item Otherwise \meta{header} is simply the field value. +\end{itemize} +The \cs{glsxtrglossentryother} command internally uses +\begin{definition}[\DescribeMacro\GlsXtrStandaloneEntryOther] +\cs{GlsXtrStandaloneEntryOther}\marg{label}\marg{field} +\end{definition} +instead of \cs{GlsXtrStandaloneEntryName}, which uses +\cs{glossentrynameother}\marg{label}\marg{field} instead of +\cs{glossentryname}\marg{label}. + +If you have loaded the +\sty{glossaries-accsupp} package (through the \pkgopt{accsupp} +option) then accessibility support will be provided if +there's a corresponding command +\begin{alltt} +\cs{gls\meta{field}accessdisplay}\marg{text}\marg{label} +\end{alltt} +(for example, \cs{glssymbolaccessdisplay}). + +This means that my custom command can be changed to: +\begin{verbatim} +\newcommand{\displayterm}[1]{% + \par\medskip\par\noindent + Definition: \glsxtrglossentry{#1}.\par + \glsentrydesc{#1} + \par\medskip +} +\end{verbatim} +If I want numbered definitions, then I can use the +package options \sty{entrycounter} or \sty{subentrycounter} +and remove the colon: +\begin{verbatim} +\newcommand{\displayterm}[1]{% + \par\medskip\par\noindent + Definition \glsxtrglossentry{#1}.\par + \glsentrydesc{#1} + \par\medskip +} +\end{verbatim} +The counter label uses a dot after the number by default +but this can be changed to a colon: +\begin{verbatim} +\renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space} +\end{verbatim} +It's now possible to not only use \cs{gls} to link back to the +definition but also use \cs{glsrefentry} to reference +the counter and \cs{glsxtrpageref} to reference the page number. + +If I want the description to behave more like it does +in a glossary in need to make the following modification: +\begin{verbatim} +\newcommand{\displayterm}[1]{% + \par\medskip\par\noindent + Definition \glsxtrglossentry{#1}.\par + \begingroup + \glsxtractivatenopost + \glossentrydesc{#1}\glspostdescription + \endgroup + \par\medskip +} +\end{verbatim} +(Note the grouping to localise \cs{glsxtractivatenopost}.) + +You can also use \cs{glsxtrglossentry} within section headings. +For example: +\begin{verbatim} +\section{\glsxtrglossentry{function}} +\end{verbatim} +This will use \cs{glsentryname} in PDF bookmarks (if +\cs{texorpdfstring} is defined) and will use \cs{glsxtrheadname} in +page headers and table of contents. (If you're using a page style or +table of contents that doesn't use \cs{markright} or \cs{markbook} +or \cs{@starttoc} then you need to insert \cs{glsxtrmarkhook} and +\cs{@glsxtrinmark} at the start of the header or table of contents +either scoped or afterwards cancelled with \cs{@glsxtrnotinmark} and +\cs{glsxtrrestoremarkhook}.) + +\section{Entry Aliases} +\label{sec:alias} + +An entry can be made an alias of another entry using the +\gloskey{alias} key. The value should be the label of the other +term. There's no check for the other's existence when the aliased +entry is defined. This is to allow the possibility of defining the +other entry after the aliased entry. (For example, when used with +\gls{bib2gls}.) + +If an entry \meta{entry-1} is made an alias of \meta{entry-2} then: +\begin{itemize} +\item If the \gloskey{see} field wasn't provided when \meta{entry-1} +was defined, the \gloskey{alias} key will automatically trigger +\begin{alltt} +\cs{glssee}\marg{entry-1}\marg{entry-2} +\end{alltt} +\item If the \sty{hyperref} package has been loaded then +\cs{gls}\marg{entry-1} will link to \meta{entry-2}'s target. (Unless +the \catattr{targeturl} attribute has been set for \meta{entry-1}'s +category.) +\item With \pkgopt[off]{record} or \pkgopt[alsoindex]{record}, the \gloskey[glslink]{noindex} setting will automatically be triggered +when referencing \meta{entry-1} with commands like \cs{gls} or +\cs{glstext}. This prevents \meta{entry-1} from have a +\gls{locationlist} (aside from the cross-reference added with +\cs{glssee}) unless it's been explicitly indexed with \cs{glsadd} or +if the indexing has been explicitly set using +\texttt{noindex=false}. + +Note that with \pkgopt[only]{record}, the \gls{locationlist} +for aliased entries is controlled with \gls{bib2gls}['s] settings. +\end{itemize} + +The index suppression trigger is performed by +\begin{definition}[\DescribeMacro\glsxtrsetaliasnoindex] +\cs{glsxtrsetaliasnoindex} +\end{definition} +This is performed after the default options provided by +\ics{GlsXtrSetDefaultGlsOpts} have been set. +With \pkgopt[only]{record}, \cs{glsxtrsetaliasnoindex} will +default to do nothing. + +Within the definition of \cs{glsxtrsetaliasnoindex} you can use +\begin{definition}[\DescribeMacro\glsxtrindexaliased] +\cs{glsxtrindexaliased} +\end{definition} +to index \meta{entry-2}. + +The index suppression command can be redefined to index the main +term instead. For example: +\begin{verbatim} +\renewcommand{\glsxtrsetaliasnoindex}{% + \glsxtrindexaliased + \setkeys{glslink}{noindex}% +} +\end{verbatim} + +The value of the \gloskey{alias} field can be accessed using +\begin{definition}[\DescribeMacro\glsxtralias] +\cs{glsxtralias}\marg{label} +\end{definition} + +\chapter{Supplemental Packages} +\label{sec:supplemental} + +The \styfmt{glossaries} bundle provides additional support packages +\sty{glossaries-prefix} (for prefixing) and \sty{glossaries-accsupp} +(for accessibility support). These packages aren't automatically +loaded. + +\section{Prefixes or Determiners} +\label{sec:prefix} + +If prefixing is required, you can simply load +\sty{glossaries-prefix} after \styfmt{glossaries-extra}. For example: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} +\usepackage{glossaries-prefix} + +\makeglossaries + +\newabbreviation + [prefix={an\space}, + prefixfirst={a~}] + {svm}{SVM}{support vector machine} + +\begin{document} + +First use: \pgls{svm}. +Next use: \pgls{svm}. + +\printglossaries + +\end{document} +\end{verbatim} + +\section{Accessibility Support} +\label{sec:accsupp} + +The \sty{glossaries-accsupp} package needs to be loaded before +\styfmt{glossaries-extra} or through the \pkgopt{accsupp} package +option: +\begin{verbatim} +\usepackage[accsupp]{glossaries-extra} +\end{verbatim} +If you don't load \sty{glossaries-accsupp} or you load +\sty{glossaries-accsupp} after \styfmt{glossaries-extra} +the new \cs{glsaccess}\meta{xxx} commands described below will +simply be equivalent to the corresponding \cs{glsentry}\meta{xxx} +commands. + +The following \cs{glsaccess}\meta{xxx} commands add accessibility information wrapped around +the corresponding \cs{glsentry}\meta{xxx} commands. There is +no check for existence of the entry nor do any of these commands +add formatting, hyperlinks or indexing information. + +\begin{definition}[\DescribeMacro\glsaccessname] +\cs{glsaccessname}\marg{label} +\end{definition} +This displays the value of the \gloskey{name} field for the entry +identified by \meta{label}. + +If the \sty{glossaries-accsupp} package isn't loaded, this is +simply defined as: +\begin{verbatim} +\newcommand*{\glsaccessname}[1]{\glsentryname{#1}} +\end{verbatim} +otherwise it's defined as: +\begin{verbatim} +\newcommand*{\glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \glsentryname{#1}% + }% + {#1}% +} +\end{verbatim} +(\ics{glsnameaccessdisplay} is defined by the +\sty{glossaries-accsupp} package.) The first letter upper case +version is: +\begin{definition}[\DescribeMacro\Glsaccessname] +\cs{Glsaccessname}\marg{label} +\end{definition} +Without the \sty{glossaries-accsupp} package this is just defined +as: +\begin{verbatim} +\newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} +\end{verbatim} +With the \sty{glossaries-accsupp} package this is defined as: +\begin{verbatim} +\newcommand*{\Glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \Glsentryname{#1}% + }% + {#1}% +} +\end{verbatim} + +The following commands are all defined in an analogous manner. +\begin{definition}[\DescribeMacro\glsaccesstext] +\cs{glsaccesstext}\marg{label} +\end{definition} +This displays the value of the \gloskey{text} field. + +\begin{definition}[\DescribeMacro\Glsaccesstext] +\cs{Glsaccesstext}\marg{label} +\end{definition} +This displays the value of the \gloskey{text} field with the first +letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessplural] +\cs{glsaccessplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{plural} field. + +\begin{definition}[\DescribeMacro\Glsaccessplural] +\cs{Glsaccessplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{plural} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessfirst] +\cs{glsaccessfirst}\marg{label} +\end{definition} +This displays the value of the \gloskey{first} field. + +\begin{definition}[\DescribeMacro\Glsaccessfirst] +\cs{Glsaccessfirst}\marg{label} +\end{definition} +This displays the value of the \gloskey{first} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessfirstplural] +\cs{glsaccessfirstplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{firstplural} field. + +\begin{definition}[\DescribeMacro\Glsaccessfirstplural] +\cs{Glsaccessfirstplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{firstplural} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccesssymbol] +\cs{glsaccesssymbol}\marg{label} +\end{definition} +This displays the value of the \gloskey{symbol} field. + +\begin{definition}[\DescribeMacro\Glsaccesssymbol] +\cs{Glsaccesssymbol}\marg{label} +\end{definition} +This displays the value of the \gloskey{symbol} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccesssymbolplural] +\cs{glsaccesssymbolplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{symbolplural} field. + +\begin{definition}[\DescribeMacro\Glsaccesssymbolplural] +\cs{Glsaccesssymbolplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{symbolplural} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessdesc] +\cs{glsaccessdesc}\marg{label} +\end{definition} +This displays the value of the \gloskey{description} field. + +\begin{definition}[\DescribeMacro\Glsaccessdesc] +\cs{Glsaccessdesc}\marg{label} +\end{definition} +This displays the value of the \gloskey{description} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessdescplural] +\cs{glsaccessdescplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{descriptionplural} field. + +\begin{definition}[\DescribeMacro\Glsaccessdescplural] +\cs{Glsaccessdescplural}\marg{label} +\end{definition} +This displays the value of the \gloskey{descriptionplural} field +with the first letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessshort] +\cs{glsaccessshort}\marg{label} +\end{definition} +This displays the value of the \gloskey{short} field. + +\begin{definition}[\DescribeMacro\Glsaccessshort] +\cs{Glsaccessshort}\marg{label} +\end{definition} +This displays the value of the \gloskey{short} field with the first +letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccessshortpl] +\cs{glsaccessshortpl}\marg{label} +\end{definition} +This displays the value of the \gloskey{shortplural} field. + +\begin{definition}[\DescribeMacro\Glsaccessshortpl] +\cs{Glsaccessshortpl}\marg{label} +\end{definition} +This displays the value of the \gloskey{shortplural} field with the first +letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccesslong] +\cs{glsaccesslong}\marg{label} +\end{definition} +This displays the value of the \gloskey{long} field. + +\begin{definition}[\DescribeMacro\Glsaccesslong] +\cs{Glsaccesslong}\marg{label} +\end{definition} +This displays the value of the \gloskey{long} field with the first +letter converted to upper case. + +\begin{definition}[\DescribeMacro\glsaccesslongpl] +\cs{glsaccesslongpl}\marg{label} +\end{definition} +This displays the value of the \gloskey{longplural} field. + +\begin{definition}[\DescribeMacro\Glsaccesslongpl] +\cs{Glsaccesslongpl}\marg{label} +\end{definition} +This displays the value of the \gloskey{longplural} field with the first +letter converted to upper case. + +\chapter{Sample Files} +\label{sec:samples} + +The following sample files are provided with this package: +\begin{description} +\item[sample.tex] Simple sample file that uses one of the dummy +files provided by the \styfmt{glossaries} package for testing. + +\item[sample-abbr-styles.tex] Demonstrates all predefined +abbreviation styles. + +\item[sample-mixture.tex] General entries, acronyms and initialisms +all treated differently. + +\item[sample-name-font] Categories and attributes are used to +customize the way different entries appear. + +\item[sample-abbrv.tex] General abbreviations. + +\item[sample-acronym.tex] Acronyms aren't initialisms and don't +expand on \gls{firstuse}. + +\item[sample-acronym-desc.tex] Acronyms that have a separate long +form and description. + +\item[sample-crossref.tex] Unused entries that have been +cross-referenced automatically are added at the end of the document. + +\item[sample-indexhook.tex] Use the index hook to track +which entries have been indexed (and therefore find out +which ones haven't been indexed). + +\item[sample-footnote.tex] Footnote abbreviation style that moves +the footnote marker outside of the hyperlink generated by \cs{gls} +and moves it after certain punctuation characters for neatness. + +\item[sample-undef.tex] Warn on undefined entries instead of +generating an error. + +\item[sample-mixed-abbrv-styles.tex] Different abbreviation styles +for different entries. + +\item[sample-initialisms.tex] Automatically insert dots into +initialisms. + +\item[sample-postdot.tex] Another initialisms example. + +\item[sample-postlink.tex] Automatically inserting text after +the \gls{linktext} produced by commands like \cs{gls} (outside +of hyperlink, if present). + +\item[sample-header.tex] Using entries in section/chapter headings. + +\item[sample-autoindex.tex] Using the \catattr{dualindex} and +\catattr{indexname} attributes to automatically add glossary +entries to the index (in addition to the glossary \gls{locationlist}). + +\item[sample-autoindex-hyp.tex] As previous but uses \sty{hyperref}. + +\item[sample-nested.tex] Using \ics{gls} within the +value of the \gloskey{name} key. + +\item[sample-entrycount.tex] Enable entry-use counting (only index +if used more than $n$ times, see \sectionref{sec:entrycount}). + +\item[sample-unitentrycount.tex] Enable use of per-unit entry-use counting +(\sectionref{sec:entrycount}). + +\item[sample-onelink.tex] Using the per-unit entry counting +(\sectionref{sec:entrycount}) +to only have one hyperlink per entry per page. + +\item[sample-linkcount.tex] Using link counting +(\sectionref{sec:linkcount}) +to only have one hyperlink per entry. + +\item[sample-pages.tex] Insert \qt{page} or \qt{pages} before the +location list. + +\item[sample-altmodifier.tex] Set the default options for +commands like \cs{gls} and add an alternative modifier. + +\item[sample-mixedsort.tex] Uses the optional argument +of \cs{makeglossaries} to allow a mixture of \cs{printglossary} +and \cs{printnoidxglossary}. + +\item[sample-external.tex] Uses the \catattr{targeturl} attribute +to allow for entries that should link to an external URL +rather than to an internal glossary. + +\item[sample-fmt.tex] Provides text-block commands associated +with entries in order to use \cs{glsxtrfmt}. + +\item[sample-alias.tex] Uses the \gloskey{alias} key. +(See \sectionref{sec:alias}.) + +\item[sample-alttree.tex] Uses the \sty{glossaries-extra-stylemods} +package with the \glostyle{alttree} style (see \sectionref{sec:stylemods}). + +\item[sample-alttree-sym.tex] Another \glostyle{alttree} example +that measures the symbol widths. + +\item[sample-alttree-marginpar.tex] Another \glostyle{alttree} example +that puts the \gls{numberlist} in the margin. + +\item[sample-onthefly.tex] Using on-the-fly commands. Terms with +accents must have the \gloskey{name} key explicitly set. + +\item[sample-onthefly-xetex.tex] Using on-the-fly commands +with \XeLaTeX. Terms with UTF-8 characters don't need to +have the \gloskey{name} key explicitly set. Terms that contain +commands must have the \gloskey{name} key explicitly set +with the commands removed from the label. + +\item[sample-onthefly-utf8.tex] Tries to emulate the previous +sample file for use with \LaTeX\ through the starred version +of \ics{GlsXtrEnableOnTheFly}. This is a bit iffy and may not +always work. Terms that contain commands must have the +\gloskey{name} key explicitly set with the commands removed from +the label. + +\item[sample-accsupp.tex] Integrate \sty{glossaries-accsupp}. + +\item[sample-prefix.tex] Integrate \sty{glossaries-prefix}. + +\item[sample-suppl-main.tex] Uses \gloskey[glsadd]{thevalue} to +reference a location in the supplementary file +\texttt{sample-suppl.tex}. + +\item[sample-suppl-main-hyp.tex] A more complicated version to the +above that uses the \sty{hyperref} package to reference a location +in the supplementary file \texttt{sample-suppl-hyp.tex}. + +\end{description} + +\chapter{Multi-Lingual Support} +\label{sec:lang} + +There's only one command provided by \styfmt{glossaries-extra} +that you're likely to want to change in your document and that's +\ics{abbreviationsname} (\sectionref{sec:pkgopts}) if you use +the \pkgopt{abbreviations} package option to automatically +create the glossary labelled \texttt{abbreviations}. If this +command doesn't already exist, it will be defined to +\qt{Abbreviations} if \sty{babel} hasn't been loaded, otherwise +it will be defined as \cs{acronymname} (provided by +\styfmt{glossaries}). + +You can redefine it in the usual way. For example: +\begin{verbatim} +\renewcommand*{\abbreviationsname}{List of Abbreviations} +\end{verbatim} +Or using \sty{babel} or \sty{polyglossia} captions hook: +\begin{verbatim} +\appto\captionsenglish{% + \renewcommand*{\abbreviationsname}{List of Abbreviations}% +} +\end{verbatim} + +Alternatively you can use the \gloskey[printglossary]{title} +key when you print the list of abbreviations. For example: +\begin{verbatim} +\printabbreviations[title={List of Abbreviations}] +\end{verbatim} +or +\begin{verbatim} +\printglossary[type=abbreviations,title={List of Abbreviations}] +\end{verbatim} + +The other fixed text commands are the diagnostic messages, which +shouldn't appear in the final draft of your document. + +The \styfmt{glossaries-extra} package has the facility to load +language modules (whose filename is in the form +\texttt{glossariesxtr-}\meta{language}\texttt{.ldf}) if they exist, +but won't warn if they don't. If \sty{glossaries-extra-bib2gls} is +loaded via the \pkgopt{record} package option then the check for +language resource files will additionally search for an associated +language script file given by +\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} where +\meta{script} is the four letter script identifier, such as +\texttt{Latn}, associated with the given dialect. There's no warning if the +associated file isn't found. The script file is loaded after the +dialect file. + +If you want to write your own language module, you just need to +create a file called +\texttt{glossariesxtr-}\meta{lang}\texttt{.ldf}, where \meta{lang} +identifies the language or dialect (see the \sty{tracklang} +package). For example, \texttt{glossariesxtr-french.ldf}. + +The simplest code for this file is: +\begin{verbatim} +\ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0] + +\newcommand*{\glossariesxtrcaptionsfrench}{% + \def\abbreviationsname{Abr\'eviations}% +} +\glossariesxtrcaptionsfrench + +\ifcsdef{captions\CurrentTrackedDialect} +{% + \csappto{captions\CurrentTrackedDialect}% + {% + \glossariesxtrcaptionsfrench + }% +}% +{% + \ifcsdef{captions\CurrentTrackedLanguage} + {% + \csappto{captions\CurrentTrackedLanguage}% + {% + \glossariesxtrcaptionsfrench + }% + }% + {}% +} +\end{verbatim} + +You can adapt this for other languages by replacing +all instances of the language identifier \texttt{french} and +the translated text \verb|Abr\'eviations| as appropriate. +You can also use the \texttt{.ldf} file to provide rule +blocks for a particular language for use with \gls{bib2gls}['s] custom +sort rule. See \sectionref{sec:bib2glssty} for further details. + +This \texttt{.ldf} file then needs to be put somewhere on \TeX's +path so that it can be found by \styfmt{glossaries-extra}. +You might also want to consider uploading it to CTAN so that +it can be useful to others. (Please don't send it to me. I already +have more packages than I am able to maintain.) + +If you additionally want to provide translations for the diagnostic +messages used when a glossary is missing, you need to redefine +the following commands: +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningHead] +\cs{GlsXtrNoGlsWarningHead}\marg{label}\marg{file} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningHead{\meta{label}}{\meta{file}} +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyStart] +\cs{GlsXtrNoGlsWarningEmptyStart} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningEmptyStart +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyMain] +\cs{GlsXtrNoGlsWarningEmptyMain} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningEmptyMain +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyNotMain] +\cs{GlsXtrNoGlsWarningEmptyNotMain}\marg{label} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningEmptyNotMain{\meta{label}} +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningCheckFile] +\cs{GlsXtrNoGlsWarningCheckFile}\marg{file} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningCheckFile{\meta{file}} +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningMisMatch] +\cs{GlsXtrNoGlsWarningMisMatch} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningMisMatch +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningNoOut] +\cs{GlsXtrNoGlsWarningNoOut}\marg{file} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningNoOut{\meta{file}} +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningTail] +\cs{GlsXtrNoGlsWarningTail} +\end{definition} +This produces the following text in English: +\begin{quote} +\GlsXtrNoGlsWarningTail +\end{quote} + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningBuildInfo] +\cs{GlsXtrNoGlsWarningBuildInfo} +\end{definition} +This is advice on how to generate the glossary files. +See the documented code (\texttt{glossaries-extra-code.pdf}) +for further details. + +\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningAutoMake] +\cs{GlsXtrNoGlsWarningAutoMake}\marg{label} +\end{definition} +This is the message produced when the \pkgopt{automake} option +is used, but the document needs a rerun or the shell escape +setting doesn't permit the execution of the external application. +This command also generates a warning in the transcript file. +See the documented code for further details. + +\printglossaries +\PrintIndex + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx new file mode 100644 index 0000000000..3d37899d9b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx @@ -0,0 +1,33306 @@ +%\iffalse +% glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot +% Command line args: +% -src "glossaries-extra.sty\Z=>glossaries-extra.sty" +% -src "glossaries-extra-bib2gls.sty\Z=>glossaries-extra-bib2gls.sty" +% -src "glossaries-extra-stylemods.sty\Z=>glossaries-extra-stylemods.sty" +% -src "glossary-bookindex.sty\Z=>glossary-bookindex.sty" +% -src "glossary-longextra.sty\Z=>glossary-longextra.sty" +% -src "glossary-topic.sty\Z=>glossary-topic.sty" +% -src "(example-glossaries-.+\.tex)\Z=>\1" +% -src "(example-glossaries-.+\.bib)\Z=>\1" +% -author "Nicola Talbot" +% -doc "glossaries-extra-codedoc.tex" +% -macrocode ".*\.tex" +% -macrocode ".*\.bib" +% -section "chapter" +% -setambles ".*\.bib=>\nopreamble\nopostamble" +% -comment ".*\.tex" +% -comment ".*\.bib" +% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" +% glossaries-extra +% Created on 2019/4/9 21:59 +%\fi +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +%\fi +% \iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2019 Nicola Talbot, all rights reserved. +% \fi +% \iffalse +%<*driver> +\documentclass[report,widecs]{nlctdoc} + +\iffalse +glossaries-extra-codedoc.tex is a stub file used by makedtx to create +glossaries-extra.dtx +\fi + +\usepackage{alltt} +\usepackage{pifont} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[colorlinks, + bookmarks, + hyperindex=false, + pdfauthor={Nicola L.C. Talbot}, + pdftitle={glossaries-extra.sty: an extension to the glossaries +package}, + pdfkeywords={LaTeX,package,glossary,abbreviations}]{hyperref} +\usepackage[nonumberlist,nopostdot=false]{glossaries-extra} + +\RecordChanges + +\makeglossaries + +\renewcommand*{\main}[1]{\hyperpage{#1}} +\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}} +\newcommand*{\itermdef}[1]{\index{#1|htextbf}} + +\newglossaryentry{xindy}{ + name={\appfmt{xindy}\index{xindy|htextbf}}, + sort={xindy}, + text={\protect\app{xindy}}, + description={An flexible indexing application with multilingual + support written in Perl} +} + +\newglossaryentry{makeindex}{% + name={\appfmt{makeindex}\index{makeindex|htextbf}},% + sort={makeindex},% + text={\protect\app{makeindex}},% + description={An indexing application}, +} + +\newglossaryentry{bib2gls}{% +name={\appfmt{bib2gls}\index{bib2gls=\appfmt{bib2gls}|htextbf}},% +sort={bib2gls},% +text={\appfmt{bib2gls}\iapp{bib2gls}},% +description={A command line Java application that selects +entries from a .bib file and converts them to glossary +definitions (like \appfmt{bibtex} but also performs hierarchical +sorting and collation, thus omitting the need for \gls{xindy} or +\gls{makeindex}). Further details at: +\url{http://www.dickimaw-books.com/software/bib2gls/}.}% +} + +\let\glsd\glsuseri +\let\glsation\glsuserii + +\newglossaryentry{firstuse}{% + name={First use\ifirstuse}, + sort={first use},% + text={first use},% + user1={first used}, + description={The first time a glossary entry is used (from the start + of the document or after a reset) with one of the + following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl}, + \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}. + \glsadd{firstuseflag}\glsadd{firstusetext}% + \glsseeformat{firstuseflag,firstusetext}{}\nopostdesc}% +} + +\newglossaryentry{firstuseflag}{% +name={First use flag\ifirstuseflag}, +sort={first use flag},% +text={first use flag},% +description={A conditional that determines whether or not the entry +has been used according to the rules of \gls{firstuse}}% +} + +\newglossaryentry{firstusetext}{% +name={First use text\ifirstusetext}, +sort={first use text},% +text={first use text},% +description={The text that is displayed on \gls{firstuse}, which is +governed by the \gloskey{first} and \gloskey{firstplural} keys of +\ics{newglossaryentry}. (May be overridden by +\ics{glsdisp}.)\nopostdesc}% +} + +\doxitem{Option}{option}{package options} +\doxitem{Counter}{counter}{glossary counters} +\doxitem{AbbrvStyle}{abbrvstyle}{abbreviation styles} +\doxitem{Style}{style}{glossary styles} + +\setcounter{IndexColumns}{2} + +\CheckSum{25503} + +\newcommand*{\ifirstuse}{\iterm{first use}} +\newcommand*{\firstuse}{\gls{firstuse}} +\newcommand*{\firstuseflag}{\gls{firstuseflag}} +\newcommand*{\firstusetext}{\gls{firstusetext}} + +\newcommand*{\ifirstuseflag}{\iterm{first use>flag}} +\newcommand*{\ifirstusetext}{\iterm{first use>text}} + +\newcommand*{\istkey}[1]{\appfmt{#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{#1}|hyperpage}} +\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}} +\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters|hyperpage}} + +\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}} +\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}} + +\newcommand*{\stylefmt}[1]{\textsf{#1}} + +\newcommand*{\glostyle}[1]{\stylefmt{#1}% + \index{glossary styles:>#1=\protect\stylefmt{#1}|main}} + +\newcommand*{\acrstyle}[1]{\stylefmt{#1}% + \index{acronym styles (glossaries):>#1=\protect\stylefmt{#1}|main}} + +\newcommand*{\abbrstyle}[1]{\stylefmt{#1}% + \index{abbreviation styles:>#1=\protect\stylefmt{#1}|main}} + +\newcommand*{\category}[1]{\textsf{#1}\index{entry categories:>#1={\protect\sffamily#1}|main}} + +\newcommand*{\catattr}[1]{\textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}} + +\GlossaryPrologue{% + \chapter*{{Change History}}% + \markboth{{Change History}}{{Change History}}% + \phantomsection + \addcontentsline{toc}{chapter}{Change History}% + \raggedright +} + +\title{glossaries-extra.sty v1.41: + documented code} +\author{Nicola L.C. Talbot\\[10pt] +Dickimaw Books\\ +\url{http://www.dickimaw-books.com/}} + +\date{2019-04-09} + +\begin{document} +\DocInput{glossaries-extra.dtx} +\end{document} +%</driver> +%\fi +%\MakeShortVerb{"} +%\DeleteShortVerb{\|} +% +% \maketitle +% +%\begin{abstract} +%This is the documented code for the \sty{glossaries-extra} package. +%See glossaries-extra-manual.pdf for the user manual. +% +%\begin{important} +%This package is experimental and not stable. It's provided for +%testing purposes only. Future versions may not be compatible with +%this version. Once it has stabilised I'll add it to CTAN, at which +%point compatibility with the first stable version will be +%maintained. +%\end{important} +%\end{abstract} +% +%\tableofcontents +% +%\StopEventually{% +% \printglossaries +% \PrintChanges +% \PrintIndex +%} +% +% +% +%\chapter{Main Package Code (\styfmt{glossaries-extra.sty})} +%\iffalse +% \begin{macrocode} +%<*glossaries-extra.sty> +% \end{macrocode} +%\fi +%\changes{0.1}{2015-11-22}{Initial experimental release} +%\section{Package Initialisation and Options} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +% Requires \sty{xkeyval} to define package options. +% \begin{macrocode} +\RequirePackage{xkeyval} +% \end{macrocode} +% Requires \sty{etoolbox} package. +% \begin{macrocode} +\RequirePackage{etoolbox} +% \end{macrocode} +% Has \styfmt{glossaries} already been loaded? +% \begin{macrocode} +\@ifpackageloaded{glossaries} +{% +% \end{macrocode} +% Already loaded so pass any options to \cs{setupglossaries}. +% This means that the options that can only be set when +% \styfmt{glossaries} is loaded can't be used. +% \begin{macrocode} + \newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% + \let\@glsxtr@declareoption\@gls@declareoption +} +{% +% \end{macrocode} +% Not already loaded, so pass options to \styfmt{glossaries}. +% \begin{macrocode} + \newcommand{\glsxtr@dooption}[1]{% + \PassOptionsToPackage{#1}{glossaries}% + }% +% \end{macrocode} +% Set the defaults. +% \begin{macrocode} + \PassOptionsToPackage{toc}{glossaries} + \PassOptionsToPackage{nopostdot}{glossaries} + \PassOptionsToPackage{noredefwarn}{glossaries} + \@ifpackageloaded{polyglossia}% + {}% + {% + \@ifpackageloaded{babel}% + {\PassOptionsToPackage{translate=babel}{glossaries}}% + {}% + }% + \newcommand*{\@glsxtr@declareoption}[2]{% + \DeclareOptionX{#1}{#2}% + \DeclareOption{#1}{#2}% + } +} +% \end{macrocode} +% Declare package options. +%\begin{macro}{\glsxtrundefaction} +% Determines what to do if an entry hasn't been defined. +% The two arguments are the error or warning message and the help +% message if an error should be produced. +% \begin{macrocode} +\newcommand*{\glsxtrundefaction}[2]{% + \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtr@warnonexistsordo} +% If user wants \pkgopt[warn]{undefaction}, then \styfmt{glossaries} +% v4.19 is required. +% \begin{macrocode} +\newcommand*{\glsxtr@warnonexistsordo}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrundeftag} +% Text to display when an entry doesn't exist. +% \begin{macrocode} +\newcommand*{\glsxtrundeftag}{??} +\newcommand*{\@glsxtrundeftag}{} +% \end{macrocode} +% This text is switched on at the start of the document to prevent +% unwanted text inserted into the preamble if any tests are made +% before the start of the document. +%\end{macro} +% +%\begin{macro}{\@glsxtr@warn@undefaction} +%This is how \cs{glsxtrundefaction} should behave if +%\pkgopt[warn]{undefaction} is set. +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@warn@undefaction}[2]{% + \@glsxtrundeftag\GlossariesExtraWarning{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@err@undefaction} +%This is how \cs{glsxtrundefaction} should behave if +%\pkgopt[error]{undefaction} is set. +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@err@undefaction}[2]{% + \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@warn@onexistsordo} +%This is how \cs{glsxtr@warnonexistsordo} should behave if +%\pkgopt[warn]{undefaction} is set. +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@warn@onexistsordo}[1]{% + \GlossariesExtraWarning{\string#1\space hasn't been defined, so + some errors won't be converted to warnings. + (This most likely means your version of + glossaries.sty is below version 4.19.)}% +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\@glsxtr@redef@forglsentries} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@redef@forglsentries}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@do@redef@forglsentries} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@do@redef@forglsentries}{% + \renewcommand*{\forglsentries}[3][\glsdefaulttype]{% + \edef\@@glo@list{\csname glolist@##1\endcsname}% + \ifdefstring{\@@glo@list}{,}% + {% + \GlossariesExtraWarning{No entries defined in glossary `##1'}% + }% + {% + \@for##2:=\@@glo@list\do + {% + \ifdefempty{##2}{}{##3}% + }% + }% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{option}{undefaction} +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{undefaction}% + [\glsxtr@undefaction@val\glsxtr@undefaction@nr]% + {warn,error}% + {% + \ifcase\glsxtr@undefaction@nr\relax + \let\glsxtrundefaction\@glsxtr@warn@undefaction + \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo + \let\@glsxtr@redef@forglsentries\@glsxtr@do@redef@forglsentries + \or + \let\glsxtrundefaction\@glsxtr@err@undefaction + \let\glsxtr@warnonexistsordo\@gobble + \let\@glsxtr@redef@forglsentries\relax + \fi + } +% \end{macrocode} +%\end{option} +% +%To assist bib2gls, v1.08 introduces the \pkgopt{record} option, which will write +%information to the aux file whenever an entry needs to be indexed. +% +%\begin{macro}{\@glsxtr@record} +%\changes{1.08}{2016-12-13}{new} +%\changes{1.14}{2017-04-18}{added third arg} +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\@glsxtr@record}[3]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@recordsee} +%\changes{1.14}{2017-04-18}{new} +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\glsxtr@recordsee}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@defaultnumberformat} +%\changes{1.19}{2017-09-09}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@defaultnumberformat}{glsnumberformat}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetDefaultNumberFormat} +%\changes{1.19}{2017-09-09}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{% + \renewcommand*{\@glsxtr@defaultnumberformat}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%The \pkgopt{record} option is somewhat problematic. On the first +%\LaTeX\ run the entries aren't defined. This isn't as +%straight-forward as commands like \cs{cite} since attributes +%associated with the entry's category may switch off the indexing +%or the entry's glossary type might require a particular counter. +%This kind of information can't be determined until the entry has +%been defined. So there are two different commands here. One that's +%used if the entry hasn't been defined, which tries to use sensible +%defaults, and one which is used when the entry has been defined. +% +%\begin{macro}{\@glsxtr@do@record@wrglossary} +%\changes{1.21}{2017-11-03}{new} +%The \pkgopt[only]{record} option sets \cs{@@do@wrglossary} to this +%command, which means it's done within \cs{glsadd} and +%\cs{@gls@link}, and so is only done if the entry exists. +% \begin{macrocode} +\newcommand*{\@glsxtr@do@record@wrglossary}[1]{% + \begingroup + \ifKV@glslink@noindex + \else + \edef\@gls@label{\glsdetoklabel{#1}}% + \let\glslabel\@gls@label + \glswriteentry{#1}% + {% + \ifdefempty{\@glsxtr@thevalue}% + {% + \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \else + \let\theHglsentrycounter\@glsxtr@theHvalue + \fi + \glsxtr@saveentrycounter + \let\@@do@@wrglossary\@glsxtr@dorecord + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \let\theHglsentrycounter\@glsxtr@theHvalue + \let\@@do@@wrglossary\@glsxtr@dorecordnodefer + }% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \glsxtr@@do@wrglossary{#1}% + \else + \@@glsxtrwrglossmark +% \end{macrocode} +%Increment associated counter. +% \begin{macrocode} + \glsxtr@inc@wrglossaryctr{#1}% + \@@do@@wrglossary + \fi + }% + \fi + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@do@alsoindex@wrglossary} +%\changes{1.21}{2017-11-03}{new} +%The \pkgopt[alsoindex]{record} option needs to both record and +%index. +% \begin{macrocode} +\newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{% + \glsxtr@@do@wrglossary{#1}% + \@glsxtr@do@record@wrglossary{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtr@record} +%\changes{1.08}{2016-12-13}{new} +%The \pkgopt[only]{record} option sets \cs{@glsxtr@record} to this. +%This performs the recording if the entry \emph{doesn't exist} and is done +%at the start of \cs{@gls@field@link} and commands like \cs{@gls@} +%(before the existence test). This means that it disregards the +%\gloskey[glslink]{wrgloss} key. +% +%The first argument is the option list (as passed in the first optional +%argument to commands like \cs{gls}). This allows the \gloskey[glslink]{noindex} +%setting to be picked up. The second argument is the entry's label. +% The third argument is the key family +%(\texttt{glslink} in most cases, \texttt{glossadd} for \cs{glsadd}). +% \begin{macrocode} +\newcommand*{\@@glsxtr@record}[3]{% + \ifglsentryexists{#2}{}% + {% + \@@glsxtrwrglossmark + \begingroup +% \end{macrocode} +%Save the label in case it's needed. +% \begin{macrocode} + \edef\@gls@label{\glsdetoklabel{#2}}% + \let\glslabel\@gls@label + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue +% \end{macrocode} +%Entry hasn't been defined, so we'll have to assume it's +%\cs{glscounter} by default. +% \begin{macrocode} + \let\@gls@counter\glscounter +% \end{macrocode} +%Unless the \pkgopt{equations} option is on and this is inside a +%numbered maths environment. +% \begin{macrocode} + \if@glsxtr@equations + \@glsxtr@use@equation@counter + \fi +% \end{macrocode} +%Check for default options (which may switch off indexing). +%\changes{1.21}{2017-11-03}{added check for default options} +% \begin{macrocode} + \@gls@setdefault@glslink@opts +% \end{macrocode} +%Implement any pre-key settings. +%\changes{1.30}{2018-04-25}{added check for pre-key hook} +% \begin{macrocode} + \csuse{@glsxtr@#3@prekeys}% +% \end{macrocode} +%Assign keys. +% \begin{macrocode} + \setkeys{#3}{#1}% +% \end{macrocode} +%Implement any post-key settings. Is the auto-add on? +%\changes{1.37}{2018-11-30}{added check for auto-add} +% \begin{macrocode} + \glsxtr@do@autoadd{#3}% +% \end{macrocode} +% Check post-key hook. +%\changes{1.30}{2018-04-25}{added check for post-key hook} +% \begin{macrocode} + \csuse{@glsxtr@#3@postkeys}% +% \end{macrocode} +%Increment associated counter. +% \begin{macrocode} + \glsxtr@inc@wrglossaryctr{#2}% +% \end{macrocode} +%Check if \gloskey[glslink]{noindex} option has been used. +% \begin{macrocode} + \ifKV@glslink@noindex + \else + \glswriteentry{#2}% + {% +% \end{macrocode} +%Check if \gloskey[glsadd]{thevalue} has been set. +% \begin{macrocode} + \ifdefempty{\@glsxtr@thevalue}% + {% +% \end{macrocode} +%Key \gloskey[glsadd]{thevalue} hasn't been set, but check if +%\gloskey[glsadd]{theHvalue} has been set. (Not particularly likely, +%but allow for it.) +% \begin{macrocode} + \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \else + \let\theHglsentrycounter\@glsxtr@theHvalue + \fi +% \end{macrocode} +%Save the entry counter. +% \begin{macrocode} + \glsxtr@saveentrycounter +% \end{macrocode} +%Temporarily redefine \cs{@@do@@wrglossary} for use with +%\cs{glsxtr@@do@wrglossary}. +% \begin{macrocode} + \let\@@do@@wrglossary\@glsxtr@dorecord + }% + {% +% \end{macrocode} +%\gloskey[glsadd]{thevalue} has been set, so there's no need to +%defer writing the location value. (If it's dependent on the page +%counter, the \gloskey[glslink]{counter} key should be set instead.) +% \begin{macrocode} + \let\theglsentrycounter\@glsxtr@thevalue + \let\theHglsentrycounter\@glsxtr@theHvalue + \let\@@do@@wrglossary\@glsxtr@dorecordnodefer + }% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \glsxtr@@do@wrglossary{#2}% + \else +% \end{macrocode} +%No need to escape special characters. +% \begin{macrocode} + \@@do@@wrglossary + \fi + }% + \fi + \endgroup + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@glslink@prekeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@glslink@prekeys}{\glslinkpresetkeys} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@glslink@postkeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@glslink@postkeys}{\glslinkpostsetkeys} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@glossadd@prekeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@glossadd@prekeys}{\glsaddpresetkeys} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@glossadd@postkeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@glossadd@postkeys}{\glsaddpostsetkeys} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@dorecord} +%\changes{1.08}{2016-12-13}{new} +%\changes{1.15}{2017-05-10}{corrected premature expansion of \cs{@glslocref}} +%If \pkgopt[alsoindex]{record} is used, then \cs{@glslocref} may +%have been escaped, but this isn't appropriate here. +%\changes{1.19}{2017-09-09}{Use \cs{@glsrecordlocref} instead of \cs{@glslocref}} +% \begin{macrocode} +\newcommand*\@glsxtr@dorecord{% + \global\let\@glsrecordlocref\theglsentrycounter + \let\@glsxtr@orgprefix\@glo@counterprefix + \ifx\theglsentrycounter\theHglsentrycounter + \def\@glo@counterprefix{}% + \else +% \end{macrocode} +%\changes{1.39}{2019-03-22}{added protection for fragile commands} +% Protect against non-expandable commands occurring in the location. +% \begin{macrocode} + \protected@edef\@glsxtr@theentrycounter{\theglsentrycounter}% + \protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}% + \@onelevel@sanitize\@glsxtr@theentrycounter + \@onelevel@sanitize\@glsxtr@theHentrycounter + \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix + {\@glsxtr@theentrycounter}{\@glsxtr@theHentrycounter}% + }% + \@do@gls@getcounterprefix + \fi +% \end{macrocode} +%\changes{1.30}{2018-04-25}{don't suppress expansion of \cs{@glsrecordlocref}} +%\changes{1.29}{2018-04-09}{don't suppress expansion of +%\cs{@glsrecordlocref} if counter isn't page} +%Don't protect the \cs{@glsrecordlocref} from premature expansion. +%If the counter isn't \counter{page} then it needs expanding. If the +%location includes \cs{thepage} then \cs{protected@write} will +%automatically deal with it. +%\changes{1.37}{2018-11-30}{added check for record=nameref} +% \begin{macrocode} + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \@glsxtr@do@nameref@record + {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% + {\@glsrecordlocref}% + \else + \protected@write\@auxout{}{\string\glsxtr@record + {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% + {\@glsrecordlocref}}% + \fi + \@glsxtr@counterrecordhook + \let\@glo@counterprefix\@glsxtr@orgprefix +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@dorecordnodefer} +%\changes{1.16}{2017-06-15}{new} +%As above, but don't defer expansion of location. This uses +%\cs{theglsentrycounter} directly for the location +%rather than \cs{@glslocref} since there's no need to guard against +%premature expansion of the page counter. +%\changes{1.19}{2017-09-09}{Use \cs{theglsentrycounter} for the location +%rather than \cs{@glslocref}} +% \begin{macrocode} +\newcommand*\@glsxtr@dorecordnodefer{% + \ifx\theglsentrycounter\theHglsentrycounter + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \@glsxtr@do@nameref@record + {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% + {\theglsentrycounter}% + \else + \protected@write\@auxout{}{\string\glsxtr@record + {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% + {\theglsentrycounter}}% + \fi + \else + \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix + {\theglsentrycounter}{\theHglsentrycounter}% + }% + \@do@gls@getcounterprefix + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \@glsxtr@do@nameref@record + {\@gls@label}{\@glo@counterprefix}{\@gls@counter}% + {\@glsnumberformat}{\theglsentrycounter}% + \else + \protected@write\@auxout{}{\string\glsxtr@record + {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% + {\theglsentrycounter}}% + \fi + \fi + \@glsxtr@counterrecordhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@ifnum@mmode} +%\changes{1.37}{2018-11-30}{new} +%Check if in a numbered maths environment. +%The \sty{amsmath} package is automatically loaded by +%\sty{datatool-base}, which is required by \sty{glossaries}, so \cs{ifst@rred} +%and \cs{if@display} should both be defined. +% \begin{macrocode} +\newcommand{\@glsxtr@ifnum@mmode}[2]{% + \ifmmode + \ifst@rred + #2% + \else +% \end{macrocode} +% Non-\sty{amsmath} environments and regular inline math mode isn't +% flagged as starred by \sty{amsmath}, but we can't use \cs{mathchoice} +% in this case as it's not the current style that's relevant. +% Instead we can use \sty{amsmath}'s \cs{if@display}. This may not +% work for environments that aren't provided by \sty{amsmath}. +% \begin{macrocode} + \if@display #1\else #2\fi + \fi + \else + #2% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@do@nameref@record} +%\changes{1.37}{2018-11-30}{new} +%With \pkgopt[nameref]{record}, the current label information is included +%in the record, but this may not have been defined, so \cs{csuse} will +%prevent an undefined control sequence error and just leave the last +%two arguments blank if there's no information. In the event that a record is in +%\sty{amsmath}'s \env{align} environment \cs{@currentHref} will be out. +%There may be other instances where \cs{@currentHref} is out, so +%this also saves \cs{theHglsentrycounter}, which is +%useful if it can't be obtained by prefixing +%\cs{theglsentrycounter}. +% \begin{macrocode} +\newcommand*{\@glsxtr@do@nameref@record}[5]{% + \gls@ifnotmeasuring + {% + \protected@write\@auxout{}{\string\glsxtr@record@nameref + {#1}{#2}{#3}{#4}{#5}% + {\csuse{@currentlabelname}}{\csuse{@currentHref}}% + {\theHglsentrycounter}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtr@recordcounter} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtr@recordcounter}{% + \@glsxtr@noop@recordcounter +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@noop@recordcounter} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@noop@recordcounter}[1]{% + \PackageError{glossaries-extra}{\string\GlsXtrRecordCounter\space + requires record=only or record=alsoindex package option}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@op@recordcounter} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@op@recordcounter}[1]{% + \eappto\@glsxtr@counterrecordhook{\noexpand\@glsxtr@docounterrecord{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@recordsee} +%\changes{1.14}{2017-04-18}{new} +%Deal with \cs{glssee} in record mode. (This doesn't increment the +%associated counter.) +% \begin{macrocode} +\newcommand*{\@glsxtr@recordsee}[2]{% + \@@glsxtrwrglossmark + \def\@gls@xref{#2}% + \@onelevel@sanitize\@gls@xref + \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryunit} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\printunsrtglossaryunit}{% + \print@noop@unsrtglossaryunit +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@setup@record} +%\changes{1.08}{2016-12-13}{new} +%Initialise. +% \begin{macrocode} +\newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@indexonly@saveentrycounter} +%\changes{1.08}{2016-12-13}{new} +% Only store the entry counter information if the +%indexing is on. +% \begin{macrocode} +\newcommand*{\glsxtr@indexonly@saveentrycounter}{% + \ifKV@glslink@noindex + \else + \glsxtr@saveentrycounter + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@addloclistfield} +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@addloclistfield}{% + \key@ifundefined{glossentry}{loclist}% + {% + \define@key{glossentry}{loclist}{\def\@glo@loclist{##1}}% + \appto\@gls@keymap{,{loclist}{loclist}}% + \appto\@newglossaryentryprehook{\def\@glo@loclist{}}% + \appto\@newglossaryentryposthook{% + \gls@assign@field{}{\@glo@label}{loclist}{\@glo@loclist}% + }% + \glssetnoexpandfield{loclist}% + }% + {}% +% \end{macrocode} +%\changes{1.11}{2017-01-19}{added location key} +%The loclist field is just a comma-separated list. The location +%field is the formatted list. +% \begin{macrocode} + \key@ifundefined{glossentry}{location}% + {% + \define@key{glossentry}{location}{\def\@glo@location{##1}}% + \appto\@gls@keymap{,{location}{location}}% + \appto\@newglossaryentryprehook{\def\@glo@location{}}% + \appto\@newglossaryentryposthook{% + \gls@assign@field{}{\@glo@label}{location}{\@glo@location}% + }% + \glssetnoexpandfield{location}% + }% + {}% +% \end{macrocode} +%\changes{1.11}{2017-01-19}{added group key} +%Add a key to store the group heading. +% \begin{macrocode} + \key@ifundefined{glossentry}{group}% + {% + \define@key{glossentry}{group}{\def\@glo@group{##1}}% + \appto\@gls@keymap{,{group}{group}}% + \appto\@newglossaryentryprehook{\def\@glo@group{}}% + \appto\@newglossaryentryposthook{% + \gls@assign@field{}{\@glo@label}{group}{\@glo@group}% + }% + \glssetnoexpandfield{group}% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@setting} +%\changes{1.19}{2017-09-09}{new} +%Keep track of the \pkgopt{record} package option. +% \begin{macrocode} +\newcommand*{\@glsxtr@record@setting}{off} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@setting@alsoindex} +%\changes{1.19}{2017-09-09}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@setting@only} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@record@setting@only}{only} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@setting@nameref} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@record@setting@nameref}{nameref} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@if@record@only} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@if@record@only}[2]{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only + #1% + \else + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + #1% + \else + #2% + \fi + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@setting@off} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@record@setting@off}{off} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@only@setup} +%\changes{1.37}{2018-11-30}{new} +%Initialisation code for record=only and record=nameref +% \begin{macrocode} +\newcommand*{\@glsxtr@record@only@setup}{% + \def\glsxtr@setup@record{% + \@glsxtr@autoseeindexfalse + \let\@do@seeglossary\@glsxtr@recordsee + \let\@glsxtr@record\@@glsxtr@record + \let\@@do@wrglossary\@glsxtr@do@record@wrglossary + \let\@gls@saveentrycounter\relax + \let\glsxtrundefaction\@glsxtr@warn@undefaction + \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo + \glsxtr@addloclistfield + \renewcommand*{\@glsxtr@autoindexcrossrefs}{}% + \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter + \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}% +% \end{macrocode} +%Switch off the index suppression for aliased entries. +%(bib2gls will deal with them.) +% \begin{macrocode} + \def\glsxtrsetaliasnoindex{}% +% \end{macrocode} +% \cs{@gls@setupsort@none} was only introduced to +% \sty{glossaries} v4.30, so it may not be available. If it's +% defined, use it to remove the unnecessary overhead of escaping and +% sanitizing the sort value. +%\changes{1.16}{2017-06-15}{added check for \cs{@gls@setupsort@none}} +% \begin{macrocode} + \ifdef\@gls@setupsort@none{\@gls@setupsort@none}{}% +% \end{macrocode} +% Warn about using \cs{printglossary}: +% \begin{macrocode} + \def\glsxtrNoGlossaryWarning{\@glsxtr@record@noglossarywarning}% +% \end{macrocode} +%Load \sty{glossaries-extra-bib2gls}: +% \begin{macrocode} + \RequirePackage{glossaries-extra-bib2gls}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{record} +%Now define the \pkgopt{record} package option. +%\changes{1.08}{2016-12-13}{added \pkgopt{record} package option} +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{record} + [\@glsxtr@record@setting\glsxtr@record@nr]% + {off,only,alsoindex,nameref}% + [only]% + {% + \ifcase\glsxtr@record@nr\relax +% \end{macrocode} +%Don't record. +% \begin{macrocode} + \def\glsxtr@setup@record{% + \renewcommand*{\@do@seeglossary}{\@glsxtr@doseeglossary}% + \renewcommand*{\@glsxtr@record}[3]{}% + \let\@@do@wrglossary\glsxtr@@do@wrglossary + \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter + \let\glsxtrundefaction\@glsxtr@err@undefaction + \let\glsxtr@warnonexistsordo\@gobble + \let\@@glsxtr@recordcounter\@glsxtr@noop@recordcounter + \def\printunsrtglossaryunit{\print@noop@unsrtglossaryunit}% + \undef\glsxtrsetaliasnoindex + }% + \or +% \end{macrocode} +%Only record (don't index). +% \begin{macrocode} + \@glsxtr@record@only@setup + \or +% \end{macrocode} +%Record and index. This option doesn't load +%\sty{glossaries-extra-bib2gls} as the sorting is performed by +%\app{xindy} or \app{makeindex}. +% \begin{macrocode} + \def\glsxtr@setup@record{% + \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}% + \let\@glsxtr@record\@@glsxtr@record + \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary + \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter + \let\glsxtrundefaction\@glsxtr@warn@undefaction + \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo + \glsxtr@addloclistfield + \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter + \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}% + \undef\glsxtrsetaliasnoindex + }% + \or +% \end{macrocode} +%Only record (don't index) but also include nameref information. +% \begin{macrocode} + \@glsxtr@record@only@setup + \ifundef\hyperlink + {\GlossariesExtraWarning{You have requested record=nameref but + the document doesn't support hyperlinks}}% + {}% + \fi + } +% \end{macrocode} +%\end{option} +% +%\changes{1.06}{2016-06-18}{docdef option changed to choice} +%Version 1.06 changes the \pkgopt{docdef} option to a choice rather +%than boolean setting. The available values are: false, true or +%restricted. The restricted option permits document definitions as +%long as they occur before the first glossary is displayed. +% +%\begin{macro}{\@glsxtr@docdefval} +%\changes{1.06}{2016-06-18}{new} +%The \pkgopt{docdef} value is stored as an integer: 0 (false), 1 +%(true) and 2 (restricted). +%\changes{1.28}{2018-03-06}{changed from count register to macro} +% \begin{macrocode} +\newcommand*{\@glsxtr@docdefval}{0} +% \end{macrocode} +%\end{macro} +% +%Need to provide conditional commands that are backward compatible: +%\begin{macro}{\if@glsxtrdocdef} +% \begin{macrocode} +\newcommand*{\if@glsxtrdocdef}{\ifnum\@glsxtr@docdefval>0 } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrdocdeftrue} +% \begin{macrocode} +\newcommand*{\@glsxtrdocdeftrue}{\def\@glsxtr@docdefval{1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrdocdeffalse} +% \begin{macrocode} +\newcommand*{\@glsxtrdocdeffalse}{\def\@glsxtr@docdefval{0}} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{docdef} +% By default don't allow entries to be defined in the document to +% encourage the user to define them in the preamble, but if the user +% is really determined to define them in the document allow them to +% request this. +%\changes{1.34}{2018-07-29}{added package option docdef=atom} +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{docdef} + [\@glsxtr@docdefsetting\@glsxtr@docdefval]% + {false,true,restricted,atom}[true]% +{% + \ifnum\@glsxtr@docdefval>1\relax + \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexists}% + \else + \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}% + \fi +} +% \end{macrocode} +%\end{option} +%\begin{macro}{\if@glsxtrdocdefrestricted} +%\changes{1.06}{2016-06-18}{new} +%\changes{1.34}{2018-07-29}{changed to allow for atom as well} +% \begin{macrocode} +\newcommand*{\if@glsxtrdocdefrestricted}{\ifnum\@glsxtr@docdefval>1 } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsdoifexistsorwarn} +%\changes{1.06}{2016-06-18}{new} +%Need an error to notify user if an undefined entry is being referenced in the +%glossary for the \pkgopt[restricted]{docdef} option. This is used +%by \cs{glossentryname} (but not by \cs{glossentrydesc} etc as one error +%per entry is sufficient). +% \begin{macrocode} +\newcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{indexcrossrefs} +% Automatically index cross references at the end of the document +% \begin{macrocode} +\define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{% + \if@glsxtrindexcrossrefs + \else + \renewcommand*{\@glsxtr@autoindexcrossrefs}{}% + \fi +} +% \end{macrocode} +%\end{option} +% Switch off since this can increase the build time. +% \begin{macrocode} +\@glsxtrindexcrossrefsfalse +% \end{macrocode} +% But allow \gloskey{see} key to switch it on automatically. +%\begin{macro}{\@glsxtr@autoindexcrossrefs} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{autoseeindex} +%Provide a boolean option to allow the user to prevent the +%automatic indexing of the cross-referencing keys \gloskey{see}, +%\gloskey{seealso} and \gloskey{alias}. +%\changes{1.16}{2017-06-15}{new} +% \begin{macrocode} +\define@boolkey{glossaries-extra.sty}[@glsxtr@]{autoseeindex}[true]{% +} +\@glsxtr@autoseeindextrue +% \end{macrocode} +%\end{option} +% +%\begin{option}{equations} +%Provide a boolean option to automatically switch to the +%\ctr{equation} counter when in a numbered maths environment. +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\define@boolkey{glossaries-extra.sty}[@glsxtr@]{equations}[true]{% +} +\@glsxtr@equationsfalse +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\glsxtr@float} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\let\glsxtr@float\@float +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@dblfloat} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\let\glsxtr@dblfloat\@dblfloat +% \end{macrocode} +%\end{macro} +% +%\begin{option}{floats} +%Provide a boolean option to automatically switch to the +%the corresponding counter when in a float. +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\define@boolkey{glossaries-extra.sty}[@glsxtr@]{floats}[true]{% + \if@glsxtr@floats + \renewcommand*{\@float}[1]{\renewcommand{\glscounter}{##1}\glsxtr@float{##1}}% + \renewcommand*{\@dblfloat}[1]{\renewcommand{\glscounter}{##1}\glsxtr@dblfloat{##1}}% + \else + \let\@float\glsxtr@float + \let\@dblfloat\glsxtr@dblfloat + \fi +} +\@glsxtr@floatsfalse +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\GlossariesExtraWarning} +%Allow users to suppress warnings. +% \begin{macrocode} +\newcommand*{\GlossariesExtraWarning}[1]{\PackageWarning{glossaries-extra}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlossariesExtraWarningNoLine} +%Allow users to suppress warnings. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\GlossariesExtraWarningNoLine}[1]{% + \PackageWarningNoLine{glossaries-extra}{#1}} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\@glsxtr@declareoption{nowarn}{% + \let\GlossariesExtraWarning\@gobble + \let\GlossariesExtraWarningNoLine\@gobble + \glsxtr@dooption{nowarn}% +} +% \end{macrocode} +% +%\begin{macro}{\@glsxtr@defpostpunc} +%Redefines \cs{glspostdescription}. The \pkgopt{postdot} and +%\pkgopt{nopostdot} options will have to redefine this. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@defpostpunc}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{postdot} +%Shortcut for \pkgopt[false]{nopostdot} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\@glsxtr@declareoption{postdot}{% + \glsxtr@dooption{nopostdot=false}% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{% + \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% + }% +} +% \end{macrocode} +%\end{option} + +%\begin{option}{nopostdot} +%Needs to redefine \cs{@glsxtr@defpostpunc} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{nopostdot}{true,false}[true]{% + \glsxtr@dooption{nopostdot=#1}% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{% + \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% + }% +} +% \end{macrocode} +%\end{option} +% +%\begin{option}{postpunc} +%Set the post-description punctuation. This also sets +%the \cs{ifglsnopostdot} conditional, which now indicates if +%the post-description punctuation has been suppressed. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\define@key{glossaries-extra.sty}{postpunc}{% + \glsxtr@dooption{nopostdot=false}% + \ifstrequal{#1}{dot}% + {% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{.\spacefactor\sfcode`\. }% + }% + }% + {% + \ifstrequal{#1}{comma}% + {% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{,}% + }% + }% + {% + \ifstrequal{#1}{none}% + {% + \glsxtr@dooption{nopostdot=true}% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{}% + }% + }% + {% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{#1}% + }% + }% + }% + }% +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\glsxtrabbrvtype} +% Glossary type for abbreviations. +% \begin{macrocode} +\newcommand*{\glsxtrabbrvtype}{\glsdefaulttype} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@abbreviationsdef} +% Set by \pkgopt{abbreviations} option. +% \begin{macrocode} +\newcommand*{\@glsxtr@abbreviationsdef}{} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\@glsxtr@doabbreviationsdef} +%\changes{0.5.3}{2015-12-09}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@doabbreviationsdef}{% + \@ifpackageloaded{babel}% + {\providecommand{\abbreviationsname}{\acronymname}}% + {\providecommand{\abbreviationsname}{Abbreviations}}% + \newglossary[glg-abr]{abbreviations}{gls-abr}{glo-abr}{\abbreviationsname}% + \renewcommand*{\glsxtrabbrvtype}{abbreviations}% + \newcommand*{\printabbreviations}[1][]{% + \printglossary[type=\glsxtrabbrvtype,##1]% + }% + \disable@keys{glossaries-extra.sty}{abbreviations}% +% \end{macrocode} +% If the \pkgopt{acronym} option hasn't been used, change +% \ics{acronymtype} to \ics{glsxtrabbrvtype}. +%\changes{0.4}{2015-12-03}{added redefinition of \cs{acronymtype}} +% \begin{macrocode} + \ifglsacronym + \else + \renewcommand*{\acronymtype}{\glsxtrabbrvtype}% + \fi +}% +% \end{macrocode} +%\end{macro} +% +%\begin{option}{abbreviations} +% If \pkgopt{abbreviations}, create a new glossary type for abbreviations. +% \begin{macrocode} +\@glsxtr@declareoption{abbreviations}{% + \let\@glsxtr@abbreviationsdef\@glsxtr@doabbreviationsdef +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\GlsXtrDefineAbbreviationShortcuts} +% Enable shortcut commands for the abbreviations. Unlike the analogous +% command provided by \styfmt{glossaries}, this uses \cs{newcommand} +% instead of \cs{let} as a safety feature (except for \cs{newabbr} +% which is also provided with \cs{GlsXtrDefineAcShortcuts}). +% \begin{macrocode} +\newcommand*{\GlsXtrDefineAbbreviationShortcuts}{% + \newcommand*{\ab}{\cgls}% + \newcommand*{\abp}{\cglspl}% + \newcommand*{\as}{\glsxtrshort}% + \newcommand*{\asp}{\glsxtrshortpl}% + \newcommand*{\al}{\glsxtrlong}% + \newcommand*{\alp}{\glsxtrlongpl}% + \newcommand*{\af}{\glsxtrfull}% + \newcommand*{\afp}{\glsxtrfullpl}% + \newcommand*{\Ab}{\cGls}% + \newcommand*{\Abp}{\cGlspl}% + \newcommand*{\As}{\Glsxtrshort}% + \newcommand*{\Asp}{\Glsxtrshortpl}% + \newcommand*{\Al}{\Glsxtrlong}% + \newcommand*{\Alp}{\Glsxtrlongpl}% + \newcommand*{\Af}{\Glsxtrfull}% + \newcommand*{\Afp}{\Glsxtrfullpl}% + \newcommand*{\AB}{\cGLS}% + \newcommand*{\ABP}{\cGLSpl}% + \newcommand*{\AS}{\GLSxtrshort}% + \newcommand*{\ASP}{\GLSxtrshortpl}% + \newcommand*{\AL}{\GLSxtrlong}% + \newcommand*{\ALP}{\GLSxtrlongpl}% + \newcommand*{\AF}{\GLSxtrfull}% + \newcommand*{\AFP}{\GLSxtrfullpl}% +% \end{macrocode} +%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}} +% \begin{macrocode} + \providecommand*{\newabbr}{\newabbreviation}% +% \end{macrocode} +% Disable this command after it's been used. +% \begin{macrocode} + \let\GlsXtrDefineAbbreviationShortcuts\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrDefineAcShortcuts} +% Enable shortcut commands for the abbreviations, but uses the +% analogous commands provided by \styfmt{glossaries}. +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrDefineAcShortcuts}{% + \newcommand*{\ac}{\cgls}% + \newcommand*{\acp}{\cglspl}% + \newcommand*{\acs}{\glsxtrshort}% + \newcommand*{\acsp}{\glsxtrshortpl}% + \newcommand*{\acl}{\glsxtrlong}% + \newcommand*{\aclp}{\glsxtrlongpl}% + \newcommand*{\acf}{\glsxtrfull}% + \newcommand*{\acfp}{\glsxtrfullpl}% + \newcommand*{\Ac}{\cGls}% + \newcommand*{\Acp}{\cGlspl}% + \newcommand*{\Acs}{\Glsxtrshort}% + \newcommand*{\Acsp}{\Glsxtrshortpl}% + \newcommand*{\Acl}{\Glsxtrlong}% + \newcommand*{\Aclp}{\Glsxtrlongpl}% + \newcommand*{\Acf}{\Glsxtrfull}% + \newcommand*{\Acfp}{\Glsxtrfullpl}% + \newcommand*{\AC}{\cGLS}% + \newcommand*{\ACP}{\cGLSpl}% + \newcommand*{\ACS}{\GLSxtrshort}% + \newcommand*{\ACSP}{\GLSxtrshortpl}% + \newcommand*{\ACL}{\GLSxtrlong}% + \newcommand*{\ACLP}{\GLSxtrlongpl}% + \newcommand*{\ACF}{\GLSxtrfull}% + \newcommand*{\ACFP}{\GLSxtrfullpl}% +% \end{macrocode} +%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}} +% \begin{macrocode} + \providecommand*{\newabbr}{\newabbreviation}% +% \end{macrocode} +% Disable this command after it's been used. +% \begin{macrocode} + \let\GlsXtrDefineAcShortcuts\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrDefineOtherShortcuts} +% Similarly provide shortcut versions for the commands provided by +% the \pkgopt{symbols} and \pkgopt{numbers} options. +% \begin{macrocode} +\newcommand*{\GlsXtrDefineOtherShortcuts}{% + \newcommand*{\newentry}{\newglossaryentry}% + \ifdef\printsymbols + {% + \newcommand*{\newsym}{\glsxtrnewsymbol}% + }{}% + \ifdef\printnumbers + {% + \newcommand*{\newnum}{\glsxtrnewnumber}% + }{}% + \let\GlsXtrDefineOtherShortcuts\relax +} +% \end{macrocode} +%\end{macro} +% +% Always use the long forms, not the shortcuts, where portability is +% an issue. (For example, when defining entries in a file that may +% be input by multiple documents.) +% +%\begin{macro}{\@glsxtr@setupshortcuts} +% Command used to set the shortcuts option. +% \begin{macrocode} +\newcommand*{\@glsxtr@setupshortcuts}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@shortcutsval} +% Store the value of the shortcuts option. (Needed by bib2gls.) +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}% +% \end{macrocode} +%\end{macro} +% +%\begin{option}{shortcuts} +%Provide \pkgopt{shortcuts} option. Unlike the \styfmt{glossaries} +%version, this is a choice rather than a boolean key but it also provides +%\pkgopt[true]{shortcuts} and \pkgopt[false]{shortcuts}, which are +%equivalent to \pkgopt[all]{shortcuts} and +%\pkgopt[none]{shortcuts}. Multiple use of this option in the +%\emph{same} option list will override each other. +%New to v1.17: \pkgopt[ac]{shortcuts} which implements +%\cs{GlsXtrDefineAcShortcuts} (not included in +%\pkgopt[all]{shortcuts} as it conflicts with other shortcuts). +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{shortcuts}% + [\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]% + {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{% + \ifcase\@glsxtr@shortcutsnr\relax % acronyms + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \DefineAcronymSynonyms + }% + \or % acro + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \DefineAcronymSynonyms + }% + \or % abbreviations + \renewcommand*{\@glsxtr@setupshortcuts}{% + \GlsXtrDefineAbbreviationShortcuts + }% + \or % abbr + \renewcommand*{\@glsxtr@setupshortcuts}{% + \GlsXtrDefineAbbreviationShortcuts + }% + \or % other + \renewcommand*{\@glsxtr@setupshortcuts}{% + \GlsXtrDefineOtherShortcuts + }% + \or % all + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue +% \end{macrocode} +%\changes{1.21}{2017-11-03}{changed true setting to use shortcuts=ac +%instead of shortcuts=acronym} +% \begin{macrocode} + \GlsXtrDefineAcShortcuts + \GlsXtrDefineAbbreviationShortcuts + \GlsXtrDefineOtherShortcuts + }% + \or % true + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue +% \end{macrocode} +%\changes{1.21}{2017-11-03}{changed true setting to use shortcuts=ac +%instead of shortcuts=acronym} +% \begin{macrocode} + \GlsXtrDefineAcShortcuts + \GlsXtrDefineAbbreviationShortcuts + \GlsXtrDefineOtherShortcuts + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{corrected shortcuts=ac} +% \begin{macrocode} + \or % ac + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \GlsXtrDefineAcShortcuts + }% +% \end{macrocode} +%Leave none and false as last option. +% \begin{macrocode} + \else % none, false + \renewcommand*{\@glsxtr@setupshortcuts}{}% + \fi + } +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\@glsxtr@doaccsupp} +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@doaccsupp}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{accsupp} +% If \pkgopt{accsupp}, load \sty{glossaries-accsupp} package. +% \begin{macrocode} +\@glsxtr@declareoption{accsupp}{% + \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\glsxtrNoGlossaryWarning} +%\changes{0.3}{2015-12-02}{new} +%\changes{1.34}{2018-07-29}{added package warning} +% Warning text displayed in document if the external glossary file +% given by the argument is missing. +% \begin{macrocode} +\newcommand{\glsxtrNoGlossaryWarning}[1]{% + \GlossariesExtraWarning{Glossary `#1' is missing}% + \@glsxtr@defaultnoglossarywarning{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{nomissingglstext} +% If true, suppress the text and warning produced if the external glossary file +% is missing. +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{nomissingglstext} + [\@glsxtr@nomissingglstextval\@glsxtr@nomissingglstextnr]% + {true,false}[true]{% + \ifcase\@glsxtr@nomissingglstextnr\relax % true + \renewcommand{\glsxtrNoGlossaryWarning}[1]{\null}% + \else % false + \renewcommand{\glsxtrNoGlossaryWarning}[1]{% + \@glsxtr@defaultnoglossarywarning{#1}% + }% + \fi + } +% \end{macrocode} +%\end{option} +% +% Provide option to load \sty{glossaries-extra-stylemods} +% (Deferred to the end.) +%\begin{macro}{\@glsxtr@redefstyles} +% \begin{macrocode} +\newcommand*{\@glsxtr@redefstyles}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{stylemods} +%\changes{1.02}{2016-04-25}{new} +%\changes{1.18}{2017-08-10}{changed default value to \qt{default}} +% \begin{macrocode} +\define@key{glossaries-extra.sty}{stylemods}[default]{% + \ifstrequal{#1}{default}% + {% + \renewcommand*{\@glsxtr@redefstyles}{% + \RequirePackage{glossaries-extra-stylemods}}% + }% + {% + \ifstrequal{#1}{all}% + {% + \renewcommand*{\@glsxtr@redefstyles}{% + \PassOptionsToPackage{all}{glossaries-extra-stylemods}% + \RequirePackage{glossaries-extra-stylemods}% + }% + }% + {% + \renewcommand*{\@glsxtr@redefstyles}{}% + \@for\@glsxtr@tmp:=#1\do{% + \IfFileExists{glossary-\@glsxtr@tmp.sty}% + {% + \eappto\@glsxtr@redefstyles{% + \noexpand\RequirePackage{glossary-\@glsxtr@tmp}}% + }% + {% + \PackageError{glossaries-extra}% + {Glossaries style package `glossary-\@glsxtr@tmp.sty' + doesn't exist (did you mean to use the `style' key?)}% + {The list of values (#1) in the `stylemods' key should + match the glossary-xxx.sty files provided with + glossaries.sty}% + }% + }% + \appto\@glsxtr@redefstyles{\RequirePackage{glossaries-extra-stylemods}}% + } + }% +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\@glsxtr@do@style} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@do@style}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{style} +%\changes{1.04}{2016-05-02}{new} +% Since the \pkgopt{stylemods} option can automatically load extra +% style packages, deal with the \pkgopt{style} option after those +% packages have been loaded. +% \begin{macrocode} +\define@key{glossaries-extra.sty}{style}{% +% \end{macrocode} +%Defer actual style change: +% \begin{macrocode} + \renewcommand*{\@glsxtr@do@style}{% +% \end{macrocode} +% Set this as the default style: +% \begin{macrocode} + \setkeys{glossaries.sty}{style={#1}}% +% \end{macrocode} +% Set this style: +% \begin{macrocode} + \setglossarystyle{#1}% + }% +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\glsxtr@inc@wrglossaryctr} +%\changes{1.29}{2018-04-09}{new} +%Increments the associated counter if enabled. Does nothing by +%default. The optional argument is the entry label in case it's +%required, but the \ctr{wrglossary} counter is globally used by all +%entries. +% \begin{macrocode} +\newcommand*{\glsxtr@inc@wrglossaryctr}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrInternalLocationHyperlink} +%\changes{1.29}{2018-04-09}{new} +%\begin{definition} +%\cs{glsxtrinternallocationhyperlink}\marg{counter}\marg{prefix}\marg{location} +%\end{definition} +%The first two arguments are always control sequences. +% \begin{macrocode} +\newcommand*{\GlsXtrInternalLocationHyperlink}[3]{% + \glsxtrhyperlink{#1#2#3}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@wrglossary@locationhyperlink} +%\changes{1.29}{2018-04-09}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@wrglossary@locationhyperlink}[3]{% + \pageref{wrglossary.#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{indexcounter} +%\changes{1.29}{2018-04-09}{new} +%Define the \ctr{wrglossary} counter that's incremented every time +%an entry is indexed, except for cross-references. This is designed +%for use with \app{bib2gls} v1.4+. It can work with the other indexing +%methods but it will interfere with the number list collation. +%This option automatically implements \pkgopt[wrglossary]{counter}. +% +%Since \styfmt{glossaries} automatically loads \sty{amsmath}, there +%may be a problem if the indexing occurs in the \env{equation} +%environment, because only one \cs{label} is allowed in each +%instance of that environment. It's best to change the counter when +%in maths mode. +% \begin{macrocode} +\@glsxtr@declareoption{indexcounter}{% + \glsxtr@dooption{counter=wrglossary}% + \ifundef\c@wrglossary + {% + \newcounter{wrglossary}% + \renewcommand{\thewrglossary}{\arabic{wrglossary}}% + }% + {}% + \renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{% +% \end{macrocode} +%Only increment if the current counter is \ctr{wrglossary}. +%\changes{1.30}{2018-04-25}{added check for \ctrfmt{wrglossary} counter} +% \begin{macrocode} + \ifdefstring\@gls@counter{wrglossary}% + {% + \refstepcounter{wrglossary}% + \label{wrglossary.\thewrglossary}% + }% + {}% + }% + \renewcommand*{\GlsXtrInternalLocationHyperlink}[3]{% + \ifdefstring\glsentrycounter{wrglossary}% + {% + \@glsxtr@wrglossary@locationhyperlink{##1}{##2}{##3}% + }% + {\glsxtrhyperlink{##1##2##3}{##3}}% + }% +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\@glsxtrwrglossmark} +%\changes{1.21}{2017-11-03}{new} +%Marks the place where indexing occurs. +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\@glsxtrwrglossmark}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrwrglossmark} +%\changes{1.21}{2017-11-03}{new} +%Since \cs{glsadd} can be used in the preamble, this action needs to +%be disabled until the start of the document. +% \begin{macrocode} +\newcommand*{\@@glsxtrwrglossmark}{} +\AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrwrglossmark} +%\changes{1.21}{2017-11-03}{new} +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{debug} +%\changes{1.21}{2017-11-03}{new} +% Provide extra debug options. +% \begin{macrocode} +\define@choicekey{glossaries-extra.sty}{debug} + [\@glsxtr@debugval\@glsxtr@debugnr]% + {true,false,showtargets,showwrgloss,all}[true]{% + \ifcase\@glsxtr@debugnr\relax % true + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \or % false + \glsxtr@dooption{debug=false}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \or % showtargets + \glsxtr@dooption{debug=showtargets}% + \or % showwrgloss + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \or % all + \glsxtr@dooption{debug=showtargets}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \fi + } +% \end{macrocode} +%\end{option} +% +% Pass all other options to \styfmt{glossaries}. +% \begin{macrocode} +\DeclareOptionX*{% + \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} +% \end{macrocode} +% Process options. +% \begin{macrocode} +\ProcessOptionsX +% \end{macrocode} +% Load \styfmt{glossaries} if not already loaded. +% \begin{macrocode} +\RequirePackage{glossaries} +% \end{macrocode} +% Load the \sty{glossaries-accsupp} package if required. +% \begin{macrocode} +\@glsxtr@doaccsupp +% \end{macrocode} +% Redefine \cs{glspostdescription} if required. +% \begin{macrocode} +\@glsxtr@defpostpunc +% \end{macrocode} +% +%\begin{macro}{\glsshowtarget} +%This command was introduced to \sty{glossaries} v4.32 so it may not +%be defined. Therefore it's defined here using \cs{def}. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\glsshowtarget#1{% + \glsxtrtitleorpdforheading + {% + \ifmmode + \texttt{\small [#1]}% + \else + \ifinner + \texttt{\small [#1]}% + \else + \marginpar{\texttt{\small #1}}% + \fi + \fi + }% + {[#1]}% + {\texttt{\small [#1]}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@org@doseeglossary} +%Save original definition of \cs{@do@seeglossary} +% \begin{macrocode} +\let\@glsxtr@org@doseeglossary\@do@seeglossary +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@doseeglossary} +%\changes{1.21}{2017-11-03}{new} +%This doesn't increment the associated counter. +% \begin{macrocode} +\newcommand*{\@glsxtr@doseeglossary}[2]{% + \glsdoifexists{#1}% + {% + \@@glsxtrwrglossmark + \@glsxtr@org@doseeglossary{#1}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@dosee@alsoindex@glossary} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@dosee@alsoindex@glossary}[2]{% + \@glsxtr@recordsee{#1}{#2}% + \@glsxtr@doseeglossary{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@org@gloautosee} +%\changes{1.14}{2017-04-18}{new} +%Save and restore original definition of \cs{@glo@autosee}. +%(That command may not be defined as it was only introduced +%to \sty{glossaries} v4.30, in which case the synonym +%won't be defined either.) +% \begin{macrocode} +\let\@glsxtr@org@gloautosee\@glo@autosee +% \end{macrocode} +%\end{macro} +%Check if user tried \pkgopt[false]{autoseeindex} when it can't be +%supported. +% \begin{macrocode} +\if@glsxtr@autoseeindex +\else + \ifdef\@glsxtr@org@gloautosee + {}% + {\PackageError{glossaries-extra}{`autoseeindex=false' package + option requires at least v4.30 of glossaries.sty}% + {You need to update the glossaries.sty package}% + } +\fi +% \end{macrocode} +% +%\begin{macro}{\@glo@autosee} +%\changes{1.16}{2017-06-15}{added redefinition} +%If \cs{@glo@autosee} has been defined (\sty{glossaries} v4.30 +%onwards), redefine it to test the \pkgopt{autoseeindex} option. +% \begin{macrocode} +\ifdef\@glo@autosee +{% + \renewcommand*{\@glo@autosee}{% + \if@glsxtr@autoseeindex\@glsxtr@org@gloautosee\fi}% +}% +{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gls@checkseeallowed} +%\changes{1.16}{2017-06-15}{added redefinition} +%Don't prohibit the use of the \gloskey{see} key before the indexing +%files have been opened if the automatic see indexing has been +%disabled, since it's no longer an issue. +% \begin{macrocode} +\renewcommand*{\gls@checkseeallowed}{% + \if@glsxtr@autoseeindex\@gls@see@noindex\fi +} +% \end{macrocode} +%\end{macro} +% +% +% Define abbreviations glossaries if required. +% \begin{macrocode} +\@glsxtr@abbreviationsdef +\let\@glsxtr@abbreviationsdef\relax +% \end{macrocode} +% Setup shortcuts if required. +% \begin{macrocode} +\@glsxtr@setupshortcuts +% \end{macrocode} +%Redefine \cs{@glsxtr@redef@forglsentries} if required. +% \begin{macrocode} +\@glsxtr@redef@forglsentries +% \end{macrocode} +% +%\begin{macro}{\glossariesextrasetup} +%Allow user to set options after the package has been loaded. +% First modify \cs{glsxtr@dooption} so that it now uses +% \cs{setupglossaries}: +% \begin{macrocode} +\renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% +% \end{macrocode} +% Now define the user command: +% \begin{macrocode} +\newcommand*{\glossariesextrasetup}[1]{% + \let\glsxtr@setup@record\relax + \let\@glsxtr@setupshortcuts\relax + \let\@glsxtr@redef@forglsentries\relax + \setkeys{glossaries-extra.sty}{#1}% + \@glsxtr@abbreviationsdef + \let\@glsxtr@abbreviationsdef\relax + \@glsxtr@setupshortcuts + \glsxtr@setup@record + \@glsxtr@redef@forglsentries +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@org@@do@wrglossary} +%\changes{1.21}{2017-11-03}{new} +%Save original definition of \cs{@@do@wrglossary}. +% \begin{macrocode} +\let\glsxtr@org@@do@wrglossary\@@do@wrglossary +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@@do@wrglossary} +%\changes{1.08}{2016-12-13}{new} +%The new version adds code that can show a marker for debugging and +%increments the associated counter if enabled. +% \begin{macrocode} +\newcommand*{\glsxtr@@do@wrglossary}[1]{% + \@@glsxtrwrglossmark + \glsxtr@inc@wrglossaryctr{#1}% + \glsxtr@org@@do@wrglossary{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@saveentrycounter} +%\changes{1.08}{2016-12-13}{new} +%Save original definition of \cs{@gls@saveentrycounter}. +% \begin{macrocode} +\let\glsxtr@saveentrycounter\@gls@saveentrycounter +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@saveentrycounter} +%\changes{1.08}{2016-12-13}{new} +%Change \cs{@gls@saveentrycounter} so that it only stores the entry +%counter information if the indexing is on. +% \begin{macrocode} +\let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@getcounterprefix} +%\changes{1.37}{2018-11-30}{new} +%This command is provided by the base \sty{glossaries} package, but +%is redefined here. +%The standard indexing methods don't directly store the hypertarget +%but instead need to split it into the counter, prefix and location +%parts, which can be reconstituted in the location list. +%Unfortunately, not all targets are in this form, so the links fail. +%With \pkgopt[nameref]{record}, the complete target name can be +%saved, so this modification adjusts the warning. +% \begin{macrocode} +\renewcommand*\@gls@getcounterprefix[2]{% + \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}% + \ifx\@gls@thisloc\@gls@thisHloc + \def\@glo@counterprefix{}% + \else + \def\@gls@get@counterprefix##1.#1##2\end@getprefix{% + \def\@glo@tmp{##2}% + \ifx\@glo@tmp\@empty + \def\@glo@counterprefix{}% + \else + \def\@glo@counterprefix{##1}% + \fi + }% + \@gls@get@counterprefix#2.#1\end@getprefix +% \end{macrocode} +% Warn if no prefix can be formed, unless \pkgopt[nameref]{record}. +% \begin{macrocode} + \ifx\@glo@counterprefix\@empty + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \else + \GlossariesExtraWarning{Hyper target `#2' can't be formed by + prefixing^^Jlocation `#1'. You need to modify the + definition of \string\theH\@gls@counter^^Jotherwise you + will get the warning: "`name{\@gls@counter.#1}' has been^^J + referenced but does not exist"% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only + . You may want to consider using record=nameref instead% + \fi}% + \fi + \fi + \fi +} +% \end{macrocode} +%\end{macro} +% +%Provide script dialect hook (does nothing unless +%redefined by \sty{glossaries-extra-bib2gls}). +%\begin{macro}{\@glsxtrdialecthook} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrdialecthook}{} +% \end{macrocode} +%\end{macro} +% +%Set up record option if required. +% \begin{macrocode} +\glsxtr@setup@record +% \end{macrocode} +% +% Disable preamble-only options and switch on the undefined tag at +% the start of the document. +%\changes{1.06}{2016-06-18}{disabled docdef key at the start of the +%document} +% \begin{macrocode} +\AtBeginDocument{% + \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}% + \def\@glsxtrundeftag{\glsxtrundeftag}% +} +% \end{macrocode} +% +%\section{Extra Utilities} +% +%\begin{macro}{\GlsXtrIfUnusedOrUndefined} +%\changes{1.34}{2018-07-29}{new} +%\begin{definition} +%\cs{GlsXtrIfUnusedOrUndefined}\marg{label}\marg{true}\marg{false} +%\end{definition} +% Does \meta{true} if the entry given by \meta{label} is either +% undefined or hasn't been used (or has had the first use flag reset). +% \begin{macrocode} +\newcommand*{\GlsXtrIfUnusedOrUndefined}[3]{% + \ifglsentryexists{#1}% + {\ifbool{glo@\glsdetoklabel{#1}@flag}{#3}{#2}}% + {#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifemptyglossary} +%\begin{definition} +%\cs{glsxtrifemptyglossary}\marg{type}\marg{true}\marg{false} +%\end{definition} +% Provide command to determine if any entries have been added to the +% glossary (where the glossary label is provided in the first +% argument). The entries are stored in the comma-separated list +% \cs{glolist@\meta{type}}. If this hasn't been defined, the glosary +% doesn't exist. If it has been defined and is simply a comma, the +% glossary exists and is empty. (It's initialised to a comma.) +%\changes{0.4}{2015-12-03}{new} +% \begin{macrocode} +\newcommand{\glsxtrifemptyglossary}[3]{% + \ifcsdef{glolist@#1}% + {% + \ifcsstring{glolist@#1}{,}{#2}{#3}% + }% + {% + \glsxtrundefaction{Glossary type `#1' doesn't exist}{}% + #2% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifkeydefined} +%\changes{1.12}{2017-02-03}{new} +%Tests if the key given in the first argument has been defined. +% \begin{macrocode} +\newcommand*{\glsxtrifkeydefined}[3]{% + \key@ifundefined{glossentry}{#1}{#3}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrprovidestoragekey} +%\changes{1.12}{2017-02-03}{new} +%Like \cs{glsaddstoragekey} but does nothing if the key has already +%been defined. +% \begin{macrocode} +\newcommand*{\glsxtrprovidestoragekey}{% + \@ifstar\@sglsxtr@provide@storagekey\@glsxtr@provide@storagekey +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@provide@storagekey} +%\changes{1.12}{2017-02-03}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@glsxtr@provide@storagekey}[3]{% + \key@ifundefined{glossentry}{#1}% + {% + \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}% + \appto\@gls@keymap{,{#1}{#1}}% + \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}% + \appto\@newglossaryentryposthook{% + \letcs{\@glo@tmp}{@glo@#1}% + \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}% + }% +% \end{macrocode} +%Allow the user to omit the user level command if they only +%intended fetching the value with \cs{glsxtrusefield} +% \begin{macrocode} + \ifblank{#3} + {}% + {% + \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% + }% + }% + {% +% \end{macrocode} +%Provide the no-link command if not already defined. +% \begin{macrocode} + \ifblank{#3} + {}% + {% + \providecommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@glsxtr@provide@storagekey} +%\changes{1.12}{2017-02-03}{new} +%Starred version. +% \begin{macrocode} +\newcommand*{\s@glsxtr@provide@storagekey}[1]{% + \key@ifundefined{glossentry}{#1}% + {% + \expandafter\newcommand\expandafter*\expandafter + {\csname gls@assign@#1@field\endcsname}[2]{% + \@@gls@expand@field{##1}{#1}{##2}% + }% + }% + {}% + \@glsxtr@provide@addstoragekey{#1}% +} +% \end{macrocode} +%\end{macro} +% +%The name of a text-block control sequence can be stored in a +%field (given by \cs{GlsXtrFmtField}). This command can then be used +%with \cs{glsxtrfmt}\oarg{options}\marg{label}\marg{text} which +%effectively does +%\cs{glslink}\oarg{options}\marg{label}\{\meta{cs}\marg{text}\} +%If the field hasn't been set for that entry just \meta{text} is +%done. +% +%\begin{macro}{\GlsXtrFmtField} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\GlsXtrFmtField}{useri} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrFmtDefaultOptions} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\GlsXtrFmtDefaultOptions}{noindex} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfmt} +%\changes{1.12}{2017-02-03}{new} +%The post-link hook isn't done. This now has a starred form +%that checks for a final optional argument. +% \begin{macrocode} +\newrobustcmd*{\glsxtrfmt}{\@ifstar\s@glsxtrfmt\@glsxtrfmt} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrfmt} +%\changes{1.23}{2017-11-12}{new} +%Unstarred form. +% \begin{macrocode} +\newcommand*{\@glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{#3}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\s@glsxtrfmt} +%\changes{1.23}{2017-11-12}{new} +%Starred form. +% \begin{macrocode} +\newcommand*{\s@glsxtrfmt}[3][]{% + \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{#3}}% + {\@@glsxtrfmt{#1}{#2}{#3}{}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\s@@glsxtrfmt} +%\changes{1.23}{2017-11-12}{new} +%Pick up final optional argument. +% \begin{macrocode} +\def\s@@glsxtrfmt#1#2#3[#4]{\@@glsxtrfmt{#1}{#2}{#3}{#4}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@@glsxtrfmt} +%\changes{1.23}{2017-11-12}{new} +%Actual inner working. +% \begin{macrocode} +\newcommand*{\@@glsxtrfmt}[4]{% +% \end{macrocode} +%Since there's no post-link hook to worry about, grouping can be +%added to provide some protection against nesting (but in general +%nested link text should be avoided). +%\changes{1.23}{2017-11-12}{added grouping} +% \begin{macrocode} + \begingroup + \def\glslabel{#2}% + \glsdoifexistsordo{#2}% + {% + \ifglshasfield{\GlsXtrFmtField}{#2}% + {% + \let\do@gls@link@checkfirsthyper\relax + \expandafter\@gls@link\expandafter[\GlsXtrFmtDefaultOptions,#1]{#2}% + {\glsxtrfmtdisplay{\glscurrentfieldvalue}{#3}{#4}}% + }% + {\glsxtrfmtdisplay{@firstofone}{#3}{#4}}% + }% + {% +% \end{macrocode} +%Has the default \verb|noindex| been counteracted? If so, this +%needs \cs{glsadd} in case \app{bib2gls} needs to pick up the record. +%\changes{1.23}{2017-11-12}{added check for indexing} +% \begin{macrocode} + \begingroup + \@gls@setdefault@glslink@opts + \setkeys{glslink}{\GlsXtrFmtDefaultOptions,#1}% + \ifKV@glslink@noindex\else\glsadd{#2}\fi + \endgroup + \glsxtrfmtdisplay{@firstofone}{#3}{#4}% + }% + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfmtdisplay} +%\changes{1.23}{2017-11-12}{new} +%The command used internally by \cs{glsxtrfmt} to do the actual +%formatting. The first argument is the control sequence name, +%the second is the control sequence's argument, the third +%is the inserted material (if starred form used). +% \begin{macrocode} +\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrentryfmt} +%\changes{1.12}{2017-02-03}{new} +%No link or indexing. +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsxtrentryfmt}[2]{% + \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{#2}% + } +} +{ + \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrentryfmt} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.23}{2017-11-12}{fixed missing label argument} +% \begin{macrocode} +\newrobustcmd*{\@glsxtrentryfmt}[2]{% + \glsdoifexistsordo{#1}% + {% + \ifglshasfield{\GlsXtrFmtField}{#1}% + {% + \csuse{\glscurrentfieldvalue}{#2}% + }% + {#2}% + }% + {#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldlistadd} +%\changes{1.12}{2017-02-03}{new} +%If a field stores an etoolbox internal list (e.g. +%\gloskey{loclist}) then this macro provides a convenient +%way of adding to the list via etoolbox's \cs{listcsadd}. +%The first argument is the entry's label, the second is the field +%label and the third is the element to add to the list. +% \begin{macrocode} +\newcommand*{\glsxtrfieldlistadd}[3]{% + \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldlistgadd} +%\changes{1.12}{2017-02-03}{new} +%Similarly but uses \cs{listcsgadd}. +% \begin{macrocode} +\newcommand*{\glsxtrfieldlistgadd}[3]{% + \listcsgadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldlisteadd} +%\changes{1.12}{2017-02-03}{new} +%Similarly but uses \cs{listcseadd}. +% \begin{macrocode} +\newcommand*{\glsxtrfieldlisteadd}[3]{% + \listcseadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldlistxadd} +%Similarly but uses \cs{listcsxadd}. +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfieldlistxadd}[3]{% + \listcsxadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%Now provide commands to iterate over these lists. +%\begin{macro}{\glsxtrfielddolistloop} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfielddolistloop}[2]{% + \dolistcsloop{glo@\glsdetoklabel{#1}@#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldforlistloop} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.29}{2018-04-09}{corrected argument order in \cs{forlistcsloop}} +% \begin{macrocode} +\newcommand*{\glsxtrfieldforlistloop}[3]{% + \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}% +} +% \end{macrocode} +%\end{macro} +% +%List element tests: +%\begin{macro}{\glsxtrfieldifinlist} +%\changes{1.12}{2017-02-03}{new} +%First argument label, second argument field, third argument item, +%fourth true part and fifth false part. +% \begin{macrocode} +\newcommand*{\glsxtrfieldifinlist}[5]{% + \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldxifinlist} +%\changes{1.12}{2017-02-03}{new} +%Expands item. +% \begin{macrocode} +\newcommand*{\glsxtrfieldxifinlist}[5]{% + \xifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrforcsvfield} +%\changes{1.24}{2017-11-14}{new} +%\begin{definition} +%\cs{glsxtrforcsvfield}\marg{label}\marg{field}\marg{cs handler} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrforcsvfield}[3]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \let\glsxtrendfor\@endfortrue + \@for\@glsxtr@label:=\glscurrentfieldvalue\do + {\expandafter#3\expandafter{\@glsxtr@label}}}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifhasfield} +%\changes{1.19}{2017-09-09}{new} +%A simpler alternative to \cs{ifglshasfield} that doesn't complain +%if the entry or the field doesn't exist. (No mapping is used.) +%Grouping is added to the unstarred version allow for nested use. +% \begin{macrocode} +\newrobustcmd{\glsxtrifhasfield}{% + \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrifhasfield} +%\changes{1.19}{2017-09-09}{new} +%Unstarred version adds grouping. +% \begin{macrocode} +\newcommand{\@glsxtrifhasfield}[4]{% + {\s@glsxtrifhasfield{#1}{#2}{#3}{#4}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@glsxtrifhasfield} +%\changes{1.19}{2017-09-09}{new} +%\changes{1.21}{2017-11-03}{switched from \cs{ifdef} to \cs{ifundef}} +% Starred version omits grouping. +% \begin{macrocode} +\newcommand{\s@glsxtrifhasfield}[4]{% + \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% + \ifundef\glscurrentfieldvalue + {#4}% + {% + \ifdefempty\glscurrentfieldvalue{#4}{#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldNonZero} +%\changes{1.31}{2018-05-09}{new} +%Designed for numeric fields. +%\changes{1.39}{2019-03-22}{added starred version} +% \begin{macrocode} +\newcommand{\GlsXtrIfFieldNonZero}{% + \@ifstar\s@GlsXtrIfFieldNonZero\@GlsXtrIfFieldNonZero +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfFieldNonZero} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\@GlsXtrIfFieldNonZero}[4]{% + \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldEqNum} +%\changes{1.31}{2018-05-09}{new} +%\begin{definition} +%\cs{GlsXtrIfFieldEqNum}\marg{field}\marg{label}\marg{value}\marg{true}\marg{false} +%\end{definition} +%Designed for numeric fields. +%\changes{1.39}{2019-03-22}{added starred version} +% \begin{macrocode} +\newcommand{\GlsXtrIfFieldEqNum}{% + \@ifstar\s@GlsXtrIfFieldEqNum\@GlsXtrIfFieldEqNum +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfFieldEqNum} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\@GlsXtrIfFieldEqNum}[5]{% + \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfFieldEqNum} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\s@GlsXtrIfFieldEqNum}[5]{% + \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldCmpNum} +%\changes{1.31}{2018-05-09}{new} +%\begin{definition} +%\cs{GlsXtrIfFieldCmpNum}\marg{field}\marg{label}\marg{comparison}\marg{value}\marg{true}\marg{false} +%\end{definition} +%Designed for numeric fields. +%\changes{1.39}{2019-03-22}{added starred version} +% \begin{macrocode} +\newcommand{\GlsXtrIfFieldCmpNum}{% + \@ifstar\s@GlsXtrIfFieldCmpNum\@GlsXtrIfFieldCmpNum +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfFieldCmpNum} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\@GlsXtrIfFieldCmpNum}[6]{% + {% + \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% + \ifundef\glscurrentfieldvalue + {\def\glscurrentfieldvalue{0}}% + {% + \ifdefempty\glscurrentfieldvalue + {\def\glscurrentfieldvalue{0}}% + {}% + }% + \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfFieldCmpNum} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\s@GlsXtrIfFieldCmpNum}[6]{% + \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% + \ifundef\glscurrentfieldvalue + {\def\glscurrentfieldvalue{0}}% + {% + \ifdefempty\glscurrentfieldvalue + {\def\glscurrentfieldvalue{0}}% + {}% + }% + \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldUndef} +%\changes{1.23}{2017-11-12}{new} +%\begin{definition} +%\cs{GlsXtrIfFieldUndef}\marg{field}\marg{label}\marg{true}\marg{false} +%\end{definition} +%Just uses \cs{ifcsundef}. +% \begin{macrocode} +\newcommand{\GlsXtrIfFieldUndef}[2]{% + \ifcsundef{glo@\glsdetoklabel{#2}@#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusefield} +%\changes{1.12}{2017-02-03}{new} +%Provide a user-level alternative to \cs{@gls@entry@field}. +%The first argument is the entry label. The second argument is the +%field label. +% \begin{macrocode} +\newcommand*{\glsxtrusefield}[2]{% + \@gls@entry@field{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrusefield} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.37}{2018-11-30}{fixed internal command and added check for +%\cs{texorpdfstring}} +%Provide a user-level alternative to \cs{@Gls@entry@field}. +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsxtrusefield}[2]{% + \texorpdfstring + {\@Gls@entry@field{#1}{#2}} + {\@gls@entry@field{#1}{#2}}% + } +} +{ + \newcommand*{\Glsxtrusefield}[2]{% + \@Gls@entry@field{#1}{#2}% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrusefield} +%\changes{1.37}{2018-11-30}{new} +%As above but convert to all caps. +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSxtrusefield}[2]{% + \texorpdfstring + {\glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}}% + {\@gls@entry@field{#1}{#2}}% + } +} +{ + \newcommand*{\GLSxtrusefield}[2]{% + \glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrentryparentname} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glsxtrentryparentname}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@parent}% + {\csuse{glo@\csuse{glo@\glsdetoklabel{#1}@parent}@name}}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdeffield} +%\changes{1.12}{2017-02-03}{new} +%Just use \cs{csdef} to provide a field value for the given entry. +% \begin{macrocode} +\newcommand*{\glsxtrdeffield}[2]{\csdef{glo@\glsdetoklabel{#1}@#2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtredeffield} +%\changes{1.12}{2017-02-03}{new} +%Just use \cs{csedef} to provide a field value for the given entry. +%\changes{1.28}{2018-03-06}{changed \cs{csedef} to +%\cs{protected@csedef}} +% \begin{macrocode} +\newcommand*{\glsxtredeffield}[2]{\protected@csedef{glo@\glsdetoklabel{#1}@#2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetfieldifexists} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetField} +%\changes{1.12}{2017-02-03}{new} +%Allow the user to set a field. First argument entry label, second +%argument field label, third argument value. +% \begin{macrocode} +\newrobustcmd*{\GlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLetField} +%\changes{1.12}{2017-02-03}{new} +%Uses \cs{cslet} instead. Third argument should be a macro. +% \begin{macrocode} +\newrobustcmd*{\GlstrLetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\csGlsXtrLetField} +%\changes{1.12}{2017-02-03}{new} +%Uses \cs{csletcs} instead. Third argument should be a control +%sequence name. +% \begin{macrocode} +\newrobustcmd*{\csGlsXtrLetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csletcs{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLetFieldToField} +%\changes{1.12}{2017-02-03}{new} +%Sets the field for one entry to the field for another entry. +%Third argument should be the other entry +%and the fourth argument that other field label. +% \begin{macrocode} +\newrobustcmd*{\GlsXtrLetFieldToField}[4]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csletcs{glo@\glsdetoklabel{#1}@#2}{glo@\glsdetoklabel{#3}@#4}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gGlsXtrSetField} +%\changes{1.12}{2017-02-03}{new} +%Allow the user to set a field. First argument entry label, second +%argument field label, third argument value. +% \begin{macrocode} +\newrobustcmd*{\gGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xGlsXtrSetField} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\xGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\protected@csxdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\eGlsXtrSetField} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\eGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldEqStr} +%\changes{1.21}{2017-11-03}{new} +%\changes{1.39}{2019-03-22}{added starred form} +%Starred version uses starred version of \cs{glsxtrifhasfield} +%(that is, no grouping). +% \begin{macrocode} +\newcommand*{\GlsXtrIfFieldEqStr}{% + \@ifstar\s@GlsXtrIfFieldEqStr\@GlsXtrIfFieldEqStr +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfFieldEqStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\@GlsXtrIfFieldEqStr}[5]{% + \@glsxtrifhasfield{#1}{#2}% + {% + \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfFieldEqStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\s@GlsXtrIfFieldEqStr}[5]{% + \s@glsxtrifhasfield{#1}{#2}% + {% + \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldEqXpStr} +%\changes{1.31}{2018-05-09}{new} +%Like the above but first expands the string. +%Starred version uses starred version of \cs{glsxtrifhasfield} +%(that is, no grouping). +%\changes{1.39}{2019-03-22}{added starred form} +% \begin{macrocode} +\newcommand*{\GlsXtrIfFieldEqXpStr}{% + \@ifstar\s@GlsXtrIfFieldEqXpStr\@GlsXtrIfFieldEqXpStr +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfFieldEqXpStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\@GlsXtrIfFieldEqXpStr}[5]{% + \@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfFieldEqXpStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\s@GlsXtrIfFieldEqXpStr}[5]{% + \s@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfXpFieldEqXpStr} +%\changes{1.31}{2018-05-09}{new} +%Like the above but also expands the field value. +%Starred version uses starred version of \cs{glsxtrifhasfield} +%(that is, no grouping). +%\changes{1.39}{2019-03-22}{added starred form} +% \begin{macrocode} +\newcommand*{\GlsXtrIfXpFieldEqXpStr}{% + \@ifstar\s@GlsXtrIfXpFieldEqXpStr\@GlsXtrIfXpFieldEqXpStr +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfXpFieldEqXpStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\@GlsXtrIfXpFieldEqXpStr}[5]{% + \@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{\glscurrentfieldvalue}% + \let\glscurrentfieldvalue\@gls@tmp + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfXpFieldEqXpStr} +%\changes{1.39}{2019-03-22}{new} +% \begin{macrocode} +\newrobustcmd*{\s@GlsXtrIfXpFieldEqXpStr}[5]{% + \s@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{\glscurrentfieldvalue}% + \let\glscurrentfieldvalue\@gls@tmp + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrForeignText} +%\changes{1.32}{2018-05-24}{new} +%\begin{definition} +%\cs{GlsXtrForeignText}\marg{entry label}\marg{text} +%\end{definition} +%If a field is used to store a language tag (such as \texttt{en-GB} +%or \texttt{de-CH-1996}) then this command uses \sty{tracklang}'s +%interface to encapsulate \meta{text}. The field identifying the +%locale is given by \cs{GlsXtrForeignTextField}. +% \begin{macrocode} +\ifdef\foreignlanguage +{ + \ifdef\GetTrackedDialectFromLanguageTag + { + \newcommand{\GlsXtrForeignText}[2]{% +% \end{macrocode} +%In case this is used inside the argument of \cs{glsxtrifhasfield}, +%save and restore \cs{glscurrentfieldvalue}. +% \begin{macrocode} + \let\@glsxtr@org@currentfieldvalue\glscurrentfieldvalue + \glsxtrifhasfield{\GlsXtrForeignTextField}{#1}% + {% + \expandafter\GetTrackedDialectFromLanguageTag\expandafter + {\glscurrentfieldvalue}{\@glsxtr@dialect}% + \let\@glsxtr@locale\glscurrentfieldvalue + \let\glscurrentfieldvalue\@glsxtr@org@currentfieldvalue + \ifdefempty\@glsxtr@dialect + {% +% \end{macrocode} +% An exact match hasn't been found. A partial match can only be +% obtained with at least \sty{tracklang} v1.3.6. +% \begin{macrocode} + \ifundef\TrackedDialectClosestSubMatch + {% + \GlossariesExtraWarning{Can't obtain dialect label + (tracklang v1.3.6+ required)}% + }% + {\let\@glsxtr@dialect\TrackedDialectClosestSubMatch}% + }% + {}% + \ifdefempty\@glsxtr@dialect + {% +% \end{macrocode} +% No tracked dialect found for the root language. +% \begin{macrocode} + }% + {% +% \end{macrocode} +% Check if there's a caption hook for the given dialect label. +% \begin{macrocode} + \ifcsundef{captions\@glsxtr@dialect}{}% + {% +% \end{macrocode} +% Dialect label not recognised. Check if there's a known mapping. +% \begin{macrocode} + \IfTrackedDialectHasMapping{\@glsxtr@dialect}% + {% + \edef\@glsxtr@dialect{% + \GetTrackedDialectToMapping{\@glsxtr@dialect}}% +% \end{macrocode} +% Does a caption hook exist for this? +% \begin{macrocode} + \ifcsundef{captions\@glsxtr@dialect}{}% + {% +% \end{macrocode} +% No mapping. Try root language label instead. +% \begin{macrocode} + \ifcsundef{captions\@tracklang@lang}{}% + {% + \let\@glsxtr@dialect\@tracklang@lang + }% + }% + }% + {% +% \end{macrocode} +% No mapping. Try root language label instead. +% \begin{macrocode} + \ifcsundef{captions\@tracklang@lang}{}% + {% + \let\@glsxtr@dialect\@tracklang@lang + }% + }% + }% + }% + \ifdefempty\@glsxtr@dialect + {% + \GlsXtrUnknownDialectWarning{\@glsxtr@locale}{\@tracklang@lang}% + #2% + }% + {\foreignlanguage{\@glsxtr@dialect}{#2}}% + }% + {#2}% key not set + } + } + { + \newcommand{\GlsXtrForeignText}[2]{% + \GlossariesExtraWarning{Can't encapsulate foreign text: + tracklang v1.3.6+ required}% + #2% + } + } +} +{ +% \end{macrocode} +%\cs{foreignlanguage} isn't defined so just do \meta{text}. +% \begin{macrocode} + \newcommand{\GlsXtrForeignText}[2]{#2} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrForeignTextField} +%\changes{1.32}{2018-05-24}{new} +%This is the \gloskey{user2} field by default but may be redefined +%as required. +% \begin{macrocode} +\newcommand*{\GlsXtrForeignTextField}{userii} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrUnknownDialectWarning} +%\changes{1.32}{2018-05-24}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrUnknownDialectWarning}[2]{% + \GlossariesExtraWarning{Can't determine valid dialect label + for locale `#1' (root language: #2)}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpageref} +%\changes{1.11}{2017-01-19}{new} +% Like \cs{glsrefentry} but references the page number instead (if +% entry counting is on). The base \sty{glossaries} package only +% introduced \cs{GlsEntryCounterLabelPrefix} in version 4.38, so it +% may not be defined. +% \begin{macrocode} +\ifdef\GlsEntryCounterLabelPrefix +{% + \newcommand*{\glsxtrpageref}[1]{% + \ifglsentrycounter + \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% + \else + \ifglssubentrycounter + \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}% + \else + \gls{#1}% + \fi + \fi + } +}% +{% + \newcommand*{\glsxtrpageref}[1]{% + \ifglsentrycounter + \pageref{glsentry-\glsdetoklabel{#1}}% + \else + \ifglssubentrycounter + \pageref{glsentry-\glsdetoklabel{#1}}% + \else + \gls{#1}% + \fi + \fi + } +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\apptoglossarypreamble} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\apptoglossarypreamble}[2][\glsdefaulttype]{% + \ifcsdef{glolist@#1}% + {% + \ifcsundef{@glossarypreamble@#1}% + {\csdef{@glossarypreamble@#1}{}}% + {}% + \csappto{@glossarypreamble@#1}{#2}% + }% + {% + \GlossariesExtraWarning{Glossary `#1' is not defined}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\pretoglossarypreamble} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\preglossarypreamble}[2][\glsdefaulttype]{% + \ifcsdef{glolist@#1}% + {% + \ifcsundef{@glossarypreamble@#1}% + {\csdef{@glossarypreamble@#1}{}}% + {}% + \cspreto{@glossarypreamble@#1}{#2}% + }% + {% + \GlossariesExtraWarning{Glossary `#1' is not defined}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\section{Modifications to Commands Provided by \styfmt{glossaries}} +% Some of the commands provided by \styfmt{glossaries} are modified +% to take into account new options or to change default behaviour. +% +%\begin{macro}{\ifglsused} +%\begin{definition} +%\cs{ifglsused}\marg{label}\marg{true part}\marg{false part} +%\end{definition} +%\changes{1.33}{2018-07-26}{added redefinition} +%In the event that undefined entries should trigger a warning rather +%than an error, \cs{ifglsused} needs to be modified to check for +%existence. If the boolean variable is undefined, then its state is +%indeterminate and is neither true nor false, so neither \meta{true +%part} nor \meta{false} part will be performed if \meta{label} is +%undefined. +% \begin{macrocode} +\renewcommand*{\ifglsused}[3]{% + \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%Provide a starred version of \cs{longnewglossaryentry} that doesn't +%automatically insert \verb|\leavevmode\unskip\nopostdesc| at the +%end of the description. The unstarred version is modified to use +%\cs{glsxtrpostlongdescription} instead. +% +%\begin{macro}{\longnewglossaryentry} +%\changes{1.12}{2017-02-03}{added starred version} +% \begin{macrocode} +\renewcommand*{\longnewglossaryentry}{% + \@ifstar\@glsxtr@s@longnewglossaryentry\@glsxtr@longnewglossaryentry +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@s@longnewglossaryentry} +%\changes{1.12}{2017-02-03}{new} +%Starred version. +% \begin{macrocode} +\newcommand{\@glsxtr@s@longnewglossaryentry}[3]{% + \glsdoifnoexists{#1}% + {% + \bgroup + \let\@org@newglossaryentryprehook\@newglossaryentryprehook + \long\def\@newglossaryentryprehook{% + \long\def\@glo@desc{#3}% + \@org@newglossaryentryprehook + }% + \renewcommand*{\gls@assign@desc}[1]{% + \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}% + \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}% + } + \gls@defglossaryentry{#1}{#2}% + \egroup + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@longnewglossaryentry} +%\changes{1.12}{2017-02-03}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand{\@glsxtr@longnewglossaryentry}[3]{% + \glsdoifnoexists{#1}% + {% + \bgroup + \let\@org@newglossaryentryprehook\@newglossaryentryprehook + \long\def\@newglossaryentryprehook{% + \long\def\@glo@desc{#3\glsxtrpostlongdescription}% + \@org@newglossaryentryprehook + }% + \renewcommand*{\gls@assign@desc}[1]{% + \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}% +% \end{macrocode} +%The following is different from the base \sty{glossaries.sty}: +% \begin{macrocode} + \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}% + } + \gls@defglossaryentry{#1}{#2}% + \egroup + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlongdescription} +%\changes{1.12}{2017-02-03}{new} +%Hook at the end of the description when using the unstarred +%\cs{longnewglossaryentry}. +% \begin{macrocode} +\newcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip\nopostdesc} +% \end{macrocode} +%\end{macro} +% +%Provide a starred version of \cs{newignoredglossary} that doesn't +%add the glossary to the nohyperlist list. +% +%\begin{macro}{\newignoredglossary} +%\changes{1.11}{2017-01-19}{added starred version} +%Redefine to check for star. +% \begin{macrocode} +\renewcommand{\newignoredglossary}{% + \@ifstar\glsxtr@s@newignoredglossary\glsxtr@org@newignoredglossary +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@org@newignoredglossary} +%The original definition is patched to check for existence. +%\changes{1.11}{2017-01-19}{new} +%\changes{1.12}{2017-02-03}{Added check for existence} +% \begin{macrocode} +\newcommand*{\glsxtr@org@newignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + }% + {% + \ifdefempty\@ignored@glossaries + {% + \edef\@ignored@glossaries{#1}% + }% + {% + \eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + \ifdefempty\@gls@nohyperlist + {% + \renewcommand*{\@gls@nohyperlist}{#1}% + }% + {% + \eappto\@gls@nohyperlist{,#1}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@s@newignoredglossary} +%Starred form. +%\changes{1.11}{2017-01-19}{new} +%\changes{1.12}{2017-02-03}{Added check for existence} +% \begin{macrocode} +\newcommand*{\glsxtr@s@newignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + }% + {% + \ifdefempty\@ignored@glossaries + {% + \edef\@ignored@glossaries{#1}% + }% + {% + \eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssettoctitle} +%\changes{1.12}{2017-02-03}{added patch} +%Ignored glossaries don't have an associated title, so modify +%\cs{glssettoctitle} to check for it to prevent an undefined +%command written to the toc file. +% \begin{macrocode} +\glsifusetranslator +{% + \renewcommand*{\glssettoctitle}[1]{% + \ifcsdef{gls@tr@set@#1@toctitle}% + {% + \csuse{gls@tr@set@#1@toctitle}% + }% + {% + \ifcsdef{@glotype@#1@title}% + {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}% + {\def\glossarytoctitle{\glossarytitle}}% + }% + }% +} +{ + \renewcommand*{\glssettoctitle}[1]{% + \ifcsdef{@glotype@#1@title}% + {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}% + {\def\glossarytoctitle{\glossarytitle}}% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\provideignoredglossary} +%\changes{1.12}{2017-02-03}{new} +%As above but won't do anything if the glossary already exists. +% \begin{macrocode} +\newcommand{\provideignoredglossary}{% + \@ifstar\glsxtr@s@provideignoredglossary\glsxtr@provideignoredglossary +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@provideignoredglossary} +%\changes{1.12}{2017-02-03}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\glsxtr@provideignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {}% + {% + \ifdefempty\@ignored@glossaries + {% + \edef\@ignored@glossaries{#1}% + }% + {% + \eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + \ifdefempty\@gls@nohyperlist + {% + \renewcommand*{\@gls@nohyperlist}{#1}% + }% + {% + \eappto\@gls@nohyperlist{,#1}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@s@provideignoredglossary} +%Starred form. +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@s@provideignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {}% + {% + \ifdefempty\@ignored@glossaries + {% + \edef\@ignored@glossaries{#1}% + }% + {% + \eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcopytoglossary} +%Adds an entry label to another glossary list. First argument is +%entry label. Second argument is glossary label. +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrcopytoglossary}[2]{% + \glsdoifexists{#1}% + {% + \ifcsdef{glolist@#2} + {% + \cseappto{glolist@#2}{#1,}% + }% + {% + \glsxtrundefaction{Glossary type `#2' doesn't exist}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\subsection{Existence Checks} +%\begin{macro}{\glsdoifexists} +% Modify \cs{glsdoifexists} to take account of the +% \pkgopt{undefaction} setting. +% \begin{macrocode} +\renewcommand{\glsdoifexists}[2]{% + \ifglsentryexists{#1}{#2}% + {% +% \end{macrocode} +% Define \cs{glslabel} in case it's needed after this command (for +% example in the post-link hook). +%\changes{1.08}{2016-12-13}{now defines \cs{glslabel}} +% \begin{macrocode} + \edef\glslabel{\glsdetoklabel{#1}}% + \glsxtrundefaction{Glossary entry `\glslabel' + has not been defined}{You need to define a glossary entry before + you can reference it.}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdoifnoexists} +% Modify \cs{glsdoifnoexists} to take account of the +% \pkgopt{undefaction} setting. +% \begin{macrocode} +\renewcommand{\glsdoifnoexists}[2]{% + \ifglsentryexists{#1}{% + \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' + has already been defined}{}}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdoifexistsordo} +% Modify \cs{glsdoifexistsordo} to take account of the +% \pkgopt{undefaction} setting. This command was introduced in +% \styfmt{glossaries} version 4.19, so check if it has been defined first. +% \begin{macrocode} +\ifdef\glsdoifexistsordo +{% + \renewcommand{\glsdoifexistsordo}[3]{% + \ifglsentryexists{#1}{#2}% + {% + \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' + has not been defined}{You need to define a glossary entry + before you can use it.}% + #3% + }% + }% +} +{% + \glsxtr@warnonexistsordo\glsdoifexistsordo + \newcommand{\glsdoifexistsordo}[3]{% + \ifglsentryexists{#1}{#2}% + {% + \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' + has not been defined}{You need to define a glossary entry + before you can use it.}% + #3% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\doifglossarynoexistsordo} +% Similarly for \cs{doifglossarynoexistsordo}. +% \begin{macrocode} +\ifdef\doifglossarynoexistsordo +{% + \renewcommand{\doifglossarynoexistsordo}[3]{% + \ifglossaryexists{#1}% + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + #3% + }% + {#2}% + }% +} +{% + \glsxtr@warnonexistsordo\doifglossarynoexistsordo + \newcommand{\doifglossarynoexistsordo}[3]{% + \ifglossaryexists{#1}% + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + #3% + }% + {#2}% + }% +} + +% \end{macrocode} +%\end{macro} +% +%There are now three types of cross-references: the \gloskey{see} key (as +%original), the \gloskey{alias} key (from \styfmt{glossaries-extra} v1.12) +% and the \gloskey{seealso} key (from \styfmt{glossaries-extra} v1.16). +% The original \gloskey{see} key needs to have a corresponding field +% (which it doesn't with the base \sty{glossaries} package). +% +%\begin{macro}{\@newglossaryentryposthook} +% Hook into end of \cs{newglossaryentry} to add \qt{see} value as a +% field. +%\changes{0.5.4}{2015-12-15}{added empty see value if not set and added +% `see' to field key map} +% \begin{macrocode} +\appto\@newglossaryentryposthook{% + \ifdefvoid\@glo@see + {\csxdef{glo@\@glo@label @see}{}}% + {% + \csxdef{glo@\@glo@label @see}{\@glo@see}% + \if@glsxtr@autoseeindex + \@glsxtr@autoindexcrossrefs + \fi + }% +} +\appto\@gls@keymap{,{see}{see}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusesee} +%\changes{1.06}{2016-06-18}{new} +%Apply \cs{glsseeformat} to the \gloskey{see} key if not empty. +% \begin{macrocode} +\newcommand*{\glsxtrusesee}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% + \ifdefempty\@glo@see + {}% + {% + \expandafter\glsxtr@usesee\@glo@see\@end@glsxtr@usesee + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@usesee} +%\changes{1.06}{2016-06-18}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@usesee}[1][\seename]{% + \@glsxtr@usesee[#1]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@usesee} +%\changes{1.06}{2016-06-18}{new} +% \begin{macrocode} +\def\@glsxtr@usesee[#1]#2\@end@glsxtr@usesee{% + \glsxtruseseeformat{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruseseeformat} +%\changes{1.06}{2016-06-18}{new} +%The format used by \cs{glsxtrusesee}. The first argument is the tag +%(such as \cs{seename}). The second argument is the comma-separated +%list of cross-referenced labels. +% \begin{macrocode} +\newcommand*{\glsxtruseseeformat}[2]{% + \glsseeformat[#1]{#2}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsseeitemformat} +%\changes{1.21}{2017-11-03}{new} +%\changes{1.22}{2017-11-08}{switched check from regular to short} +%\changes{1.37}{2018-11-30}{removed reference to \cs{glslabel}} +%\styfmt{glossaries} originally defined \cs{glsseeitemformat} +%to use \cs{glsentryname} but in v3.0 this was switched to +%use \cs{glsentrytext} due to problems occurring with the +%\gloskey{name} field being sanitized. Since this is no longer a +%problem, \styfmt{glossaries-extra} restores the original +%definition as it makes more sense to use the \gloskey{name} +%in the cross-reference list. This still uses \cs{glsaccesstext} +%for abbreviations. +% \begin{macrocode} +\renewcommand*{\glsseeitemformat}[1]{% + \ifglshasshort{#1}{\glsaccesstext{#1}}{\glsaccessname{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrhiername} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrhiername}\marg{label} +%\end{definition} +%Displays the hierarchical name for the given entry. The +%cross-reference format \cs{glsseeitemformat} may be redefined to +%use this command to show the hierarchy, if required. +% \begin{macrocode} +\newcommand*{\glsxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {}% + \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrhiername} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{Glsxtrhiername}\marg{label} +%\end{definition} +%As above but displays the top-level name with an initial capital. +% \begin{macrocode} +\newcommand*{\Glsxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {% + \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + }% + {\ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrhiername} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{GlsXtrhiername}\marg{label} +%\end{definition} +%As above but converts the first letter of each name to a capital. +% \begin{macrocode} +\newcommand*{\GlsXtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {}% + \ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrhiername} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{GLSxtrhiername}\marg{label} +%\end{definition} +%As above but displays the top-level name in all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {% + \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + }% + {\ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSXTRhiername} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{GLSXTRhiername}\marg{label} +%\end{definition} +%As above but displays all names in all-caps. +% \begin{macrocode} +\newcommand*{\GLSXTRhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {} + \ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrhiernamesep} +%\changes{1.37}{2018-11-30}{new} +%Separator used in \cs{glsxtrhiername} and variants. +% \begin{macrocode} +\newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruseseealso} +%\changes{1.16}{2017-06-15}{new} +%Apply \cs{glsseeformat} to the \gloskey{seealso} key if not empty. +%There's no optional tag to worry about here. +% \begin{macrocode} +\newcommand*{\glsxtruseseealso}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% + \ifdefempty\@glo@see + {}% + {% + \expandafter\glsxtruseseealsoformat\expandafter{\@glo@see}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruseseealsoformat} +%\changes{1.16}{2017-06-15}{new} +%The format used by \cs{glsxtruseseealso}. The argument is the comma-separated +%list of cross-referenced labels. +% \begin{macrocode} +\newcommand*{\glsxtruseseealsoformat}[1]{% + \glsseeformat[\seealsoname]{#1}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrseelist} +%\changes{1.16}{2017-06-15}{new} +%Fully expands argument before passing to \cs{glsseelist}. +%(The argument to \cs{glsseelist} must be a comma-separated list of +%entry labels.) +% \begin{macrocode} +\newrobustcmd{\glsxtrseelist}[1]{% + \edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\seealsoname} +%\changes{1.16}{2017-06-15}{new} +%In case this command hasn't been defined. (Should be provided by +%language packages.) +% \begin{macrocode} +\providecommand{\seealsoname}{see also} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrindexseealso} +%\changes{1.16}{2017-06-15}{new} +%If \cs{@xdycrossrefhook} is defined, provide a +%\texttt{seealso} crossref class. Otherwise this just does +%\cs{glssee} with \cs{seealsoname} as the tag. The hook is only +%defined if both \pkgopt{xindy} and \sty{glossaries} v4.30+ are +%being used. +% \begin{macrocode} +\ifdef\@xdycrossrefhook +{ +% \end{macrocode} +%Add the cross-reference class definition to the hook. +% \begin{macrocode} + \appto\@xdycrossrefhook{% + \write\glswrite{(define-crossref-class \string"seealso\string" + :unverified )}% + \write\glswrite{(markup-crossref-list + :class \string"seealso\string"^^J\space\space\space + :open \string"\string\glsxtruseseealsoformat\glsopenbrace\string" + :close \string"\glsclosebrace\string")}% + } +% \end{macrocode} +%Append to class list. +% \begin{macrocode} + \appto\@xdylocationclassorder{\space\string"seealso\string"} +% \end{macrocode} +%This essentially works like \cs{@do@seeglossary} but uses the +%\texttt{seealso} class. +%\changes{1.21}{2017-11-03}{added check that the entry exists} +%This doesn't increment the associated counter. +% \begin{macrocode} + \newrobustcmd*{\glsxtrindexseealso}[2]{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \@glsxtr@recordsee{#1}{#2}% + \fi + \glsdoifexists{#1}% + {% + \@@glsxtrwrglossmark + \def\@gls@xref{#2}% + \@onelevel@sanitize\@gls@xref + \@gls@checkmkidxchars\@gls@xref + \gls@glossary{\csname glo@#1@type\endcsname}{% + (indexentry + :tkey (\csname glo@#1@index\endcsname) + :xref (\string"\@gls@xref\string") + :attr \string"seealso\string" + ) + }% + }% + } +} +{ +% \end{macrocode} +% \pkgopt{xindy} not in use or \sty{glossaries} version too old to support this. +% \begin{macrocode} + \newrobustcmd*{\glsxtrindexseealso}{\glssee[\seealsoname]} +} +% \end{macrocode} +%\end{macro} +% +%The \gloskey{alias} key should be set to the label of the synonymous entry. +%The \gloskey{seealso} key essentially behaves like +%\texttt{see=[\cs{seealsoname}]\marg{xr-list}}. Neither of these new keys +%has the optional tag part allowed with \gloskey{see}. +% +% If \cs{gls@set@xr@key} has been defined (\sty{glossaries} v4.30), +% use that, otherwise just use \cs{glsaddstoragekey}. +% +% \begin{macrocode} +\ifdef\gls@set@xr@key +{ +% \end{macrocode} +% We have at least \sty{glossaries} v4.30. This means the new keys +% can be governed by the same settings as the see key. +% \begin{macrocode} + \define@key{glossentry}{alias}{% + \gls@set@xr@key{alias}{\@glo@alias}{#1}% + } + \define@key{glossentry}{seealso}{% + \gls@set@xr@key{seealso}{\@glo@seealso}{#1}% + } +% \end{macrocode} +% Add to the key mappings. +% \begin{macrocode} + \appto\@gls@keymap{,{alias}{alias},{seealso}{seealso}} +% \end{macrocode} +% Set the default value. +% \begin{macrocode} + \appto\@newglossaryentryprehook{\def\@glo@alias{}\def\@glo@seealso{}}% +% \end{macrocode} +% Assign the field values. +% \begin{macrocode} + \appto\@newglossaryentryposthook{% + \ifdefvoid\@glo@seealso + {\csxdef{glo@\@glo@label @seealso}{}}% + {% + \csxdef{glo@\@glo@label @seealso}{\@glo@seealso}% + \if@glsxtr@autoseeindex + \@glsxtr@autoindexcrossrefs + \fi + }% +% \end{macrocode} +% The \gloskey{alias} field doesn't trigger the automatic +% cross-reference indexing performed at the end of the document. +% \begin{macrocode} + \ifdefvoid\@glo@alias + {\csxdef{glo@\@glo@label @alias}{}}% + {% + \csxdef{glo@\@glo@label @alias}{\@glo@alias}% + }% + } +% \end{macrocode} +% Provide user-level commands to access the values. +%\begin{macro}{\glsxtralias} +% \begin{macrocode} + \newcommand*{\glsxtralias}[1]{\@gls@entry@field{#1}{alias}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrseealsolabels} +% \begin{macrocode} + \newcommand*{\glsxtrseealsolabels}[1]{\@gls@entry@field{#1}{seealso}} +% \end{macrocode} +%\end{macro} +%Add to the \cs{@glo@autosee} hook. +% \begin{macrocode} + \appto\@glo@autoseehook{% + \ifdefvoid\@glo@alias + {% + \ifdefvoid\@glo@seealso + {}% + {% + \edef\@do@glssee{\noexpand\glsxtrindexseealso + {\@glo@label}{\@glo@seealso}}% + \@do@glssee + }% + }% + {% +% \end{macrocode} +%Add cross-reference if see key hasn't been used. +% \begin{macrocode} + \ifdefvoid\@glo@see + {% + \edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}% + \@do@glssee + }% + {}% + }% + }% +} +{ +% \end{macrocode} +% We have an older version of \sty{glossaries}, so just use +% \cs{glsaddstoragekey}. +%\begin{macro}{\glsxtralias} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} + \glsaddstoragekey*{alias}{}{\glsxtralias} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrseealsolabels} +%\changes{1.16}{2017-06-15}{new} +% \begin{macrocode} + \glsaddstoragekey*{seealso}{}{\glsxtrseealsolabels} +% \end{macrocode} +%\end{macro} +% +%If \cs{gls@set@xr@key} isn't defined, then \cs{@glo@autosee} won't +%be either, so use the post entry definition hook. +% +%\begin{macro}{\@newglossaryentryposthook} +%\changes{1.12}{2017-02-03}{added check for alias key} +%Append to the hook to check for the \gloskey{alias} and +%\gloskey{seealso} keys. +% \begin{macrocode} + \appto\@newglossaryentryposthook{% + \ifcsvoid{glo@\@glo@label @alias}% + {% + \ifcsvoid{glo@\@glo@label @seealso}% + {}% + {% + \edef\@do@glssee{\noexpand\glsxtrindexseealso + {\@glo@label}{\csuse{glo@\@glo@label @seealso}}}% + \@do@glssee + }% + }% + {% +% \end{macrocode} +%Add cross-reference if see key hasn't been used. +% \begin{macrocode} + \ifdefvoid\@glo@see + {% + \edef\@do@glssee{\noexpand\glssee + {\@glo@label}{\csuse{glo@\@glo@label @alias}}}% + \@do@glssee + }% + {}% + }% + } +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +} +% \end{macrocode} +% +% +% Add all unused cross-references at the end of the document. +% \begin{macrocode} +\AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi} +% \end{macrocode} +% +%\begin{macro}{\glsxtraddallcrossrefs} +% Iterate through all used entries and if they have a +% cross-reference, make sure the cross-reference has been added. +% \begin{macrocode} +\newcommand*{\glsxtraddallcrossrefs}{% + \forallglossaries{\@glo@type}% + {% + \forglsentries[\@glo@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@addunusedxrefs} +% If the given entry has a \gloskey{see} or \gloskey{seealso} field add all unused +% cross-references. (The \gloskey{alias} field isn't checked.) +%\changes{1.16}{2017-06-15}{added check for \gloskey{seealso} field} +% \begin{macrocode} +\newcommand*{\@glsxtr@addunusedxrefs}[1]{% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% + \ifdefvoid\@glo@see + {}% + {% + \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused + }% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% + \ifdefvoid\@glo@see + {}% + {% + \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@addunused} +% Adds all the entries if they haven't been used. +% \begin{macrocode} +\newcommand*{\glsxtr@addunused}[1][]{% + \@glsxtr@addunused +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@addunused} +% Adds all the entries if they haven't been used. +% \begin{macrocode} +\def\@glsxtr@addunused#1\@end@glsxtr@addunused{% + \@for\@glsxtr@label:=#1\do + {% + \ifglsused{\@glsxtr@label}{}% + {% + \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}% + \glsunset{\@glsxtr@label}% + \expandafter\@glsxtr@addunusedxrefs\expandafter{\@glsxtr@label}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrunusedformat} +% \begin{macrocode} +\newcommand*{\glsxtrunusedformat}[1]{\unskip} +% \end{macrocode} +%\end{macro} +% +%\subsection{Document Definitions} +% +%\begin{macro}{\gls@begindocdefs} +%This command was only introduced to \styfmt{glossaries} v4.37, so +%it may not be defined. If it has been defined, redefine it to check +%\cs{@glsxtr@docdefval} so that it only inputs the \texttt{.glsdefs} +%file if \pkgopt[true]{docdef}. +% \begin{macrocode} +\ifdef\gls@begindocdefs +{% + \renewcommand*{\gls@begindocdefs}{% + \ifnum\@glsxtr@docdefval=1\relax + \@gls@enablesavenonumberlist + \edef\@gls@restoreat{% + \noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}% + \makeatletter + \InputIfFileExists{\jobname.glsdefs}{}{}% + \@gls@restoreat + \undef\@gls@restoreat + \gls@defdocnewglossaryentry + \else + \ifnum\@glsxtr@docdefval=3\relax +% \end{macrocode} +%\changes{1.34}{2018-07-29}{added support for docdef=atom} +%The \pkgopt[atom]{docdef} package option has been set. Create the +%.glsdefs file for the autocomplete support but don't read it. +% \begin{macrocode} + \@gls@enablesavenonumberlist + \let\gls@checkseeallowed\relax + \let\newglossaryentry\new@atom@glossaryentry + \global\newwrite\@gls@deffile + \immediate\openout\@gls@deffile=\jobname.glsdefs +% \end{macrocode} +%Write all currently defined entries. +% \begin{macrocode} + \forallglsentries{\@glsentry}{\@gls@writedef{\@glsentry}}% + \fi + \fi + } +} +{% + \ifnum\@glsxtr@docdefval=3\relax + \PackageError{glossaries-extra}{Package option + `docdef=\@glsxtr@docdefsetting' requires at least version 4.37 + of the base glossaries.sty package}{} + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\new@atom@glossaryentry} +% \begin{macrocode} +\newrobustcmd{\new@atom@glossaryentry}[2]{% + \gls@defglossaryentry{#1}{#2}% + \@gls@writedef{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\makenoidxglossaries} +%Modify \cs{makenoidxglossaries} so that it automatically +%sets \pkgopt[false]{docdef} (unless the restricted setting is on) +%and disables the \pkgopt{docdef} key. +%This command isn't allowed with the \pkgopt{record} option. +% \begin{macrocode} +\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries +\renewcommand{\makenoidxglossaries}{% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {% + \glsxtr@orgmakenoidxglossaries +% \end{macrocode} +%Add marker to \cs{@do@seeglossary} but don't increment associated +%counter. +% \begin{macrocode} + \renewcommand{\@do@seeglossary}[2]{% + \@@glsxtrwrglossmark + \edef\@gls@label{\glsdetoklabel{##1}}% + \protected@write\@auxout{}{% + \string\@gls@reference + {\csname glo@\@gls@label @type\endcsname}% + {\@gls@label}% + {% + \string\glsseeformat##2{}% + }% + }% + }% +% \end{macrocode} +%Check for \pkgopt[restricted]{docdefs}: +% \begin{macrocode} + \if@glsxtrdocdefrestricted +% \end{macrocode} +%If restricted document definitions allowed, adjust +%\cs{@gls@reference} so that it doesn't test for existence. +% \begin{macrocode} + \renewcommand*{\@gls@reference}[3]{% + \ifcsundef{@glsref@##1}{\csgdef{@glsref@##1}{}}{}% + \ifinlistcs{##2}{@glsref@##1}% + {}% + {\listcsgadd{@glsref@##1}{##2}}% + \ifcsundef{glo@\glsdetoklabel{##2}@loclist}% + {\csgdef{glo@\glsdetoklabel{##2}@loclist}{}}% + {}% + \listcsgadd{glo@\glsdetoklabel{##2}@loclist}{##3}% + }% + \else +% \end{macrocode} +%Disable document definitions. +% \begin{macrocode} + \@glsxtrdocdeffalse + \fi + \disable@keys{glossaries-extra.sty}{docdef}% + }% + {% + \PackageError{glossaries-extra}{\string\makenoidxglossaries\space + not permitted\MessageBreak + with record=\@glsxtr@record@setting\space package option}% + {You may only use \string\makenoidxglossaries\ space with the + record=off option}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gls@defdocnewglossaryentry} +% Modify \cs{gls@defdocnewglossaryentry} so that it checks +% the \pkgopt{docdef} value. +% \begin{macrocode} +\renewcommand*{\gls@defdocnewglossaryentry}{% + \ifcase\@glsxtr@docdefval +% \end{macrocode} +% \pkgopt[false]{docdef}: +% \begin{macrocode} + \renewcommand*{\newglossaryentry}[2]{% + \PackageError{glossaries-extra}{Glossary entries must + be \MessageBreak defined in the preamble with \MessageBreak + package option `docdef=false'\MessageBreak(consider using + `docdef=restricted')}{Move your glossary definitions to + the preamble. You can also put them in a \MessageBreak separate file + and load them with \string\loadglsentries.}% + }% + \or +% \end{macrocode} +% (\pkgopt[true]{docdef} case.) +% Since the \gloskey{see} value is now saved in a field, it +% can be used by entries that have been defined in the document. +% \begin{macrocode} + \let\gls@checkseeallowed\relax + \let\newglossaryentry\new@glossaryentry + \else +% \end{macrocode} +%Restricted mode just needs to allow the \gloskey{see} value. +% \begin{macrocode} + \let\gls@checkseeallowed\relax + \fi +}% +% \end{macrocode} +%\end{macro} +% +% Permit a special form of document definition, but only allow +% it if the glossaries come at the end of the document. These +% commands behave a little like a combination of \cs{newterm} +% and \cs{gls}. This must be explicitly enabled with +% the following. +% +%\begin{macro}{\GlsXtrEnableOnTheFly} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrEnableOnTheFly}{% + \@ifstar\@sGlsXtrEnableOnTheFly\@GlsXtrEnableOnTheFly +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@sGlsXtrEnableOnTheFly} +%\changes{0.5.4}{2015-12-15}{new} +% The starred version attempts to allow UTF8 characters in the +% label, but this may break! (Formatting commands mustn't be used in the +% label, but the label may be a command whose replacement text is the +% actual label. This doesn't take into account a command that's +% defined in terms of another command that may eventually expand to +% the label text.) +% \begin{macrocode} +\newcommand*{\@sGlsXtrEnableOnTheFly}{% + \renewcommand*{\glsdetoklabel}[1]{% + \expandafter\@glsxtr@ifcsstart\string##1 \@glsxtr@end@ + {% + \expandafter\detokenize\expandafter{##1}% + }% + {\detokenize{##1}}% + }% + \@GlsXtrEnableOnTheFly +} +\def\@glsxtr@ifcsstart#1#2\@glsxtr@end@#3#4{% + \expandafter\if\glsbackslash#1% + #3% + \else + #4% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrstarflywarn} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrstarflywarn}{% + \GlossariesExtraWarning{Experimental starred version of + \string\GlsXtrEnableOnTheFly\space in use (please ensure you have + read the warnings in the glossaries-extra user manual)}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrEnableOnTheFly} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@GlsXtrEnableOnTheFly}{% +% \end{macrocode} +%\end{macro} +% Don't redefine \cs{glsdetoklabel} if LuaTeX or XeTeX is being +% used, since it's mainly to allow accented characters in the +% label. +% +% These definitions are all assigned the category given by: +%\begin{macro}{\glsxtrcat} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\glsxtrcat}{general} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\glsxtr}[1][]{% + \def\glsxtr@keylist{##1}% + \@glsxtr + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\@glsxtr}[2][]{% + \ifglsentryexists{##2}% + {% + \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% + }% + {% + \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, + description={\nopostdesc},##1}% + }% + \expandafter\gls\expandafter[\glsxtr@keylist]{##2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtr} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\Glsxtr}[1][]{% + \def\glsxtr@keylist{##1}% + \@Glsxtr + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\@Glsxtr}[2][]{% + \ifglsentryexists{##2}% + {% + \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% + }% + {% + \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, + description={\nopostdesc},##1}% + }% + \expandafter\Gls\expandafter[\glsxtr@keylist]{##2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpl} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\glsxtrpl}[1][]{% + \def\glsxtr@keylist{##1}% + \@glsxtrpl + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrpl} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\@glsxtrpl}[2][]{% + \ifglsentryexists{##2}% + {% + \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% + }% + {% + \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, + description={\nopostdesc},##1}% + }% + \expandafter\glspl\expandafter[\glsxtr@keylist]{##2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrpl} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\Glsxtrpl}[1][]{% + \def\glsxtr@keylist{##1}% + \@Glsxtrpl + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtrpl} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\@Glsxtrpl}[2][]{% + \ifglsentryexists{##2} + {% + \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}% + }% + {% + \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat, + description={\nopostdesc},##1}% + }% + \expandafter\Glspl\expandafter[\glsxtr@keylist]{##2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrWarning} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} + \newcommand*{\GlsXtrWarning}[2]{% + \def\@glsxtr@optlist{##1}% + \@onelevel@sanitize\@glsxtr@optlist + \GlossariesExtraWarning{The options `\@glsxtr@optlist' have + been ignored for entry `##2' as it has already been defined}% + } +% \end{macrocode} +%\end{macro} +% Disable commands after the glossary: +% \begin{macrocode} + \renewcommand\@printglossary[2]{% + \def\@glsxtr@printglossopts{##1}% + \@glsxtr@orgprintglossary{##1}{##2}% + \def\@glsxtr{\@glsxtr@disabledflycommand\glsxtr}% + \def\@glsxtrpl{\@glsxtr@disabledflycommand\glsxtrpl}% + \def\@Glsxtr{\@glsxtr@disabledflycommand\Glsxtr}% + \def\@Glsxtrpl{\@glsxtr@disabledflycommand\Glsxtrpl}% + } +% \end{macrocode} +% +%\begin{macro}{\@glsxtr@disabledflycommand} +% \begin{macrocode} + \newcommand*{\@glsxtr@disabledflycommand}[1]{% + \PackageError{glossaries-extra}% + {\string##1\space can't be used after any of the \MessageBreak + glossaries have been displayed}% + {The on-the-fly commands enabled by + \string\GlsXtrEnableOnTheFly\space may only be used \MessageBreak + before the glossaries. If you want to use any entries \MessageBreak + after any of the glossaries, you must use the standard \MessageBreak + method of first defining the entry and then using the \MessageBreak + entry with commands like \string\gls}% + \@@glsxtr@disabledflycommand + }% + \newcommand*{\@@glsxtr@disabledflycommand}[2][]{##2} +% \end{macrocode} +%\end{macro} +% +% End of \cs{GlsXtrEnableOnTheFly}. Disable since it can only +% be used once. +% \begin{macrocode} + \let\GlsXtrEnableOnTheFly\relax +} +\@onlypreamble\GlsXtrEnableOnTheFly +% \end{macrocode} +% +%\subsection{Existing Glossary Style Modifications} +% +% Modify \cs{setglossarystyle} to keep track of the current style. +% This allows the \cs{glossaries-extra-stylemods} package to reset the +% current style after the required modifications have been made. +%\begin{macro}{\@glsxtr@current@style} +%\changes{1.02}{2016-04-25}{new} +% Initialise the current style to the default style. +% \begin{macrocode} +\newcommand*{\@glsxtr@current@style}{\@glossary@default@style} +% \end{macrocode} +%\end{macro} +% +% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style}. +%\begin{macro}{\setglossarystyle} +% \begin{macrocode} +\renewcommand*{\setglossarystyle}[1]{% + \ifcsundef{@glsstyle@#1}% + {% + \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}% + }% + {% + \csname @glsstyle@#1\endcsname +% \end{macrocode} +% Only set the current style if it exists. +% \begin{macrocode} + \protected@edef\@glsxtr@current@style{#1}% + }% + \ifx\@glossary@default@style\relax + \protected@edef\@glossary@default@style{#1}% + \fi +} +% \end{macrocode} +%\end{macro} +% +% In case we have an old version of \styfmt{glossaries}: +% \begin{macrocode} +\ifdef\@glossary@default@style +{} +{% + \let\@glossary@default@style\relax +} +% \end{macrocode} +% +%\begin{macro}{\glslistdottedwidth} +%If \cs{glslistdottedwidth} has been defined and is currently equal +%to \verb|.5\hsize| then make the modification suggested in +%\href{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=92}{bug report \#92} +% \begin{macrocode} +\ifdef\glslistdottedwidth +{% + \ifdim\glslistdottedwidth=.5\hsize + \setlength{\glslistdottedwidth}{-\dimexpr\maxdimen-1sp\relax} + \AtBeginDocument{% + \ifdim\glslistdottedwidth=-\dimexpr\maxdimen-1sp\relax + \setlength{\glslistdottedwidth}{.5\columnwidth}% + \fi + }% + \fi +} +{}% +% \end{macrocode} +%\end{macro} +% +%Similarly for \cs{glsdescwidth}: +%\begin{macro}{\glsdescwidth} +%\changes{0.5.3}{2015-12-09}{added} +% \begin{macrocode} +\ifdef\glsdescwidth +{% + \ifdim\glsdescwidth=.6\hsize + \setlength{\glsdescwidth}{-\dimexpr\maxdimen-1sp\relax} + \AtBeginDocument{% + \ifdim\glsdescwidth=-\dimexpr\maxdimen-1sp\relax + \setlength{\glsdescwidth}{.6\columnwidth}% + \fi + }% + \fi +} +{}% +% \end{macrocode} +%\end{macro} +%and for \cs{glspagelistwidth}: +%\begin{macro}{\glspagelistwidth} +%\changes{0.5.3}{2015-12-09}{added} +% \begin{macrocode} +\ifdef\glspagelistwidth +{% + \ifdim\glspagelistwidth=.1\hsize + \setlength{\glspagelistwidth}{-\dimexpr\maxdimen-1sp\relax} + \AtBeginDocument{% + \ifdim\glspagelistwidth=-\dimexpr\maxdimen-1sp\relax + \setlength{\glspagelistwidth}{.1\columnwidth}% + \fi + }% + \fi +} +{}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glossaryentrynumbers} +% Has the \pkgopt{nonumberlist} option been used? +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\def\org@glossaryentrynumbers#1{#1\gls@save@numberlist{#1}}% +\ifx\org@glossaryentrynumbers\glossaryentrynumbers + \glsnonumberlistfalse + \renewcommand*{\glossaryentrynumbers}[1]{% + \ifglsentryexists{\glscurrententrylabel}% + {% + \@glsxtrpreloctag + \GlsXtrFormatLocationList{#1}% + \@glsxtrpostloctag + \gls@save@numberlist{#1}% + }{}% + }% +\else + \glsnonumberlisttrue + \renewcommand*{\glossaryentrynumbers}[1]{% + \ifglsentryexists{\glscurrententrylabel}% + {% + \gls@save@numberlist{#1}% + }{}% + }% +\fi +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrFormatLocationList} +%\changes{0.5.2}{2015-12-08}{new} +% Provide an easy interface to change the format of the location +% list without removing the save number list stuff. +% \begin{macrocode} +\newcommand*{\GlsXtrFormatLocationList}[1]{#1} +% \end{macrocode} +%\end{macro} +% +% Sometimes users want to prefix the location list with +% \qt{page}\slash\qt{pages}. The simplest way to determine if the +% location list consists of a single location is to check for +% instances of \cs{delimN} or \cs{delimR}, but this isn't so easy to +% do as they might be embedded inside the argument of formatting +% commands. With a bit of trickery we can find out by adjusting +% \cs{delimN} and \cs{delimR} to set a flag and then save +% information to the auxiliary file for the next run. +%\begin{macro}{\GlsXtrEnablePreLocationTag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrEnablePreLocationTag}[2]{% + \let\@glsxtrpreloctag\@@glsxtrpreloctag + \let\@glsxtrpostloctag\@@glsxtrpostloctag + \renewcommand*{\@glsxtr@pagetag}{#1}% + \renewcommand*{\@glsxtr@pagestag}{#2}% + \renewcommand*{\@glsxtr@savepreloctag}[2]{% + \csgdef{@glsxtr@preloctag@##1}{##2}% + }% + \renewcommand*{\@glsxtr@doloctag}{% + \ifcsundef{@glsxtr@preloctag@\glscurrententrylabel}% + {% + \GlossariesWarning{Missing pre-location tag for `\glscurrententrylabel'. + Rerun required}% + }% + {% + \csuse{@glsxtr@preloctag@\glscurrententrylabel}% + }% + }% +} +\@onlypreamble\GlsXtrEnablePreLocationTag +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrpreloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtrpreloctag}{% + \let\@glsxtr@org@delimN\delimN + \let\@glsxtr@org@delimR\delimR + \let\@glsxtr@org@glsignore\glsignore +% \end{macrocode} +% \cs{gdef} is required as the delimiters may occur inside a scope. +% \begin{macrocode} + \gdef\@glsxtr@thisloctag{\@glsxtr@pagetag}% + \renewcommand*{\delimN}{% + \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}% + \@glsxtr@org@delimN}% + \renewcommand*{\delimR}{% + \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}% + \@glsxtr@org@delimR}% + \renewcommand*{\glsignore}[1]{% + \gdef\@glsxtr@thisloctag{\relax}% + \@glsxtr@org@glsignore{##1}}% + \@glsxtr@doloctag +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrpreloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrpreloctag}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@pagetag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@pagetag}{}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@pagestag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@pagestag}{}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@@glsxtrpostloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtrpostloctag}{% + \let\delimN\@glsxtr@org@delimN + \let\delimR\@glsxtr@org@delimR + \let\glsignore\@glsxtr@org@glsignore + \protected@write\@auxout{}% + {\string\@glsxtr@savepreloctag{\glscurrententrylabel}{\@glsxtr@thisloctag}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrpostloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrpostloctag}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@preloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@savepreloctag}[2]{} +\protected@write\@auxout{}{% + \string\providecommand\string\@glsxtr@savepreloctag[2]{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@doloctag} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@doloctag}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\KV@printgloss@nonumberlist} +% Modify the \gloskey[printglossary]{nonumberlist} key to +% use \cs{GlsXtrFormatLocationList} (and also save the number list): +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\renewcommand*{\KV@printgloss@nonumberlist}[1]{% + \XKV@plfalse + \XKV@sttrue + \XKV@checkchoice[\XKV@resa]{#1}{true,false}% + {% + \csname glsnonumberlist\XKV@resa\endcsname + \ifglsnonumberlist + \def\glossaryentrynumbers##1{\gls@save@numberlist{##1}}% + \else + \def\glossaryentrynumbers##1{% + \@glsxtrpreloctag + \GlsXtrFormatLocationList{##1}% + \@glsxtrpostloctag + \gls@save@numberlist{##1}}% + \fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\subsection{Entry Formatting, Hyperlinks and Indexing} +% +%\begin{macro}{\glsentryfmt} +% Change default entry format. Use the generic format for regular +% terms (that is, entries that have a category with the \catattr{regular} +% attribute set) or non-regular terms without a short value and use the abbreviation format for non-regular +% terms that have a short value. If further attributes need to be checked, then +% \cs{glsentryfmt} will need redefining as appropriate (or use +% \cs{defglsentryfmt}). +%\changes{0.3}{2015-12-02}{added check for short} +% The abbreviation format is set here for entries that have a short +% form, even if they are regular entries to ensure the abbreviation +% fonts are correct. +%\changes{0.5.2}{2015-12-08}{moved \cs{glssetabbrvfmt} from +%\cs{glsxtrabbrvfmt} to here} +% \begin{macrocode} +\renewcommand*{\glsentryfmt}{% + \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}% + \glsifregular{\glslabel}% + {\glsxtrregularfont{\glsgenentryfmt}}% + {% + \ifglshasshort{\glslabel}% + {\glsxtrabbreviationfont{\glsxtrgenabbrvfmt}}% + {\glsxtrregularfont{\glsgenentryfmt}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrregularfont} +%\changes{1.04}{2016-05-02}{new} +% Font used for regular entries. +% \begin{macrocode} +\newcommand*{\glsxtrregularfont}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrabbreviationfont} +%\changes{1.30}{2018-04-25}{new} +% Font used for abbreviation entries. +% \begin{macrocode} +\newcommand*{\glsxtrabbreviationfont}[1]{#1} +% \end{macrocode} +%\end{macro} +% +% Commands like \cs{glsifplural} are only used by the \cs{gls}-like +% commands in the \styfmt{glossaries} package, but it might be useful +% for the postlink hook to know if the user has used, say, +% \cs{glsfirst} or \cs{glsplural}. This can provide better +% consistency with the formatting of the \cs{gls}-like commands, +% even though they don't use \cs{glsentryfmt}. +% +%\begin{macro}{\@gls@field@link} +% Redefine \cs{@gls@field@link} so that commands like \cs{glsfirst} +% can setup \cs{glsxtrifwasfirstuse} etc to allow the postlink hook +% to work better. This now has an optional argument that sets up the +% defaults. +%\changes{0.3}{2015-12-02}{added optional argument} +% \begin{macrocode} +\renewcommand{\@gls@field@link}[4][]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#2}{#3}{glslink}% + \glsdoifexists{#3}% + {% +% \end{macrocode} +%Save and restore the hyper setting (\cs{@gls@link} also does this, +%but that's too late if the optional argument of \cs{@gls@field@link} +%modifies it). +% \begin{macrocode} + \let\glsxtrorg@ifKV@glslink@hyper\ifKV@glslink@hyper + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \def\glscustomtext{#4}% + \@glsxtr@field@linkdefs + #1% + \@gls@link[#2]{#3}{#4}% + \let\ifKV@glslink@hyper\glsxtrorg@ifKV@glslink@hyper + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%The commands \cs{gls}, \cs{Gls} etc don't use \cs{@gls@field@link}, +%so they need modifying as well to use \cs{@glsxtr@record}. +% +%\begin{macro}{\@gls@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@gls@\@gls@ +\def\@gls@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@gls@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glspl@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@glspl@\@glspl@ +\def\@glspl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@glspl@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Gls@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@Gls@\@Gls@ +\def\@Gls@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@Gls@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glspl@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@Glspl@\@Glspl@ +\def\@Glspl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@Glspl@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLS@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@GLS@\@GLS@ +\def\@GLS@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@GLS@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSpl@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%\changes{1.10}{2016-12-17}{fixed bug caused by typo in command name} +%Save the original definition and redefine. +% \begin{macrocode} +\let\@glsxtr@org@GLSpl@\@GLSpl@ +\def\@GLSpl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@GLSpl@{#1}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsdisp} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%\changes{1.13}{2017-02-07}{removed \cs{@glsxtr@org@glsdisp}} +%This is redefined to allow the recording on the first run. +%Can't save and restore \cs{@glsdisp} since it has an optional +%argument. +% \begin{macrocode} +\renewcommand*{\@glsdisp}[3][]{% + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}{% + \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \def\glscustomtext{#3}% + \def\glsinsert{}% + \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% + \@gls@link[#1]{#2}{\@glo@text}% + \ifKV@glslink@local + \glslocalunset{#2}% + \else + \glsunset{#2}% + \fi + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@@link@} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%Redefine to include \cs{@glsxtr@record} +% \begin{macrocode} +\renewcommand*{\@gls@@link}[3][]{% + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexistsordo{#2}% + {% + \let\do@gls@link@checkfirsthyper\relax +% \end{macrocode} +%\changes{1.35}{2018-08-13}{initialise post-link hook commands} +% Post-link hook commands need initialising. +% \begin{macrocode} + \def\glscustomtext{#3}% + \@glsxtr@field@linkdefs + \@gls@link[#1]{#2}{#3}% + }% + {% + \glstextformat{#3}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrinitwrgloss} +%\changes{1.14}{2017-04-18}{new} +%Set the default if the \gloskey[glslink]{wrgloss} is omitted. +% \begin{macrocode} +\newcommand*{\glsxtrinitwrgloss}{% + \glsifattribute{\glslabel}{wrgloss}{after}% + {% + \glsxtrinitwrglossbeforefalse + }% + {% + \glsxtrinitwrglossbeforetrue + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifglsxtrwrglossbefore} +%\changes{1.14}{2017-04-18}{new} +%Conditional to determine if the indexing should be done before the +%link text. +% \begin{macrocode} +\newif\ifglsxtrinitwrglossbefore +\glsxtrinitwrglossbeforetrue +% \end{macrocode} +%\end{macro} +% +% Define a \gloskey[glslink]{wrgloss} key to determine whether to +% write the glossary information before or after the link text. +% \begin{macrocode} +\define@choicekey{glslink}{wrgloss}% +[\@glsxtr@wrglossval\@glsxtr@wrglossnr]% +{before,after}% +{% + \ifcase\@glsxtr@wrglossnr\relax + \glsxtrinitwrglossbeforetrue + \or + \glsxtrinitwrglossbeforefalse + \fi +} +% \end{macrocode} +%\changes{1.19}{2017-09-09}{added \cs{glslink} option \texttt{thevalue}} +% \begin{macrocode} +\define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}} +% \end{macrocode} +% +%\changes{1.19}{2017-09-09}{added \cs{glslink} option \texttt{theHvalue}} +% \begin{macrocode} +\define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}} +% \end{macrocode} +% +%\begin{macro}{\ifglsxtr@hyperoutside} +%\changes{1.21}{2017-11-03}{new} +% Define a \gloskey[glslink]{hyperoutside} key to determine whether +% \cs{hyperlink} should be outside \cs{glstextformat}. +% \begin{macrocode} +\define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{} +\glsxtr@hyperoutsidetrue +% \end{macrocode} +% +%\end{macro} +% +%\begin{macro}{\@glsxtr@local@textformat} +%\changes{1.30}{2018-04-25}{new} +%Provide a key to locally change the text format. +% \begin{macrocode} +\define@key{glslink}{textformat}{% + \ifcsdef{#1} + {% + \letcs{\@glsxtr@local@textformat}{#1}% + }% + {% + \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\changes{1.31}{2018-05-09}{added \texttt{prefix} key for \texttt{glslink}} +% \begin{macrocode} +\define@key{glslink}{prefix}{\def\glolinkprefix{#1}} +% \end{macrocode} +% +%\begin{macro}{\glsxtrinithyperoutside} +%\changes{1.21}{2017-11-03}{new} +%Set the default if the \gloskey[glslink]{hyperoutside} is omitted. +% \begin{macrocode} +\newcommand*{\glsxtrinithyperoutside}{% + \glsifattribute{\glslabel}{hyperoutside}{false}% + {% + \glsxtr@hyperoutsidefalse + }% + {% + \glsxtr@hyperoutsidetrue + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@inc@linkcount} +%\changes{1.26}{2018-01-05}{new} +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\glsxtr@inc@linkcount}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslinkpresetkeys} +%\changes{1.26}{2018-01-05}{new} +%User hook performed immediately before options are set. +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\glslinkpresetkeys}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrExpandedFmt} +%\changes{1.30}{2018-04-25}{new} +%Helper command that (protected) fully expands second argument and +%then applies it to the first, which must be a command that takes a +%single argument. +% \begin{macrocode} +\newrobustcmd*{\GlsXtrExpandedFmt}[2]{% + \protected@edef\@glsxtr@tmp{#2}% + \expandafter#1\expandafter{\@glsxtr@tmp}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@use@equation@counter@or} +%\changes{1.37}{2018-11-30}{new} +%If in a numbered equation, change the counter to \ctr{equation}. +%This can be overridden by explicitly setting the counter in the +%optional argument of commands like \cs{gls} and \cs{glslink}. +% \begin{macrocode} +\newcommand*{\@glsxtr@use@equation@counter}{% + \@glsxtr@ifnum@mmode{\def\@gls@counter{equation}}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@do@autoadd} +%\changes{1.37}{2018-11-30}{new} +%If \cs{GlsXtrAutoAddOnFormat} is used, this will automatically use +%\cs{glsadd}. It's therefore only used with \cs{@gls@link} not with +%\cs{glsadd} otherwise it could trigger an infinite loop. The +%argument indicates the key family (glslink or glossadd). +% \begin{macrocode} +\newcommand*{\glsxtr@do@autoadd}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrAutoAddOnFormat} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{GlsXtrAutoAddOnFormat}\oarg{label}\marg{format list}\marg{glsadd options} +%\end{definition} +%If an entry is indexed with the format set to one identified in the +%comma-separated list, then automatically index it using \cs{glsadd} +%with the given options, which may override the current options. +%Scoping is needed to prevent leakage. +% \begin{macrocode} +\newcommand*{\GlsXtrAutoAddOnFormat}[3][\glslabel]{% + \renewcommand*{\glsxtr@do@autoadd}[1]{% + \begingroup + \protected@edef\@glsxtr@do@autoadd{% + \noexpand\ifstrequal{##1}{glslink}% + {% + \noexpand\DTLifinlist{\@glsnumberformat}{#2}{\noexpand\glsadd[format={\@glsnumberformat},#3]{#1}}{}% + }% + {}% + }% + \@glsxtr@do@autoadd + \endgroup + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@link} +%\changes{1.14}{2017-04-18}{added redefinition} +%Redefine to allow the indexing to be placed after the link text. By +%default this is done before the link text to prevent problems that +%can occur from the whatsit, but there may be times when the user +%would like the indexing done afterwards even though it causes a +%whatsit. +% \begin{macrocode} +\def\@gls@link[#1]#2#3{% + \leavevmode + \edef\glslabel{\glsdetoklabel{#2}}% + \def\@gls@link@opts{#1}% + \let\@gls@link@label\glslabel + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% + \edef\glstype{\csname glo@\glslabel @type\endcsname}% + \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper +% \end{macrocode} +%Save current value of \cs{glolinkprefix}: +% \begin{macrocode} + \let\@glsxtr@org@glolinkprefix\glolinkprefix +% \end{macrocode} +%Initialise \cs{@glsxtr@local@textformat} +% \begin{macrocode} + \let\@glsxtr@local@textformat\relax +% \end{macrocode} +% Initialise thevalue and theHvalue (v1.19). +% \begin{macrocode} + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% +% \end{macrocode} +% Initialise when indexing should occur (new to v1.14). +% \begin{macrocode} + \glsxtrinitwrgloss +% \end{macrocode} +% Initialise whether \cs{hyperlink} should be outside \cs{glstextformat} +% (new to v1.21). +% \begin{macrocode} + \glsxtrinithyperoutside +% \end{macrocode} +% Note that the default link options may +% override \cs{glsxtrinitwrgloss}. +% \begin{macrocode} + \@gls@setdefault@glslink@opts +% \end{macrocode} +%Increment link counter if enabled (new to v1.26). +% \begin{macrocode} + \glsxtr@inc@linkcount +% \end{macrocode} +% Check if the \pkgopt{equations} option has been set (new to v1.37). +% \begin{macrocode} + \if@glsxtr@equations + \@glsxtr@use@equation@counter + \fi +% \end{macrocode} +% As the original definition. +% \begin{macrocode} + \do@glsdisablehyperinlist + \do@gls@link@checkfirsthyper +% \end{macrocode} +%User hook before options are set (new to v1.26): +% \begin{macrocode} + \glslinkpresetkeys +% \end{macrocode} +%Set options. +% \begin{macrocode} + \setkeys{glslink}{#1}% +% \end{macrocode} +%Perform auto add if set (new to v1.37) +% \begin{macrocode} + \glsxtr@do@autoadd{glslink}% +% \end{macrocode} +%User hook after options are set: +% \begin{macrocode} + \glslinkpostsetkeys +% \end{macrocode} +% Check \gloskey[glslink]{thevalue} and \gloskey[glslink]{theHvalue} +% before saving (v1.19). +% \begin{macrocode} + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \@gls@setsort{\glslabel}% +% \end{macrocode} +%Check if the \gloskey[glslink]{textformat} key has been used. +% \begin{macrocode} + \ifx\@glsxtr@local@textformat\relax +% \end{macrocode} +% Check \catattr{textformat} attribute (new to v1.21). +% \begin{macrocode} + \glshasattribute{\glslabel}{textformat}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{\glslabel}{textformat}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in textformat attribute + for entry `\glslabel'. Reverting to default \string\glstextformat}% + \let\@glsxtr@textformat\glstextformat + }% + }% + {% + \let\@glsxtr@textformat\glstextformat + }% + \else + \let\@glsxtr@textformat\@glsxtr@local@textformat + \fi +% \end{macrocode} +% Do write if it should occur before the link text: +% \begin{macrocode} + \ifglsxtrinitwrglossbefore + \@do@wrglossary{#2}% + \fi +% \end{macrocode} +% Do the link text: +% \begin{macrocode} + \ifKV@glslink@hyper + \ifglsxtr@hyperoutside + \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \else + \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}% + \fi + \else + \ifglsxtr@hyperoutside + \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \else + \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}% + \fi + \fi +% \end{macrocode} +% Do write if it should occur after the link text: +% \begin{macrocode} + \ifglsxtrinitwrglossbefore + \else + \@do@wrglossary{#2}% + \fi +% \end{macrocode} +%Restore original value of \cs{glolinkprefix}: +% \begin{macrocode} + \let\glolinkprefix\@glsxtr@org@glolinkprefix +% \end{macrocode} +% As the original definition: +% \begin{macrocode} + \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper +} +% \end{macrocode} +%\end{macro} +% +%\changes{1.14}{2017-04-18}{added \cs{glsadd} option \texttt{thevalue}} +% \begin{macrocode} +\define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}} +% \end{macrocode} +% +%\changes{1.14}{2017-04-18}{added \cs{glsadd} option \texttt{theHvalue}} +% \begin{macrocode} +\define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}} +% \end{macrocode} +% +%\begin{macro}{\glsaddpresetkeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsaddpresetkeys}{} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\glsaddpostsetkeys} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsaddpostsetkeys}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsadd} +%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}} +%\changes{1.37}{2018-11-30}{added grouping} +%Redefine to include \cs{@glsxtr@record} and suppress in headings +% \begin{macrocode} +\renewrobustcmd*{\glsadd}[2][]{% + \glsxtrifinmark + {}% + {% + \@gls@adjustmode + \begingroup + \@glsxtr@record{#1}{#2}{glossadd}% + \glsdoifexists{#2}% + {% + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% +% \end{macrocode} +%Implement any default settings (before options are set) +%\changes{1.30}{2018-04-25}{added \cs{glsaddpresetkeys}} +% \begin{macrocode} + \glsaddpresetkeys + \setkeys{glossadd}{#1}% +% \end{macrocode} +%Implement any default settings (after options are set) +%\changes{1.30}{2018-04-25}{added \cs{glsaddpostsetkeys}} +% \begin{macrocode} + \glsaddpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% +% \end{macrocode} +% Define sort key if necessary (in case of \pkgopt[use]{sort}): +%\changes{1.24}{2017-11-14}{added \cs{@gls@setsort}} +% \begin{macrocode} + \@gls@setsort{#2}% +% \end{macrocode} +%Ensure that indexing occurs (since that's the point of +%\cs{glsadd}). If indexing has been switched off by default, don't +%want the setting to affect \cs{glsadd}. The ignored format +%\cs{glsignore} can be used for selection without location, but the +%indexing still needs to be performed. +%\changes{1.37}{2018-11-30}{ensure that \cs{glsadd} performs indexing} +% \begin{macrocode} + \KV@glslink@noindexfalse + \@@do@wrglossary{#2}% + }% + \endgroup + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaddeach} +%\changes{1.31}{2018-05-09}{new} +%Performs \cs{glsadd} for each entry listed in the mandatory +%argument. +% \begin{macrocode} +\newrobustcmd{\glsaddeach}[2][]{% + \@for\@gls@thislabel:=#2\do{\glsadd[#1]{\@gls@thislabel}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@field@linkdefs} +% Default settings for \cs{@gls@field@link} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@field@linkdefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty +} +% \end{macrocode} +%\end{macro} +% +%Redefine the field link commands that need to modify the above. +%Also add accessibility support and set the abbreviation styles if +%required. +%\begin{macro}{\glsxtrassignfieldfont} +%\changes{1.04}{2016-05-02}{new} +%\changes{1.08}{2016-12-13}{added check for existence} +% \begin{macrocode} +\newcommand*{\glsxtrassignfieldfont}[1]{% + \ifglsentryexists{#1}% + {% + \ifglshasshort{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glsifregular{#1}% + {\let\@gls@field@font\glsxtrregularfont}% + {\let\@gls@field@font\@firstofone}% + }% + {% + \glsifnotregular{#1}% + {\let\@gls@field@font\@firstofone}% + {\let\@gls@field@font\glsxtrregularfont}% + }% + }% + {% + \let\@gls@field@font\@gobble + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glstext@} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@glstext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLStext@} +% All uppercase version of \cs{glstext}. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@GLStext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}% + {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glstext@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@Glstext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}% + {\@gls@field@font{\Glsaccesstext{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%Version 1.07 ensures that \cs{glsfirst} etc honours the +%\catattr{nohyperfirst} attribute. Allow a convenient way for the +%user to revert to ignoring this attribute for these commands. +%\begin{macro}{\glsxtrchecknohyperfirst} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrchecknohyperfirst}[1]{% + \glsifattribute{#1}{nohyperfirst}{true}{\KV@glslink@hyperfalse}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsfirst@} +% No case changing version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@glsfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{glsfirst} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \glsxtrchecknohyperfirst{#2}% + ]{#1}{#2}% + {\@gls@field@font{\glsaccessfirst{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsfirst@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@Glsfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{Glsfirst} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glscapscase\@secondofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSfirst@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@GLSfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{GLSfirst} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glscapscase\@thirdofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsplural@} +% No case changing version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.03}{2016-04-27}{fixed bug \cs{@glsplural@} should be redefined +%not \cs{@glsplural}} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@glsplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}% + {\@gls@field@font{\glsaccessplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsplural@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.03}{2016-04-27}{fixed bug \cs{@Glsplural@} should be redefined +%not \cs{@Glsplural}} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@Glsplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSplural@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.03}{2016-04-27}{fixed bug \cs{@GLSplural@} should be redefined +%not \cs{@GLSplural}} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@GLSplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + ]% + {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsfirstplural@} +% No case changing version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@glsfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsfirstplural@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.03}{2016-04-27}{bug fix: misspelt cs name} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@Glsfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSfirstplural@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.03}{2016-04-27}{bug fix: misspelt cs name} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@GLSfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% +% \end{macrocode} +% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute. +%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute} +% \begin{macrocode} + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}% + {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsname@} +% Redefine to use accessibility support. +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@glsname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsname@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{add accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@Glsname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsaccessname{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSname@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +% The abbreviation format may also need setting. +% \begin{macrocode} +\def\@GLSname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}% + {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsdesc@} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@glsdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsdesc@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@Glsdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsaccessdesc{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSdesc@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@GLSdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsdescplural@} +% No case-changing version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@glsdescplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsdescplural@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@Glsdescplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSdescplural@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set abbreviation and regular format} +% \begin{macrocode} +\def\@GLSdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@thirdoftwo + \let\glsifplural\@firstoftwo + ]% + {#1}{#2}% + {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glssymbol@} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@glssymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glssymbol@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glssymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSsymbol@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSsymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glssymbolplural@} +% No case-changing version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@glssymbolplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glssymbolplural@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glssymbolplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSsymbolplural@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{0.5.2}{2015-12-08}{added accessibility support} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSsymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@thirdoftwo + \let\glsifplural\@firstoftwo + ]% + {#1}{#2}% + {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuseri@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuseri@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsentryuseri{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuseri@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuseri@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuserii@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuserii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuserii@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuserii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuseriii@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuseriii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuseriii@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuseriii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuseriv@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuseriv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuseriv@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuseriv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}% + {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuserv@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuserv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuserv@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuserv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsuservi@} +% First letter uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@Glsuservi@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSuservi@} +% All uppercase version. +%\changes{0.3}{2015-12-02}{added redefinition} +%\changes{1.04}{2016-05-02}{set regular format} +% \begin{macrocode} +\def\@GLSuservi@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}% +} +% \end{macrocode} +%\end{macro} +% +%Commands like \cs{acrshort} already set \cs{glsifplural}, but they +%don't set \cs{glsxtrifwasfirstuse} so they need adjusting. +% +%\begin{macro}{\@acrshort} +%\changes{0.3}{2015-12-02}{added redefinition} +% No case change. +% \begin{macrocode} +\def\@acrshort#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\glsaccessshort{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrshort} +%\changes{0.3}{2015-12-02}{added redefinition} +% First letter uppercase. +% \begin{macrocode} +\def\@Acrshort#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\Glsaccessshort{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRshort} +%\changes{0.3}{2015-12-02}{added redefinition} +% All uppercase. +% \begin{macrocode} +\def\@ACRshort#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@acrshortpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% No case change. +% \begin{macrocode} +\def\@acrshortpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\glsaccessshortpl{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrshortpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% First letter uppercase. +% \begin{macrocode} +\def\@Acrshortpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\Glsaccessshortpl{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRshortpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% All uppercase. +% \begin{macrocode} +\def\@ACRshortpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@acrlong} +%\changes{0.3}{2015-12-02}{added redefinition} +% No case change. +% \begin{macrocode} +\def\@acrlong#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\glsaccesslong{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrlong} +%\changes{0.3}{2015-12-02}{added redefinition} +% First letter uppercase. +% \begin{macrocode} +\def\@Acrlong#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\Glsaccesslong{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRlong} +%\changes{0.3}{2015-12-02}{added redefinition} +% All uppercase. +% \begin{macrocode} +\def\@ACRlong#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@acrlongpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% No case change. +% \begin{macrocode} +\def\@acrlongpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\glsaccesslongpl{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrlongpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% First letter uppercase. +% \begin{macrocode} +\def\@Acrlongpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \acronymfont{\Glsaccesslongpl{#2}}#3% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRlongpl} +%\changes{0.3}{2015-12-02}{added redefinition} +% All uppercase. +% \begin{macrocode} +\def\@ACRlongpl#1#2[#3]{% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%Modify \cs{@glsaddkey} so additional keys provided by the user can +%be treated in a similar way. +%\begin{macro}{\@glsaddkey} +% \begin{macrocode} +\renewcommand*{\@glsaddkey}[7]{% + \key@ifundefined{glossentry}{#1}% + {% + \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}% + \appto\@gls@keymap{,{#1}{#1}}% + \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}% + \appto\@newglossaryentryposthook{% + \letcs{\@glo@tmp}{@glo@#1}% + \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}% + }% + \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% + \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}% +% \end{macrocode} +% Now for the commands with links. First the version with no case +% change (same as before): +% \begin{macrocode} + \ifcsdef{@gls@user@#1@}% + {% + \PackageError{glossaries}% + {Can't define `\string#5' as helper command + `\expandafter\string\csname @gls@user@#1@\endcsname' already + exists}% + {}% + }% + {% + \expandafter\newcommand\expandafter*\expandafter + {\csname @gls@user@#1\endcsname}[2][]{% + \new@ifnextchar[% + {\csuse{@gls@user@#1@}{##1}{##2}}% + {\csuse{@gls@user@#1@}{##1}{##2}[]}}% + \csdef{@gls@user@#1@}##1##2[##3]{% + \@gls@field@link{##1}{##2}{#3{##2}##3}% + }% + \newrobustcmd*{#5}{% + \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}% + }% +% \end{macrocode} +% Next the version with the first letter converted to upper case +% (modified): +% \begin{macrocode} + \ifcsdef{@Gls@user@#1@}% + {% + \PackageError{glossaries}% + {Can't define `\string#6' as helper command + `\expandafter\string\csname @Gls@user@#1@\endcsname' already + exists}% + {}% + }% + {% + \expandafter\newcommand\expandafter*\expandafter + {\csname @Gls@user@#1\endcsname}[2][]{% + \new@ifnextchar[% + {\csuse{@Gls@user@#1@}{##1}{##2}}% + {\csuse{@Gls@user@#1@}{##1}{##2}[]}}% + \csdef{@Gls@user@#1@}##1##2[##3]{% + \@gls@field@link[\let\glscapscase\@secondofthree]% + {##1}{##2}{#4{##2}##3}% + }% + \newrobustcmd*{#6}{% + \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}% + }% +% \end{macrocode} +% Finally the all caps version (modified): +% \begin{macrocode} + \ifcsdef{@GLS@user@#1@}% + {% + \PackageError{glossaries}% + {Can't define `\string#7' as helper command + `\expandafter\string\csname @GLS@user@#1@\endcsname' already + exists}% + {}% + }% + {% + \expandafter\newcommand\expandafter*\expandafter + {\csname @GLS@user@#1\endcsname}[2][]{% + \new@ifnextchar[% + {\csuse{@GLS@user@#1@}{##1}{##2}}% + {\csuse{@GLS@user@#1@}{##1}{##2}[]}}% + \csdef{@GLS@user@#1@}##1##2[##3]{% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}% + }% + \newrobustcmd*{#7}{% + \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}% + }% + }% + {% + \PackageError{glossaries-extra}{Key `#1' already exists}{}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@link@nocheckfirsthyper} +% Old versions of \styfmt{glossaries} don't define +% this, so provide it just in case it hasn't been defined. +% \begin{macrocode} +\providecommand*{\@gls@link@nocheckfirsthyper}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@link@checkfirsthyper} +% Modify check to determine if the hyperlink should be automatically +% suppressed, but save the original in case the acronyms are restored. +% \begin{macrocode} +\let\@glsxtr@org@checkfirsthyper\@gls@link@checkfirsthyper +\renewcommand*{\@gls@link@checkfirsthyper}{% +% \end{macrocode} +% \cs{ifglsused} isn't useful in the post link hook as it's already +% been unset by then, so define a command that can be used in the +% post link hook. Since \cs{@gls@link@checkfirsthyper} is only used +% by commands like \cs{gls} but not by other commands, this seems +% the best place to put it to automatically set the value for the +% commands that change the first use flag. The other commands should +% set \cs{glsxtrifwasfirstuse} to \cs{@secondoftwo} (which is done +% in \cs{@glsxtr@field@linkdefs}). +% \begin{macrocode} + \ifglsused{\glslabel}% + {\let\glsxtrifwasfirstuse\@secondoftwo} + {\let\glsxtrifwasfirstuse\@firstoftwo}% +% \end{macrocode} +% Store the category label for convenience. +% \begin{macrocode} + \edef\glscategorylabel{\glscategory{\glslabel}}% + \ifglsused{\glslabel}% + {% + \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}% + {\KV@glslink@hyperfalse}{}% + }% + {% + \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}% + {\KV@glslink@hyperfalse}{}% + }% + \glslinkcheckfirsthyperhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\do@glsdisablehyperinlist} +% This command was introduced in \styfmt{glossaries} v4.19. If it +% hasn't been defined, we're using an earlier version, in which case +% the \catattr{nohyper} attribute can't be implemented. +% \begin{macrocode} +\ifdef\do@glsdisablehyperinlist +{% + \let\@glsxtr@do@glsdisablehyperinlist\do@glsdisablehyperinlist + \renewcommand*{\do@glsdisablehyperinlist}{% + \@glsxtr@do@glsdisablehyperinlist + \glsifattribute{\glslabel}{nohyper}{true}{\KV@glslink@hyperfalse}{}% + } +} +{} +% \end{macrocode} +%\end{macro} +% +% Define a \gloskey[glslink]{noindex} key to prevent writing information to the +% external file. +% \begin{macrocode} +\define@boolkey{glslink}{noindex}[true]{} +\KV@glslink@noindexfalse +% \end{macrocode} +% +%If \cs{@gls@setdefault@glslink@opts} has been defined +%(\styfmt{glossaries} v4.20) use it to set the default keys in +%\cs{@glslink}. +%\begin{macro}{\@gls@setdefault@glslink@opts} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\ifdef\@gls@setdefault@glslink@opts +{ + \renewcommand*{\@gls@setdefault@glslink@opts}{% + \KV@glslink@noindexfalse + \@glsxtrsetaliasnoindex + } +} +{ +% \end{macrocode} +% Not defined so prepend it to \cs{do@glsdisablehyperinlist} to +% achieve the same effect. +% \begin{macrocode} + \newcommand*{\@gls@setdefault@glslink@opts}{% + \KV@glslink@noindexfalse + \@glsxtrsetaliasnoindex + } + \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetaliasnoindex} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.13}{2017-02-07}{switched to \cs{providecommand}} +%Allow user to hook into the alias noindex setting. +%Default behaviour switches off indexing for aliases. +%If the record option is on, this will have been defined to do +%nothing. (bib2gls will deal with records for aliased entries.) +% \begin{macrocode} +\providecommand*{\glsxtrsetaliasnoindex}{% + \KV@glslink@noindextrue +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrsetaliasnoindex} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.21}{2017-11-03}{changed to use \cs{glsxtrifhasfield} instead of +%\cs{ifglshasfield}} +% \begin{macrocode} +\newcommand*{\@glsxtrsetaliasnoindex}{% + \glsxtrifhasfield{alias}{\glslabel}% + {% + \let\glsxtrindexaliased\@glsxtrindexaliased + \glsxtrsetaliasnoindex + \let\glsxtrindexaliased\@no@glsxtrindexaliased + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrindexaliased} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\@glsxtrindexaliased}{% + \ifKV@glslink@noindex + \else + \begingroup + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}% + \glsxtr@saveentrycounter + \@@do@wrglossary{\glsxtralias{\glslabel}}% + \endgroup + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@no@glsxtrindexaliased} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\@no@glsxtrindexaliased}{% + \PackageError{glossaries-extra}{\string\glsxtrindexaliased\space + not permitted outside definition of \string\glsxtrsetaliasnoindex}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrindexaliased} +%\changes{1.12}{2017-02-03}{new} +%Provide a command to redirect alias indexing, but only allow it to +%be used within \cs{glsxtrsetaliasnoindex}. +% \begin{macrocode} +\let\glsxtrindexaliased\@no@glsxtrindexaliased +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetDefaultGlsOpts} +%\changes{0.5.4}{2015-12-15}{new} +% Set the default options for \cs{glslink} etc. +% \begin{macrocode} +\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{% + \renewcommand*{\@gls@setdefault@glslink@opts}{% + \setkeys{glslink}{#1}% + \@glsxtrsetaliasnoindex + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifindexing} +% Provide user level command to access it in \cs{glswriteentry}. +% \begin{macrocode} +\newcommand*{\glsxtrifindexing}[2]{% + \ifKV@glslink@noindex #2\else #1\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glswriteentry} +% Redefine to test for \catattr{indexonlyfirst} category attribute. +% \begin{macrocode} +\renewcommand*{\glswriteentry}[2]{% + \glsxtrifindexing + {% + \ifglsindexonlyfirst + \ifglsused{#1} + {\glsxtrdoautoindexname{#1}{dualindex}}% + {#2}% + \else + \glsifattribute{#1}{indexonlyfirst}{true}% + {% + \ifglsused{#1}% + {\glsxtrdoautoindexname{#1}{dualindex}}% + {#2}% + }% + {#2}% + \fi + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@do@@wrglossary} +% Hook into glossary indexing command so that it can also use +% \ics{index} at the same time if required and add user hook. +% \begin{macrocode} +\appto\@@do@@wrglossary{\@glsxtr@do@@wrindex + \glsxtrdowrglossaryhook{\@gls@label}% +} +% \end{macrocode} +% (The label can be obtained from \cs{@gls@label} at this point.) +%\end{macro} +% Similarly for the \qt{noidx} version: +%\begin{macro}{\gls@noidxglossary} +% \begin{macrocode} +\appto\gls@noidxglossary{\@glsxtr@do@@wrindex + \glsxtrdowrglossaryhook{\@gls@label}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@do@@wrindex} +% \begin{macrocode} +\newcommand*{\@glsxtr@do@@wrindex}{% + \glsxtrdoautoindexname{\@gls@label}{dualindex}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdowrglossaryhook} +% Allow user to hook into indexing code. (Always used by +% \cs{glsadd}. Used by \cs{gls} when indexing, which may or may not occur +% depending on the indexing settings.) +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrdowrglossaryhook}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@alt@hyp@opt} +%\changes{0.5.4}{2015-12-15}{new} +% Commands like \cs{gls} have a star or plus version. Provide a +% third symbol that the user can adapt for convenience. +% \begin{macrocode} +\newcommand*{\@gls@alt@hyp@opt}[1]{% + \let\glslinkvar\@firstofthree + \let\@gls@hyp@opt@cs#1\relax + \@ifstar{\s@gls@hyp@opt}% + {\@ifnextchar+% + {\@firstoftwo{\p@gls@hyp@opt}}% + {% + \expandafter\@ifnextchar\@gls@alt@hyp@opt@char + {\@firstoftwo{\@alt@gls@hyp@opt}}% + {#1}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@alt@gls@hyp@opt} +% User version +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@alt@gls@hyp@opt}[1][]{% + \let\glslinkvar\@firstofthree + \expandafter\@gls@hyp@opt@cs\expandafter[\@gls@alt@hyp@opt@keys,#1]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@alt@hyp@opt@char} +%\changes{0.5.4}{2015-12-15}{new} +%Contains the character used as the command modifier. +% \begin{macrocode} +\newcommand*{\@gls@alt@hyp@opt@char}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@alt@hyp@opt@keys} +%\changes{0.5.4}{2015-12-15}{new} +%Contains the option list used as the command modifier. +% \begin{macrocode} +\newcommand*{\@gls@alt@hyp@opt@keys}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetAltModifier} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrSetAltModifier}[2]{% + \let\@gls@hyp@opt\@gls@alt@hyp@opt + \def\@gls@alt@hyp@opt@char{#1}% + \def\@gls@alt@hyp@opt@keys{#2}% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {}% + {% +% \end{macrocode} +%Let \gls{bib2gls} know the modifier. +%\changes{1.37}{2018-11-30}{write modifier to aux} +% \begin{macrocode} + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}% + \protected@write\@auxout{}{\string\@glsxtr@altmodifier{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@org@dohyperlink} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\let\glsxtr@org@dohyperlink\glsdohyperlink +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsnavhyperlink} +%\changes{1.21}{2017-11-03}{patched} +%Now that \cs{glsdohyperlink} (used by \cs{@glslink}) references +%\cs{glslabel} it's necessary to patch \cs{glsnavhyperlink} to +%avoid using it (since \cs{glslabel} won't be defined). This means +%temporarily redefining \cs{glsdohyperlink} to its original +%definition. +% +%This command is provided by \sty{glossary-hypernav} so it may not +%exist. +% \begin{macrocode} +\ifdef\glsnavhyperlink +{ + \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{% + \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}% +% \end{macrocode} +%Scope: +% \begin{macrocode} + {% + \let\glsdohyperlink\glsxtr@org@dohyperlink + \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% + }% + }% +} +{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdohyperlink} +% Unpleasant complications can occur if the \gloskey{text} or +% \gloskey{first} key etc contains \cs{gls}, particularly if there +% are hyperlinks. To get around this problem, patch +% \cs{glsdohyperlink} so that it temporarily makes \ics{gls} behave +% like \ics{glstext}\oarg{hyper=false,noindex}. (This will be +% overridden if the user explicitly cancels either of those options +% in the optional argument of \cs{gls} or using the plus version.) +% This also patches the short form commands like \cs{acrshort} +% and \cs{glsxtrshort} to use \cs{glsentryshort} and, similarly, the +% long form commands like \cs{acrlong} and \cs{glsxtrlong} to use +% \cs{glsentrylong}. Added attribute check. +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\renewcommand*{\glsdohyperlink}[2]{% + \glshasattribute{\glslabel}{targeturl}% + {% + \glshasattribute{\glslabel}{targetname}% + {% + \glshasattribute{\glslabel}{targetcategory}% + {% + \hyperref{\glsgetattribute{\glslabel}{targeturl}}% + {\glsgetattribute{\glslabel}{targetcategory}}% + {\glsgetattribute{\glslabel}{targetname}}% + {{\glsxtrprotectlinks#2}}% + }% + {% + \hyperref{\glsgetattribute{\glslabel}{targeturl}}% + {}% + {\glsgetattribute{\glslabel}{targetname}}% + {{\glsxtrprotectlinks#2}}% + }% + }% + {% + \href{\glsgetattribute{\glslabel}{targeturl}}% + {{\glsxtrprotectlinks#2}}% + }% + }% + {% +% \end{macrocode} +%Check for alias. +%\changes{1.12}{2017-02-03}{added check for alias field} +% \begin{macrocode} + \glsfieldfetch{\glslabel}{alias}{\gloaliaslabel}% + \ifdefvoid\gloaliaslabel + {% + \glsxtrhyperlink{#1}{{\glsxtrprotectlinks#2}}% + }% + {% +% \end{macrocode} +%Redirect link to the alias target. +% \begin{macrocode} + \glsxtrhyperlink + {\glolinkprefix\glsdetoklabel{\gloaliaslabel}}% + {{\glsxtrprotectlinks#2}}% + }% + }% +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\glsxtrhyperlink} +%\changes{1.19}{2017-09-09}{new} +%Allows integration with the base \styfmt{glossaries} package's +%\pkgopt[showtargets]{debug} option. +% \begin{macrocode} +\ifdef\@glsshowtarget +{ + \newcommand{\glsxtrhyperlink}[2]{% + \@glsshowtarget{#1}% + \hyperlink{#1}{#2}% + }% +} +{ + \newcommand{\glsxtrhyperlink}[2]{\hyperlink{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdisablehyper} +%\changes{1.14}{2017-04-18}{added redefinition} +% Redefine to set \cs{glslabel} (to allow it to be picked up by +% \cs{glsdohyperlink}). Also made it robust and added grouping to localise the +% definition of \cs{glslabel}. The original internal command +% {@glo@label} could probably be simply replaced with \cs{glslabel}, +% but it's retained in case its removal causes unexpected problems. +%\changes{1.21}{2017-11-03}{added check for existence} +% \begin{macrocode} +\renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% + \glsdoifexists{#2}% + {% + \def\@glo@label{#2}% + {\edef\glslabel{#2}% + \@glslink{\glolinkprefix\glslabel}{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdisablehyper} +%\changes{0.5.4}{2015-12-15}{added} +%\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}} +% Redefine in case we have an old version of \styfmt{glossaries}. +%This now uses \cs{def} rather than \cs{let} to allow for +%redefinitions of \cs{glsdonohyperlink}. +% \begin{macrocode} +\renewcommand{\glsdisablehyper}{% + \KV@glslink@hyperfalse + \def\@glslink{\glsdonohyperlink}% + \let\@glstarget\@secondoftwo +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsenablehyper} +%\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}} +%This now uses \cs{def} rather than \cs{let} to allow for +%redefinitions of \cs{glsdohypertarget} and \cs{glsdohyperlink}. +% \begin{macrocode} +\renewcommand{\glsenablehyper}{% + \KV@glslink@hypertrue + \def\@glslink{\glsdohyperlink}% + \def\@glstarget{\glsdohypertarget}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdonohyperlink} +% This command was only introduced in \styfmt{glossaries} v4.20, so it may +% not be defined (therefore use \cs{def}). For older \styfmt{glossaries} versions, this won't be +% used if \sty{hyperref} hasn't been loaded, which means the +% indexing will still take place. The generated text is scoped +% (the link text in \cs{hyperlink} is also scoped, so it's +% consistent). +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslink} +% Reset \cs{@glslink} with patched versions: +%\changes{1.21}{2017-11-03}{changed \cs{let} to \cs{def}} +% \begin{macrocode} +\ifcsundef{hyperlink}% +{% + \def\@glslink{\glsdonohyperlink} +}% +{% + \def\@glslink{\glsdohyperlink} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrprotectlinks} +%\changes{0.5.4}{2015-12-15}{new} +% Make \cs{gls} (and variants) behave like the corresponding +% \cs{glstext} (and variants) with hyperlinking and indexing off. +% \begin{macrocode} +\newcommand*{\glsxtrprotectlinks}{% + \KV@glslink@hyperfalse + \KV@glslink@noindextrue + \let\@gls@\@glsxtr@p@text@ + \let\@Gls@\@Glsxtr@p@text@ + \let\@GLS@\@GLSxtr@p@text@ + \let\@glspl@\@glsxtr@p@plural@ + \let\@Glspl@\@Glsxtr@p@plural@ + \let\@GLSpl@\@GLSxtr@p@plural@ + \let\@glsxtrshort\@glsxtr@p@short@ + \let\@Glsxtrshort\@Glsxtr@p@short@ + \let\@GLSxtrshort\@GLSxtr@p@short@ + \let\@glsxtrlong\@glsxtr@p@long@ + \let\@Glsxtrlong\@Glsxtr@p@long@ + \let\@GLSxtrlong\@GLSxtr@p@long@ + \let\@glsxtrshortpl\@glsxtr@p@shortpl@ + \let\@Glsxtrshortpl\@Glsxtr@p@shortpl@ + \let\@GLSxtrshortpl\@GLSxtr@p@shortpl@ + \let\@glsxtrlongpl\@glsxtr@p@longpl@ + \let\@Glsxtrlongpl\@Glsxtr@p@longpl@ + \let\@GLSxtrlongpl\@GLSxtr@p@longpl@ + \let\@acrshort\@glsxtr@p@acrshort@ + \let\@Acrshort\@Glsxtr@p@acrshort@ + \let\@ACRshort\@GLSxtr@p@acrshort@ + \let\@acrshortpl\@glsxtr@p@acrshortpl@ + \let\@Acrshortpl\@Glsxtr@p@acrshortpl@ + \let\@ACRshortpl\@GLSxtr@p@acrshortpl@ + \let\@acrlong\@glsxtr@p@acrlong@ + \let\@Acrlong\@Glsxtr@p@acrlong@ + \let\@ACRlong\@GLSxtr@p@acrlong@ + \let\@acrlongpl\@glsxtr@p@acrlongpl@ + \let\@Acrlongpl\@Glsxtr@p@acrlongpl@ + \let\@ACRlongpl\@GLSxtr@p@acrlongpl@ +} +% \end{macrocode} +%\end{macro} +% +% These protected versions need grouping to prevent the label from +% getting confused. +%\begin{macro}{\@glsxtr@p@text@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@text@#1#2[#3]{{\@glstext@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@text@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@text@#1#2[#3]{{\@Glstext@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@text@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@text@#1#2[#3]{{\@GLStext@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@plural@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@plural@#1#2[#3]{{\@glsplural@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@plural@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@plural@#1#2[#3]{{\@Glsplural@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@plural@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@plural@#1#2[#3]{{\@GLSplural@{#1}{#2}[#3]}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@short@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\glsentryshort{#2}}#3% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@short@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\Glsentryshort{#2}}#3% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@short@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@shortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\glsentryshortpl{#2}}#3% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@shortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\Glsentryshortpl{#2}}#3% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@shortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@long@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@long@#1#2[#3]{{\glsentrylong{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@long@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@long@#1#2[#3]{{\Glsentrylong{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@long@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@long@#1#2[#3]{% + {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@longpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@longpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@longpl@#1#2[#3]{{\glslongfont{\Glsentrylongpl{#2}}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@longpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@longpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@acrshort@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\glsentryshort{#2}}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@acrshort@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\Glsentryshort{#2}}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@acrshort@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@acrshort@#1#2[#3]{% + {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@acrshortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\glsentryshortpl{#2}}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@acrshortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\Glsentryshortpl{#2}}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@acrshortpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@acrshortpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@acrlong@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@acrlong@#1#2[#3]{{\glsentrylong{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@acrlong@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@acrlong@#1#2[#3]{{\Glsentrylong{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@acrlong@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@acrlong@#1#2[#3]{% + {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@p@acrlongpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@glsxtr@p@acrlongpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtr@p@acrlongpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@Glsxtr@p@acrlongpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtr@p@acrlongpl@} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\def\@GLSxtr@p@acrlongpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}} +% \end{macrocode} +%\end{macro} +% +%Commands to minimise conflict. +%\begin{macro}{\@glsxtrp@opt} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrp@opt}{hyper=false,noindex} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetpopts} +%\changes{1.07}{2016-08-15}{new} +%Used in glossary to switch hyperlinks on for the \cs{glsxtrp} type +%of commands. +% \begin{macrocode} +\newcommand*{\glsxtrsetpopts}[1]{% + \renewcommand*{\@glsxtrp@opt}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glossxtrsetpopts} +%\changes{1.07}{2016-08-15}{new} +%Used in glossary to switch hyperlinks on for the \cs{glsxtrp} type +%of commands. +% \begin{macrocode} +\newcommand*{\glossxtrsetpopts}{% + \glsxtrsetpopts{noindex}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrp} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@@glsxtrp}[2]{% +% \end{macrocode} +%Add scope. +% \begin{macrocode} + {% + \let\glspostlinkhook\relax + \csname#1\expandafter\endcsname\expandafter[\@glsxtrp@opt]{#2}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrp} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@glsxtrp}[2]{% + \ifcsdef{gls#1}% + {% + \@@glsxtrp{gls#1}{#2}% + }% + {% + \ifcsdef{glsxtr#1}% + {% + \@@glsxtrp{glsxtr#1}{#2}% + }% + {% + \PackageError{glossaries-extra}{`#1' not recognised by + \string\glsxtrp}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsxtrp} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@Glsxtrp}[2]{% + \ifcsdef{Gls#1}% + {% + \@@glsxtrp{Gls#1}{#2}% + }% + {% + \ifcsdef{Glsxtr#1}% + {% + \@@glsxtrp{Glsxtr#1}{#2}% + }% + {% + \PackageError{glossaries-extra}{`#1' not recognised by + \string\Glsxtrp}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GLSxtrp} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@GLSxtrp}[2]{% + \ifcsdef{GLS#1}% + {% + \@@glsxtrp{GLS#1}{#2}% + }% + {% + \ifcsdef{GLSxtr#1}% + {% + \@@glsxtrp{GLSxtr#1}{#2}% + }% + {% + \PackageError{glossaries-extra}{`#1' not recognised by + \string\GLSxtrp}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@entry@p} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtr@headentry@p}[2]{% + \glsifattribute{#1}{headuc}{true}% + {% + \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}% + }% + {% + \@gls@entry@field{#1}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrp} +%\changes{1.07}{2016-08-15}{new} +%Not robust as it needs to expand somewhat. +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand{\glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\texorpdfstring + {% + \protect\glsxtrifinmark + {% + \ifcsdef{glsxtrhead#1}% + {% + {\protect\csuse{glsxtrhead#1}{#2}}% + }% + {% + \glsxtr@headentry@p{#2}{#1}% + }% + }% + {% + \@glsxtrp{#1}{#2}% + }% + }% + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% + } +} +{ + \newcommand{\glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glsxtrifinmark + {% + \ifcsdef{glsxtrhead#1}% + {% + {\protect\csuse{glsxtrhead#1}}% + }% + {% + \glsxtr@headentry@p{#2}{#1}% + }% + }% + {% + \@glsxtrp{#1}{#2}% + }% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%Provide short synonyms for the most common option. +%\begin{macro}{\glsps} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\glsps}{\glsxtrp{short}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glspt} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\glspt}{\glsxtrp{text}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrp} +%\changes{1.07}{2016-08-15}{new} +%As above but use first letter upper case (but not for the +%bookmarks, which can't process \cs{uppercase}). +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand{\Glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\texorpdfstring + {% + \protect\glsxtrifinmark + {% + \ifcsdef{Glsxtrhead#1}% + {% + {\protect\csuse{Glsxtrhead#1}{#2}}% + }% + {% + \protect\@Gls@entry@field{#2}{#1}% + }% + }% + {% + \@Glsxtrp{#1}{#2}% + }% + }% + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% + } +} +{ + \newcommand{\Glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glsxtrifinmark + {% + \ifcsdef{Glsxtrhead#1}% + {% + {\protect\csuse{Glsxtrhead#1}}% + }% + {% + \protect\@Gls@entry@field{#2}{#1}% + }% + }% + {% + \@Glsxtrp{#1}{#2}% + }% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrp} +%\changes{1.07}{2016-08-15}{new} +%As above but all upper case (but not for the +%bookmarks, which can't process \cs{uppercase}). +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand{\GLSxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\texorpdfstring + {% + \protect\glsxtrifinmark + {% + \ifcsdef{GLSxtr#1}% + {% + {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}% + }% + {% + \protect\mfirstucMakeUppercase + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% + }% + {% + \@GLSxtrp{#1}{#2}% + }% + }% + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% + } +} +{ + \newcommand{\GLSxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glsxtrifinmark + {% + \ifcsdef{GLSxtr#1}% + {% + {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}% + }% + {% + \protect\mfirstucMakeUppercase + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% + }% + {% + \@GLSxtrp{#1}{#2}% + }% + }% + } +} +% \end{macrocode} +%\end{macro} +% +% +%\subsection{Entry Counting} +% +% The (use) entry counting mechanism from \styfmt{glossaries} is adjusted +% here to work with category attributes. Provide a convenient +% command to enable entry counting, set the \catattr{entrycount} +% attribute for given categories and redefine \ics{gls} etc to +% use \cs{cgls} instead. This form of entry counting is provided to +% adjust the formatting if the number of times an entry has been +% used (through commands that unset the first use flag) doesn't +% exceeding the specified threshold. For link counting, see +% \sectionref{sec:linkcount}. +% +% First adjust definitions of the unset and reset commands to +% provide a hook, but changing the flag can cause problems in +% certain situations, so to allow the normal unsetting to be +% temporarily disabled, \cs{@glsunset} is let to +% \cs{@glsxtr@unset}, which performs the actual unsetting through +% \cs{@@glsunset} and then does the hook. This means that the +% unsetting (and the hook) can switched off by redefining \cs{@glsunset} +% and then switched back on again by changing the definition back to +% \cs{@glsxtr@unset}. +% +%\begin{macro}{\@glsxtr@unset} +%\changes{1.30}{2018-04-25}{new} +% Global unset. +% \begin{macrocode} +\newcommand*{\@glsxtr@unset}[1]{% + \@@glsunset{#1}% + \glsxtrpostunset{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsunset} +% Global unset. +% \begin{macrocode} +\let\@glsunset\@glsxtr@unset +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrpostunset} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostunset}[1]{} +% \end{macrocode} +%\end{macro} +% +%Provide a command to store a list of labels that will need +%unsetting. +%\begin{macro}{\GlsXtrStartUnsetBuffering} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStartUnsetBuffering}{% + \@ifstar\s@GlsXtrStartUnsetBuffering\@GlsXtrStartUnsetBuffering +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrStartUnsetBuffering} +%\changes{1.31}{2018-05-09}{new} +%Unstarred version doesn't check for duplicates. +% \begin{macrocode} +\newcommand*{\@GlsXtrStartUnsetBuffering}{% + \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer + \def\@glsxtr@unset@buffer{}% + \let\@glsunset\@glsxtrbuffer@unset +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrStartUnsetBuffering} +%\changes{1.31}{2018-05-09}{new} +%Starred version checks for duplicates. +% \begin{macrocode} +\newcommand*{\s@GlsXtrStartUnsetBuffering}{% + \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer + \def\@glsxtr@unset@buffer{}% + \let\@glsunset\@glsxtrbuffer@nodup@unset +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrbuffer@unset} +%\changes{1.30}{2018-04-25}{new} +%This must use a global change since \cs{gls} may have to be placed +%inside \cs{mbox} (for example, with \sty{soul} commands). +% \begin{macrocode} +\newcommand*{\@glsxtrbuffer@unset}[1]{% + \listxadd\@glsxtr@unset@buffer{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrbuffer@nodup@unset} +%\changes{1.31}{2018-05-09}{new} +%Alternative version that avoids duplicates. +%One level of expansion is performed on the argument in case it's a +%control sequence containing the label. (Not using \cs{xifinlist} as +%the added complexity might cause problems that the buffering is +%trying to overcome.) +% \begin{macrocode} +\newcommand*{\@glsxtrbuffer@nodup@unset}[1]{% + \expandafter\ifinlist\expandafter{#1}{\@glsxtr@unset@buffer}{}% + {\listxadd\@glsxtr@unset@buffer{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStopUnsetBuffering} +%\changes{1.30}{2018-04-25}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStopUnsetBuffering}{% + \@ifstar\s@GlsXtrStopUnsetBuffering\@GlsXtrStopUnsetBuffering +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrStopUnsetBuffering} +%\changes{1.30}{2018-04-25}{new} +%Unstarred form (global unset). +% \begin{macrocode} +\newcommand*{\@GlsXtrStopUnsetBuffering}{% + \let\@glsunset\@glsxtr@unset + \forlistloop\@glsunset\@glsxtr@unset@buffer + \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrStopUnsetBuffering} +%\changes{1.30}{2018-04-25}{new} +%Starred form (local unset). +% \begin{macrocode} +\newcommand*{\s@GlsXtrStopUnsetBuffering}{% + \forlistloop\@glslocalunset\@glsxtr@unset@buffer + \let\@glsunset\@glsxtr@unset +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrForUnsetBufferedList} +%\changes{1.31}{2018-05-09}{new} +%Iterate over labels stored in the current buffer. +%The argument is the handler macro. +% \begin{macrocode} +\newcommand*{\GlsXtrForUnsetBufferedList}[1]{% + \forlistloop#1\@glsxtr@unset@buffer +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslocalunset} +% Local unset. +% \begin{macrocode} +\renewcommand*{\@glslocalunset}[1]{% + \@@glslocalunset{#1}% + \glsxtrpostlocalunset{#1}% +}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrpostlocalunset} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostlocalunset}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsreset} +% Global reset. +% \begin{macrocode} +\renewcommand*{\@glsreset}[1]{% + \@@glsreset{#1}% + \glsxtrpostreset{#1}% +}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrpostreset} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostreset}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslocalreset} +% Local reset. +% \begin{macrocode} +\renewcommand*{\@glslocalreset}[1]{% + \@@glslocalreset{#1}% + \glsxtrpostlocalreset{#1}% +}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrpostlocalreset} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostlocalreset}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslocalreseteach} +%\changes{1.31}{2018-05-09}{new} +%Locally reset a list of entries. +% \begin{macrocode} +\newcommand*{\glslocalreseteach}[1]{% + \gls@ifnotmeasuring + {% + \@for\@gls@thislabel:=#1\do{% + \glsdoifexists{\@gls@thislabel}% + {% + \@glslocalreset{\@gls@thislabel}% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslocalunseteach} +%Locally unset a list of entries. +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} +\newcommand*{\glslocalunseteach}[1]{% + \gls@ifnotmeasuring + {% + \@for\@gls@thislabel:=#1\do{% + \glsdoifexists{\@gls@thislabel}% + {% + \@glslocalunset{\@gls@thislabel}% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrEnableEntryCounting} +% The first argument is the list of categories and the second +% argument is the value of the \catattr{entrycount} attribute. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrEnableEntryCounting}[2]{% +% \end{macrocode} +% Enable entry counting: +% \begin{macrocode} + \glsenableentrycount +% \end{macrocode} +% Redefine \cs{gls} etc: +% \begin{macrocode} + \renewcommand*{\gls}{\cgls}% + \renewcommand*{\Gls}{\cGls}% + \renewcommand*{\glspl}{\cglspl}% + \renewcommand*{\Glspl}{\cGlspl}% + \renewcommand*{\GLS}{\cGLS}% + \renewcommand*{\GLSpl}{\cGLSpl}% +% \end{macrocode} +% Set the \catattr{entrycount} attribute: +% \begin{macrocode} + \@glsxtr@setentrycountunsetattr{#1}{#2}% +% \end{macrocode} +% In case this command is used again: +% \begin{macrocode} + \let\GlsXtrEnableEntryCounting\@glsxtr@setentrycountunsetattr + \renewcommand*{\GlsXtrEnableEntryUnitCounting}[3]{% + \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryUnitCounting\space + can't be used with \string\GlsXtrEnableEntryCounting}% + {Use one or other but not both commands}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@setentrycountunsetattr} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@setentrycountunsetattr}[2]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +% Redefine the entry counting commands to take into account the +%\catattr{entrycount} attribute. +%\begin{macro}{\glsenableentrycount} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\renewcommand*{\glsenableentrycount}{% +% \end{macrocode} +% Enable new fields: +% \begin{macrocode} + \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defcounters}% +% \end{macrocode} +% Just in case the user has switched on the \pkgopt{docdef} option. +% \begin{macrocode} + \renewcommand*{\gls@defdocnewglossaryentry}{% + \renewcommand*\newglossaryentry[2]{% + \PackageError{glossaries}{\string\newglossaryentry\space + may only be used in the preamble when entry counting has + been activated}{If you use \string\glsenableentrycount\space + you must place all entry definitions in the preamble not in + the document environment}% + }% + }% +% \end{macrocode} +% New commands to access new fields: +% \begin{macrocode} + \newcommand*{\glsentrycurrcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@currcount}% + {0}{\@gls@entry@field{##1}{currcount}}% + }% + \newcommand*{\glsentryprevcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}% + {0}{\@gls@entry@field{##1}{prevcount}}% + }% +% \end{macrocode} +% Adjust post unset and reset: +% \begin{macrocode} + \let\@glsxtr@entrycount@org@unset\glsxtrpostunset + \renewcommand*{\glsxtrpostunset}[1]{% + \@glsxtr@entrycount@org@unset{##1}% + \@gls@increment@currcount{##1}% + }% + \let\@glsxtr@entrycount@org@localunset\glsxtrpostlocalunset + \renewcommand*{\glsxtrpostlocalunset}[1]{% + \@glsxtr@entrycount@org@localunset{##1}% + \@gls@local@increment@currcount{##1}% + }% + \let\@glsxtr@entrycount@org@reset\glsxtrpostreset + \renewcommand*{\glsxtrpostreset}[1]{% + \@glsxtr@entrycount@org@reset{##1}% + \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}% + }% + \let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset + \renewcommand*{\glsxtrpostlocalreset}[1]{% + \@glsxtr@entrycount@org@localreset{##1}% + \csdef{glo@\glsdetoklabel{##1}@currcount}{0}% + }% +% \end{macrocode} +% Modifications to take into account the attributes that govern +% whether the entry should be unset. +% \begin{macrocode} + \let\@cgls@\@@cgls@ + \let\@cglspl@\@@cglspl@ +% \end{macrocode} +%\changes{1.14}{2017-04-18}{fixed assignment of \cs{@cGls@}} +% \begin{macrocode} + \let\@cGls@\@@cGls@ + \let\@cGlspl@\@@cGlspl@ + \let\@cGLS@\@@cGLS@ + \let\@cGLSpl@\@@cGLSpl@ +% \end{macrocode} +% The rest is as the original definition. +% \begin{macrocode} + \AtEndDocument{\@gls@write@entrycounts}% + \renewcommand*{\@gls@entry@count}[2]{% + \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}% + }% + \let\glsenableentrycount\relax + \renewcommand*{\glsenableentryunitcount}{% + \PackageError{glossaries-extra}{\string\glsenableentryunitcount\space + can't be used with \string\glsenableentrycount}% + {Use one or other but not both commands}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@write@entrycounts} +% Modify this command so that it only writes the information for +% entries with the \catattr{entrycount} attribute and issue +% warning if no entries have this attribute set. +% \begin{macrocode} +\renewcommand*{\@gls@write@entrycounts}{% + \immediate\write\@auxout + {\string\providecommand*{\string\@gls@entry@count}[2]{}}% + \count@=0\relax + \forallglsentries{\@glsentry}{% + \glshasattribute{\@glsentry}{entrycount}% + {% + \ifglsused{\@glsentry}% + {% + \immediate\write\@auxout + {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}% + }% + {}% + \advance\count@ by \@ne + }% + {}% + }% + \ifnum\count@=0 + \GlossariesExtraWarningNoLine{Entry counting has been enabled + \MessageBreak with \string\glsenableentrycount\space but the + \MessageBreak attribute `entrycount' hasn't + \MessageBreak been assigned to any of the defined + \MessageBreak entries}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifcounttrigger} +%\begin{definition} +%\cs{glsxtrifcounttrigger}\marg{label}\marg{trigger format}\marg{normal} +%\end{definition} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifcounttrigger}[3]{% + \glshasattribute{#1}{entrycount}% + {% + \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax + #3% + \else + #2% + \fi + }% + {#3}% +} +% \end{macrocode} +%\end{macro} +% +% Actual internal definitions of \cs{cgls} used when entry counting +% is enabled. +% +%\begin{macro}{\@@cgls@} +% \begin{macrocode} +\def\@@cgls@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cglsformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@gls@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@cglspl@} +% \begin{macrocode} +\def\@@cglspl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cglsplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@glspl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@cGls@} +% \begin{macrocode} +\def\@@cGls@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGlsformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@Gls@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@cGlspl@} +% \begin{macrocode} +\def\@@cGlspl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGlsplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@Glspl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@cGLS@} +% \begin{macrocode} +\def\@@cGLS@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGLSformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@GLS@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@cGLSpl@} +% \begin{macrocode} +\def\@@cGLSpl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGLSplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@GLSpl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +% Remove default warnings from \cs{cgls} etc so that it can be used +% interchangeable with \cs{gls} etc. +%\begin{macro}{\@cgls@} +% \begin{macrocode} +\def\@cgls@#1#2[#3]{\@gls@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@cGls@} +% \begin{macrocode} +\def\@cGls@#1#2[#3]{\@Gls@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@cglspl@} +% \begin{macrocode} +\def\@cglspl@#1#2[#3]{\@glspl@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@cGlspl@} +% \begin{macrocode} +\def\@cGlspl@#1#2[#3]{\@Glspl@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +% Add all upper case versions not provided by \styfmt{glossaries}. +%\begin{macro}{\cGLS} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@cGLS} +%\changes{0.5}{2015-12-07}{new} +% Defined the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\@cGLS}[2][]{% + \new@ifnextchar[{\@cGLS@{#1}{#2}}{\@cGLS@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@cGLS@} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\def\@cGLS@#1#2[#3]{\@GLS@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cGLSformat} +%\changes{0.5}{2015-12-07}{new} +% Format used by \cs{cGLS} if entry only used once on previous run. +% The first argument is the label, the second argument is the insert +% text. +% \begin{macrocode} +\newcommand*{\cGLSformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cGLSpl} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@cGLSpl} +%\changes{0.5}{2015-12-07}{new} +% Defined the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\@cGLSpl}[2][]{% + \new@ifnextchar[{\@cGLSpl@{#1}{#2}}{\@cGLSpl@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@cGLSpl@} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\def\@cGLSpl@#1#2[#3]{\@GLSpl@{#1}{#2}[#3]} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cGLSplformat} +%\changes{0.5}{2015-12-07}{new} +% Format used by \cs{cGLSpl} if entry only used once on previous run. +% The first argument is the label, the second argument is the insert +% text. +% \begin{macrocode} +\newcommand*{\cGLSplformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +% Modify the trigger formats to check for the \catattr{regular} attribute. +%\begin{macro}{\cglsformat} +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\renewcommand*{\cglsformat}[2]{% + \glsifregular{#1} + {\glsentryfirst{#1}}% + {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cGlsformat} +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\renewcommand*{\cGlsformat}[2]{% + \glsifregular{#1} + {\Glsentryfirst{#1}}% + {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cglsplformat} +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\renewcommand*{\cglsplformat}[2]{% + \glsifregular{#1} + {\glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\cGlsplformat} +%\changes{0.5.4}{2015-12-15}{added} +% \begin{macrocode} +\renewcommand*{\cGlsplformat}[2]{% + \glsifregular{#1} + {\Glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%New code similar to above for unit counting. +% +%\begin{macro}{\@@newglossaryentry@defunitcounters} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@@newglossaryentry@defunitcounters}{% + \edef\@glo@countunit{\csuse{@glsxtr@categoryattr@@\@glo@category @unitcount}}% + \ifdefvoid\@glo@countunit + {}% + {% + \@glsxtr@ifunitcounter{\@glo@countunit}% + {}% + {\expandafter\@glsxtr@addunitcounter\expandafter{\@glo@countunit}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@unitcountlist} +%\changes{0.5.4}{2015-12-15}{new} +% List to keep track of which counters are being used by the entry +% unit count facility. +% \begin{macrocode} +\newcommand*{\@glsxtr@unitcountlist}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@addunitcounter} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@addunitcounter}[1]{% + \listadd{\@glsxtr@unitcountlist}{#1}% + \ifcsundef{glsxtr@theunit@#1} + {% + \ifcsdef{theH#1}% + {\csdef{glsxtr@theunit@#1}{\csuse{theH#1}}}% + {\csdef{glsxtr@theunit@#1}{\csuse{the#1}}}% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@ifunitcounter} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@ifunitcounter}[3]{% + \xifinlist{#1}{\@glsxtr@unitcountlist}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@currentunitcount} +% \begin{macrocode} +\newcommand*\@glsxtr@currentunitcount[1]{% + glo@\glsdetoklabel{#1}@currunit@\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@previousunitcount} +% \begin{macrocode} +\newcommand*\@glsxtr@previousunitcount[1]{% + glo@\glsdetoklabel{#1}@prevunit@\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@increment@currunitcount} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@gls@increment@currunitcount}[1]{% + \glshasattribute{#1}{unitcount}% + {% + \edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}% + \ifcsundef{\@glsxtr@csname}% + {% + \csgdef{\@glsxtr@csname}{1}% + \listcsxadd + {glo@\glsdetoklabel{#1}@unitlist}% + {\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% + }% + }% + {% + \csxdef{\@glsxtr@csname}% + {\number\numexpr\csname\@glsxtr@csname\endcsname+1}% + }% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@local@increment@currunitcount} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@gls@local@increment@currunitcount}[1]{% + \glshasattribute{#1}{unitcount}% + {% + \edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}% + \ifcsundef{\@glsxtr@csname}% + {% + \csdef{\@glsxtr@csname}{1}% + \listcseadd + {glo@\glsdetoklabel{#1}@unitlist}% + {\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% + }% + }% + {% + \csedef{\@glsxtr@csname}% + {\number\numexpr\csname\@glsxtr@csname\endcsname+1}% + }% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@currunitcount} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@currunitcount}[2]{% + \ifcsundef + {glo@\glsdetoklabel{#1}@currunit@#2}% + {0}% + {\csuse{glo@\glsdetoklabel{#1}@currunit@#2}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@prevunitcount} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@prevunitcount}[2]{% + \ifcsundef + {glo@\glsdetoklabel{#1}@prevunit@#2}% + {0}% + {\csuse{glo@\glsdetoklabel{#1}@prevunit@#2}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsenableentryunitcount} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\glsenableentryunitcount}{% +% \end{macrocode} +% Enable new fields: +% \begin{macrocode} + \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defunitcounters}% +% \end{macrocode} +% Just in case the user has switched on the \pkgopt{docdef} option. +% \begin{macrocode} + \renewcommand*{\gls@defdocnewglossaryentry}{% + \renewcommand*\newglossaryentry[2]{% + \PackageError{glossaries}{\string\newglossaryentry\space + may only be used in the preamble when entry counting has + been activated}{If you use \string\glsenableentryunitcount\space + you must place all entry definitions in the preamble not in + the document environment}% + }% + }% +% \end{macrocode} +% New commands to access new fields: +% \begin{macrocode} + \newcommand*{\glsentrycurrcount}[1]{% + \@glsxtr@currunitcount{##1}{\glsgetattribute{##1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}% + }% + \newcommand*{\glsentryprevcount}[1]{% + \@glsxtr@prevunitcount{##1}{\glsgetattribute{##1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}% + }% +% \end{macrocode} +% Access total count: +% \begin{macrocode} + \newcommand*{\glsentryprevtotalcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}% + {0}% + {% + \number\csuse{glo@\glsdetoklabel{##1}@prevunittotal} + }% + }% +% \end{macrocode} +% Access max value: +% \begin{macrocode} + \newcommand*{\glsentryprevmaxcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}% + {0}% + {% + \number\csuse{glo@\glsdetoklabel{##1}@prevunitmax} + }% + }% +% \end{macrocode} +% Adjust post unset and reset: +% \begin{macrocode} + \let\@glsxtr@entryunitcount@org@unset\glsxtrpostunset + \renewcommand*{\glsxtrpostunset}[1]{% + \@glsxtr@entryunitcount@org@unset{##1}% + \@gls@increment@currunitcount{##1}% + }% + \let\@glsxtr@entryunitcount@org@localunset\glsxtrpostlocalunset + \renewcommand*{\glsxtrpostlocalunset}[1]{% + \@glsxtr@entryunitcount@org@localunset{##1}% + \@gls@local@increment@currunitcount{##1}% + }% + \let\@glsxtr@entryunitcount@org@reset\glsxtrpostreset + \renewcommand*{\glsxtrpostreset}[1]{% + \glshasattribute{##1}{unitcount}% + {% + \edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% + \ifcsundef{\@glsxtr@csname}% + {}% + {\csgdef{\@glsxtr@csname}{0}}% + }% + {}% + }% + \let\@glsxtr@entryunitcount@org@localreset\glsxtrpostlocalreset + \renewcommand*{\glsxtrpostlocalreset}[1]{% + \@glsxtr@entryunitcount@org@localreset{##1}% + \glshasattribute{##1}{unitcount}% + {% + \edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% + \ifcsundef{\@glsxtr@csname}% + {}% + {\csdef{\@glsxtr@csname}{0}}% + }% + {}% + }% +% \end{macrocode} +% Modifications to take into account the attributes that govern +% whether the entry should be unset. +% \begin{macrocode} + \let\@cgls@\@@cgls@ + \let\@cglspl@\@@cglspl@ +% \end{macrocode} +%\changes{1.14}{2017-04-18}{fixed assignment of \cs{@cGls@}} +% \begin{macrocode} + \let\@cGls@\@@cGls@ + \let\@cGlspl@\@@cGlspl@ + \let\@cGLS@\@@cGLS@ + \let\@cGLSpl@\@@cGLSpl@ +% \end{macrocode} +% Write information to the aux file. +% \begin{macrocode} + \AtEndDocument{\@gls@write@entryunitcounts}% + \renewcommand*{\@gls@entry@unitcount}[3]{% + \csgdef{glo@\glsdetoklabel{##1}@prevunit@##3}{##2}% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}% + {\csgdef{glo@\glsdetoklabel{##1}@prevunittotal}{##2}}% + {% + \csxdef{glo@\glsdetoklabel{##1}@prevunittotal}{ + \number\numexpr\csuse{glo@\glsdetoklabel{##1}@prevunittotal}+##2}% + }% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}% + {\csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}}% + {% + \ifnum\csuse{glo@\glsdetoklabel{##1}@prevunitmax}<##2 + \csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}% + \fi + }% + }% + \let\glsenableentryunitcount\relax + \renewcommand*{\glsenableentrycount}{% + \PackageError{glossaries-extra}{\string\glsenableentrycount\space + can't be used with \string\glsenableentryunitcount}% + {Use one or other but not both commands}% + }% +} +\@onlypreamble\glsenableentryunitcount +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@entry@unitcount} +% \begin{macrocode} +\newcommand*{\@gls@entry@unitcount}[3]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@write@entryunitcounts@do} +% \begin{macrocode} +\newcommand*{\@gls@write@entryunitcounts@do}[1]{% + \immediate\write\@auxout + {\string\@gls@entry@unitcount + {\@glsentry}% + {\@glsxtr@currunitcount{\@glsentry}{#1}% + }% + {#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@write@entryunitcounts} +% \begin{macrocode} +\newcommand*{\@gls@write@entryunitcounts}{% + \immediate\write\@auxout + {\string\providecommand*{\string\@gls@entry@unitcount}[3]{}}% + \count@=0\relax + \forallglsentries{\@glsentry}{% + \glshasattribute{\@glsentry}{unitcount}% + {% + \ifglsused{\@glsentry}% + {% + \forlistcsloop + {\@gls@write@entryunitcounts@do}% + {glo@\glsdetoklabel{\@glsentry}@unitlist}% + }% + {}% + \advance\count@ by \@ne + }% + {}% + }% + \ifnum\count@=0 + \GlossariesExtraWarningNoLine{Entry counting has been enabled + \MessageBreak with \string\glsenableentryunitcount\space but the + \MessageBreak attribute `unitcount' hasn't + \MessageBreak been assigned to any of the defined + \MessageBreak entries}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrEnableEntryUnitCounting} +% The first argument is the list of categories, the second +% argument is the value of the \catattr{entrycount} attribute +% and the third is the counter name. +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrEnableEntryUnitCounting}[3]{% +% \end{macrocode} +% Enable entry counting: +% \begin{macrocode} + \glsenableentryunitcount +% \end{macrocode} +% Redefine \cs{gls} etc: +% \begin{macrocode} + \renewcommand*{\gls}{\cgls}% + \renewcommand*{\Gls}{\cGls}% + \renewcommand*{\glspl}{\cglspl}% + \renewcommand*{\Glspl}{\cGlspl}% + \renewcommand*{\GLS}{\cGLS}% + \renewcommand*{\GLSpl}{\cGLSpl}% +% \end{macrocode} +% Set the \catattr{entrycount} attribute: +% \begin{macrocode} + \@glsxtr@setentryunitcountunsetattr{#1}{#2}{#3}% +% \end{macrocode} +% In case this command is used again: +% \begin{macrocode} + \let\GlsXtrEnableEntryUnitCounting\@glsxtr@setentryunitcountunsetattr + \renewcommand*{\GlsXtrEnableEntryCounting}[2]{% + \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryCounting\space + can't be used with \string\GlsXtrEnableEntryUnitCounting}% + {Use one or other but not both commands}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@setentryunitcountunsetattr} +%\changes{0.5.4}{2015-12-15}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@setentryunitcountunsetattr}[3]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% + \glssetcategoryattribute{\@glsxtr@cat}{unitcount}{#3}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +% +%\subsection{Acronym Modifications} +% It's more consistent to use the abbreviation code for acronyms, +% but make some adjustments to allow for continued use of the +% \styfmt{glossaries} package's custom acronym format. (For example, +% user may already have defined some acronym styles with +% \cs{newacronymstyle} which they would like to continue to use.) +% The original \styfmt{glossaries} acronym code can be restored +% with \cs{RestoreAcronyms}, but adjust \cs{SetGenericNewAcronym} +% so that \cs{newacronym} adds the category. +% +%\begin{macro}{\SetGenericNewAcronym} +% \begin{macrocode} +\renewcommand*{\SetGenericNewAcronym}{% + \let\@Gls@entryname\@Gls@acrentryname + \renewcommand{\newacronym}[4][]{% + \ifdefempty{\@glsacronymlists}% + {% + \def\@glo@type{\acronymtype}% + \setkeys{glossentry}{##1}% + \DeclareAcronymList{\@glo@type}% + }% + {}% + \glskeylisttok{##1}% + \glslabeltok{##2}% + \glsshorttok{##3}% + \glslongtok{##4}% + \newacronymhook + \protected@edef\@do@newglossaryentry{% + \noexpand\newglossaryentry{\the\glslabeltok}% + {% + type=\acronymtype,% + name={\expandonce{\acronymentry{##2}}},% + sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},% + text={\the\glsshorttok},% + short={\the\glsshorttok},% + shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},% + long={\the\glslongtok},% + longplural={\the\glslongtok\noexpand\acrpluralsuffix},% + category=acronym, + \GenericAcronymFields,% + \the\glskeylisttok + }% + }% + \@do@newglossaryentry + }% + \renewcommand*{\acrfullfmt}[3]{% + \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}% + \renewcommand*{\Acrfullfmt}[3]{% + \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}% + \renewcommand*{\ACRfullfmt}[3]{% + \glslink[##1]{##2}{% + \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}% + \renewcommand*{\acrfullplfmt}[3]{% + \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}% + \renewcommand*{\Acrfullplfmt}[3]{% + \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}% + \renewcommand*{\ACRfullplfmt}[3]{% + \glslink[##1]{##2}{% + \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}% + \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}% + \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}% + \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}% + \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}% +} +% \end{macrocode} +%\end{macro} +% +% This will cause a problem for glossaries that contain a mixture of +% acronyms and abbreviations, so redefine \cs{newacronym} to use the +% new abbreviation interface. +% +% First save the original definitions: +% \begin{macrocode} +\let\@glsxtr@org@setacronymstyle\setacronymstyle +\let\@glsxtr@org@newacronymstyle\newacronymstyle +% \end{macrocode} +% +%\begin{macro}{\MakeAcronymsAbbreviations} +% Make acronyms use the same interface as abbreviations. +% Note that \cs{newacronymstyle} has a different implementation to +% \cs{newabbrevationstyle} so disable \cs{newacronymstyle} and +% \cs{setacronymstyle}. +%\changes{0.4}{2015-12-03}{set the default type to \cs{acronymtype}} +%\changes{0.5.4}{2015-12-15}{now disables \cs{setacronymstyle}} +% \begin{macrocode} +\newcommand*{\MakeAcronymsAbbreviations}{% + \renewcommand*{\newacronym}[4][]{% + \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}% + }% + \renewcommand*{\firstacronymfont}[1]{\glsfirstabbrvfont{##1}}% + \renewcommand*{\acronymfont}[1]{\glsabbrvfont{##1}}% + \renewcommand*{\setacronymstyle}[1]{% + \PackageError{glossaries-extra}{\string\setacronymstyle{##1} + unavailable. + Use \string\setabbreviationstyle\space instead. + The original acronym interface can be restored with + \string\RestoreAcronyms}{}% + }% + \renewcommand*{\newacronymstyle}[1]{% + \GlossariesExtraWarning{New acronym style `##1' won't be + available unless you restore the original acronym interface with + \string\RestoreAcronyms}% + \@glsxtr@org@newacronymstyle{##1}% + }% +} +% \end{macrocode} +%\end{macro} +% +% Switch acronyms to abbreviations: +% \begin{macrocode} +\MakeAcronymsAbbreviations +% \end{macrocode} +% +%\begin{macro}{\RestoreAcronyms} +% Restore acronyms to \styfmt{glossaries} interface. +% \begin{macrocode} +\newcommand*{\RestoreAcronyms}{% + \SetGenericNewAcronym + \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}% + \renewcommand{\acronymfont}[1]{##1}% + \let\setacronymstyle\@glsxtr@org@setacronymstyle + \let\newacronymstyle\@glsxtr@org@newacronymstyle +% \end{macrocode} +%\changes{1.07}{2016-08-15}{modified \cs{@gls@link@checkfirsthyper} to set +%\cs{glsxtrifwasfirstuse}} +% Need to restore the original definition of \cs{@gls@link@checkfirsthyper} +% but \cs{glsxtrifwasfirstuse} still needs setting for the benefit +% of the post-link hook. +% \begin{macrocode} + \renewcommand*\@gls@link@checkfirsthyper{% + \ifglsused{\glslabel}% + {\let\glsxtrifwasfirstuse\@secondoftwo} + {\let\glsxtrifwasfirstuse\@firstoftwo}% + \@glsxtr@org@checkfirsthyper + } + \glssetcategoryattribute{acronym}{regular}{false}% + \setacronymstyle{long-short}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsacspace} +% Allow the user to customise the maximum value. +% \begin{macrocode} +\renewcommand*{\glsacspace}[1]{% + \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}% + \ifdim\dimen@<\glsacspacemax~\else\space\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsacspacemax} +% Value used in the above. +% \begin{macrocode} +\newcommand*{\glsacspacemax}{3em} +% \end{macrocode} +%\end{macro} +% +%\subsection{Indexing and Displaying Glossaries} +%From time-to-time users ask if they can have one glossary sorted +%normally and another sorted by definition or usage. With the +% base \styfmt{glossaries} package this can only be achieved with the +% \qt{noidx} commands (Option~1). This is an attempt to mix and +% match. +% +%First we need a list of the glossaries that require +%\gls{makeindex}\slash\gls{xindy}. +%\begin{macro}{\@glsxtr@reg@glosslist} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@reg@glosslist}{} +% \end{macrocode} +%\end{macro} +% Save the original definition of \cs{makeglossaries}: +% \begin{macrocode} +\let\@glsxtr@org@makeglossaries\makeglossaries +% \end{macrocode} +% +% Redefine \cs{makeglossaries} to take an optional argument. +% This should be empty for the usual behaviour (all glossaries +% need processing with an indexing application) or a comma-separated +% list of glossary labels indicating those glossaries that should be +% processed with an indexing application. The optional argument +% version shouldn't be used with \pkgopt{record}. +%\begin{macro}{\makeglossaries} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\renewcommand*{\makeglossaries}[1][]{% + \@glsxtr@if@record@only + {% + \PackageError{glossaries-extra}{\string\makeglossaries\space + not permitted\MessageBreak with record=\@glsxtr@record@setting\space + package option}% + {You may only use \string\makeglossaries\space with + record=off or record=alsoindex options}% + }% + {% + \ifblank{#1}% + {\@glsxtr@org@makeglossaries}% + {% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space + not permitted\MessageBreak with record=alsoindex package option}% + {You may only use the hybrid \string\makeglossaries[...]\space with + record=off option}% + \else +% \end{macrocode} +%\cs{@gls@@automake@immediate} was introduced to \sty{glossaries} +%v4.42 so it may not be defined. +% \begin{macrocode} + \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% + \edef\@glsxtr@reg@glosslist{#1}% + \ifundef{\glswrite}{\newwrite\glswrite}{}% + \protected@write\@auxout{}{\string\providecommand + \string\@glsorder[1]{}} + \protected@write\@auxout{}{\string\providecommand + \string\@istfilename[1]{}} + \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% + \protected@write\@auxout{}{\string\@glsorder{\glsorder}} + \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} + \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% +% \end{macrocode} +% Iterate through each supplied glossary type and activate it. +% \begin{macrocode} + \@for\@glo@type:=#1\do{% + \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% + }% +% \end{macrocode} +% New glossaries must be created before \cs{makeglossaries}: +% \begin{macrocode} + \renewcommand*\newglossary[4][]{% + \PackageError{glossaries}{New glossaries + must be created before \string\makeglossaries}{You need + to move \string\makeglossaries\space after all your + \string\newglossary\space commands}}% +% \end{macrocode} +% Any subsequence instances of this command should have no effect +% \begin{macrocode} + \let\@makeglossary\relax + \let\makeglossary\relax + \renewcommand\makeglossaries[1][]{}% +% \end{macrocode} +% Disable all commands that have no effect after \cs{makeglossaries} +% \begin{macrocode} + \@disable@onlypremakeg +% \end{macrocode} +% Allow \gloskey{see} key: +% \begin{macrocode} + \let\gls@checkseeallowed\relax +% \end{macrocode} +%Adjust \cs{@do@seeglossary}. This needs to check for the entry's +%existence but don't increment associated counter. +% \begin{macrocode} + \renewcommand*{\@do@seeglossary}[2]{% + \glsdoifexists{##1}% + {% + \edef\@gls@label{\glsdetoklabel{##1}}% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@org@doseeglossary{##1}{##2}}% + {% + \@@glsxtrwrglossmark + \protected@write\@auxout{}{% + \string\@gls@reference + {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + }% + }% + }% + }% +% \end{macrocode} +% Adjust \cs{@@do@@wrglossary} +% \begin{macrocode} + \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary + \def\@@do@@wrglossary{% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@@do@@wrglossary}% + {\gls@noidxglossary}% + }% +% \end{macrocode} +% Suppress warning about no \cs{makeglossaries} +% \begin{macrocode} + \let\warn@nomakeglossaries\relax + \def\warn@noprintglossary{% + \GlossariesWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found.^^J(Remove \string\makeglossaries\space if you don't want + any glossaries.)^^JThis document will not have a glossary}% + }% +% \end{macrocode} +% Only warn for glossaries not listed. +% \begin{macrocode} + \renewcommand{\@gls@noref@warn}[1]{% + \edef\@gls@type{##1}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {% + \GlossariesExtraWarning{Can't use + \string\printnoidxglossary[type={\@gls@type}] + when `\@gls@type' is listed in the optional argument of + \string\makeglossaries}% + }% + {% + \GlossariesWarning{Empty glossary for + \string\printnoidxglossary[type={##1}]. + Rerun may be required (or you may have forgotten to use + commands like \string\gls)}% + }% + }% +% \end{macrocode} +% Adjust display number list to check for type: +% \begin{macrocode} + \renewcommand*{\glsdisplaynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@displaynumberlist{##1}}% + {\@glsxtr@noidx@displaynumberlist{##1}}% + }% +% \end{macrocode} +% Adjust entry list: +% \begin{macrocode} + \renewcommand*{\glsentrynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@entrynumberlist{##1}}% + {\@glsxtr@noidx@entrynumberlist{##1}}% + }% +% \end{macrocode} +% Adjust number list loop +% \begin{macrocode} + \renewcommand*{\glsnumberlistloop}[2]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {% + \PackageError{glossaries-extra}{\string\glsnumberlistloop\space + not available for glossary `##1'}{}% + }% + {\@glsxtr@noidx@numberlistloop{##1}{##2}}% + }% +% \end{macrocode} +% Only sanitize sort for normal indexing glossaries. +% \begin{macrocode} + \renewcommand*{\glsprestandardsort}[3]{% + \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% + {% + \glsdosanitizesort + }% + {% + \ifglssanitizesort + \@gls@noidx@sanitizesort + \else + \@gls@noidx@nosanitizesort + \fi + }% + }% +% \end{macrocode} +% Unlike \cs{makenoidxglossaries} we can't automatically set +% sanitizesort=false. All entries must be defined in the preamble. +% \begin{macrocode} + \renewcommand*\new@glossaryentry[2]{% + \PackageError{glossaries-extra}{Glossary entries must be defined + in the preamble\MessageBreak when you use the optional argument + of \string\makeglossaries}{Either move your definitions to the + preamble or don't use the optional argument of + \string\makeglossaries}% + }% +% \end{macrocode} +% Only activate sort key for glossaries that aren't listed in +% \verb|#1| (glossary label is stored in \cs{@glo@type} but this +% defaults to \cs{glsdefaulttype} so some expansion is required). +% \begin{macrocode} + \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey + \renewcommand*{\@printgloss@setsort}{% +% \end{macrocode} +% Need to extract just the \gloskey[printglossary]{type} value. +% \begin{macrocode} + \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% + type=\glsdefaulttype,\@end@glsxtr@gettype + \def\@glo@sorttype{\@glo@default@sorttype}% + }% +% \end{macrocode} +% Check \pkgopt{automake} setting: +% \begin{macrocode} + \ifglsautomake + \renewcommand*{\@gls@doautomake}{% + \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% + \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + }% + }% + \fi +% \end{macrocode} +% Check the sort setting (\sty{glossaries} v4.30 onwards): +% \begin{macrocode} + \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%The optional argument version of \cs{makeglossaries} needs an +%adjustment to \cs{@printglossary} to allow \cs{@glo@assign@sortkey} +%to pick up the glossary type. +% +%\begin{macro}{\@glsxtr@orgprintglossary} +%This no longer simply saves \cs{@printglossary} with \cs{let} +%but is actually defined +%to check for the existence of the title, since ignored +%glossaries don't have a title assigned. (bib2gls writes +%\cs{provideignoredglossary} to the glstex file for some settings, +%so the glossary might not have been defined.) +%(This command is also used for on-the-fly setting.) +% \begin{macrocode} +\newcommand{\@glsxtr@orgprintglossary}[2]{% + \def\@glo@type{\glsdefaulttype}% +% \end{macrocode} +%Add check here. +% \begin{macrocode} + \def\glossarytitle{% + \ifcsdef{@glotype@\@glo@type @title}% + {\csuse{@glotype@\@glo@type @title}}% + {\glossaryname}}% + \def\glossarytoctitle{\glossarytitle}% + \let\org@glossarytitle\glossarytitle + \def\@glossarystyle{% + \ifx\@glossary@default@style\relax + \GlossariesWarning{No default glossary style provided \MessageBreak + for the glossary `\@glo@type'. \MessageBreak + Using deprecated fallback. \MessageBreak + To fix this set the style with \MessageBreak + \string\setglossarystyle\space or use the \MessageBreak + style key=value option}% + \fi + }% + \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}% + \let\@org@glossaryentrynumbers\glossaryentrynumbers + \bgroup + \@printgloss@setsort + \setkeys{printgloss}{#1}% + \ifx\glossarytitle\org@glossarytitle + \else + \cslet{@glotype@\@glo@type @title}{\glossarytitle}% + \fi + \let\currentglossary\@glo@type + \let\org@glossaryentrynumbers\glossaryentrynumbers + \let\glsnonextpages\@glsnonextpages + \let\glsnextpages\@glsnextpages +% \end{macrocode} +%\changes{1.22}{2017-11-08}{changed explicit \cs{let} for \cs{nopostdesc} +%to \cs{glsxtractivatenopost}} +% \begin{macrocode} + \glsxtractivatenopost + \gls@dotoctitle + \@glossarystyle + \let\gls@org@glossaryentryfield\glossentry + \let\gls@org@glossarysubentryfield\subglossentry + \renewcommand{\glossentry}[1]{% + \xdef\glscurrententrylabel{\glsdetoklabel{##1}}% + \gls@org@glossaryentryfield{##1}% + }% + \renewcommand{\subglossentry}[2]{% + \xdef\glscurrententrylabel{\glsdetoklabel{##2}}% + \gls@org@glossarysubentryfield{##1}{##2}% + }% + \@gls@preglossaryhook + #2% + \egroup + \global\let\glossaryentrynumbers\@org@glossaryentrynumbers + \global\let\warn@noprintglossary\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtractivatenopost} +%\changes{1.22}{2017-11-08}{new} +%Change \cs{nopostdesc} and \cs{glsxtrnopostpunc} to behave as they +%do in the glossary. +% \begin{macrocode} +\newcommand*{\glsxtractivatenopost}{% + \let\nopostdesc\@nopostdesc + \let\glsxtrnopostpunc\@glsxtr@nopostpunc +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnopostpunc} +%\changes{1.22}{2017-11-08}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnopostpunc}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@nopostpunc} +%Provide a command that works like \cs{nopostdesc} but only +%switches of the punctuation without suppressing the post-description +%hook. +%\changes{1.22}{2017-11-08}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@nopostpunc}{% + \let\@@glsxtr@org@postdescription\glspostdescription + \ifglsnopostdot + \renewcommand{\glspostdescription}{% + \glsnopostdottrue + \let\glspostdescription\@@glsxtr@org@postdescription + \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc + \glsxtrpostdescription + \@glsxtr@nopostpunc@postdesc}% + \else + \renewcommand{\glspostdescription}{% + \let\glspostdescription\@@glsxtr@org@postdescription + \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc + \glsxtrpostdescription + \@glsxtr@nopostpunc@postdesc}% + \fi + \glsnopostdotfalse +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@nopostpunc@postdesc} +%\changes{1.23}{2017-11-12}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@nopostpunc@postdesc}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@restore@postpunc} +%\changes{1.23}{2017-11-12}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@restore@postpunc}{% + \def\@glsxtr@nopostpunc@postdesc{% + \@glsxtr@org@postdescription + \let\@glsxtr@nopostpunc@postdesc\@empty + \let\glsxtrrestorepostpunc\@empty + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrrestorepostpunc} +%\changes{1.23}{2017-11-12}{new} +%Does nothing outside of glossary. +% \begin{macrocode} +\newcommand*{\glsxtrrestorepostpunc}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@printglossary} +%Redefine. +%\changes{1.09}{2016-12-16}{redefined to save options} +% \begin{macrocode} +\renewcommand{\@printglossary}[2]{% + \def\@glsxtr@printglossopts{#1}% + \@glsxtr@orgprintglossary{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%Add a key that switches off the entry targets: +%\changes{1.12}{2017-02-03}{added target key to printgloss family} +% \begin{macrocode} +\define@choicekey{printgloss}{target} +[\@glsxtr@printglossval\@glsxtr@printglossnr]% +{true,false}[true]% +{% + \ifcase\@glsxtr@printglossnr +% \end{macrocode} +%\changes{1.31}{2018-05-09}{changed \cs{let} to \cs{def}} +% \begin{macrocode} + \def\@glstarget{\glsdohypertarget}% + \else + \let\@glstarget\@secondoftwo + \fi +} +% \end{macrocode} +%\begin{macro}{\@glsxtrhypernameprefix} +%\changes{1.20}{2017-09-11}{new} +% \begin{macrocode} +\newcommand{\@glsxtrhypernameprefix}{} +% \end{macrocode} +%\end{macro} +% +%New to v1.20: +% \begin{macrocode} +\define@key{printgloss}{targetnameprefix}{% + \renewcommand{\@glsxtrhypernameprefix}{#1}% +} +% \end{macrocode} +% +%\changes{1.31}{2018-05-09}{added \texttt{prefix} key for \texttt{printgloss}} +% \begin{macrocode} +\define@key{printgloss}{prefix}{% + \renewcommand{\glolinkprefix}{#1}% +} +% \end{macrocode} +% +%\changes{1.39}{2019-03-22}{added \texttt{label} key for \texttt{printgloss}} +% \begin{macrocode} +\define@key{printgloss}{label}{% + \glsxtrsetglossarylabel{#1}% +} +% \end{macrocode} +% +%\begin{macro}{\glsxtrsetglossarylabel} +%\changes{1.39}{2019-03-22}{new} +%Set the label for subsequent glossaries. If the label is +%fixed (that is, doesn't change with each glossary) this will need +%to be scoped or changed again to prevent duplicate labels. +% \begin{macrocode} +\newcommand{\glsxtrsetglossarylabel}[1]{% + \renewcommand*{\@@glossaryseclabel}{% + \protected@edef\@currentlabelname{\glossarytoctitle}% + \label{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdohypertarget} +%\changes{1.20}{2017-09-11}{added redefinition} +%Redefine to insert \cs{@glsxtrhypernameprefix} before the target +%name. +% \begin{macrocode} +\let\@glsxtr@org@glsdohypertarget\glsdohypertarget +\renewcommand{\glsdohypertarget}[2]{% + \@glsxtr@org@glsdohypertarget{\@glsxtrhypernameprefix#1}{#2}% +} +% \end{macrocode} +%\changes{1.31}{2018-05-09}{bug fix: ensure that new version is picked up} +%Update \cs{@glstarget} to use \cs{def} instead being assigned with +%\cs{let} so that it can pick up the new definition and allow any +%further redefinitions: +% \begin{macrocode} +\ifx\@glstarget\@glsxtr@org@glsdohypertarget + \def\@glstarget{\glsdohypertarget}% +\fi +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtr@makeglossaries} +%For the benefit of \app{makeglossaries} +%\changes{1.09}{2016-12-16}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@makeglossaries}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@gettype} +%Get just the type. +%\changes{1.09}{2016-12-16}{new} +% \begin{macrocode} +\def\@glsxtr@gettype#1,type=#2,#3\@end@glsxtr@gettype{% + \def\@glo@type{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@mixed@assign@sortkey} +%Assign the sort key. +%\changes{1.09}{2016-12-16}{new} +% \begin{macrocode} +\newcommand\@glsxtr@mixed@assign@sortkey[1]{% + \edef\@glo@type{\@glo@type}% + \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}% + {% + \@glo@no@assign@sortkey{#1}% + }% + {% + \@@glo@assign@sortkey{#1}% + }% +}% +% \end{macrocode} +%\end{macro} +% Display number list for the regular version: +%\begin{macro}{\@glsxtr@idx@displaynumberlist} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\let\@glsxtr@idx@displaynumberlist\glsdisplaynumberlist +% \end{macrocode} +%\end{macro} +% +% Display number list for the \qt{noidx} version: +%\begin{macro}{\@glsxtr@noidx@displaynumberlist} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@noidx@displaynumberlist}[1]{% + \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \ifdef\@gls@loclist + {% + \def\@gls@noidxloclist@sep{% + \def\@gls@noidxloclist@sep{% + \def\@gls@noidxloclist@sep{% + \glsnumlistsep + }% + \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}% + }% + }% + \def\@gls@noidxloclist@finalsep{}% + \def\@gls@noidxloclist@prev{}% + \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}% + \@gls@noidxloclist@finalsep + \@gls@noidxloclist@prev + }% + {% +% \end{macrocode} +%\changes{1.17}{2017-08-09}{replace hard-coded ?? with +%\cs{glsxtrundeftag}} +% \begin{macrocode} + \glsxtrundeftag + \glsdoifexists{#1}% + {% + \GlossariesWarning{Missing location list for `#1'. Either + a rerun is required or you haven't referenced the entry.}% + }% + }% +}% + +% \end{macrocode} +%\end{macro} +%And for the number list loop: +%\begin{macro}{\@glsxtr@noidx@numberlistloop} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@noidx@numberlistloop}[3]{% + \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc + \let\@gls@org@glsseeformat\glsseeformat + \let\glsnoidxdisplayloc#2\relax + \let\glsseeformat#3\relax + \ifdef\@gls@loclist + {% + \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}% + }% + {% +% \end{macrocode} +%\changes{1.17}{2017-08-09}{replace hard-coded ?? with +%\cs{glsxtrundeftag}} +% \begin{macrocode} + \glsxtrundeftag + \glsdoifexists{#1}% + {% + \GlossariesWarning{Missing location list for `##1'. Either + a rerun is required or you haven't referenced the entry.}% + }% + }% + \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc + \let\glsseeformat\@gls@org@glsseeformat +}% +% \end{macrocode} +%\end{macro} +% +%Same for entry number list. +%\begin{macro}{\@glsxtr@noidx@entrynumberlist} +%\changes{1.0}{2016-01-24}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@noidx@entrynumberlist}[1]{% + \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \ifdef\@gls@loclist + {% + \glsnoidxloclist{\@gls@loclist}% + }% + {% +% \end{macrocode} +%\changes{1.17}{2017-08-09}{replace hard-coded ?? with +%\cs{glsxtrundeftag}} +% \begin{macrocode} + \glsxtrundeftag + \glsdoifexists{#1}% + {% + \GlossariesWarning{Missing location list for `#1'. Either + a rerun is required or you haven't referenced the entry.}% + }% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@idx@entrynumberlist} +%\changes{1.0}{2016-01-24}{new} +%\changes{1.04}{2016-05-02}{switched from \cs{let} to \cs{newcommand}} +% \begin{macrocode} +\newcommand*{\@glsxtr@idx@entrynumberlist}[1]{\glsentrynumberlist{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@noidx@getgrouptitle} +%\changes{1.14}{2017-04-18}{new} +%\changes{1.16}{2017-06-15}{fixed bug} +%Patch. +% \begin{macrocode} +\renewcommand*{\@gls@noidx@getgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{#1}% + \ifdefvoid\@glsxtr@titlelabel + {}% + {% + \protected@edef\@glsxtr@titlelabel{\csuse{glsxtr@grouptitle@#1}}% + }% + \ifdefvoid{\@glsxtr@titlelabel}% + {% + \DTLifint{#1}% + {% + \ifnum#1<256\relax + \edef#2{\char#1\relax}% + \else + \edef#2{#1}% + \fi + }% + {% + \ifcsundef{#1groupname}% + {\def#2{#1}}% + {\letcs#2{#1groupname}}% + }% + }% + {% + \let#2\@glsxtr@titlelabel + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@org@getgrouptitle} +%\changes{1.14}{2017-04-18}{new} +%Save original definition of \cs{@gls@getgrouptitle} +% \begin{macrocode} +\let\glsxtr@org@getgrouptitle\@gls@getgrouptitle +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgetgrouptitle} +%\changes{1.14}{2017-04-18}{new} +%Provide a user-level command to fetch the group title. The first +%argument is the group label. The second argument is a control +%sequence in which to store the title. +% \begin{macrocode} +\newrobustcmd{\glsxtrgetgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \ifcsdef{\@glsxtr@titlelabel} + {\letcs{#2}{\@glsxtr@titlelabel}}% + {\glsxtr@org@getgrouptitle{#1}{#2}}% +} +\let\@gls@getgrouptitle\glsxtrgetgrouptitle +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetgrouptitle} +%\changes{1.14}{2017-04-18}{new} +%Sets the title for the given group label. +%\changes{1.28}{2018-03-06}{changed \cs{csxdef} \cs{protected@csxdef}} +% \begin{macrocode} +\newcommand{\glsxtrsetgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \protected@csxdef{\@glsxtr@titlelabel}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlocalsetgrouptitle} +%\changes{1.24}{2017-11-14}{new} +%As above put only locally defines the title. +%\changes{1.28}{2018-03-06}{changed \cs{csedef} \cs{protected@csedef}} +% \begin{macrocode} +\newcommand{\glsxtrlocalsetgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \protected@csedef{\@glsxtr@titlelabel}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsnavigation} +%\changes{1.14}{2017-04-18}{new} +%Redefine to use new user-level command. +% \begin{macrocode} +\renewcommand*{\glsnavigation}{% + \def\@gls@between{}% + \ifcsundef{@gls@hypergrouplist@\@glo@type}% + {% + \def\@gls@list{}% + }% + {% + \expandafter\let\expandafter\@gls@list + \csname @gls@hypergrouplist@\@glo@type\endcsname + }% + \@for\@gls@tmp:=\@gls@list\do{% + \@gls@between + \glsxtrgetgrouptitle{\@gls@tmp}{\@gls@grptitle}% + \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}% + \let\@gls@between\glshypernavsep + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@print@noidx@glossary} +%\changes{1.11}{2017-01-19}{added redefinition} +% \begin{macrocode} +\renewcommand*{\@print@noidx@glossary}{% + \ifcsdef{@glsref@\@glo@type}% + {% + \ifcsdef{@glo@sortmacro@\@glo@sorttype}% + {% + \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}% + }% + {% + \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}% + }% + \glossarysection[\glossarytoctitle]{\glossarytitle}% + \glossarypreamble +% \end{macrocode} +%Moved this command definition outside of environment in case of +%scoping issues (e.g. in tabular-like styles). +% \begin{macrocode} + \def\@gls@currentlettergroup{}% + \begin{theglossary}% + \glossaryheader + \glsresetentrylist + \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}% + \end{theglossary}% + \glossarypostamble + }% + {% +% \end{macrocode} +%Add section header if there are actually entries defined in this +%glossary as the document is likely pending a re-run. +% \begin{macrocode} + \glsxtrifemptyglossary{\@glo@type}% + {}% + {\glossarysection[\glossarytoctitle]{\glossarytitle}}% + \@gls@noref@warn{\@glo@type}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsnoidxdisplayloc} +%\changes{1.12}{2017-02-03}{added redefinition} +%Patch to check for range formations. +% \begin{macrocode} +\renewcommand*{\glsnoidxdisplayloc}[4]{% + \setentrycounter[#1]{#2}% + \@glsxtr@display@loc#3\empty\end@glsxtr@display@loc{#4}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@display@loc} +%\changes{1.12}{2017-02-03}{new} +%Patch to check for range formations. +% \begin{macrocode} +\def\@glsxtr@display@loc#1#2\end@glsxtr@display@loc#3{% + \ifx#1(\relax + \glsxtrdisplaystartloc{#2}{#3}% + \else + \ifx#1)\relax + \glsxtrdisplayendloc{#2}{#3}% + \else + \glsxtrdisplaysingleloc{#1#2}{#3}% + \fi + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdisplaysingleloc} +%\changes{1.12}{2017-02-03}{new} +%Single location. +% \begin{macrocode} +\newcommand*{\glsxtrdisplaysingleloc}[2]{% + \csuse{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%By default the range identifiers are simply ignored. +%A custom list loop handler can be defined by the user +%to test for ranges by checking the definition of +%\cs{glsxtrlocrangefmt}. +% +%\begin{macro}{\glsxtrdisplaystartloc} +%\changes{1.12}{2017-02-03}{new} +%Start of a location range. +% \begin{macrocode} +\newcommand*{\glsxtrdisplaystartloc}[2]{% + \edef\glsxtrlocrangefmt{#1}% + \ifx\glsxtrlocrangefmt\empty + \def\glsxtrlocrangefmt{glsnumberformat}% + \fi + \expandafter\glsxtrdisplaysingleloc + \expandafter{\glsxtrlocrangefmt}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdisplayendloc} +%\changes{1.12}{2017-02-03}{new} +%\changes{1.14}{2017-04-18}{added check for empty format} +%End of a location range. +% \begin{macrocode} +\newcommand*{\glsxtrdisplayendloc}[2]{% + \edef\@glsxtr@tmp{#1}% + \ifdefempty{\@glsxtr@tmp}{\def\@glsxtr@tmp{glsnumberformat}}{}% + \ifx\glsxtrlocrangefmt\@glsxtr@tmp + \else + \GlossariesExtraWarning{Mismatched end location range + (start=\glsxtrlocrangefmt, end=\@glsxtr@tmp)}% + \fi + \expandafter\glsxtrdisplayendlochook\expandafter{\@glsxtr@tmp}{#2}% + \expandafter\glsxtrdisplaysingleloc + \expandafter{\glsxtrlocrangefmt}{#2}% + \def\glsxtrlocrangefmt{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdisplayendlochook} +%\changes{1.12}{2017-02-03}{new} +%Allow the user to hook into the end of range command. +% \begin{macrocode} +\newcommand*{\glsxtrdisplayendlochook}[2]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrlocrangefmt} +%\changes{1.12}{2017-02-03}{new} +%Current range format. Empty if not in a range. +% \begin{macrocode} +\newcommand*{\glsxtrlocrangefmt}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\setentrycounter} +%\changes{1.29}{2018-04-09}{new} +%Adjust \cs{setentrycounter} to save the original prefix. +% \begin{macrocode} +\renewcommand*{\setentrycounter}[2][]{% + \def\glsxtrcounterprefix{#1}% + \ifx\glsxtrcounterprefix\@empty + \def\@glo@counterprefix{.}% + \else + \def\@glo@counterprefix{.#1.}% + \fi + \def\glsentrycounter{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@removespaces} +%\changes{1.14}{2017-04-18}{new} +%Redefine to allow adjustments to location hyperlink. +% \begin{macrocode} +\def\@gls@removespaces#1 #2\@nil{% + \toks@=\expandafter{\the\toks@#1}% + \ifx\\#2\\% +% \end{macrocode} +%\changes{1.39}{2019-03-22}{changed \cs{x} to \cs{@glo@tmp}} +% \begin{macrocode} + \edef\@glo@tmp{\the\toks@}% + \ifx\@glo@tmp\empty + \else +% \end{macrocode} +%Expand location (just in case \cs{toks@} is needed for something +%else). +%\changes{1.29}{2018-04-09}{added expansion} +% \begin{macrocode} + \expandafter\glsxtrlocationhyperlink\expandafter + \glsentrycounter\expandafter\@glo@counterprefix\expandafter{\the\toks@}% + \fi + \else + \@gls@ReturnAfterFi{% + \@gls@removespaces#2\@nil + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlocationhyperlink} +%\changes{1.14}{2017-04-18}{new} +%\begin{definition} +%\cs{glsxtrlocationhyperlink}\marg{counter}\marg{prefix}\marg{location} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrlocationhyperlink}[3]{% + \ifdefvoid\glsxtrsupplocationurl + {% + \GlsXtrInternalLocationHyperlink{#1}{#2}{#3}% + }% + {% + \hyperref{\glsxtrsupplocationurl}{}{#1#2#3}{#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsupphypernumber} +%\changes{1.14}{2017-04-18}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsupphypernumber}[1]{% + {% + \glshasattribute{\glscurrententrylabel}{externallocation}% + {% + \def\glsxtrsupplocationurl{% + \glsgetattribute{\glscurrententrylabel}{externallocation}}% + }% + {% + \def\glsxtrsupplocationurl{}% + }% + \glshypernumber{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +% Give a bit of assistance to new users who are confused and don't +% know how to read transcript messages. +%\begin{macro}{\@print@glossary} +%\changes{0.3}{2015-12-02}{added redefinition} +% \begin{macrocode} +\renewcommand{\@print@glossary}{% + \makeatletter + \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}% + \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}% + {}% + {\glsxtrNoGlossaryWarning{\@glo@type}}% + \ifglsxindy + \ifcsundef{@xdy@\@glo@type @language}% + {% + \edef\@do@auxoutstuff{% + \noexpand\AtEndDocument{% + \noexpand\immediate\noexpand\write\@auxout{% + \string\providecommand\string\@xdylanguage[2]{}}% + \noexpand\immediate\noexpand\write\@auxout{% + \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}% + }% + }% + }% + {% + \edef\@do@auxoutstuff{% + \noexpand\AtEndDocument{% + \noexpand\immediate\noexpand\write\@auxout{% + \string\providecommand\string\@xdylanguage[2]{}}% + \noexpand\immediate\noexpand\write\@auxout{% + \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type + @language\endcsname}}% + }% + }% + }% + \@do@auxoutstuff + \edef\@do@auxoutstuff{% + \noexpand\AtEndDocument{% + \noexpand\immediate\noexpand\write\@auxout{% + \string\providecommand\string\@gls@codepage[2]{}}% + \noexpand\immediate\noexpand\write\@auxout{% + \string\@gls@codepage{\@glo@type}{\gls@codepage}}% + }% + }% + \@do@auxoutstuff + \fi + \renewcommand*{\@warn@nomakeglossaries}{% + \GlossariesWarningNoLine{\string\makeglossaries\space + hasn't been used,^^Jthe glossaries will not be updated}% + }% +} +% \end{macrocode} +%\end{macro} +% +% Setup the warning text to display if the external file for the given +% glossary is missing. +% +%\begin{macro}{\GlsXtrNoGlsWarningHead} +% Header message. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningHead}[2]{% + This document is incomplete. The external file associated with + the glossary `#1' (which should be called \texttt{#2}) + hasn't been created.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningEmptyStart} +% No entries have been added to the glossary. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningEmptyStart}{% + This has probably happened because there are no entries defined + in this glossary.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningEmptyMain} +% The default \qt{main} glossary is empty. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningEmptyMain}{% + If you don't want this glossary, + add \texttt{nomain} to your package option list when you load + \texttt{glossaries-extra.sty}. For example:% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningEmptyNotMain} +% A glossary that isn't the default \qt{main} glossary is empty. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningEmptyNotMain}[1]{% + Did you forget to use \texttt{type=#1} when you defined your + entries? If you tried to load entries into this glossary with + \texttt{\string\loadglsentries} did you remember to use + \texttt{[#1]} as the optional argument? If you did, check that + the definitions in the file you loaded all had the type set + to \texttt{\string\glsdefaulttype}.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningCheckFile} +% Advisory message to check the file contents. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningCheckFile}[1]{% + Check the contents of the file \texttt{#1}. If + it's empty, that means you haven't indexed any of your entries in this + glossary (using commands like \texttt{\string\gls} or + \texttt{\string\glsadd}) so this list can't be generated. + If the file isn't empty, the document build process hasn't been + completed.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningAutoMake} +% Message when \pkgopt{automake} option has been used. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningAutoMake}[1]{% + You may need to rerun \LaTeX. If you already have, it may be that + \TeX's shell escape doesn't allow you to run + \ifglsxindy xindy\else makeindex\fi. Check the + transcript file \texttt{\jobname.log}. If the shell escape is + disabled, try one of the following: + + \begin{itemize} + \item Run the external (Lua) application: + + \texttt{makeglossaries-lite \string"\jobname\string"} + + \item Run the external (Perl) application: + + \texttt{makeglossaries \string"\jobname\string"} + \end{itemize} + + Then rerun \LaTeX\ on this document. + \GlossariesExtraWarning{Rerun required to build the + glossary `#1' or check TeX's shell escape allows + you to run \ifglsxindy xindy\else makeindex\fi}% +} +% \end{macrocode} +%\end{macro} +% +%\changes{0.5.3}{2015-12-09}{removed \cs{GlsXtrNoGlsWarningNoAutoMakeMain}} +% +%\begin{macro}{\GlsXtrNoGlsWarningMisMatch} +% Mismatching \cs{makenoidxglossaries}. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningMisMatch}{% + You need to either replace \texttt{\string\makenoidxglossaries} + with \texttt{\string\makeglossaries} or replace + \texttt{\string\printglossary} (or \texttt{\string\printglossaries}) with + \texttt{\string\printnoidxglossary} + (or \texttt{\string\printnoidxglossaries}) and then rebuild + this document.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningBuildInfo} +% Build advice. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningBuildInfo}{% + Try one of the following: + \begin{itemize} + \item Add \texttt{automake} to your package option list when you load + \texttt{glossaries-extra.sty}. For example: + + \texttt{\string\usepackage[automake]% + \glsopenbrace glossaries-extra\glsclosebrace} + + \item Run the external (Lua) application: + + \texttt{makeglossaries-lite.lua \string"\jobname\string"} + + \item Run the external (Perl) application: + + \texttt{makeglossaries \string"\jobname\string"} + \end{itemize} + + Then rerun \LaTeX\ on this document.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrRecordWarning} +% Paragraph for \pkgopt[only]{record}. +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} +\newcommand{\GlsXtrRecordWarning}[1]{% + \texttt{\string\printglossary} doesn't work + with the \texttt{record=only} package option + use\par\texttt{\string\printunsrtglossary[type=#1]}\par + instead (or change the package option).% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningTail} +% Final paragraph. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningTail}{% + This message will be removed once the problem has been fixed.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrNoGlsWarningNoOut} +% No out file created. +% Build advice. +% \begin{macrocode} +\newcommand{\GlsXtrNoGlsWarningNoOut}[1]{% + The file \texttt{#1} doesn't exist. This most likely means you haven't used + \texttt{\string\makeglossaries} or you have used + \texttt{\string\nofiles}. If this is just a draft version of the + document, you can suppress this message using the + \texttt{nomissingglstext} package option.% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@defaultnoglossarywarning} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@defaultnoglossarywarning}[1]{% + \glossarysection[\glossarytoctitle]{\glossarytitle} + \GlsXtrNoGlsWarningHead{#1}{\jobname.\csname @glotype@\@glo@type @in\endcsname} + \par + \glsxtrifemptyglossary{#1}% + {% + \GlsXtrNoGlsWarningEmptyStart\space + \ifthenelse{\equal{#1}{main}}{\GlsXtrNoGlsWarningEmptyMain\par + \medskip + \noindent\texttt{\string\usepackage[nomain\ifglsacronym ,acronym\fi]% + \glsopenbrace glossaries-extra\glsclosebrace} + \medskip + }% + {\GlsXtrNoGlsWarningEmptyNotMain{#1}}% + }% + {% + \IfFileExists{\jobname.\csname @glotype@\@glo@type @out\endcsname} + {% + \GlsXtrNoGlsWarningCheckFile + {\jobname.\csname @glotype@\@glo@type @out\endcsname} + + \ifglsautomake + + \GlsXtrNoGlsWarningAutoMake{#1} + + \else + + \ifthenelse{\equal{#1}{main}}% + {% + \GlsXtrNoGlsWarningEmptyMain\par + \medskip + \noindent\texttt{\string\usepackage[nomain]% + \glsopenbrace glossaries-extra\glsclosebrace} + \medskip + }% + {}% + + \ifdefequal\makeglossaries\@no@makeglossaries + {% + \GlsXtrNoGlsWarningMisMatch + }% + {% + \GlsXtrNoGlsWarningBuildInfo + }% + \fi + }% + {% + \GlsXtrNoGlsWarningNoOut + {\jobname.\csname @glotype@\@glo@type @out\endcsname}% + }% + }% + \par + \GlsXtrNoGlsWarningTail +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@record@noglossarywarning} +%\changes{1.31}{2018-05-09}{new} +%Warn about using \cs{printglossary} with \pkgopt{record} +% \begin{macrocode} +\newcommand*{\@glsxtr@record@noglossarywarning}[1]{% + \GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak + with record=only package option\MessageBreak(use + \string\printunsrtglossary[type=#1])\MessageBreak + instead (or change the package option)}% + \glossarysection[\glossarytoctitle]{\glossarytitle} + \GlsXtrRecordWarning{#1} + \GlsXtrNoGlsWarningTail +} +% \end{macrocode} +%\end{macro} +% +%Provide some commands to accompany the \pkgopt{record} option +%for use with \href{https://github.com/nlct/bib2gls}{bib2gls}. +% +%\begin{macro}{\GlsXtrDefaultResourceOptions} +%\changes{1.40}{2019-03-31}{new} +%Default resource options. +% \begin{macrocode} +\newcommand*{\GlsXtrDefaultResourceOptions}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrresourcefile} +%\changes{1.08}{2016-12-13}{new} +%\changes{1.11}{2017-01-19}{changed extension to .glstex} +%Since it's dangerous for an external application to +%create a file with a .tex extension, as from v1.11 this +%enforces a .glstex extension to avoid conflict. +% \begin{macrocode} +\newcommand*{\glsxtrresourcefile}[2][]{% +% \end{macrocode} +%The \pkgopt{record} option can't be set after this command. +%\changes{1.21}{2017-11-03}{now disables record key} +% \begin{macrocode} + \disable@keys{glossaries-extra.sty}{record}% + \glsxtr@writefields + \ifdefempty\GlsXtrDefaultResourceOptions + {% + \protected@write\@auxout{\glsxtrresourceinit}% + {\string\glsxtr@resource{#1}{#2}}% + }% + {% + \protected@write\@auxout{\glsxtrresourceinit}% + {\string\glsxtr@resource{\GlsXtrDefaultResourceOptions,#1}{#2}}% + }% + \let\@glsxtr@org@see@noindex\@gls@see@noindex + \let\@gls@see@noindex\relax + \IfFileExists{#2.glstex}% + {% +% \end{macrocode} +%Can't scope \cs{@input} so save and restore the category code of +%\texttt{@} to allow for internal commands in the location list. +%\changes{1.12}{2017-02-03}{added catcode change for @} +% \begin{macrocode} + \edef\@bibgls@restoreat{\noexpand\catcode\noexpand`\noexpand\@=\number\catcode`\@}% + \makeatletter + \@input{#2.glstex}% + \@bibgls@restoreat +% \end{macrocode} +% If the \pkgopt[nameref]{record} option has been set, check if this +% is supported by the installed version of \app{bib2gls}. +% \begin{macrocode} + \@glsxtr@check@bibgls@nameref + }% + {% + \GlossariesExtraWarning{No file `#2.glstex'}% + }% + \let\@gls@see@noindex\@glsxtr@org@see@noindex +} +\@onlypreamble\glsxtrresourcefile +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@check@bibgls@nameref} +%\changes{1.37}{2018-11-30}{new} +%This will only warn after \app{bib2gls} has created the .glstex +%file, but there's way to check before. +% \begin{macrocode} +\newcommand{\@glsxtr@check@bibgls@nameref}{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \ifdef\bibglshrefchar + {}% + {% + \GlossariesExtraWarning{record=nameref requires at least + version 1.8 of bib2gls}% + }% + \fi + \let\@glsxtr@check@bibgls@nameref\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrresourceinit} +%\changes{1.21}{2017-11-03}{new} +%Code used during the protected write operation. +% \begin{macrocode} +\newcommand*{\glsxtrresourceinit}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrresourcecount} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcount\glsxtrresourcecount +% \end{macrocode} +%\end{macro} +%\begin{macro}{\GlsXtrLoadResources} +%\changes{1.11}{2017-01-19}{new} +%\changes{1.12}{2017-02-03}{removed restriction on only one per document} +%Short cut that uses \cs{glsxtrresourcefile} with \cs{jobname} as +%the mandatory argument. +% \begin{macrocode} +\newcommand*{\GlsXtrLoadResources}[1][]{% + \ifnum\glsxtrresourcecount=0\relax + \glsxtrresourcefile[#1]{\jobname}% + \else + \glsxtrresourcefile[#1]{\jobname-\the\glsxtrresourcecount}% + \fi + \advance\glsxtrresourcecount by 1\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@resource} +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@resource}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@fields} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@fields}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@texencoding} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@texencoding}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@langtag} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@langtag}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@pluralsuffixes} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@pluralsuffixes}[4]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@shortcutsval} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@shortcutsval}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@linkprefix} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@linkprefix}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@writefields} +%\changes{1.11}{2017-01-19}{new} +%This information only needs to be written once, so disable it after +%it's been used. +% \begin{macrocode} +\newcommand*{\glsxtr@writefields}{% +% \end{macrocode} +%\changes{1.16}{2017-06-15}{added \cs{providecommand} lines} +% \begin{macrocode} + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@fields}[1]{}}% + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@resource}[2]{}}% + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@pluralsuffixes}[4]{}}% + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@shortcutsval}[1]{}}% + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@linkprefix}[1]{}}% + \protected@write\@auxout{}{\string\glsxtr@fields{\@gls@keymap}}% +% \end{macrocode} +%\changes{1.22}{2017-11-08}{provide \cs{glsxtr@record} in aux file} +% \begin{macrocode} + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@record}[5]{}}% +% \end{macrocode} +%\changes{1.37}{2018-11-30}{provide \cs{glsxtr@record@nameref} in aux file} +% \begin{macrocode} + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@record@nameref}[8]{}}% + \fi +% \end{macrocode} +%If any languages have been loaded, the language tag will be +%available in \cs{CurrentTrackedLanguageTag} (provided by +%\sty{tracklang}). For multilingual +%documents, the required locale will have to be indicated in the +%"sort" key when using \cs{glsxtrresourcefile}. +% \begin{macrocode} + \ifdef\CurrentTrackedLanguageTag + {% + \protected@write\@auxout{}{% + \string\glsxtr@langtag{\CurrentTrackedLanguageTag}}% + }% + {}% + \protected@write\@auxout{}{\string\glsxtr@pluralsuffixes + {\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}% + {\glsxtrabbrvpluralsuffix}}% + \ifdef\inputencodingname + {% + \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}% + }% + {% +% \end{macrocode} +%If \sty{fontspec} has been loaded, assume UTF-8. (The encoding can +%be changed with \cs{XeTeXinputencoding}, but I can't work out how +%to determine the current encoding.) +% \begin{macrocode} + \@ifpackageloaded{fontspec}% + {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}% + {}% + }% + \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}% +% \end{macrocode} +%Prefix deferred until the beginning of the document in case it's +%redefined later in the preamble. This is picked up by bib2gls when +%the external option is used. +% \begin{macrocode} + \AtBeginDocument + {\protected@write\@auxout{}{\string\glsxtr@linkprefix{\glolinkprefix}}}% + \let\glsxtr@writefields\relax +% \end{macrocode} +%If the \pkgopt{automake} option is on, try running bib2gls if +%the aux file exists. This has to be done before the aux file is +%opened (so package options \pkgopt[immediate]{automake} and +%\pkgopt[true]{automake} are identical if just bib2gls is used). +%\changes{1.14}{2017-04-18}{added check for automake} +%\changes{1.19}{2017-09-09}{removed double-quotes around \cs{jobname}} +%The double-quotes around \cs{jobname} have been removed (v1.19) +%since \cs{jobname} will include double-quotes if the file name has +%spaces. +% \begin{macrocode} + \ifglsautomake + \IfFileExists{\jobname.aux}% + {\immediate\write18{bib2gls \jobname}}{}% +% \end{macrocode} +%If \cs{makeglossaries} is also used, allow makeindex/xindy to +%also be run, otherwise disable the error message about requiring +%\cs{makeglossaries} with \pkgopt[true]{automake}. +% \begin{macrocode} + \ifx\@gls@doautomake\@gls@doautomake@err + \let\@gls@doautomake\relax + \fi + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@do@automake@err} +%\changes{1.14}{2017-04-18}{new} +% \begin{macrocode} +\newcommand*{\@gls@doautomake@err}{% + \PackageError{glossaries}{You must use + \string\makeglossaries\space with automake=true} + {% + Either remove the automake=true setting or + add \string\makeglossaries\space to your document preamble.% + }% +} +% \end{macrocode} +%\end{macro} +% +%Allow locations specific to a particular counter to be recorded. +%\begin{macro}{\glsxtr@record} +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@record}[5]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@record@nameref} +%\changes{1.37}{2018-11-30}{new} +%Used with \pkgopt[nameref]{record} to include current label +%information. +% \begin{macrocode} +\newcommand*{\glsxtr@record@nameref}[8]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@counterrecord} +%\changes{1.12}{2017-02-03}{new} +%Aux file command. +% \begin{macrocode} +\newcommand*{\glsxtr@counterrecord}[3]{% + \glsxtrfieldlistgadd{#1}{record.#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@counterrecordhook} +%\changes{1.12}{2017-02-03}{new} +%Hook used by \cs{@glsxtr@dorecord}. +% \begin{macrocode} +\newcommand*{\@glsxtr@counterrecordhook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrRecordCounter} +%\changes{1.12}{2017-02-03}{new} +%Activate recording for a particular counter (identified in the +%argument). +% \begin{macrocode} +\newcommand*{\GlsXtrRecordCounter}[1]{% + \@@glsxtr@recordcounter{#1}% +} +\@onlypreamble\GlsXtrRecordCounter +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@docounterrecord} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@docounterrecord}[1]{% + \protected@write\@auxout{}{\string\glsxtr@counterrecord + {\@gls@label}{#1}{\csuse{the#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrglossentry} +%Users may prefer to have entries displayed throughout the document +%rather than gathered together in a list. This command emulates +%the way \cs{glossentry} behaves (without the style formatting +%commands like \cs{item}). This needs to define \cs{currentglossary} +%to the current glossary type (normally set at the start of +%\cs{@printglossary}) and needs to define \cs{glscurrententrylabel} +%to the entry's label (normally set before \cs{glossentry} and +%\cs{subglossentry}). This needs some protection in case it's used +%in a section heading. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrglossentry}[1]{% + \glsxtrtitleorpdforheading + {\@glsxtrglossentry{#1}}% + {\glsentryname{#1}}% + {\glsxtrheadname{#1}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrglossentry} +%\changes{1.21}{2017-11-03}{new} +%Another test is needed in case \cs{@glsxtrglossentry} has been +%written to the table of contents. +% \begin{macrocode} +\newrobustcmd*{\@glsxtrglossentry}[1]{% + \glsxtrtitleorpdforheading + {% + \glsdoifexists{#1}% + {% + \begingroup + \edef\glscurrententrylabel{\glsdetoklabel{#1}}% + \edef\currentglossary{\GlsXtrStandaloneGlossaryType}% + \ifglshasparent{#1}% + {\GlsXtrStandaloneSubEntryItem{#1}}% + {\glsentryitem{#1}}% + \GlsXtrStandaloneEntryName{#1}% + \endgroup + }% + }% + {\glsentryname{#1}}% + {\glsxtrheadname{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryName} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryName}[1]{% + \glstarget{#1}{\glossentryname{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneGlossaryType} +%\changes{1.31}{2018-05-09}{new} +%To make it easier to adjust the definition of \cs{currentglossary} +%within \cs{glsxtrglossentry}, this expands to the default +%definition. (If redefined, it must fully expand to the appropriate +%label.) +% \begin{macrocode} +\newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneSubEntryItem} +%\changes{1.31}{2018-05-09}{new} +%Used for sub-entries in standalone format. The argument is the +%entry's label. +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{% + \GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrglossentryother} +%\changes{1.22}{2017-11-08}{new} +%As \cs{glsxtrglossentry} but uses a different field. +%First argument is code to use in the header. The second argument +%is the entry's label. The third argument is the internal field +%label. This needs to be expandable in case it occurs in a +%sectioning command so it can't have an optional argument. +% \begin{macrocode} +\newcommand*{\glsxtrglossentryother}[3]{% + \ifstrempty{#1}% + {% + \ifcsdef{glsxtrhead#3}% + {% + \glsxtrtitleorpdforheading + {\@glsxtrglossentryother{#2}{#3}{#1}}% + {\@gls@entry@field{#2}{#3}}% + {\csuse{glsxtrhead#3}{#2}}% + }% + {% + \glsxtrtitleorpdforheading + {\@glsxtrglossentryother{#2}{#3}{#1}}% + {\@gls@entry@field{#2}{#3}}% + {\@gls@entry@field{\NoCaseChange{#2}}{#3}}% + }% + }% + {% + \glsxtrtitleorpdforheading + {\@glsxtrglossentryother{#2}{#3}{#1}}% + {\@gls@entry@field{#2}{#3}}% + {#1}% + }% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrglossentryother} +%\changes{1.22}{2017-11-08}{new} +%As \cs{@glsxtrglossentry} but uses a different field. +% \begin{macrocode} +\newrobustcmd*{\@glsxtrglossentryother}[3]{% + \glsxtrtitleorpdforheading + {% + \glsdoifexists{#1}% + {% + \begingroup + \edef\glscurrententrylabel{\glsdetoklabel{#1}}% + \edef\currentglossary{\GlsXtrStandaloneGlossaryType}% + \ifglshasparent{#1}% + {\GlsXtrStandaloneSubEntryItem{#1}}% + {\glsentryitem{#1}}% + \GlsXtrStandaloneEntryOther{#1}% + \endgroup + }% + }% + {\@gls@entry@field{#1}{#2}}% + {#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryOther} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryOther}[2]{% + \glstarget{#1}{\glossentrynameother{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossary} +%\changes{1.08}{2016-12-13}{new} +%\changes{1.12}{2017-02-03}{added starred form} +%Similar to \cs{printnoidxglossary} but it displays all entries +%defined for the given glossary without sorting. +% \begin{macrocode} +\newcommand*{\printunsrtglossary}{% + \@ifstar\s@printunsrtglossary\@printunsrtglossary +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@printunsrtglossary} +%\changes{1.12}{2017-02-03}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@printunsrtglossary}[1][]{% + \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@printunsrtglossary} +%\changes{1.12}{2017-02-03}{new} +%Starred version. +% \begin{macrocode} +\newcommand*{\s@printunsrtglossary}[2][]{% + \begingroup + #2% + \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaries} +%\changes{1.08}{2016-12-13}{new} +%Similar to \cs{printnoidxglossaries} but it displays all entries +%defined for the given glossary without sorting. +% \begin{macrocode} +\newcommand*{\printunsrtglossaries}{% + \forallglossaries{\@@glo@type}{\printunsrtglossary[type=\@@glo@type]}% +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\@print@unsrt@glossary} +%\changes{1.08}{2016-12-13}{new} +% \begin{macrocode} +\newcommand*{\@print@unsrt@glossary}{% + \glossarysection[\glossarytoctitle]{\glossarytitle}% + \glossarypreamble +% \end{macrocode} +%check for empty list +% \begin{macrocode} + \glsxtrifemptyglossary{\@glo@type}% + {% + \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% + }% + {% +% \end{macrocode} +%\changes{1.16}{2017-06-15}{corrected misspelt command} +% \begin{macrocode} + \key@ifundefined{glossentry}{group}% + {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% + {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% + \def\@gls@currentlettergroup{}% +% \end{macrocode} +%A loop within the tabular-like styles can cause problems, so +%move the loop outside. +% \begin{macrocode} + \def\@glsxtr@doglossary{% + \begin{theglossary}% + \glossaryheader + \glsresetentrylist + }% + \expandafter\@for\expandafter\glscurrententrylabel\expandafter + :\expandafter=\csname glolist@\@glo@type\endcsname\do{% + \ifdefempty{\glscurrententrylabel} + {}% + {% +% \end{macrocode} +%Provide a hook (for example to measure width). +% \begin{macrocode} + \let\glsxtr@process\@firstofone + \let\printunsrtglossaryskipentry + \@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% +% \end{macrocode} +%Don't check group for child entries. +% \begin{macrocode} + \glsxtr@process + {% + \ifglshasparent{\glscurrententrylabel}{}% + {% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% + }% + \eappto\@glsxtr@doglossary{% + \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% + }% + }% + }% + \appto\@glsxtr@doglossary{\end{theglossary}}% + \printunsrtglossarypredoglossary + \@glsxtr@doglossary + }% + \glossarypostamble +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryentryprocesshook} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\printunsrtglossaryentryprocesshook}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryskipentry} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\printunsrtglossaryskipentry}{% + \PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space +can only be used within \string\printunsrtglossaryentryprocesshook}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryentryprocesshook} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@printunsrtglossaryskipentry}{% + \let\glsxtr@process\@gobble +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossarypredoglossary} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\printunsrtglossarypredoglossary}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@printunsrt@glossary@handler} +%\changes{1.16}{2017-06-15}{new} +% \begin{macrocode} +\newcommand{\@printunsrt@glossary@handler}[1]{% + \xdef\glscurrententrylabel{#1}% + \printunsrtglossaryhandler\glscurrententrylabel +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryhandler} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrunsrtdo{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtriflabelinlist} +%\begin{definition} +%\cs{glsxtriflabelinlist}\marg{label}\marg{list}\marg{true}\marg{false} +%\end{definition} +%\changes{1.21}{2017-11-03}{new} +%Might be useful for the handler to check if an entry label +%or category label is contained in a list, so provide a user-level +%version of \cs{@gls@ifinlist} which ensures the label and list are +%fully expanded. +% \begin{macrocode} +\newrobustcmd*{\glsxtriflabelinlist}[4]{% + \protected@edef\@glsxtr@doiflabelinlist{\noexpand\@gls@ifinlist{#1}{#2}}% + \@glsxtr@doiflabelinlist{#3}{#4}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\print@op@unsrtglossaryunit} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\print@op@unsrtglossaryunit}[2][]{% + \s@printunsrtglossary[type=\glsdefaulttype,#1]{% + \printunsrtglossaryunitsetup{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtglossaryunitsetup} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\printunsrtglossaryunitsetup}[1]{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{##1}{record.#1}{\csuse{the#1}} + {\glsxtrunsrtdo{##1}}% + {}% + }% +% \end{macrocode} +%\changes{1.20}{2017-09-11}{switched from redefining \cs{glolinkprefix} to +% \cs{@glsxtrhypernameprefix}} +%Only the target names should have the prefixes adjusted as \cs{gls} +%etc need the original \cs{glolinkprefix}. The \cs{@gobble} part +%discards \cs{glolinkprefix}. +% \begin{macrocode} + \ifcsundef{theH#1}% + {% + \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{the#1}.\@gobble}% + }% + {% + \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}% + }% + \renewcommand*{\glossarysection}[2][]{}% + \appto\glossarypostamble{\glspar\medskip\glspar}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\print@noop@unsrtglossaryunit} +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand{\print@noop@unsrtglossaryunit}[2][]{% + \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space + requires the record=only or record=alsoindex package option}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@unsrt@getgrouptitle} +%\changes{1.11}{2017-01-19}{new} +% \begin{macrocode} +\newrobustcmd*{\@glsxtr@unsrt@getgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \ifcsdef{\@glsxtr@titlelabel} + {\letcs{#2}{\@glsxtr@titlelabel}}% + {\def#2{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrunsrtdo} +%\changes{1.12}{2017-02-03}{new} +%Provide a user-level call to \cs{@glsxtr@noidx@do} to make it +%easier to define a new handler. +% \begin{macrocode} +\newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgroupfield} +%\app{bib2gls} provides a supplementary field labelled +%\texttt{secondarygroup} for secondary glossaries, so +%provide a way of switching to that field. (The \gloskey{group} +%key still needs checking. There's no associated key with the +%internal field). +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrgroupfield}{group} +% \end{macrocode} +%\end{macro} +% +%The \env{tabular}-like glossary styles cause quite a problem +%with the iterative approach. In particular for the group skip. +%To compensate for this, the groups are now determined while +%\cs{@glsxtr@doglossary} is being constructed rather than in the +%handler. +%\begin{macro}{\@glsxtr@checkgroup} +%\changes{1.21}{2017-11-03}{new} +%The argument is the entry's label. (This block of code was +%formerly in \cs{@glsxtr@noidx@do}.) Now that this is no longer +%within a tabular environment, the global definitions aren't needed. +%The result is now stored in \cs{@glsxtr@groupheading}, which will +%be empty if no heading is required. +% \begin{macrocode} +\newcommand*{\@glsxtr@checkgroup}[1]{% + \def\@glsxtr@groupheading{}% + \key@ifundefined{glossentry}{group}% + {% + \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}% + \expandafter\glo@grabfirst\@gls@sort{}{}\@nil + }% + {% +% \end{macrocode} +%\changes{1.16}{2017-06-15}{use \cs{csuse} instead of \cs{csname}} +% \begin{macrocode} + \protected@edef\@glo@thislettergrp{% + \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}% + }% + \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% + {}% + {% + \ifdefempty{\@gls@currentlettergroup}{}% + {\def\@glsxtr@groupheading{\glsgroupskip}}% + \eappto\@glsxtr@groupheading{% + \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% + }% + }% + \let\@gls@currentlettergroup\@glo@thislettergrp +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLocationField} +%\changes{1.37}{2018-11-30}{new} +%Stores the internal name of the location field. +% \begin{macrocode} +\newcommand*{\GlsXtrLocationField}{location} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@noidx@do} +%\changes{1.11}{2017-01-19}{new} +%Minor modification of \cs{@gls@noidx@do} to check for location +%field if present, but also need to check for the \gloskey{group} +%field. +% \begin{macrocode} +\newcommand{\@glsxtr@noidx@do}[1]{% + \ifglsentryexists{#1}% + {% + \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}% + \ifglshasparent{#1}% + {% + \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist}% + {% + \subglossentry{\gls@level}{#1}{}% + }% + {% + \subglossentry{\gls@level}{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \subglossentry{\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}% + }% + }% + {% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{removed code dealing with the group} +% \begin{macrocode} + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist} + {% + \glossentry{#1}{}% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\@gls@location}% + }% + }% + }% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%Provide a way to conveniently define commands that behaves like +%\cs{gls} with a label prefix. +% +%It's possible that the user might want minor variations +%with the same prefix but different default options, so +%use a counter to provide unique inner commands. +%\begin{macro}{\glsxtrnewgls} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcount\@glsxtrnewgls@inner +% \end{macrocode} +%\end{macro} +%(The default options supplied in \meta{options} below +%could possibly be used to form the inner control sequence name to +%help make it unique, but it might feasibly contain +%\gloskey[glslink]{thevalue} where the value might contain commands.) +% +%\begin{macro}{\@glsxtr@providenewgls} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@providenewgls}{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslike}[2]{}}% + \let\@glsxtr@providenewgls\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtridentifyglslike} +%\changes{1.37}{2018-11-30}{new} +%Identify the command given in the second argument for the benefit +%of \gls{bib2gls}. +% \begin{macrocode} +\newcommand{\glsxtridentifyglslike}[2]{% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {}% + {% + \@glsxtr@providenewgls + \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrnewgls} +%\changes{1.21}{2017-11-03}{new} +%\begin{definition} +%\cs{glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs +%name} +%\end{definition} +% +% \begin{macrocode} +\newcommand*{\@glsxtrnewgls}[4]{% + \ifdef{#3}% + {% + \PackageError{glossaries-extra}{Command \string#3\space already +defined}{}% + }% + {% +% \end{macrocode} +%Write information to the aux file for bib2gls. +% \begin{macrocode} + \glsxtridentifyglslike{#2}{#3}% + \ifcsdef{@#4like@#2}% + {% + \advance\@glsxtrnewgls@inner by \@ne + \def\@glsxtrnewgls@innercsname{@#4like\number\@glsxtrnewgls@inner @#2}% + }% + {\def\@glsxtrnewgls@innercsname{@#4like@#2}}% + \expandafter\newrobustcmd\expandafter*\expandafter + #3\expandafter{\expandafter\@gls@hyp@opt\csname\@glsxtrnewgls@innercsname\endcsname}% + \ifstrempty{#1}% + {% + \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{% + \new@ifnextchar[% + {\csname @#4@\endcsname{##1}{#2##2}}% + {\csname @#4@\endcsname{##1}{#2##2}[]}% + }% + }% + {% + \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{% + \new@ifnextchar[% + {\csname @#4@\endcsname{#1,##1}{#2##2}}% + {\csname @#4@\endcsname{#1,##1}{#2##2}[]}% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewgls} +%\begin{definition} +%\cs{glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs} +%\end{definition} +%The first argument prepends to the options and the second argument is the prefix. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewgls}[3][]{% + \@glsxtrnewgls{#1}{#2}{#3}{gls}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewglslike} +%Provide a way to conveniently define commands that behave like +%\cs{gls}, \cs{glspl}, \cs{Gls} and \cs{Glspl} with a label prefix. +%The first argument prepends to the options and the second argument is the prefix. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewglslike}[6][]{% + \@glsxtrnewgls{#1}{#2}{#3}{gls}% + \@glsxtrnewgls{#1}{#2}{#4}{glspl}% + \@glsxtrnewgls{#1}{#2}{#5}{Gls}% + \@glsxtrnewgls{#1}{#2}{#6}{Glspl}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewGLSlike} +%Provide a way to conveniently define commands that behave like +%\cs{GLS}, \cs{GLSpl} with a label prefix. +%The first argument prepends to the options and the second argument is the prefix. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewGLSlike}[4][]{% + \@glsxtrnewgls{#1}{#2}{#3}{GLS}% + \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewrgls} +%As \cs{glsxtrnewgls} but for \cs{rgls}. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewrgls}[3][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rgls}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewrglslike} +%As \cs{glsxtrnewglslike} but for \cs{rgls} etc. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewrglslike}[6][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rgls}% + \@glsxtrnewgls{#1}{#2}{#4}{rglspl}% + \@glsxtrnewgls{#1}{#2}{#5}{rGls}% + \@glsxtrnewgls{#1}{#2}{#6}{rGlspl}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewrGLSlike} +%\changes{1.21}{2017-11-03}{new} +%As \cs{glsxtrnewGLSlike} but for \cs{rGLS} etc. +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewrGLSlike}[4][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rGLS}% + \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}% +} +% \end{macrocode} +%\end{macro} +% +%Provide easy access to record count fields. +%\begin{macro}{\GlsXtrTotalRecordCount} +%\changes{1.21}{2017-11-03}{new} +%Access total record count. This is designed to +%be expandable. The argument is the label. +% \begin{macrocode} +\newcommand*{\GlsXtrTotalRecordCount}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount}% + {\csname glo@\glsdetoklabel{#1}@recordcount\endcsname}% + {0}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\GlsXtrRecordCount} +%\changes{1.21}{2017-11-03}{new} +%Access record count for a particular counter. The first argument is the label. +%The second argument is the counter name. +% \begin{macrocode} +\newcommand*{\GlsXtrRecordCount}[2]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2}% + {\csname glo@\glsdetoklabel{#1}@recordcount.#2\endcsname}% + {0}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLocationRecordCount} +%\changes{1.21}{2017-11-03}{new} +%Access record count for a particular counter and location. +%The first argument is the label. +%The second argument is the counter name. +%The third argument is the location. +%This command shouldn't be used if the location doesn't fully +%expand unless \cs{glsxtrdetoklocation} can be set to something +%sensible. +% \begin{macrocode} +\newcommand*{\GlsXtrLocationRecordCount}[3]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}}% + {\csname glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}\endcsname}% + {0}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdetoklocation} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrdetoklocation}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrenablerecordcount} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrenablerecordcount}{% + \renewcommand*{\gls}{\rgls}% + \renewcommand*{\Gls}{\rGls}% + \renewcommand*{\glspl}{\rglspl}% + \renewcommand*{\Glspl}{\rGlspl}% + \renewcommand*{\GLS}{\rGLS}% + \renewcommand*{\GLSpl}{\rGLSpl}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrrecordtriggervalue} +%\changes{1.21}{2017-11-03}{new} +%The value used by the record trigger test. +%The argument is the entry's label. +% \begin{macrocode} +\newcommand*{\glsxtrrecordtriggervalue}[1]{% + \GlsXtrTotalRecordCount{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetRecordCountAttribute} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrSetRecordCountAttribute}[2]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{recordcount}{#2}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifrecordtrigger} +%\begin{definition} +%\cs{glsxtrifrecordtrigger}\marg{label}\marg{trigger format}\marg{normal} +%\end{definition} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifrecordtrigger}[3]{% + \glshasattribute{#1}{recordcount}% + {% + \ifnum\glsxtrrecordtriggervalue{#1}>\glsgetattribute{#1}{recordcount}\relax + #3% + \else + #2% + \fi + }% + {#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@rglstrigger@record} +%\changes{1.21}{2017-11-03}{new} +%Still need a record to ensure that \app{bib2gls} selects the entry. +% \begin{macrocode} +\newcommand*{\@glsxtr@rglstrigger@record}[3]{% + \edef\glslabel{\glsdetoklabel{#2}}% + \let\@gls@link@label\glslabel + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \def\@glsnumberformat{glstriggerrecordformat}% + \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% + \edef\glstype{\csname glo@\glslabel @type\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \glsxtrinitwrgloss + \glslinkpresetkeys + \setkeys{glslink}{#1}% + \glslinkpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \ifglsxtrinitwrglossbefore + \@do@wrglossary{#2}% + \fi + #3% + \ifglsxtrinitwrglossbefore + \else + \@do@wrglossary{#2}% + \fi + \ifKV@glslink@local + \glslocalunset{#2}% + \else + \glsunset{#2}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstriggerrecordformat} +%\changes{1.21}{2017-11-03}{new} +%Typically won't be used as it should be recognised as a special +%type of ignored location by \app{bib2gls}. +% \begin{macrocode} +\newcommand*{\glstriggerrecordformat}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rgls} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rgls}{\@gls@hyp@opt\@rgls} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rgls} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rgls}[2][]{% + \new@ifnextchar[{\@rgls@{#1}{#2}}{\@rgls@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rgls@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rgls@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rglsformat{#2}{#3}}% + }% + {% + \@gls@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rglspl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rglspl}{\@gls@hyp@opt\@rglspl} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rglspl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rglspl}[2][]{% + \new@ifnextchar[{\@rglspl@{#1}{#2}}{\@rglspl@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@rglspl@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rglspl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rglsplformat{#2}{#3}}% + }% + {% + \@glspl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGls} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rGls} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rGls}[2][]{% + \new@ifnextchar[{\@rGls@{#1}{#2}}{\@rGls@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rGls@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rGls@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsformat{#2}{#3}}% + }% + {% + \@Gls@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGlspl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rGlspl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rGlspl}[2][]{% + \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@rGlspl@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rGlspl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsplformat{#2}{#3}}% + }% + {% + \@Glspl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGLS} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rGLS} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rGLS}[2][]{% + \new@ifnextchar[{\@rGLS@{#1}{#2}}{\@rGLS@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@rGLS@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rGLS@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSformat{#2}{#3}}% + }% + {% + \@GLS@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGLSpl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@rGLSpl} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\@rGLSpl}[2][]{% + \new@ifnextchar[{\@rGLSpl@{#1}{#2}}{\@rGLSpl@{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@rGLSpl@} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\def\@rGLSpl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}% + }% + {% + \@GLSpl@{#1}{#2}[#3]% + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rglsformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rglsformat}[2]{% + \glsifregular{#1} + {\glsentryfirst{#1}}% + {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rglsplformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rglsplformat}[2]{% + \glsifregular{#1} + {\glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\glsentrylongplural{#1}}{\glsentryfirstplural{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGlsformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rGlsformat}[2]{% + \glsifregular{#1} + {\Glsentryfirst{#1}}% + {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGlsplformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rGlsplformat}[2]{% + \glsifregular{#1} + {\Glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\Glsentrylongplural{#1}}{\Glsentryfirstplural{#1}}}#2% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGLSformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rGLSformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\rGLSplformat} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\rGLSplformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\section{Link Counting} +%\label{sec:linkcount} +%This is different to the entry counting provided by the base +%package (which counts the number of times the first use flag is +%unset). Instead, this method hooks into \cs{@gls@link} (through +%\cs{glsxtr@inc@linkcount}) to increment an associated counter. +%To preserve resources, the counter is only defined if it needs to +%be incremented. This method is independent of the presence of +%hyperlinks. (The \qt{link} part of the name refers to \cs{@gls@link} +%not \cs{hyperlink}.) +% +%\begin{macro}{\@glsxtr@do@inc@linkcount} +%\changes{1.26}{2018-01-05}{new} +%This performs the actual incrementing and counter definition. +%The counter is given by \cs{c@glsxtr@linkcount@\meta{label}} where +%\meta{label} is the entry's label. Since this is performed within +%\cs{@gls@link} the label can be accessed with \cs{glslabel}. +% \begin{macrocode} +\newcommand{\@glsxtr@do@inc@linkcount}{% +% \end{macrocode} +%Does this entry have the \catattr{linkcount} attribute set? +% \begin{macrocode} + \glsifattribute{\glslabel}{linkcount}{true}% + {% +% \end{macrocode} +%Does the counter exist? +% \begin{macrocode} + \ifcsdef{c@glsxtr@linkcount@\glslabel}{}% + {% +% \end{macrocode} +%Counter doesn't exist, so define it. +% \begin{macrocode} + \newcounter{glsxtr@linkcount@\glslabel}% +% \end{macrocode} +%If \catattr{linkcountmaster} is set, add to counter reset. +% \begin{macrocode} + \glshasattribute{\glslabel}{linkcountmaster}% + {% +% \end{macrocode} +%Need to ensure values are fully expanded. +% \begin{macrocode} + \begingroup + \edef\x{\endgroup\noexpand\@addtoreset{glsxtr@linkcount@\glslabel}% + {\glsgetattribute{\glslabel}{linkcountmaster}}}% + \x + }% + {}% + }% +% \end{macrocode} +% Increment counter: +% \begin{macrocode} + \glsxtrinclinkcounter{glsxtr@linkcount@\glslabel}% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrinclinkcounter} +%\changes{1.26}{2018-01-05}{new} +%May be redefined to use \cs{refstepcounter} if required. +% \begin{macrocode} +\newcommand*{\glsxtrinclinkcounter}[1]{\stepcounter{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLinkCounterValue} +%\changes{1.26}{2018-01-05}{new} +%Expands to the associated link counter register or 0 if not +%defined. +% \begin{macrocode} +\newcommand*{\GlsXtrLinkCounterValue}[1]{% + \ifcsundef{c@glsxtr@linkcount@#1}{0}{\csname c@glsxtr@linkcount@#1\endcsname}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrTheLinkCounter} +%\changes{1.26}{2018-01-05}{new} +%Expands to the display value of the associated link counter or 0 if not +%defined. +% \begin{macrocode} +\newcommand*{\GlsXtrTheLinkCounter}[1]{% + \ifcsundef{theglsxtr@linkcount@#1}{0}% + {\csname theglsxtr@linkcount@#1\endcsname}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfLinkCounterDef} +%\changes{1.26}{2018-01-05}{new} +%Tests if the counter has been defined +% \begin{macrocode} +\newcommand*{\GlsXtrIfLinkCounterDef}[3]{% + \ifcsundef{theglsxtr@linkcount@#1}{#3}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrLinkCounterName} +%\changes{1.26}{2018-01-05}{new} +%Expands to the associated link counter name. (No check for +%existence.) +% \begin{macrocode} +\newcommand*{\GlsXtrLinkCounterName}[1]{glsxtr@linkcount@#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrEnableLinkCounting} +%\changes{1.26}{2018-01-05}{new} +%\begin{definition} +%\cs{GlsXtrEnableLinkCounting}\oarg{master counter}\marg{categories} +%\end{definition} +%Enable link counting for the given categories. +% \begin{macrocode} +\newcommand*{\GlsXtrEnableLinkCounting}[2][]{% + \let\glsxtr@inc@linkcount\@glsxtr@do@inc@linkcount + \@for\@glsxtr@label:=#2\do + {% + \glssetcategoryattribute{\@glsxtr@label}{linkcount}{true}% + \ifstrempty{#1}{}% + {% + \ifcsundef{c@#1}% + {\@nocounterr{#1}}% + {\glssetcategoryattribute{\@glsxtr@label}{linkcountmaster}{#1}}% + }% + }% +} +\@onlypreamble\GlsXtrEnableLinkCounting +% \end{macrocode} +%\end{macro} +% +%\section{Integration with glossaries-accsupp} +% Provide better integration with the \sty{glossaries-accsupp} +% package. (Must be loaded before the main code of +% \styfmt{glossaries-extra} either explicitly or through the +% \pkgopt{accsupp} package option.) +% +% These commands have their definitions set according to whether +% or not \styfmt{glossaries-extra} has been loaded. +%\changes{0.5.2}{2015-12-08}{fixed typo in glossaries-accsupp and tidied up code to use +% just one \cs{@ifpackageloaded}} +% \begin{macrocode} +\@ifpackageloaded{glossaries-accsupp} +{ +% \end{macrocode} +% Define (or redefine) commands to use the accessibility +% information. +%\begin{macro}{\glsaccessname} +% Display the \gloskey{name} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \glsentryname{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessname} +% Display the \gloskey{name} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \Glsentryname{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessname} +% Display the \gloskey{name} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessname}[1]{% + \glsnameaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryname{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesstext} +% Display the \gloskey{text} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccesstext}[1]{% + \glstextaccessdisplay + {% + \glsentrytext{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesstext} +% Display the \gloskey{text} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\Glsaccesstext}[1]{% + \glstextaccessdisplay + {% + \Glsentrytext{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesstext} +% Display the \gloskey{text} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesstext}[1]{% + \glstextaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrytext{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessplural}[1]{% + \glspluralaccessdisplay + {% + \glsentryplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessplural}[1]{% + \glspluralaccessdisplay + {% + \Glsentryplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessplural}[1]{% + \glspluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryplural{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \glsentryfirst{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \Glsentryfirst{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryfirst{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \glsentryfirstplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \Glsentryfirstplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryfirstplural{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \glsentrysymbol{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \Glsentrysymbol{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrysymbol{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \glsentrysymbolplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \Glsentrysymbolplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \glsentrydesc{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \Glsentrydesc{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrydesc{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \glsentrydescplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \Glsentrydescplural{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrydescplural{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessshort} +% Display the short form (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessshort}[1]{% + \glsshortaccessdisplay + {% + \glsentryshort{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessshort} +% Display the short form with first letter converted to uppercase +% (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessshort}[1]{% + \glsshortaccessdisplay + {% + \Glsentryshort{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessshort} +% Display the \gloskey{short} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessshort}[1]{% + \glsshortaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryshort{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessshortpl} +% Display the short plural form (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \glsentryshortpl{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessshortpl} +% Display the short plural form with first letter converted to +% uppercase (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \Glsentryshortpl{#1}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessshortpl} +% Display the \gloskey{shortplural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryshortpl{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesslong} +% Display the long form (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + \newcommand*{\glsaccesslong}[1]{% + \glslongaccessdisplay{\glsentrylong{#1}}{#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesslong} +% Display the long form (no link and no check for existence). +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} + + \newcommand*{\Glsaccesslong}[1]{% + \glslongaccessdisplay{\Glsentrylong{#1}}{#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesslong} +% Display the \gloskey{long} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesslong}[1]{% + \glslongaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrylong{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesslongpl} +% Display the long plural form (no link and no check for existence). +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\glsaccesslongpl}[1]{% + \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesslongpl} +% Display the long plural form (no link and no check for existence). +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + + \newcommand*{\Glsaccesslongpl}[1]{% + \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesslongpl} +% Display the \gloskey{longplural} value (no link and no check for existence) +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesslongpl}[1]{% + \glslongpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrylongpl{#1}}% + }% + {#1}% + } +% \end{macrocode} +%\end{macro} +% +% Keys for accessibility support. +% \begin{macrocode} + \define@key{glsxtrabbrv}{access}{% + \def\@gls@nameaccess{#1}% + } +% \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{textaccess}{% + \def\@gls@textaccess{#1}% + } +% \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{firstaccess}{% + \def\@gls@firstaccess{#1}% + } +% \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{shortaccess}{% + \def\@gls@shortaccess{#1}% + } +% \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{shortpluralaccess}{% + \def\@gls@shortaccesspl{#1}% + } +% \end{macrocode} +%\begin{macro}{\@gls@initaccesskeys} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand*{\@gls@initaccesskeys}{% + \def\@gls@nameaccess{}% + \def\@gls@textaccess{}% + \def\@gls@firstaccess{}% + \def\@gls@shortaccess{}% + \def\@gls@shortaccesspl{}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@ifaccessattribute@set} +%\begin{definition} +%\cs{\@gls@ifaccessattribute@set}\marg{attribute}\marg{true}\marg{false} +%\end{definition} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} +\newcommand*{\@gls@ifaccessattribute@set}[3]{% + \glsifcategoryattribute{\glscategorylabel}{access#1}{true}% + {#2}% + {% + \glsifcategoryattribute{\glscategorylabel}{access#1}{false}% + {#3}% + {% + \glsifcategoryattribute{\glscategorylabel}{#1}{true}% + {#2}% + {#3}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@setup@default@short@access} +%\changes{1.31}{2018-05-09}{new} +%Assign the default value of the \gloskey{shortaccess} key. The +%argument is the short value passed to \cs{newabbreviation}. +% \begin{macrocode} + \newcommand{\@gls@setup@default@short@access}[1]{% +% \end{macrocode} +%Check if the \catattr{accessinsertdots} attribute has been set but +%only if \gloskey{shortaccess} hasn't been set. +% \begin{macrocode} + \ifdefempty\@gls@shortaccess + {% + \glsifcategoryattribute{\glscategorylabel}{accessinsertdots}{true}% + {% + \@glsxtr@insertdots\@gls@shortaccess{#1}% + \eappto\ExtraCustomAbbreviationFields{% + shortaccess={\expandonce\@gls@shortaccess},}% + }% + {}% + }% + {}% +% \end{macrocode} +%If the \gloskey{shortaccess} field has been set but +%\gloskey{shortaccessplural} hasn't been set, assign plural form. +% \begin{macrocode} + \ifdefempty\@gls@shortaccess + {}% + {% + \ifdefempty\@gls@shortaccesspl + {% + \@gls@ifaccessattribute@set{aposplural}% + {% + \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% + \@gls@shortaccess'\abbrvpluralsuffix}% + }% + {% + \@gls@ifaccessattribute@set{noshortplural}% + {% + \let\@gls@shortaccesspl\@gls@shortaccess + }% + {% + \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% + \@gls@shortaccess\abbrvpluralsuffix}% + }% + }% + \eappto\ExtraCustomAbbreviationFields{% + shortpluralaccess={\expandonce\@gls@shortaccesspl},}% + }% + {}% + }% +% \end{macrocode} +%If \gloskey{access} key hasn't been set, check if the +%\catattr{nameshortaccess} attribute has been set. +% \begin{macrocode} + \ifdefempty\@gls@nameaccess + {% + \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}% + {% +% \end{macrocode} +%Do nothing if the \gloskey{shortaccess} key hasn't been set. +% \begin{macrocode} + \ifdefempty\@gls@shortaccess + {}% + {% + \eappto\ExtraCustomAbbreviationFields{% + access={\expandonce\@gls@shortaccess},% + }% + }% + }% + {}% + }% + {}% +% \end{macrocode} +%If \gloskey{textaccess} key hasn't been set, check if the +%\catattr{textshortaccess} attribute has been set. +% \begin{macrocode} + \ifdefempty\@gls@textaccess + {% + \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% + {% +% \end{macrocode} +%Do nothing if the \gloskey{shortaccess} key hasn't been set. +% \begin{macrocode} + \ifdefempty\@gls@shortaccess + {}% + {% + \eappto\ExtraCustomAbbreviationFields{% + textaccess={\expandonce\@gls@shortaccess},% + }% + }% + }% + {}% + }% + {}% +% \end{macrocode} +%If \gloskey{firstaccess} key hasn't been set, check if the +%\catattr{firstshortaccess} attribute has been set. +% \begin{macrocode} + \ifdefempty\@gls@firstaccess + {% + \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% + {% +% \end{macrocode} +%Do nothing if the \gloskey{shortaccess} key hasn't been set. +% \begin{macrocode} + \ifdefempty\@gls@shortaccess + {}% + {% + \eappto\ExtraCustomAbbreviationFields{% + firstaccess={\expandonce\@gls@shortaccess},% + }% + }% + }% + {}% + }% + {}% + } +% \end{macrocode} +%\end{macro} +% End of if accsupp part +% \begin{macrocode} +} +{ +% \end{macrocode} +% No accessibility support. Just define these commands to do +% \cs{glsentry}\meta{xxx} +%\begin{macro}{\glsaccessname} +% Display the \gloskey{name} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessname}[1]{\glsentryname{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessname} +% Display the \gloskey{name} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessname} +% Display the \gloskey{name} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessname}[1]{% + \protect\mfirstucMakeUppercase{\glsentryname{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesstext} +% Display the \gloskey{text} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccesstext}[1]{\glsentrytext{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesstext} +% Display the \gloskey{text} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccesstext}[1]{\Glsentrytext{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesstext} +% Display the \gloskey{text} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesstext}[1]{% + \protect\mfirstucMakeUppercase{\glsentrytext{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessplural}[1]{\glsentryplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessplural}[1]{\Glsentryplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessplural} +% Display the \gloskey{plural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentryplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessfirst}[1]{\glsentryfirst{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessfirst}[1]{\Glsentryfirst{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfirst} +% Display the \gloskey{first} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfirst}[1]{% + \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessfirstplural}[1]{\glsentryfirstplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessfirstplural}[1]{\Glsentryfirstplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfirstplural} +% Display the \gloskey{firstplural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfirstplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccesssymbol}[1]{\glsentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccesssymbol}[1]{\Glsentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesssymbol} +% Display the \gloskey{symbol} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesssymbol}[1]{% + \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccesssymbolplural}[1]{\glsentrysymbolplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccesssymbolplural}[1]{\Glsentrysymbolplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesssymbolplural} +% Display the \gloskey{symbolplural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesssymbolplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessdesc}[1]{\glsentrydesc{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessdesc}[1]{\Glsentrydesc{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessdesc} +% Display the \gloskey{desc} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessdesc}[1]{% + \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessdescplural}[1]{\glsentrydescplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence) +% with the first letter converted to upper case. +% \begin{macrocode} + \newcommand*{\Glsaccessdescplural}[1]{\Glsentrydescplural{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessdescplural} +% Display the \gloskey{descplural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessdescplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessshort} +% Display the short form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessshort}[1]{\glsentryshort{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessshort} +% Display the short form with first letter converted to uppercase +% (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\Glsaccessshort}[1]{\Glsentryshort{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessshort} +% Display the \gloskey{short} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessshort}[1]{% + \protect\mfirstucMakeUppercase{\glsentryshort{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessshortpl} +% Display the short plural form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccessshortpl}[1]{\glsentryshortpl{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessshortpl} +% Display the short plural form with first letter converted to +% uppercase (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\Glsaccessshortpl}[1]{\Glsentryshortpl{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessshortpl} +% Display the \gloskey{shortplural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessshortpl}[1]{% + \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesslong} +% Display the long form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccesslong}[1]{\glsentrylong{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesslong} +% Display the long form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\Glsaccesslong}[1]{\Glsentrylong{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesslong} +% Display the \gloskey{long} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesslong}[1]{% + \protect\mfirstucMakeUppercase{\glsentrylong{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccesslongpl} +% Display the long plural form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\glsaccesslongpl}[1]{\glsentrylongpl{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccesslongpl} +% Display the long plural form (no link and no check for existence). +% \begin{macrocode} + \newcommand*{\Glsaccesslongpl}[1]{\Glsentrylongpl{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccesslongpl} +% Display the \gloskey{longplural} value (no link and no check for existence). +% converted to upper case. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} + \newcommand*{\GLSaccesslongpl}[1]{% + \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@initaccesskeys} +%\changes{1.31}{2018-05-09}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand*{\@gls@initaccesskeys}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@setup@default@short@access} +%\changes{1.31}{2018-05-09}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand{\@gls@setup@default@short@access}[1]{}% +% \end{macrocode} +% End of else part +% \begin{macrocode} +} +% \end{macrocode} +%\end{macro} +% +%\section{Categories} +%\begin{macro}{\glscategory} +% Add a new storage key that can be used to indicate a category. The +% default category is \category{general}. +% \begin{macrocode} +\glsaddstoragekey{category}{general}{\glscategory} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifcategory} +% Convenient shortcut to determine if an entry has the given +% category. +% \begin{macrocode} +\newcommand{\glsifcategory}[4]{% + \ifglsfieldeq{#1}{category}{#2}{#3}{#4}% +} +% \end{macrocode} +%\end{macro} +% +% Categories can have attributes. +%\begin{macro}{\glssetcategoryattribute} +%\begin{definition} +%\cs{glssetcategoryattribute}\marg{category}\marg{attribute-label}\marg{value} +%\end{definition} +% Set (or override if already set) an attribute for the given +% category. +% \begin{macrocode} +\newcommand*{\glssetcategoryattribute}[3]{% + \csdef{@glsxtr@categoryattr@@#1@#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsgetcategoryattribute} +%\begin{definition} +%\cs{glsgetcategoryattribute}\marg{category}\marg{attribute-label} +%\end{definition} +% Get the value of the given attribute for the given +% category. Does nothing if the attribute isn't defined. +% \begin{macrocode} +\newcommand*{\glsgetcategoryattribute}[2]{% + \csuse{@glsxtr@categoryattr@@#1@#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glshascategoryattribute} +%\begin{definition} +%\cs{glshascategoryattribute}\marg{category}\marg{attribute-label}\marg{true}\marg{false} +%\end{definition} +%\changes{0.5}{2015-12-07}{new} +% Tests if the category has the given attribute set. +% \begin{macrocode} +\newcommand*{\glshascategoryattribute}[4]{% + \ifcsvoid{@glsxtr@categoryattr@@#1@#2}{#4}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssetattribute} +%\begin{definition} +%\cs{glssetattribute}\marg{entry label}\marg{attribute-label}\marg{value} +%\end{definition} +% Short cut where the category label is obtained from the entry +% information. +% \begin{macrocode} +\newcommand*{\glssetattribute}[3]{% + \glssetcategoryattribute{\glscategory{#1}}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsgetattribute} +%\begin{definition} +%\cs{glsgetattribute}\marg{entry label}\marg{attribute-label} +%\end{definition} +% Short cut where the category label is obtained from the entry +% information. +% \begin{macrocode} +\newcommand*{\glsgetattribute}[2]{% + \glsgetcategoryattribute{\glscategory{#1}}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glshasattribute} +%\begin{definition} +%\cs{glshasattribute}\marg{entry +%label}\marg{attribute-label}\marg{true}\marg{false} +%\end{definition} +%\changes{0.5}{2015-12-07}{new} +%\changes{0.5.4}{2015-12-15}{added check for entry's existence} +% Short cut to test if the given attribute has been set where the +% category label is obtained from the entry information. +% \begin{macrocode} +\newcommand*{\glshasattribute}[4]{% + \ifglsentryexists{#1}% + {\glshascategoryattribute{\glscategory{#1}}{#2}{#3}{#4}}% + {#4}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifcategoryattribute} +%\begin{definition} +%\cs{glsifcategoryattribute}\marg{category}\marg{attribute-label}\marg{value}\marg{true +%part}\marg{false part} +%\end{definition} +% True if category has the attribute with the given value. +% \begin{macrocode} +\newcommand{\glsifcategoryattribute}[5]{% + \ifcsundef{@glsxtr@categoryattr@@#1@#2}% + {#5}% + {\ifcsstring{@glsxtr@categoryattr@@#1@#2}{#3}{#4}{#5}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifattribute} +%\begin{definition} +%\cs{glsifattribute}\marg{entry label}\marg{attribute-label}\marg{value}\marg{true +%part}\marg{false part} +%\end{definition} +%Short cut to determine if the given entry has a category with the +%given attribute set. +%\changes{0.5.4}{2015-12-15}{added check for entry's existence} +% \begin{macrocode} +\newcommand{\glsifattribute}[5]{% + \ifglsentryexists{#1}% + {\glsifcategoryattribute{\glscategory{#1}}{#2}{#3}{#4}{#5}}% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +% Set attributes for the default \category{general} category: +% \begin{macrocode} +\glssetcategoryattribute{general}{regular}{true} +% \end{macrocode} +% Acronyms are regular by default, since they're typically just +% treated like normal words. +% \begin{macrocode} +\glssetcategoryattribute{acronym}{regular}{true} +% \end{macrocode} +% +%\begin{macro}{\glssetregularcategory} +%Convenient shortcut to add the regular attribute. +% \begin{macrocode} +\newcommand*{\glssetregularcategory}[1]{% + \glssetcategoryattribute{#1}{regular}{true}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifregularcategory} +%\begin{definition} +%\cs{glsifregularcategory}\marg{category}\marg{true part}\marg{false part} +%\end{definition} +% Short cut to determine if a category has the regular attribute +% explicitly set to true. +% \begin{macrocode} +\newcommand{\glsifregularcategory}[3]{% + \glsifcategoryattribute{#1}{regular}{true}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifnotregularcategory} +%\begin{definition} +%\cs{glsifnotregularcategory}\marg{category}\marg{true part}\marg{false part} +%\end{definition} +% Short cut to determine if a category has the regular attribute +% explicitly set to false. +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand{\glsifnotregularcategory}[3]{% + \glsifcategoryattribute{#1}{regular}{false}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifregular} +%\begin{definition} +%\cs{glsifregular}\marg{entry label}\marg{true part}\marg{false part} +%\end{definition} +% Short cut to determine if an entry has a regular attribute set to +% true. +% \begin{macrocode} +\newcommand{\glsifregular}[3]{% + \glsifregularcategory{\glscategory{#1}}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifnotregular} +%\begin{definition} +%\cs{glsifnotregular}\marg{entry label}\marg{true part}\marg{false part} +%\end{definition} +% Short cut to determine if an entry has a regular attribute set to +% false. +% \begin{macrocode} +\newcommand{\glsifnotregular}[3]{% + \glsifnotregularcategory{\glscategory{#1}}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsforeachincategory} +%\begin{definition} +%\cs{glsforeachincategory}\oarg{glossary +%labels}\marg{category-label}\marg{glossary-cs}\marg{label-cs}\marg{body} +%\end{definition} +% Iterates through all entries in all the glossaries (or just those +% listed in \meta{glossary labels}) and does \meta{body} if the +% category matches \meta{category-label}. The control sequences +% \meta{glossary-cs} and \meta{label-cs} may be used in \meta{body} +% to access the glossary label and entry label for the current +% iteration. +% \begin{macrocode} +\newcommand{\glsforeachincategory}[5][\@glo@types]{% + \forallglossaries[#1]{#3}% + {% + \forglsentries[#3]{#4}% + {% + \glsifcategory{#4}{#2}{#5}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsforeachwithattribute} +%\begin{definition} +%\cs{glsforeachwithattribute}\oarg{glossary +%labels}\marg{attribute-label}\marg{attribute-value}\marg{glossary-cs}\marg{label-cs}\marg{body} +%\end{definition} +% Iterates through all entries in all the glossaries (or just those +% listed in \meta{glossary labels}) and does \meta{body} if the +% category attribute \meta{attribute-label} matches +% \meta{attribute-value}. The control sequences +% \meta{glossary-cs} and \meta{label-cs} may be used in \meta{body} +% to access the glossary label and entry label for the current +% iteration. +% \begin{macrocode} +\newcommand{\glsforeachwithattribute}[6][\@glo@types]{% + \forallglossaries[#1]{#4}% + {% + \forglsentries[#4]{#5}% + {% + \glsifattribute{#5}{#2}{#3}{#6}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +% If \cs{newterm} has been defined, redefine it so that it +% automatically sets the category label to \category{index} and add +% \cs{glsxtrpostdescription}. +% \begin{macrocode} +\ifdef\newterm +{% +% \end{macrocode} +%\begin{macro}{\newterm} +%\changes{0.4}{2015-12-03}{fixed name argument} +% \begin{macrocode} + \renewcommand*{\newterm}[2][]{% + \newglossaryentry{#2}% + {type={index},category=index,name={#2},% + description={\glsxtrpostdescription\nopostdesc},#1}% + } +% \end{macrocode} +%\end{macro} +% Indexed terms are regular by default. +% \begin{macrocode} + \glssetcategoryattribute{index}{regular}{true} +% \end{macrocode} +%\begin{macro}{\glsxtrpostdescindex} +% \begin{macrocode} + \newcommand*{\glsxtrpostdescindex}{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +{} +% \end{macrocode} +% +%If the \pkgopt{symbols} package option was used, define a similar +%command for symbols, but set the default sort to the label rather +%than the name as the symbols will typically contain commands that +%will confuse makeindex and xindy. +% \begin{macrocode} +\ifdef\printsymbols +{% +% \end{macrocode} +%\begin{macro}{\glsxtrnewsymbol} +%\changes{0.4}{2015-12-03}{added extra argument} +% Unlike \cs{newterm}, this has a separate argument for the label +% (since the symbol will likely contain commands). +% \begin{macrocode} + \newcommand*{\glsxtrnewsymbol}[3][]{% + \newglossaryentry{#2}{name={#3},sort={#2},type=symbols,category=symbol,#1}% + } +% \end{macrocode} +%\end{macro} +% Symbols are regular by default. +% \begin{macrocode} + \glssetcategoryattribute{symbol}{regular}{true} +% \end{macrocode} +%\begin{macro}{\glsxtrpostdescsymbol} +% \begin{macrocode} + \newcommand*{\glsxtrpostdescsymbol}{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +{} +% \end{macrocode} +% +% Similar for the numbers option. +% \begin{macrocode} +\ifdef\printnumbers +{% +% \end{macrocode} +%\begin{macro}{\glsxtrnewnumber} +%\changes{0.4}{2015-12-03}{added extra argument} +% \begin{macrocode} +\ifdef\printnumbers + \newcommand*{\glsxtrnewnumber}[3][]{% + \newglossaryentry{#2}{name={#3},sort={#2},type=numbers,category=number,#1}% + } +% \end{macrocode} +%\end{macro} +% Numbers are regular by default. +% \begin{macrocode} + \glssetcategoryattribute{number}{regular}{true} +% \end{macrocode} +%\begin{macro}{\glsxtrpostdescnumber} +% \begin{macrocode} + \newcommand*{\glsxtrpostdescnumber}{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +{} +% \end{macrocode} +% +%\begin{macro}{\glsxtrsetcategory} +% Set the category for all listed labels. The first argument is the +% list of entry labels and the second argument is the category label. +% \begin{macrocode} +\newcommand*{\glsxtrsetcategory}[2]{% + \@for\@glsxtr@label:=#1\do + {% + \glsfieldxdef{\@glsxtr@label}{category}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetcategoryforall} +% Set the category for all entries in the listed glossaries. The first argument +% is the list of glossary labels and the second argument is the category label. +% \begin{macrocode} +\newcommand*{\glsxtrsetcategoryforall}[2]{% + \forallglossaries[#1]{\@glsxtr@type}{% + \forglsentries[\@glsxtr@type]{\@glsxtr@label}% + {% + \glsfieldxdef{\@glsxtr@label}{category}{#2}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldtitlecase} +%\begin{definition} +%\cs{glsxtrfieldtitlecase}\marg{label}\marg{field} +%\end{definition} +% Apply title casing to the contents of the given field. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfieldtitlecase}[2]{% + \expandafter\glsxtrfieldtitlecasecs\expandafter + {\csname glo@\glsdetoklabel{#1}@#2\endcsname}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfieldtitlecasecs} +%The command used by \cs{glsxtrfieldtitlecase}. May be +%redefined to use a different command, for example, +%\cs{xcapitalisefmtwords}. +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}} +% \end{macrocode} +%\end{macro} +% +% Provide a convenient way to modify glossary styles without having +% to define a new style just to convert the first letter of fields +% to upper case. +%\begin{macro}{\glossentrydesc} +% If the \catattr{glossdesc} attribute is \qt{firstuc} convert first +% letter to upper case. If the attribute is \qt{title} use title +% case. +% \begin{macrocode} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\glossentrydesc}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% +% \end{macrocode} +% As from version 1.04, allow the \catattr{glossdescfont} attribute +% to determine the font applied. +%\changes{1.04}{2016-05-02}{added glossdescfont attribute check} +% \begin{macrocode} + \glshasattribute{#1}{glossdescfont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossdescfont attribute + for entry `#1'. Ignoring}% + \let\@glsxtr@glossdescfont\@firstofone + }% + }% + {\let\@glsxtr@glossdescfont\@firstofone}% + \glsifattribute{#1}{glossdesc}{firstuc}% + {% + \@glsxtr@glossdescfont{\Glsaccessdesc{#1}}% + }% + {% + \glsifattribute{#1}{glossdesc}{title}% + {% + \@glsxtr@do@titlecaps@warn + \glsdescriptionaccessdisplay + {% + \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}% + }% + {#1}% + }% + {% + \@glsxtr@glossdescfont{\glsaccessdesc{#1}}% + }% + }% + }% + } +} +{ + \renewcommand*{\glossentrydesc}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossdescfont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossdescfont attribute + for entry `#1'. Ignoring}% + \let\@glsxtr@glossdescfont\@firstofone + }% + }% + {\let\@glsxtr@glossdescfont\@firstofone}% + \glsifattribute{#1}{glossdesc}{firstuc}% + {% + \@glsxtr@glossdescfont{\Glsentrydesc{#1}}% + }% + {% + \glsifattribute{#1}{glossdesc}{title}% + {% + \@glsxtr@do@titlecaps@warn + \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}% + }% + {% + \@glsxtr@glossdescfont{\glsentrydesc{#1}}% + }% + }% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glossentryname} +% If the \catattr{glossname} attribute is \qt{firstuc} convert first +% letter to upper case. If the attribute is \qt{title} use title +% case. +% \begin{macrocode} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% +% \end{macrocode} +% As from version 1.04, allow the \catattr{glossnamefont} attribute +% to determine the font applied. +%\changes{1.04}{2016-05-02}{added glossnamefont attribute check} +% \begin{macrocode} + \glshasattribute{#1}{glossnamefont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossnamefont attribute + for entry `#1'. Reverting to default \string\glsnamefont}% + \let\@glsxtr@glossnamefont\glsnamefont + }% + }% + {\let\@glsxtr@glossnamefont\glsnamefont}% + \glsifattribute{#1}{glossname}{firstuc}% + {% + \glsnameaccessdisplay + {% + \@glsxtr@glossnamefont{\Glsentryname{#1}}% + }% + {#1}% + }% + {% + \glsifattribute{#1}{glossname}{title}% + {% + \@glsxtr@do@titlecaps@warn + \glsnameaccessdisplay + {% + \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}% + }% + {#1}% + }% + {% + \glsifattribute{#1}{glossname}{uc}% + {% + \glsnameaccessdisplay + {% +% \end{macrocode} +% Hide the label from the upper-casing command. +% \begin{macrocode} + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% + }% + {#1}% + }% + {% + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \glsnameaccessdisplay + {% + \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}% + }% + {#1}% + }% + }% + }% +% \end{macrocode} +% Do post-name hook: +% \begin{macrocode} + \glsxtrpostnamehook{#1}% + }% + } +} +{ + \renewcommand*{\glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossnamefont attribute + for entry `#1'. Reverting to default \string\glsnamefont}% + \let\@glsxtr@glossnamefont\glsnamefont + }% + }% + {\let\@glsxtr@glossnamefont\glsnamefont}% + \glsifattribute{#1}{glossname}{firstuc}% + {% + \@glsxtr@glossnamefont{\Glsentryname{#1}}% + }% + {% + \glsifattribute{#1}{glossname}{title}% + {% + \@glsxtr@do@titlecaps@warn + \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}% + }% + {% + \glsifattribute{#1}{glossname}{uc}% + {% +% \end{macrocode} +% Hide the label from the upper-casing command. +% \begin{macrocode} + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% + }% + {% +% \end{macrocode} +% This little trick is used by \styfmt{glossaries} to allow the user to +% redefine \ics{glsnamefont} to use \cs{makefirstuc}. Support it +% even though they can now use the \catattr{firstuc} attribute. +% \begin{macrocode} + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}% + }% + }% + }% +% \end{macrocode} +% Do post-name hook. +%\changes{1.04}{2016-05-02}{moved post name hook inside condition} +% \begin{macrocode} + \glsxtrpostnamehook{#1}% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glossentryname} +% Redefine to set the abbreviation format and accessibility support. +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\Glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% +% \end{macrocode} +% As from version 1.04, allow the \catattr{glossnamefont} attribute +% to determine the font applied. +%\changes{1.04}{2016-05-02}{added glossnamefont attribute check} +% \begin{macrocode} + \glshasattribute{#1}{glossnamefont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossnamefont attribute + for entry `#1'. Reverting to default \string\glsnamefont}% + \let\@glsxtr@glossnamefont\glsnamefont + }% + }% + {\let\@glsxtr@glossnamefont\glsnamefont}% + \glsnameaccessdisplay + {% + \@glsxtr@glossnamefont{\Glsentryname{#1}}% + }% + {#1}% +% \end{macrocode} +% Do post-name hook: +% \begin{macrocode} + \glsxtrpostnamehook{#1}% + }% + } +} +{ + \renewcommand*{\Glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossnamefont attribute + for entry `#1'. Reverting to default \string\glsnamefont}% + \let\@glsxtr@glossnamefont\glsnamefont + }% + }% + {\let\@glsxtr@glossnamefont\glsnamefont}% + \@glsxtr@glossnamefont{\Glsentryname{#1}}% +% \end{macrocode} +% Do post-name hook: +% \begin{macrocode} + \glsxtrpostnamehook{#1}% + }% + } +} +% \end{macrocode} +%\end{macro} +% +% Provide a convenient way to also index the entries using the +% standard \ics{index} mechanism. This may use different actual, +% encap and escape characters to those used for the glossaries. +% +%\begin{macro}{\glsxtrpostnamehook} +%\changes{0.5.3}{2015-12-09}{new} +% Hook to append stuff after the name is displayed in the glossary. +% The argument is the entry's label. +% \begin{macrocode} +\newcommand*{\glsxtrpostnamehook}[1]{% + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \glsxtrdoautoindexname{#1}{indexname}% +% \end{macrocode} +%Allow additional code regardless of category: +% \begin{macrocode} + \glsextrapostnamehook{#1}% +% \end{macrocode} +% Allow categories to hook in here. +%\changes{1.04}{2016-05-02}{added category check} +% \begin{macrocode} + \csuse{glsxtrpostname\glscategory{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsextrapostnamehook} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsextrapostnamehook}[1]{}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdefpostname} +%\changes{1.31}{2018-05-09}{new} +%Provide a convenient command for defining the post-name hook +%for the given category. +% \begin{macrocode} +\newcommand*{\glsdefpostname}[2]{% + \csdef{glsxtrpostname#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@setaccessdisplay} +%\changes{1.22}{2017-11-08}{new} +% \begin{macrocode} +\@ifpackageloaded{glossaries-accsupp} +{ + \newcommand*{\glsxtr@setaccessdisplay}[1]{% + \ifcsdef{gls#1accessdisplay}% + {\letcs\@glsxtr@accessdisplay{gls#1accessdisplay}}% + {% +% \end{macrocode} +%This is essentially the reverse of \cs{@gls@fetchfield}, since the +%field supplied to \cs{glossentryname} has to be the internal label, +%but the \cs{gls\meta{field}accessdisplay} commands use the key name. +% \begin{macrocode} + \edef\@gls@thisval{#1}% + \@for\@gls@map:=\@gls@keymap\do{% + \edef\@this@key{\expandafter\@secondoftwo\@gls@map}% + \ifdefequal{\@this@key}{\@gls@thisval}% + {% + \edef\@gls@thisval{\expandafter\@firstoftwo\@gls@map}% + \@endfortrue + }% + {}% + }% + \ifcsdef{gls\@gls@thisval accessdisplay}% + {\letcs\@glsxtr@accessdisplay{gls\@gls@thisval accessdisplay}}% + {\let\@glsxtr@accessdisplay\@firstoftwo}% + }% + } +} +{% + \newcommand*{\glsxtr@setaccessdisplay}[1]{% + \let\@glsxtr@accessdisplay\@firstoftwo} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glossentrynameother} +% Provide a command that works like \cs{glossentryname} +% but accesses a different field (which must be supplied using its +% internal field label). +%\changes{1.22}{2017-11-08}{new} +% \begin{macrocode} +\newrobustcmd*{\glossentrynameother}[2]{% + \@glsdoifexistsorwarn{#1}% + {% +% \end{macrocode} +%Accessibility support: +% \begin{macrocode} + \glsxtr@setaccessdisplay{#2}% +% \end{macrocode} +%Set the abbreviation format: +% \begin{macrocode} + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glossnamefont attribute + for entry `#1'. Reverting to default \string\glsnamefont}% + \let\@glsxtr@glossnamefont\glsnamefont + }% + }% + {\let\@glsxtr@glossnamefont\glsnamefont}% + \glsifattribute{#1}{glossname}{firstuc}% + {% + \@glsxtr@accessdisplay + {\@glsxtr@glossnamefont{\@Gls@entry@field{#1}{#2}}}% + {#1}% + }% + {% + \glsifattribute{#1}{glossname}{title}% + {% + \@glsxtr@do@titlecaps@warn + \@glsxtr@accessdisplay + {\@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{#2}}}% + {#1}% + }% + {% + \glsifattribute{#1}{glossname}{uc}% + {% + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}% + \@glsxtr@accessdisplay + {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}% + {#1}% + }% + {% + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}% + \@glsxtr@accessdisplay + {\expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}}% + {#1}% + }% + }% + }% +% \end{macrocode} +% Do post-name hook. +% \begin{macrocode} + \glsxtrpostnamehook{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\if@glsxtr@format@override} +%\changes{0.5.3}{2015-12-09}{new} +% Determines if the \gloskey[glslink]{format} key should override +% the indexing attribute value. +% \begin{macrocode} +\newif\if@glsxtr@format@override +\@glsxtr@format@overridefalse +% \end{macrocode} +%\end{macro} +% +%If overriding is enabled, the \ics{glshypernumber} command will have to +%be redefined in the index to use \cs{hyperpage} instead. +%\begin{macro}{\GlsXtrEnableIndexFormatOverride} +% \begin{macrocode} +\@ifpackageloaded{hyperref} +{ +% \end{macrocode} +% If \sty{hyperref}'s \pkgoptfmt{hyperindex} option is on, then +% \sty{hyperref} will automatically add \cs{hyperpage}, so don't +% add it. +% \begin{macrocode} + \ifHy@hyperindex + \newcommand*{\GlsXtrEnableIndexFormatOverride}{% + \@glsxtr@format@overridetrue + \appto\theindex{\let\glshypernumber\@firstofone}% + } + \else + \newcommand*{\GlsXtrEnableIndexFormatOverride}{% + \@glsxtr@format@overridetrue + \appto\theindex{\let\glshypernumber\hyperpage}% + } + \fi +} +{ + \newcommand*{\GlsXtrEnableIndexFormatOverride}{% + \@glsxtr@format@overridetrue + } +} +\@onlypreamble\GlsXtrEnableIndexFormatOverride +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdoautoindexname} +%\changes{0.5.3}{2015-12-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrdoautoindexname}[2]{% + \glshasattribute{#1}{#2}% + {% +% \end{macrocode} +% Escape any makeindex/xindy characters in the value of the \gloskey{name} +% field. Take care with \sty{babel} as this won't work if the +% category code has changed for those characters. +% \begin{macrocode} + \@glsxtr@autoindex@setname{#1}% +% \end{macrocode} +% If the attribute value is simply \qt{true} don't add an encap, +% otherwise use the value as the encap. +% \begin{macrocode} + \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{#2}}% + \if@glsxtr@format@override +% \end{macrocode} +%\changes{1.19}{2017-09-09}{changed format test} +% \begin{macrocode} + \ifx\@glsnumberformat\@glsxtr@defaultnumberformat + \else + \let\@glsxtr@attrval\@glsnumberformat + \fi + \fi + \ifdefstring{\@glsxtr@attrval}{true}% + {}% + {\eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}% + \expandafter\glsxtrautoindex\expandafter{\@glo@name}% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrautoindex} +%\changes{1.16}{2017-06-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrautoindex}{\index} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrautoindexesc} +%\changes{1.36}{2018-08-18}{new} +% \begin{macrocode} +\newcommand{\glsxtrautoindexesc}{% + \@gls@checkmkidxchars\@glo@sort + \@glsxtr@autoindex@doextra@esc\@glo@sort +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@autoindex@setname} +%\changes{0.5.3}{2015-12-09}{new} +% Assign \cs{@glo@name} for use with \catattr{indexname} attribute. +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@setname}[1]{% + \protected@edef\@glo@name{\glsxtrautoindexentry{#1}}% + \glsxtrautoindexassignsort{\@glo@sort}{#1}% + \glsxtrautoindexesc + \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrautoindexentry} +%\changes{1.16}{2017-06-15}{new} +%Command used for the actual part when auto-indexing. +% \begin{macrocode} +\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrautoindexassignsort} +%\changes{1.16}{2017-06-15}{new} +%Used to assign the sort value when auto-indexing. +% \begin{macrocode} +\newcommand*{\glsxtrautoindexassignsort}[2]{% + \glsletentryfield{#1}{#2}{sort}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@autoindex@doextra@esc} +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@doextra@esc}[1]{% +% \end{macrocode} +% Escape the escape character unless it has already been escaped. +% \begin{macrocode} + \ifx\@glsxtr@autoindex@esc\@gls@quotechar + \else + \def\@gls@checkedmkidx{}% + \edef\@@glsxtr@checkspch{% + \noexpand\@glsxtr@autoindex@escquote\expandonce{#1}% + \noexpand\@empty\@glsxtr@autoindex@esc\noexpand\@nnil + \@glsxtr@autoindex@esc\noexpand\@empty\noexpand\@glsxtr@endescspch}% + \@@glsxtr@checkspch + \let#1\@gls@checkedmkidx\relax + \fi +% \end{macrocode} +% Escape actual character unless it has already been escaped. +% \begin{macrocode} + \ifx\@glsxtr@autoindex@at\@gls@actualchar + \else + \def\@gls@checkedmkidx{}% + \edef\@@glsxtr@checkspch{% + \noexpand\@glsxtr@autoindex@escat\expandonce{#1}% + \noexpand\@empty\@glsxtr@autoindex@at\noexpand\@nnil + \@glsxtr@autoindex@at\noexpand\@empty\noexpand\@glsxtr@endescspch}% + \@@glsxtr@checkspch + \let#1\@gls@checkedmkidx\relax + \fi +% \end{macrocode} +% Escape level character unless it has already been escaped. +% \begin{macrocode} + \ifx\@glsxtr@autoindex@level\@gls@levelchar + \else + \def\@gls@checkedmkidx{}% + \edef\@@glsxtr@checkspch{% + \noexpand\@glsxtr@autoindex@esclevel\expandonce{#1}% + \noexpand\@empty\@glsxtr@autoindex@level\noexpand\@nnil + \@glsxtr@autoindex@level\noexpand\@empty\noexpand\@glsxtr@endescspch}% + \@@glsxtr@checkspch + \let#1\@gls@checkedmkidx\relax + \fi +% \end{macrocode} +% Escape encap character unless it has already been escaped. +% \begin{macrocode} + \ifx\@glsxtr@autoindex@encap\@gls@encapchar + \else + \def\@gls@checkedmkidx{}% + \edef\@@glsxtr@checkspch{% + \noexpand\@glsxtr@autoindex@escencap\expandonce{#1}% + \noexpand\@empty\@glsxtr@autoindex@encap\noexpand\@nnil + \@glsxtr@autoindex@encap\noexpand\@empty\noexpand\@glsxtr@endescspch}% + \@@glsxtr@checkspch + \let#1\@gls@checkedmkidx\relax + \fi +} +% \end{macrocode} +%\end{macro} +% +% The user commands here have a preamble-only restriction to ensure +% they are set before required and also to reduce the chances of +% complications caused by \sty{babel}'s shorthands. +% +%\begin{macro}{\@glsxtr@autoindex@at} +%\changes{0.5.3}{2015-12-09}{new} +% Actual character for use with \cs{index}. +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@at}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetActualChar} +% Set the actual character. +% \begin{macrocode} +\newcommand*{\GlsXtrSetActualChar}[1]{% + \gdef\@glsxtr@autoindex@at{#1}% + \def\@glsxtr@autoindex@escat##1#1##2#1##3\@glsxtr@endescspch{% + \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escat}{##1}{##2}{##3}% + }% +} +\@onlypreamble\GlsXtrSetActualChar +\makeatother +\GlsXtrSetActualChar{@} +\makeatletter +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@autoindex@encap} +%\changes{0.5.3}{2015-12-09}{new} +% Encap character for use with \cs{index}. +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@encap}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetEncapChar} +% Set the encap character. +% \begin{macrocode} +\newcommand*{\GlsXtrSetEncapChar}[1]{% + \gdef\@glsxtr@autoindex@encap{#1}% + \def\@glsxtr@autoindex@escencap##1#1##2#1##3\@glsxtr@endescspch{% + \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escencap}{##1}{##2}{##3}% + }% +} +\GlsXtrSetEncapChar{|} +\@onlypreamble\GlsXtrSetEncapChar +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@autoindex@level} +%\changes{0.5.3}{2015-12-09}{new} +% Level character for use with \cs{index}. +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@level}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetLevelChar} +% Set the encap character. +% \begin{macrocode} +\newcommand*{\GlsXtrSetLevelChar}[1]{% + \gdef\@glsxtr@autoindex@level{#1}% + \def\@glsxtr@autoindex@esclevel##1#1##2#1##3\@glsxtr@endescspch{% + \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@esclevel}{##1}{##2}{##3}% + }% +} +\GlsXtrSetLevelChar{!} +\@onlypreamble\GlsXtrSetLevelChar +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@autoindex@esc} +%\changes{0.5.3}{2015-12-09}{new} +% Escape character for use with \cs{index}. +% \begin{macrocode} +\newcommand*{\@glsxtr@autoindex@esc}{"} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetEscChar} +% Set the escape character. +% \begin{macrocode} +\newcommand*{\GlsXtrSetEscChar}[1]{% + \gdef\@glsxtr@autoindex@esc{#1}% + \def\@glsxtr@autoindex@escquote##1#1##2#1##3\@glsxtr@endescspch{% + \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escquote}{##1}{##2}{##3}% + }% +} +\GlsXtrSetEscChar{"} +\@onlypreamble\GlsXtrSetEscChar +% \end{macrocode} +%\end{macro} +% +% Set if defined. (For example, if \sty{doc} package has been +% loaded.) Actual character \ics{actualchar}: +% \begin{macrocode} +\ifdef\actualchar + {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}} + {} +% \end{macrocode} +% Quote character \ics{quotechar}: +% \begin{macrocode} +\ifdef\quotechar + {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}} + {} +% \end{macrocode} +% Level character \ics{levelchar}: +% \begin{macrocode} +\ifdef\levelchar + {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}} + {} +% \end{macrocode} +% Encap character \ics{encapchar}: +% \begin{macrocode} +\ifdef\encapchar + {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}} + {} +% \end{macrocode} +% +%\begin{macro}{\@glsxtr@gobbleto@endescspch} +% \begin{macrocode} +\def\@glsxtr@gobbleto@endescspch#1\@glsxtr@endescspch{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtr@autoindex@esc@spch} +%\begin{definition} +%\cs{@@glsxtr@autoindex@escspch}\marg{char}\marg{cs}\marg{pre}\marg{mid}\marg{post} +%\end{definition} +% \begin{macrocode} +\newcommand*{\@@glsxtr@autoindex@escspch}[5]{% + \@gls@tmpb=\expandafter{\@gls@checkedmkidx}% + \toks@={#3}% + \ifx\@nnil#3\relax + \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch#5\@glsxtr@endescspch}% + \else + \ifx\@nnil#4\relax + \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}% + \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch + #4#5\@glsxtr@endescspch}% + \else + \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@ + \@glsxtr@autoindex@esc#1}% + \def\@@glsxtr@checkspch{#2#5#1\@nnil#1\@glsxtr@endescspch}% + \fi + \fi + \@@glsxtr@checkspch +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glossentrydesc} +% Redefine to set the abbreviation format and accessibility support. +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\renewcommand*{\Glossentrydesc}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \Glsaccessdesc{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glossentrysymbol} +% Redefine to set the abbreviation format and accessibility support. +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\renewcommand*{\glossentrysymbol}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glsaccesssymbol{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glossentrysymbol} +% Redefine to set the abbreviation format and accessibility support. +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\renewcommand*{\Glossentrysymbol}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \Glsaccesssymbol{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%Allow initials to be marked but only use the formatting for the +%tag in the glossary. +%\begin{macro}{\GlsXtrEnableInitialTagging} +% Allow initial tagging. The first argument is a list of categories +% to apply this to. The second argument is the name of the command to +% use to tag the initials. This can't already be defined for safety +% unless the starred version is used. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrEnableInitialTagging}{% + \@ifstar\s@glsxtr@enabletagging\@glsxtr@enabletagging +} +\@onlypreamble\GlsXtrEnableInitialTagging +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@enabletagging} +% Starred version undefines command. +% \begin{macrocode} +\newcommand*{\s@glsxtr@enabletagging}[2]{% + \undef#2% + \@glsxtr@enabletagging{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@enabletagging} +% Internal command. +% \begin{macrocode} +\newcommand*{\@glsxtr@enabletagging}[2]{% +% \end{macrocode} +% Set attributes for categories given in the first argument. +% \begin{macrocode} + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty\@glsxtr@cat + {}% + {\glssetcategoryattribute{\@glsxtr@cat}{tagging}{true}}% + }% + \newrobustcmd*#2[1]{##1}% + \def\@glsxtr@taggingcs{#2}% + \renewcommand*\@glsxtr@activate@initialtagging{% + \let#2\@glsxtr@tag + }% + \ifundef\@gls@preglossaryhook + {\GlossariesExtraWarning{Initial tagging requires at least + glossaries.sty v4.19 to work correctly}}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%Are we using an old version of \sty{mfirstuc} that has a bug in +%\cs{capitalisewords}? If so, patch it so we don't have a problem +% with a combination of tagging and title case. +%\begin{macro}{\mfu@checkword@do} +%If this command hasn't been defined, then we have pre v2.02 of +%\sty{mfirstuc} +%\changes{0.5.2}{2015-12-08}{added} +% \begin{macrocode} +\ifundef\mfu@checkword@do +{ + \newcommand*{\mfu@checkword@do}[1]{% + \ifdefstring{\mfu@checkword@arg}{#1}% + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\mfu@checkword} +% \cs{capitalisewords} was introduced in \sty{mfirstuc} v1.06. +% If \cs{mfu@checkword} hasn't been defined \sty{mfirstuc} is too +% old to support the title case attribute. +% \begin{macrocode} + \ifundef\mfu@checkword + { + \newcommand{\@glsxtr@do@titlecaps@warn}{% + \GlossariesExtraWarning{mfirstuc.sty too old. Title Caps + support not available}% +% \end{macrocode} +% One warning should suffice. +% \begin{macrocode} + \let\@glsxtr@do@titlecaps@warn\relax + } + } + { + \renewcommand*{\mfu@checkword}[1]{% + \def\mfu@checkword@arg{#1}% + \let\@mfu@domakefirstuc\makefirstuc + \forlistloop\mfu@checkword@do\@mfu@nocaplist + } + } +} +{}% no patch required +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@do@titlecaps@warn} +% Do warning if title case not supported. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@do@titlecaps@warn}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@activate@initialtagging} +% Used in \cs{printglossary} but at least v4.19 of \styfmt{glossaries} +% required. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*\@glsxtr@activate@initialtagging{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@tag} +%\changes{0.5.2}{2015-12-08}{new} +% Definition of tagging command when used in glossary. +% \begin{macrocode} +\newrobustcmd*{\@glsxtr@tag}[1]{% + \glsifattribute{\glscurrententrylabel}{tagging}{true}% + {\glsxtrtagfont{#1}}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtagfont} +% Used in the glossary. +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*{\glsxtrtagfont}[1]{\underline{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@preglossaryhook} +% This macro was introduced in \styfmt{glossaries} version 4.19, so it +% may not be defined. If it hasn't been defined this feature is +% unavailable. A check is added for the entry's existence to prevent +% errors from occurring if the user removes an entry or changes the +% label, which can interrupt the build process. +%\changes{1.04}{2016-05-02}{added check for entry's existence} +% \begin{macrocode} +\ifdef\@gls@preglossaryhook +{ + \renewcommand*{\@gls@preglossaryhook}{% + \@glsxtr@activate@initialtagging +% \end{macrocode} +%\changes{1.12}{2017-02-03}{check for definition} +%Since the glossaries are automatically scoped, +%\cs{@glsxtr@org@postdescription} shouldn't already be defined, but +%check anyway just as a precautionary measure. +% \begin{macrocode} + \ifundef\@glsxtr@org@postdescription + {% + \let\@glsxtr@org@postdescription\glspostdescription + \renewcommand*{\glspostdescription}{% + \ifglsentryexists{\glscurrententrylabel}% + {% + \glsxtrpostdescription + \@glsxtr@org@postdescription + }% + {}% + }% + }% + {}% +% \end{macrocode} +%\changes{1.07}{2016-08-15}{added \cs{glossxtrsetpopts}} +%Enable the options used by \cs{@@glsxtrp}: +% \begin{macrocode} + \glossxtrsetpopts + }% +} +{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostdescription} +%This command will only be used if \cs{@gls@preglossaryhook} is +%available \emph{and} the glossary style uses +%\cs{glspostdescription} without modifying it. (\cs{nopostdesc} +%will suppress this.) The \sty{glossaries-extra-stylemods} package will +%add the post description hook to all the predefined styles that +%don't include it. +% \begin{macrocode} +\newcommand*{\glsxtrpostdescription}{% + \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostdescgeneral} +% \begin{macrocode} +\newcommand*{\glsxtrpostdescgeneral}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostdescterm} +% \begin{macrocode} +\newcommand*{\glsxtrpostdescterm}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostdescacronym} +% \begin{macrocode} +\newcommand*{\glsxtrpostdescacronym}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostdescabbreviation} +% \begin{macrocode} +\newcommand*{\glsxtrpostdescabbreviation}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdefpostdesc} +%\changes{1.31}{2018-05-09}{new} +%Provide a convenient command for defining the post-description hook +%for the given category. +% \begin{macrocode} +\newcommand*{\glsdefpostdesc}[2]{% + \csdef{glsxtrpostdesc#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glspostlinkhook} +% Redefine the post link hook used by commands like \cs{gls} to +% make it easier for categories or attributes to modify this action. +% Since this hook occurs outside the existence check of commands like +% \cs{gls}, this needs to be checked again here. Do nothing if the +% entry hasn't been defined. +%\changes{0.5.4}{2015-12-15}{added existence check} +% \begin{macrocode} +\renewcommand*{\glspostlinkhook}{% + \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlinkhook} +% The entry label should already be stored in \cs{glslabel} by +% \cs{@gls@link}. +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkhook}{% + \glsxtrdiscardperiod{\glslabel}% + {\glsxtrpostlinkendsentence}% + {\glsxtrifcustomdiscardperiod + {\glsxtrifperiod{\glsxtrpostlinkendsentence}{\glsxtrpostlink}}% + {\glsxtrpostlink}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifcustomdiscardperiod} +%\changes{1.23}{2017-11-12}{new} +%Allow user to provide a custom check. Should expand to \verb|#2| if +%no check is required otherwise expand to \verb|#1|. +% \begin{macrocode} +\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlink} +% \begin{macrocode} +\newcommand*{\glsxtrpostlink}{% + \csuse{glsxtrpostlink\glscategory{\glslabel}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsdefpostlink} +%\changes{1.31}{2018-05-09}{new} +%Provide a convenient command for defining the post-link hook +%for the given category. Doesn't allow an empty argument (which) +%would overwrite \cs{glsxtrpostlink}. +% \begin{macrocode} +\newcommand*{\glsdefpostlink}[2]{% +% \end{macrocode} +% \cs{ifthenelse} is used to ensure that the expanded value is +% tested. (The category label must be fully expandable.) +% \begin{macrocode} + \ifthenelse{\equal{#1}{}}% + {\PackageError{glossaries-extra} + {Invalid empty category label in \string\glsdefpostlink}{}}% + {\csdef{glsxtrpostlink#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlinkendsentence} +%\changes{0.3}{2015-12-02}{new} +% Done by \cs{glsxtrpostlinkhook} if a full stop is discarded. +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkendsentence}{% + \ifcsdef{glsxtrpostlink\glscategory{\glslabel}} + {% + \csuse{glsxtrpostlink\glscategory{\glslabel}}% +% \end{macrocode} +% Put the full stop back. +% \begin{macrocode} + .\spacefactor\sfcode`\. \relax + }% + {% +% \end{macrocode} +% Assume the full stop was discarded because the entry ends with a +% period, so adjust the spacefactor. +% \begin{macrocode} + \spacefactor\sfcode`\. \relax + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlinkAddDescOnFirstUse} +%\changes{0.3}{2015-12-02}{new} +% Provide a command for appending the description in parentheses on +% first use, for the convenience of users wanting to add this to the +% post link hook. +%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}} +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{% + \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlinkAddSymbolOnFirstUse} +%\changes{0.3}{2015-12-02}{new} +% Provide a command for appending the symbol (if defined) in parentheses on +% first use, for the convenience of users wanting to add this to the +% post link hook. +%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}} +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{% + \glsxtrifwasfirstuse + {% + \ifglshassymbol{\glslabel}% + {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}% + {}% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostlinkAddSymbolDescOnFirstUse} +%\changes{1.31}{2018-05-09}{new} +% Provide a command for appending the symbol (if defined) and +% description in parentheses on +% first use, for the convenience of users wanting to add this to the +% post link hook. +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{% + \glsxtrifwasfirstuse + {% + \space\glsxtrparen + {% + \ifglshassymbol{\glslabel}% + {\glsaccesssymbol{\glslabel}, }% + {}% + \glsaccessdesc{\glslabel}% + }% + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdiscardperiod} +% Discard following period (if present) if the +% \catattr{discardperiod} attribute is true. If a period is +% discarded, do the second argument otherwise do the third +% argument. The entry label is in the first argument. +% Since this is designed for abbreviations that end with a period, +% check if the plural form was used (which typically won't end with +% a period). +%\changes{0.3}{2015-12-02}{added check for plural} +%\changes{1.01}{2016-02-02}{added check for first use} +% \begin{macrocode} +\newcommand*{\glsxtrdiscardperiod}[3]{% + \glsxtrifwasfirstuse + {% + \glsifattribute{#1}{retainfirstuseperiod}{true}% + {#3}% + {% + \glsifattribute{#1}{discardperiod}{true}% + {% + \glsifplural + {% + \glsifattribute{#1}{pluraldiscardperiod}{true}% + {\glsxtrifperiod{#2}{#3}}% + {#3}% + }% + {% + \glsxtrifperiod{#2}{#3}% + }% + }% + {#3}% + }% + }% + {% + \glsifattribute{#1}{discardperiod}{true}% + {% + \glsifplural + {% + \glsifattribute{#1}{pluraldiscardperiod}{true}% + {\glsxtrifperiod{#2}{#3}}% + {#3}% + }% + {% + \glsxtrifperiod{#2}{#3}% + }% + }% + {#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifperiod} +% Make a convenient user command to check if the next character is a +% full stop (period). Works like \cs{@ifstar} but uses +% \cs{new@ifnextchar} rather than \cs{@ifnextchar} +% \begin{macrocode} +\newcommand*{\glsxtrifperiod}[1]{\new@ifnextchar.{\@firstoftwo{#1}}} +% \end{macrocode} +%\end{macro} +% +% Sometimes it's useful to test if there's a punctuation character +% following the glossary entry. +%\begin{macro}{\glsxtr@punclist} +% List of characters identified as punctuation marks. (Be careful of +% \sty{babel} shorthands!) This doesn't allow for punctuation marks +% made up from multiple characters (such as \verb|''|). +% \begin{macrocode} +\newcommand*{\glsxtr@punclist}{.,:;?!} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtraddpunctuationmark} +% Add character to punctuation list. +% \begin{macrocode} +\newcommand*{\glsxtraddpunctuationmark}[1]{\appto\glsxtr@punclist{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetpunctuationmarks} +% Reset the punctuation list. +% \begin{macrocode} +\newcommand*{\glsxtrsetpunctuationmarks}[1]{\def\glsxtr@punclist{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifpunc} +%\begin{definition} +%\cs{glsxtrifnextpunc}\marg{true part}\marg{false part} +%\end{definition} +%Test if this is followed by a punctuation mark. (Adapted from +%\cs{new@ifnextchar}.) +% \begin{macrocode} +\newcommand*{\glsxtrifnextpunc}[2]{% + \def\reserved@a{#1}% + \def\reserved@b{#2}% + \futurelet\@glspunc@token\glsxtr@ifnextpunc +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@ifnextpunc} +% \begin{macrocode} +\newcommand*{\glsxtr@ifnextpunc}{% + \glsxtr@ifpunctoken{\@glspunc@token}{\let\reserved@b\reserved@a}{}% + \reserved@b +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@ifpunctoken} +% Test if the token given in the first argument is in the +% punctuation list. +% \begin{macrocode} +\newcommand*{\glsxtr@ifpunctoken}[1]{% + \expandafter\@glsxtr@ifpunctoken\expandafter#1\glsxtr@punclist\@nnil +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@ifpunctoken} +% \begin{macrocode} +\def\@glsxtr@ifpunctoken#1#2{% + \let\reserved@d=#2% + \ifx\reserved@d\@nnil + \let\glsxtr@next\@glsxtr@notfoundinlist + \else + \ifx#1\reserved@d + \let\glsxtr@next\@glsxtr@foundinlist + \else + \let\glsxtr@next\@glsxtr@ifpunctoken + \fi + \fi + \glsxtr@next#1% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@foundinlist} +% \begin{macrocode} +\def\@glsxtr@foundinlist#1\@nnil{\@firstoftwo} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@notfoundinlist} +% \begin{macrocode} +\def\@glsxtr@notfoundinlist#1{\@secondoftwo} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdopostpunc} +%\begin{definition} +%\cs{glsxtrdopostpunc}\marg{code} +%\end{definition} +% If this is followed be a punctuation character, do \meta{code} +% after the character otherwise do \meta{code} before whatever comes +% next. +% \begin{macrocode} +\newcommand{\glsxtrdopostpunc}[1]{% + \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@swaptwo} +% \begin{macrocode} +\newcommand{\@glsxtr@swaptwo}[2]{#2#1} +% \end{macrocode} +%\end{macro} +% +%\section{Abbreviations} +% +%The \qt{acronym} code from \styfmt{glossaries} is misnamed as it's more +%often used for other forms of abbreviations. This code corrects +%this inconsistency, but rather than just having synonyms, provide +% commands for abbreviations that have a similar, but not identical, +% underlying mechanism to acronyms. +% +% If there's a style for the given category, apply it. +% \begin{macrocode} +\define@key{glsxtrabbrv}{category}{% + \edef\glscategorylabel{#1}% + \ifcsdef{@glsabbrv@current@#1}% + {% +% \end{macrocode} +% Warning should already have been issued. +% \begin{macrocode} + \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle + \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo + \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@#1\endcsname}% + \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep + }% + {}% +} +% \end{macrocode} +% Save the short plural form. This may be needed before the entry is +% defined. +% \begin{macrocode} +\define@key{glsxtrabbrv}{shortplural}{% + \def\@gls@shortpl{#1}% +} +% \end{macrocode} +% Similarly for the long plural form. +% \begin{macrocode} +\define@key{glsxtrabbrv}{longplural}{% + \def\@gls@longpl{#1}% +} +% \end{macrocode} +% +% Token registers for the short plural and long plural, provided for +% use in the abbreviation style definitions. +%\begin{macro}{\glsshortpltok} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newtoks\glsshortpltok +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslongpltok} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newtoks\glslongpltok +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@insertdots} +%\changes{0.3}{2015-12-02}{new} +% Provided in case user wants to automatically insert dots between +% each letter of the abbreviation. This should be applied before +% defining the abbreviation to optimise the document build. +% (Otherwise, it would have to be done each time the short form is +% required, which is an unnecessary waste of time.) For this to work +% the short form must be expanded when passed to +% \cs{newabbreviation}. Note that explicitly using the +% \gloskey{short} or \gloskey{shortplural} keys will override this. +% \begin{macrocode} +\newcommand*{\@glsxtr@insertdots}[2]{% + \def#1{}% + \@glsxtr@insert@dots#1#2\@nnil +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@insert@dots} +% \begin{macrocode} +\newcommand*{\@glsxtr@insert@dots}[2]{% + \ifx\@nnil#2\relax + \let\@glsxtr@insert@dots@next\@gobble + \else + \ifx\relax#2\relax + \else + \appto#1{#2.}% + \fi + \let\@glsxtr@insert@dots@next\@glsxtr@insert@dots + \fi + \@glsxtr@insert@dots@next#1% +} +% \end{macrocode} +%\end{macro} +% +%Similarly provide a way of replacing spaces with +%\cs{glsxtrwordsep}, which first needs to be defined: +%\begin{macro}{\glsxtrwordsep} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrwordsep}{\space} +% \end{macrocode} +%\end{macro} +%Each word is marked with +%\begin{macro}{\glsxtrword} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrword}[1]{#1} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@markwordseps} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@markwordseps}[2]{% + \def#1{}% + \@glsxtr@mark@wordseps#1#2 \@nnil +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@mark@wordseps} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\def\@glsxtr@mark@wordseps#1#2 #3{% + \ifdefempty{#1}% + {\def#1{\protect\glsxtrword{#2}}}% + {\appto#1{\protect\glsxtrwordsep\protect\glsxtrword{#2}}}% + \ifx\@nnil#3\relax + \let\@glsxtr@mark@wordseps@next\relax + \else + \def\@glsxtr@mark@wordseps@next{% + \@glsxtr@mark@wordseps#1#3}% + \fi + \@glsxtr@mark@wordseps@next +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\newabbreviation} +% Define a new generic abbreviation. +% \begin{macrocode} +\newcommand*{\newabbreviation}[4][]{% + \glsxtr@newabbreviation{#1}{#2}{#3}{#4}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@newabbreviation} +% Internal macro. (bib2gls has an option that needs to +% temporarily redefine \cs{newabbreviation}. This is just makes +% it easier to save and restore the original definition.) +%\changes{1.12}{2017-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@newabbreviation}[4]{% + \glskeylisttok{#1}% + \glslabeltok{#2}% + \glsshorttok{#3}% + \glslongtok{#4}% +% \end{macrocode} +%Save the original short and long values (before attribute settings +%modify them). +%\changes{1.17}{2017-08-09}{added \cs{glsxtrorgshort} and \cs{glsxtrorglong}} +% \begin{macrocode} + \def\glsxtrorgshort{#3}% + \def\glsxtrorglong{#4}% +% \end{macrocode} +%\changes{1.31}{2018-05-09}{added \cs{ExtraCustomAbbreviationFields}} +%Provide extra settings for hooks (if modified, this command must +%end with a comma). +% \begin{macrocode} + \def\ExtraCustomAbbreviationFields{}% +% \end{macrocode} +%Initialise accessibility settings if required. +% \begin{macrocode} + \@gls@initaccesskeys +% \end{macrocode} +% Get the category. +%\changes{0.3}{2015-12-02}{fixed family name in \cs{setkeys}} +% \begin{macrocode} + \def\glscategorylabel{abbreviation}% + \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% +% \end{macrocode} +% Ignore the shortplural and longplural keys. +% \begin{macrocode} + \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% +% \end{macrocode} +% Set the default long plural +% \begin{macrocode} + \def\@gls@longpl{#4\glspluralsuffix}% + \let\@gls@default@longpl\@gls@longpl +% \end{macrocode} +% Has the \catattr{markwords} attribute been set? +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% + {% + \@glsxtr@markwordseps\@gls@long{#4}% + \expandafter\def\expandafter\@gls@longpl\expandafter + {\@gls@long\glspluralsuffix}% + \let\@gls@default@longpl\@gls@longpl +% \end{macrocode} +% Update \cs{glslongtok}. +% \begin{macrocode} + \expandafter\glslongtok\expandafter{\@gls@long}% + }% + {}% +% \end{macrocode} +% Has the \catattr{markshortwords} attribute been set? (Not +% compatible with \catattr{insertdots}.) +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}% + {% + \@glsxtr@markwordseps\@gls@short{#3}% + }% + {% +% \end{macrocode} +% Has the \catattr{insertdots} attribute been set? +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% + {% + \@glsxtr@insertdots\@gls@short{#3}% + \expandafter\glsshorttok\expandafter{\@gls@short\spacefactor1000 \relax}% + }% + {\def\@gls@short{#3}}% + }% +% \end{macrocode} +% Has the \catattr{aposplural} attribute been set? (Not compatible +% with \catattr{noshortplural}.) +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}% + {% + \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short + '\abbrvpluralsuffix}% + }% + {% +% \end{macrocode} +% Has the \catattr{noshortplural} attribute been set? +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}% + {% + \let\@gls@shortpl\@gls@short + }% + {% + \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short + \abbrvpluralsuffix}% + }% + }% +% \end{macrocode} +% Update \cs{glsshorttok}: +% \begin{macrocode} + \expandafter\glsshorttok\expandafter{\@gls@short}% +% \end{macrocode} +% Hook for further customisation if required: +% \begin{macrocode} + \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}% +% \end{macrocode} +% Get the short and long plurals provided by user in optional +% argument to override defaults, if necessary. +% Ignore the category key (already obtained). +% \begin{macrocode} + \setkeys*{glsxtrabbrv}[category]{#1}% +% \end{macrocode} +% Has the plural been explicitly set? +% \begin{macrocode} + \ifx\@gls@default@longpl\@gls@longpl + \else +% \end{macrocode} +% Has the \catattr{markwords} attribute been set? +% \begin{macrocode} + \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% + {% + \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter + {\@gls@longpl}% + }% + {}% + \fi +% \end{macrocode} +% Set the plural token registers so the values can be accessed by +% the abbreviation styles. +% \begin{macrocode} + \expandafter\glsshortpltok\expandafter{\@gls@shortpl}% + \expandafter\glslongpltok\expandafter{\@gls@longpl}% +% \end{macrocode} +% Hook for accessibility support (does nothing if +% \sty{glossaries-accsupp} hasn't been loaded). +% \begin{macrocode} + \@gls@setup@default@short@access{#3}% +% \end{macrocode} +% Do any extra setup provided by hook: +% \begin{macrocode} + \newabbreviationhook +% \end{macrocode} +% Define this entry: +% \begin{macrocode} + \protected@edef\@do@newglossaryentry{% + \noexpand\newglossaryentry{\the\glslabeltok}% + {% + type=\glsxtrabbrvtype,% + category=abbreviation,% + short={\the\glsshorttok},% + shortplural={\the\glsshortpltok},% + long={\the\glslongtok},% + longplural={\the\glslongpltok},% + name={\the\glsshorttok},% + \CustomAbbreviationFields,% +% \end{macrocode} +% Hook may override abbreviation style default settings (this hook +% must end with a comma if set). +% \begin{macrocode} + \ExtraCustomAbbreviationFields +% \end{macrocode} +% Any explicit fields set in the optional argument override all +% other settings. +% \begin{macrocode} + \the\glskeylisttok + }% + }% + \@do@newglossaryentry + \GlsXtrPostNewAbbreviation +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewabbrevpresetkeyhook} +% Hook for extra stuff in \cs{newabbreviation} +%\changes{0.5.2}{2015-12-08}{new} +% \begin{macrocode} +\newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrPostNewAbbreviation} +% Hook used by abbreviation styles. +% \begin{macrocode} +\newcommand*{\GlsXtrPostNewAbbreviation}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\newabbreviationhook} +% Hook for use with \cs{newabbreviation}. +% \begin{macrocode} +\newcommand*{\newabbreviationhook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\CustomAbbreviationFields} +% \begin{macrocode} +\newcommand*{\CustomAbbreviationFields}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrparen} +%\changes{1.17}{2017-08-09}{new} +%For the parenthetical styles. +% \begin{macrocode} +\newcommand*{\glsxtrparen}[1]{(#1)} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullformat} +% Full format without case change. +% \begin{macrocode} +\newcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrfullformat} +% Full format with case change. +% \begin{macrocode} +\newcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullplformat} +% Plural full format without case change. +% \begin{macrocode} +\newcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrfullplformat} +% Plural full format with case change. +% \begin{macrocode} +\newcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullsep} +% Separator used by full format is a space by default. The argument +% is the entry's label. +% \begin{macrocode} +\newcommand*{\glsxtrfullsep}[1]{\space} +% \end{macrocode} +%\end{macro} +% +% In-line formats in case first use isn't compatible with +% \cs{glsentryfull} (for example, first use suppresses the long form +% or uses a footnote). +%\begin{macro}{\glsxtrinlinefullformat} +% Full format without case change. +% \begin{macrocode} +\newcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrinlinefullformat} +% Full format with case change. +% \begin{macrocode} +\newcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullplformat} +% Plural full format without case change. +% \begin{macrocode} +\newcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrinlinefullplformat} +% Plural full format with case change. +% \begin{macrocode} +\newcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat} +% \end{macrocode} +%\end{macro} +% +% Redefine \cs{glsentryfull} etc to use the inline format. +% Since these commands as supposed to be expandable, they can only +% use the currently applied style. If there are mixed styles, you'll +% need to use the \cs{glsxtrfull} set of commands instead. +%\begin{macro}{\glsentryfull} +% \begin{macrocode} +\renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsentryfull} +% \begin{macrocode} +\renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsentryfullpl} +% \begin{macrocode} +\renewcommand*{\glsentryfullpl}[1]{\glsxtrinlinefullplformat{#1}{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsentryfullpl} +% \begin{macrocode} +\renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstabbrvfont} +% Font changing command used for the abbreviation on first use or in +% the full format. +% \begin{macrocode} +\newcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstabbrvdefaultfont} +% Font changing command used for the abbreviation on first use or in +% the full format. +%\changes{0.5}{2015-12-07}{new} +%\changes{1.40}{2019-03-31}{changed definition from \cs{glsabbrvfont} to +%\cs{glsabbrvdefaultfont} for consistency} +% \begin{macrocode} +\newcommand*{\glsfirstabbrvdefaultfont}[1]{\glsabbrvdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsabbrvfont} +% Font changing command used for the abbreviation on subsequent use. +% \begin{macrocode} +\newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsabbrvdefaultfont} +%\changes{0.3}{2015-12-02}{renamed from \cs{abbrvdefaultfont}} +% \begin{macrocode} +\newcommand*{\glsabbrvdefaultfont}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongfont} +%\changes{1.04}{2016-05-02}{new} +% Font changing command used for the long form in commands like +% \cs{glsxtrlong}. +% \begin{macrocode} +\newcommand*{\glslongfont}[1]{\glslongdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongdefaultfont} +% Default font changing command used for the long form in commands like +%\changes{1.04}{2016-05-02}{new} +% \cs{glsxtrlong}. +% \begin{macrocode} +\newcommand*{\glslongdefaultfont}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstlongfont} +% Font changing command used for the long form on first use or in +% the full format. +% \begin{macrocode} +\newcommand*{\glsfirstlongfont}[1]{\glslongfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstlongdefaultfont} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsfirstlongdefaultfont}[1]{\glslongdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrabbrvpluralsuffix} +% Default plural suffix. +%\changes{1.12}{2017-02-03}{new} +%Allow an alternative default suffix for abbreviations. +% \begin{macrocode} +\newcommand*{\glsxtrabbrvpluralsuffix}{\glspluralsuffix} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\abbrvpluralsuffix} +% Default plural suffix. +% \begin{macrocode} +\newcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfull} +% Full form (no case-change). +% \begin{macrocode} +\newrobustcmd*{\glsxtrfull}{\@gls@hyp@opt\ns@glsxtrfull} +\newcommand*\ns@glsxtrfull[2][]{% + \new@ifnextchar[{\@glsxtr@full{#1}{#2}}% + {\@glsxtr@full{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@full} +% Low-level macro: +% \begin{macrocode} +\def\@glsxtr@full#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}% +% \end{macrocode} +% What should \cs{glsxtrifwasfirstuse} be set to here? Where the inline +% and display full forms are the same, this is essentially emulating +% first use, to it make sense for the postlink hook to pretend it +% was a first use instance. It makes less sense if the inline and +% display forms are different. Provide a hook to make it easier to +% reconfigure. +% \begin{macrocode} + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsetupfulldefs} +% \begin{macrocode} +\newcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@firstoftwo +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrfull} +% Full form (first letter uppercase). +% \begin{macrocode} +\newrobustcmd*{\Glsxtrfull}{\@gls@hyp@opt\ns@Glsxtrfull} +\newcommand*\ns@Glsxtrfull[2][]{% + \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}% + {\@Glsxtr@full{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@Glsxtr@full} +% Low-level macro: +% \begin{macrocode} +\def\@Glsxtr@full#1#2[#3]{% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@secondoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrfull} +% Full form (all uppercase). +% \begin{macrocode} +\newrobustcmd*{\GLSxtrfull}{\@gls@hyp@opt\ns@GLSxtrfull} +\newcommand*\ns@GLSxtrfull[2][]{% + \new@ifnextchar[{\@GLSxtr@full{#1}{#2}}% + {\@GLSxtr@full{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@GLSxtr@full} +% Low-level macro: +% \begin{macrocode} +\def\@GLSxtr@full#1#2[#3]{% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@secondoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullpl} +% Plural full form (no case-change). +% \begin{macrocode} +\newrobustcmd*{\glsxtrfullpl}{\@gls@hyp@opt\ns@glsxtrfullpl} +\newcommand*\ns@glsxtrfullpl[2][]{% + \new@ifnextchar[{\@glsxtr@fullpl{#1}{#2}}% + {\@glsxtr@fullpl{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@fullpl} +% Low-level macro: +% \begin{macrocode} +\def\@glsxtr@fullpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@firstoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrfullpl} +% Plural full form (first letter uppercase). +% \begin{macrocode} +\newrobustcmd*{\Glsxtrfullpl}{\@gls@hyp@opt\ns@Glsxtrfullpl} +\newcommand*\ns@Glsxtrfullpl[2][]{% + \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}% + {\@Glsxtr@fullpl{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@Glsxtr@fullpl} +% Low-level macro: +% \begin{macrocode} +\def\@Glsxtr@fullpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrfullpl} +% Plural full form (all upper case). +% \begin{macrocode} +\newrobustcmd*{\GLSxtrfullpl}{\@gls@hyp@opt\ns@GLSxtrfullpl} +\newcommand*\ns@GLSxtrfullpl[2][]{% + \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}% + {\@GLSxtr@fullpl{#1}{#2}[]}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@GLSxtr@fullpl} +% Low-level macro: +% \begin{macrocode} +\def\@GLSxtr@fullpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +% The short and long forms work in a similar way to acronyms. +%\begin{macro}{\glsxtrshort} +% \begin{macrocode} +\newrobustcmd*{\glsxtrshort}{\@gls@hyp@opt\ns@glsxtrshort} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@glsxtrshort}[2][]{% + \new@ifnextchar[{\@glsxtrshort{#1}{#2}}{\@glsxtrshort{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@glsxtrshort#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% +% \end{macrocode} +% Need to make sure \cs{glsabbrvfont} is set correctly. +% \begin{macrocode} + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshort} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@Glsxtrshort}[2][]{% + \new@ifnextchar[{\@Glsxtrshort{#1}{#2}}{\@Glsxtrshort{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@Glsxtrshort#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshort} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@GLSxtrshort}[2][]{% + \new@ifnextchar[{\@GLSxtrshort{#1}{#2}}{\@GLSxtrshort{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@GLSxtrshort#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase + {\glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlong} +% \begin{macrocode} +\newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@glsxtrlong}[2][]{% + \new@ifnextchar[{\@glsxtrlong{#1}{#2}}{\@glsxtrlong{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@glsxtrlong#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlong} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@Glsxtrlong}[2][]{% + \new@ifnextchar[{\@Glsxtrlong{#1}{#2}}{\@Glsxtrlong{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@Glsxtrlong#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlong} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@GLSxtrlong}[2][]{% + \new@ifnextchar[{\@GLSxtrlong{#1}{#2}}{\@GLSxtrlong{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@GLSxtrlong#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase + {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +% Plural short forms: +%\begin{macro}{\glsxtrshortpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrshortpl}{\@gls@hyp@opt\ns@glsxtrshortpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@glsxtrshortpl}[2][]{% + \new@ifnextchar[{\@glsxtrshortpl{#1}{#2}}{\@glsxtrshortpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@glsxtrshortpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@Glsxtrshortpl}[2][]{% + \new@ifnextchar[{\@Glsxtrshortpl{#1}{#2}}{\@Glsxtrshortpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@Glsxtrshortpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@GLSxtrshortpl}[2][]{% + \new@ifnextchar[{\@GLSxtrshortpl{#1}{#2}}{\@GLSxtrshortpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@GLSxtrshortpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase + {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +% Plural long forms: +%\begin{macro}{\glsxtrlongpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrlongpl}{\@gls@hyp@opt\ns@glsxtrlongpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@glsxtrlongpl}[2][]{% + \new@ifnextchar[{\@glsxtrlongpl{#1}{#2}}{\@glsxtrlongpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@glsxtrlongpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@Glsxtrlongpl}[2][]{% + \new@ifnextchar[{\@Glsxtrlongpl{#1}{#2}}{\@Glsxtrlongpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@Glsxtrlongpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongpl} +%\changes{0.3}{2015-12-02}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl} +% \end{macrocode} +% Define the un-starred form. Need to determine if there is +% a final optional argument +% \begin{macrocode} +\newcommand*{\ns@GLSxtrlongpl}[2][]{% + \new@ifnextchar[{\@GLSxtrlongpl{#1}{#2}}{\@GLSxtrlongpl{#1}{#2}[]}% +} +% \end{macrocode} +% Read in the final optional argument: +% \begin{macrocode} +\def\@GLSxtrlongpl#1#2[#3]{% +% \end{macrocode} +%If the \pkgopt{record} option has been used, the information needs +%to be written to the aux file regardless of whether the entry +%exists (unless indexing has been switched off). +%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}} +% \begin{macrocode} + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \let\glsinsert\@empty + \def\glscustomtext{% + \mfirstucMakeUppercase + {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% + \ifglsxtrinsertinside\else#3\fi + }% + }% + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssetabbrvfmt} +% Set the current format for the given category (or the +% \category{abbreviation} category if unset). +% \begin{macrocode} +\newcommand*{\glssetabbrvfmt}[1]{% + \ifcsdef{@glsabbrv@current@#1}% + {\glsxtr@applyabbrvfmt{\csname @glsabbrv@current@#1\endcsname}}% + {\glsxtr@applyabbrvfmt{\@glsabbrv@current@abbreviation}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsuseabbrvfont} +% Provide a way to use the abbreviation font for a given category +% for arbitrary text. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsuseabbrvfont}[2]{{\glssetabbrvfmt{#2}\glsabbrvfont{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsuselongfont} +% Provide a way to use the long font for a given category +% for arbitrary text. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsuselongfont}[2]{{\glssetabbrvfmt{#2}\glslongfont{#1}}} +% \end{macrocode} +%\end{macro} +% +%\changes{0.5.2}{2015-12-08}{removed \cs{glsxtrabbrvfmt}} +%\begin{macro}{\glsxtrgenabbrvfmt} +% Similar to \cs{glsgenacfmt}, but for abbreviations. +%\changes{1.17}{2017-08-09}{added check for \cs{ifglsxtrinsertinside}} +% \begin{macrocode} +\newcommand*{\glsxtrgenabbrvfmt}{% + \ifdefempty\glscustomtext + {% + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use: +% \begin{macrocode} + \glsifplural + {% +% \end{macrocode} +% Subsequent plural form: +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% Subsequent plural form, don't adjust case: +% \begin{macrocode} + \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Subsequent plural form, make first letter upper case: +% \begin{macrocode} + \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Subsequent plural form, all caps: +% \begin{macrocode} + \mfirstucMakeUppercase + {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}% + }% + }% + {% +% \end{macrocode} +% Subsequent singular form +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% Subsequent singular form, don't adjust case: +% \begin{macrocode} + \glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Subsequent singular form, make first letter upper case: +% \begin{macrocode} + \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Subsequent singular form, all caps: +% \begin{macrocode} + \mfirstucMakeUppercase + {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}% + }% + }% + }% + {% +% \end{macrocode} +% First use: +% \begin{macrocode} + \glsifplural + {% +% \end{macrocode} +% First use plural form: +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% First use plural form, don't adjust case: +% \begin{macrocode} + \glsxtrfullplformat{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% First use plural form, make first letter upper case: +% \begin{macrocode} + \Glsxtrfullplformat{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% First use plural form, all caps: +% \begin{macrocode} + \mfirstucMakeUppercase + {\glsxtrfullplformat{\glslabel}{\glsinsert}}% + }% + }% + {% +% \end{macrocode} +% First use singular form +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% First use singular form, don't adjust case: +% \begin{macrocode} + \glsxtrfullformat{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% First use singular form, make first letter upper case: +% \begin{macrocode} + \Glsxtrfullformat{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% First use singular form, all caps: +% \begin{macrocode} + \mfirstucMakeUppercase + {\glsxtrfullformat{\glslabel}{\glsinsert}}% + }% + }% + }% + }% + {% +% \end{macrocode} +% User supplied text. +% \begin{macrocode} + \glscustomtext + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsubsequentfmt} +% Subsequent use format (singular no case change). +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrsubsequentplfmt} +% Subsequent use format (plural no case change). +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrsubsequentfmt} +% Subsequent use format (singular, first letter uppercase). +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrsubsequentplfmt} +% Subsequent use format (plural, first letter uppercase). +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt +% \end{macrocode} +%\end{macro} +% +%\subsection{Abbreviation Styles Setup} +% +%\begin{macro}{\setabbreviationstyle} +% \begin{macrocode} +\newcommand*{\setabbreviationstyle}[2][abbreviation]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#2} + {% + \PackageError{glossaries-extra}{Undefined abbreviation style `#2'}{}% + }% + {% +% \end{macrocode} +% Have abbreviations already been defined for this category? +%\changes{0.5.2}{2015-12-08}{added check for post-definition style switch} +% \begin{macrocode} + \ifcsstring{@glsabbrv@current@#1}{#2}% + {% +% \end{macrocode} +% Style already set. +% \begin{macrocode} + }% + {% + \def\@glsxtr@dostylewarn{}% + \glsforeachincategory{#1}{\@gls@type}{\@gls@label}% + {% + \def\@glsxtr@dostylewarn{\GlossariesWarning{Abbreviation + style has been switched \MessageBreak + for category `#1', \MessageBreak + but there have already been entries \MessageBreak + defined for this category. Unwanted \MessageBreak + side-effects may result}}% + \@endfortrue + }% + \@glsxtr@dostylewarn +% \end{macrocode} +% Set up the style for the given category. +% \begin{macrocode} + \csdef{@glsabbrv@current@#1}{#2}% + \glsxtr@applyabbrvstyle{#2}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@applyabbrvstyle} +% Apply the abbreviation style without existence check. +% \begin{macrocode} +\newcommand*{\glsxtr@applyabbrvstyle}[1]{% + \csuse{@glsabbrv@dispstyle@setup@#1}% + \csuse{@glsabbrv@dispstyle@fmts@#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@applyabbrvfmt} +% Only apply the style formats. +% \begin{macrocode} +\newcommand*{\glsxtr@applyabbrvfmt}[1]{% + \csuse{@glsabbrv@dispstyle@fmts@#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\newabbreviationstyle} +% This is different from \cs{newacronymstyle}. The first argument is +% the label, the second argument sets the information required when +% defining the new abbreviation and the third argument sets the +% commands used to display the full format. +%\changes{1.04}{2016-05-02}{bug fix: corrected test for existence} +% \begin{macrocode} +\newcommand*{\newabbreviationstyle}[3]{% + \ifcsdef{@glsabbrv@dispstyle@setup@#1} + {% + \PackageError{glossaries-extra}{Abbreviation style `#1' already + defined}{}% + }% + {% + \csdef{@glsabbrv@dispstyle@setup@#1}{% +% \end{macrocode} +% Initialise hook to do nothing. The style may change this. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{}% + #2}% + \csdef{@glsabbrv@dispstyle@fmts@#1}{% +% \end{macrocode} +% Assume in-line form is the same as first use. The style may change +% this. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% + \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% + \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% +% \end{macrocode} +% Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this. +% \begin{macrocode} + \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt + \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt + \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt + \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt + #3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\renewabbreviationstyle} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\renewabbreviationstyle}[3]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#1} + {% + \PackageError{glossaries-extra}{Abbreviation style `#1' not defined}{}% + }% + {% + \csdef{@glsabbrv@dispstyle@setup@#1}{% +% \end{macrocode} +% Initialise hook to do nothing. The style may change this. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{}% + #2}% + \csdef{@glsabbrv@dispstyle@fmts@#1}{% +% \end{macrocode} +% Assume in-line form is the same as first use. The style may change +% this. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% + \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% + \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% + #3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\letabbreviationstyle} +%\changes{1.04}{2016-05-02}{new} +% Define a synonym for an abbreviation style. The first argument is +% the new name. The second argument is the original style's name. +% \begin{macrocode} +\newcommand*{\letabbreviationstyle}[2]{% + \csletcs{@glsabbrv@dispstyle@setup@#1}{@glsabbrv@dispstyle@setup@#2}% + \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@deprecated@abbrstyle} +%\changes{1.04}{2016-05-02}{new} +%\begin{definition} +%\cs{@glsxtr@deprecated@abbrstyle}\marg{old-name}\marg{new-name} +%\end{definition} +% Define a synonym for a deprecated abbreviation style. +% \begin{macrocode} +\newcommand*{\@glsxtr@deprecated@abbrstyle}[2]{% + \csdef{@glsabbrv@dispstyle@setup@#1}{% + \GlsXtrWarnDeprecatedAbbrStyle{#1}{#2}% + \csuse{@glsabbrv@dispstyle@setup@#2}% + }% + \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrWarnDeprecatedAbbrStyle} +%Generate warning for deprecated style use. +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrWarnDeprecatedAbbrStyle}[2]{% + \GlossariesExtraWarning{Deprecated abbreviation style name `#1', + use `#2' instead}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrUseAbbrStyleSetup} +% \begin{macrocode} +\newcommand*{\GlsXtrUseAbbrStyleSetup}[1]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#1}% + {% + \PackageError{glossaries-extra}% + {Unknown abbreviation style definitions `#1'}{}% + }% + {% + \csname @glsabbrv@dispstyle@setup@#1\endcsname + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrUseAbbrStyleFmts} +% \begin{macrocode} +\newcommand*{\GlsXtrUseAbbrStyleFmts}[1]{% + \ifcsundef{@glsabbrv@dispstyle@fmts@#1}% + {% + \PackageError{glossaries-extra}% + {Unknown abbreviation style formats `#1'}{}% + }% + {% + \csname @glsabbrv@dispstyle@fmts@#1\endcsname + }% +} +% \end{macrocode} +%\end{macro} +% +%\subsection{Predefined Styles (Default Font)} +% Define some common styles. These will set the \gloskey{first}, +% \gloskey{firstplural}, \gloskey{text} and \gloskey{plural} +% keys, even if the \catattr{regular} attribute isn't set to +% \qt{true}. If this attribute is set, commands like \cs{gls} will +% use them as per a regular entry, otherwise those keys will be +% ignored unless explicitly invoked by the user with commands like +% \cs{glsfirst}. In order for the first letter uppercase versions to +% work correctly, \cs{glsxtrfullformat} needs to be expanded when +% those keys are set. The final optional argument of \cs{glsfirst} +% will behave differently to the final optional argument of \cs{gls} +% with some styles. +% +%\begin{macro}{\ifglsxtrinsertinside} +%\changes{1.02}{2016-04-25}{new} +% Switch to determine if the insert text should be inside or outside +% the font changing command. The default is outside. +% \begin{macrocode} +\newif\ifglsxtrinsertinside +\glsxtrinsertinsidefalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongshortname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\changes{1.17}{2017-08-09}{removed some inconsistencies in the abbreviation +%styles} +%\begin{abbrvstyle}{long-short} +% \begin{macrocode} +\newabbreviationstyle{long-short}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% +% \end{macrocode} +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +% Set this as the default style for general abbreviations: +% \begin{macrocode} +\setabbreviationstyle{long-short} +% \end{macrocode} +% +%\begin{macro}{\glsxtrlongshortdescsort} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortdescsort}{% + \expandonce\glsxtrorglong\space (\expandonce\glsxtrorgshort)% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongshortdescname} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortdescname}{% + \protect\glslongfont{\the\glslongtok} + \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-short-desc} +% User supplies description. The long form is included in the name. +%\changes{0.3}{2015-12-02}{fixed name to use \cs{glslabeltok}} +% \begin{macrocode} +\newabbreviationstyle{long-short-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlongfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% +% \end{macrocode} +%The \gloskey{text} key should only have the short form. +%\changes{1.07}{2016-08-15}{added missing text key} +% \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% +% \end{macrocode} +%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshortlongname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlongname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-long} +% Short form followed by long form in parenthesis on first use. +% \begin{macrocode} +\newabbreviationstyle{short-long}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% +% \end{macrocode} +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshortlongdescsort} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortlongdescname} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlongdescname}{% + \protect\glsabbrvfont{\the\glsshorttok} + \glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-long-desc} +% User supplies description. The long form is included in the name. +%\changes{0.3}{2015-12-02}{fixed name to use \cs{glslabeltok}} +% \begin{macrocode} +\newabbreviationstyle{short-long-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% +% \end{macrocode} +%\changes{1.07}{2016-08-15}{added text key} +% \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% +% \end{macrocode} +%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont} in plural +%key} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-long}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsfirstlongfootnotefont} +%\changes{1.05}{2016-06-10}{new} +%Only used by the \qt{footnote} styles. +% \begin{macrocode} +\newcommand*{\glsfirstlongfootnotefont}[1]{\glslongfootnotefont{#1}}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongfootnotefont} +%\changes{1.05}{2016-06-10}{new} +%Only used by the \qt{footnote} styles. +% \begin{macrocode} +\newcommand*{\glslongfootnotefont}[1]{\glslongdefaultfont{#1}}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrabbrvfootnote} +%\begin{definition} +%\cs{glsxtrabbrvfootnote}\marg{label}\marg{long} +%\end{definition} +%\changes{1.07}{2016-08-15}{new} +%Command used by footnote abbreviation styles. The default +%definition ignores the first argument. The second argument +%\meta{long} includes the font changing command and may be the +%singular or plural form, depending on the command that was used +%(for example, \cs{gls} or \cs{glspl}). +% \begin{macrocode} +\newcommand*{\glsxtrabbrvfootnote}[2]{\footnote{#2}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfootnotename} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfootnotename}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{footnote} +% Short form followed by long form in footnote on first use. +% \begin{macrocode} +\newabbreviationstyle{footnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% +% \end{macrocode} +%\changes{1.07}{2016-08-15}{changed first forms to use +%\cs{glsfirstlongfootnotefont}} +% \begin{macrocode} + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form followed by the long form +% as a footnote. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{short-footnote} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-footnote}{footnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{postfootnote} +% Similar to the above but the footnote is placed afterwards, +% outside the link. This avoids nested links and can also move the +% footnote marker after any following punctuation mark. +% Pre v1.07 included \cs{footnote} in the first keys, which was +% incorrect as it caused duplicate footnotes. +%\changes{1.07}{2016-08-15}{removed \cs{footnote} from first keys} +% \begin{macrocode} +\newabbreviationstyle{postfootnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form. The long form is +% deferred. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +%\changes{1.07}{2016-08-15}{switched from \cs{glsfirstlongfont} to +%\cs{glsfirstlongfootnotefont}} +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-postfootnote} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-postfootnote}{postfootnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshortnolongname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortnolongname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short} +% Provide a style that only displays the short form on first use, +% but the short and long form can be displayed with the \qt{full} +% commands that use the inline format. If the user supplies a +% description, the long form won't be displayed in the predefined +% glossary styles, but the post description hook can be employed to +% automatically insert it. +% \begin{macrocode} +\newabbreviationstyle{short}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, + text={\protect\glsabbrvfont{\the\glsshorttok}}, + plural={\protect\glsabbrvfont{\the\glsshortpltok}}, + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short form followed by the +% long form in parentheses. +%\changes{0.2}{2015-11-30}{switched inline full form to short (long)} +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% Set this as the default style for acronyms: +% \begin{macrocode} +\setabbreviationstyle[acronym]{short} +% \end{macrocode} +% +%\begin{abbrvstyle}{short-nolong} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-nolong}{short} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-nolong-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like \abbrstyle{short-nolong} but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{short-nolong-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +% +%\begin{macro}{\glsxtrshortdescname} +%\changes{1.17}{2017-08-09}{new} +%\changes{1.39}{2019-03-22}{corrected to show long form as advertised in the +%manual} +% \begin{macrocode} +\newcommand*{\glsxtrshortdescname}{% + \protect\glsabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-desc} +% The user must supply the description in this style. The long form +% is added to the name. The \abbrstyle{short} style (possibly with the +% post-description hooks set) might be a better option. +%\changes{1.01}{2016-02-02}{fixed typo in +%\cs{glsxtrinlinefullformat} and added missing second argument} +%\changes{1.39}{2019-03-22}{corrected to omit \gloskey{description} key as advertised in the +%manual} +% \begin{macrocode} +\newabbreviationstyle{short-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, + text={\protect\glsabbrvfont{\the\glsshorttok}}, + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short format followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{short-nolong-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-nolong-desc}{short-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-nolong-desc-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like \abbrstyle{short-nolong-desc} but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{short-nolong-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong-desc}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong-desc}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{nolong-short} +% Similar to \abbrstyle{short-nolong} but the full form shows the +% long form followed by the short form in parentheses. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newabbreviationstyle{nolong-short}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong}% +% \end{macrocode} +% The inline full form displays the long form followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{nolong-short-noreg} +%\changes{1.21}{2017-11-03}{new} +% Like \abbrstyle{nolong-short} but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{nolong-short-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{nolong-short}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{nolong-short}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrlongnoshortdescname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongnoshortdescname}{% + \protect\glslongfont{\the\glslongtok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-desc} +% Provide a style that only displays the long form, +% but the long and short form can be displayed with the \qt{full} +% commands that use the inline format. The predefined glossary styles +% won't show the short form. The user must supply a description for +% this style. +% \begin{macrocode} +\newabbreviationstyle{long-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortdescname}, + sort={\the\glslongtok}, + first={\protect\glsfirstlongfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongfont{\the\glslongpltok}}, + text={\glslongfont{\the\glslongtok}}, + plural={\glslongfont{\the\glslongpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-noshort-desc} +%\changes{1.04}{2016-05-02}{new} +%Provide a synonym that matches similar styles. +% \begin{macrocode} +\letabbreviationstyle{long-noshort-desc}{long-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-desc-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like long-noshort-desc but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-noshort-desc}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrlongnoshortname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongnoshortname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long} +% It doesn't really make a great deal of sense to have a long-only +% style that doesn't have a description (unless no glossary is +% required), but the best course of +% action here is to use the short form as the name and the long +% form as the description. +% \begin{macrocode} +\newabbreviationstyle{long}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongfont{\the\glslongpltok}}, + text={\glslongfont{\the\glslongtok}}, + plural={\glslongfont{\the\glslongpltok}},% + description={\the\glslongtok}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-desc}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort} +%\changes{1.04}{2016-05-02}{new} +%Provide a synonym that matches similar styles. +% \begin{macrocode} +\letabbreviationstyle{long-noshort}{long} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like long-noshort but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-noshort}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (Small Capitals)} +%These styles use \cs{textsc} for the short form. +%\begin{macro}{\glsxtrscfont} +%\changes{0.5}{2015-12-07}{new} +%Maintained for backward-compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrscfont}[1]{\textsc{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsabbrvscfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsabbrvscfont}{\glsxtrscfont} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrfirstscfont} +%\changes{1.04}{2016-05-02}{new} +%Maintained for backward-compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvscfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont} +% \end{macrocode} +%\end{macro} +% and for the default short form suffix: +%\begin{macro}{\glsxtrscsuffix} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-short-sc} +% \begin{macrocode} +\newabbreviationstyle{long-short-sc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% +% \end{macrocode} +% Use the default long fonts. +% \begin{macrocode} + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +% +%\begin{abbrvstyle}{long-short-sc-desc} +% \begin{macrocode} +\newabbreviationstyle{long-short-sc-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% As long-short-sc style: +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{long-short-sc}% +} +% \end{macrocode} +% +% Now the short (long) version +% \begin{macrocode} +\newabbreviationstyle{short-sc-long}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +% As before but user provides description +% \begin{macrocode} +\newabbreviationstyle{short-sc-long-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% As short-sc-long style: +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{short-sc-long}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sc} +% \begin{macrocode} +\newabbreviationstyle{short-sc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}}, + text={\protect\glsabbrvscfont{\the\glsshorttok}}, + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}, + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short form followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvscfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{corrected first letter uppercasing} +% \begin{macrocode} + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sc-nolong} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-sc-nolong}{short-sc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sc-desc} +%\changes{1.39}{2019-03-22}{bug fix: omit \gloskey{description} key as advertised in the +%manual} +% \begin{macrocode} +\newabbreviationstyle{short-sc-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}}, + text={\protect\glsabbrvscfont{\the\glsshorttok}}, + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short format followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{short-sc-nolong-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-sc-nolong-desc}{short-sc-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{nolong-short-sc} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newabbreviationstyle{nolong-short-sc}% +{% + \GlsXtrUseAbbrStyleSetup{short-sc-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-nolong}% +% \end{macrocode} +% The inline full form displays the long form followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-sc} +%\changes{1.04}{2016-05-02}{renamed from \qt{long-sc}} +% The smallcaps font will only be used if +% the short form is explicitly invoked through commands like +% \cs{glsxtrshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-sc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, + text={\protect\glslongdefaultfont{\the\glslongtok}}, + plural={\protect\glslongdefaultfont{\the\glslongpltok}},% + description={\the\glslongtok}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-sc} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-sc}{long-noshort-sc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-sc-desc} +%\changes{1.04}{2016-05-02}{renamed from \qt{long-desc-sc}} +% The smallcaps font will only be used if +% the short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-sc-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-desc-sc} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sc-footnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sc}} +% \begin{macrocode} +\newabbreviationstyle{short-sc-footnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form followed by the long form +% as a footnote. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{footnote-sc} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sc-postfootnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sc}} +% \begin{macrocode} +\newabbreviationstyle{short-sc-postfootnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% +% \end{macrocode} +% Use smallcaps and adjust the plural suffix to revert to upright. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form. The long form is +% deferred. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{postfootnote-sc} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (Fake Small Capitals)} +% These styles require the \sty{relsize} package, which must be +% loaded by the user. These styles all use: +%\begin{macro}{\glsxtrsmfont} +%\changes{0.5}{2015-12-07}{new} +%Maintained for backward compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsabbrvsmfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrfirstsmfont} +%\changes{1.04}{2016-05-02}{new} +%Maintained for backward compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvsmfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont} +% \end{macrocode} +%\end{macro} +% and for the default short form suffix: +%\begin{macro}{\glsxtrsmsuffix} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-short-sm} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{long-short-sm}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% +% \end{macrocode} +% Use the default long fonts. +% \begin{macrocode} + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-short-sm-desc} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{long-short-sm-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% As long-short-sm style: +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{long-short-sm}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-long} +% Now the short (long) version +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sm-long}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-long-desc} +% As before but user provides description +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sm-long-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% As short-sm-long style: +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{short-sm-long}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sm}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}, + text={\protect\glsabbrvsmfont{\the\glsshorttok}}, + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}, + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short form followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{corrected first letter uppercasing} +% \begin{macrocode} + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-nolong} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-sm-nolong}{short-sm} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-desc} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.39}{2019-03-22}{corrected to omit \gloskey{description} key as advertised in the +%manual} +% \begin{macrocode} +\newabbreviationstyle{short-sm-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}, + text={\protect\glsabbrvsmfont{\the\glsshorttok}}, + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short format followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{short-sm-nolong-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-sm-nolong-desc}{short-sm-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{nolong-short-sm} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newabbreviationstyle{nolong-short-sm}% +{% + \GlsXtrUseAbbrStyleSetup{short-sm-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-nolong}% +% \end{macrocode} +% The inline full form displays the long form followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-sm} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{long-sm}} +% The smallcaps font will only be used if +% the short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-sm}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, + text={\protect\glslongdefaultfont{\the\glslongtok}}, + plural={\protect\glslongdefaultfont{\the\glslongpltok}},% + description={\the\glslongtok}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-sm} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-sm}{long-noshort-sm} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-sm-desc} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \cs{long-desc-sm}} +% The smaller font will only be used if +% the short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-sm-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-desc-sm} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-footnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sm}} +% \begin{macrocode} +\newabbreviationstyle{short-sm-footnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form followed by the long form +% as a footnote. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{footnote-sm} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-sm-postfootnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sm}} +% \begin{macrocode} +\newabbreviationstyle{short-sm-postfootnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form. The long form is +% deferred. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{postfootnote-sm} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (Emphasized)} +% These styles use \ics{emph} for the short form. +%\begin{macro}{\glsabbrvemfont} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsabbrvemfont}[1]{\emph{#1}}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvemfont} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}% +% \end{macrocode} +%\end{macro} +% The default short form suffix: +%\begin{macro}{\glsxtremsuffix} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstlongemfont} +%\changes{1.04}{2016-05-02}{new} +%Only used by the \qt{long-em} styles. +% \begin{macrocode} +\newcommand*{\glsfirstlongemfont}[1]{\glslongemfont{#1}}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongemfont} +%\changes{1.04}{2016-05-02}{new} +%Only used by the \qt{long-em} styles. +% \begin{macrocode} +\newcommand*{\glslongemfont}[1]{\emph{#1}}% +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-short-em} +%\changes{0.5}{2015-12-07}{new} +% The long form is just set in the default long font. +% \begin{macrocode} +\newabbreviationstyle{long-short-em}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +% Use the default long fonts. +% \begin{macrocode} + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-short-em-desc} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{long-short-em-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% As long-short-em style: +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{long-short-em}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-short-em} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{long-em-short-em}% +{% +% \end{macrocode} +%\cs{glslongemfont} is used in the description since \cs{glsdesc} +%doesn't set the style. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongemfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% + description={\protect\glslongemfont{\the\glslongtok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-short-em-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{long-em-short-em-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlongemfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-short-em}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-long} +% Now the short (long) version +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-long}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% Mostly as short-long style: +%\changes{1.05}{2016-06-10}{fixed incorrect font used by long form} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-long-desc} +% As before but user provides description +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-long-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-long}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-long-em} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-long-em}% +{% +% \end{macrocode} +%\cs{glslongemfont} is used in the description since \cs{glsdesc} +%doesn't set the style. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\protect\glslongemfont{\the\glslongtok}},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-long-em-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-long-em-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname},% + sort={\glsxtrshortlongdescsort},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-long-em}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em} +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}}, + text={\protect\glsabbrvemfont{\the\glsshorttok}}, + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}, + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short form followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvemfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-nolong} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-em-nolong}{short-em} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-desc} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.39}{2019-03-22}{bug fix: omit \gloskey{description} key as advertised in the +%manual} +% \begin{macrocode} +\newabbreviationstyle{short-em-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}}, + text={\protect\glsabbrvemfont{\the\glsshorttok}}, + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The inline full form displays the short format followed by the +% long form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the short form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{short-em-nolong-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\letabbreviationstyle{short-em-nolong-desc}{short-em-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{nolong-short-em} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newabbreviationstyle{nolong-short-em}% +{% + \GlsXtrUseAbbrStyleSetup{short-em-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-nolong}% +% \end{macrocode} +% The inline full form displays the long form followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% + \ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-em} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{long-em}} +% The short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-em}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongdefaultfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}}, + text={\protect\glslongdefaultfont{\the\glslongtok}}, + plural={\protect\glslongdefaultfont{\the\glslongpltok}},% + description={\the\glslongtok}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-em} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-noshort-em} +%\changes{1.04}{2016-05-02}{new} +% The short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-em-noshort-em}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongemfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}}, + text={\protect\glslongemfont{\the\glslongtok}}, + plural={\protect\glslongemfont{\the\glslongpltok}},% + description={\protect\glslongemfont{\the\glslongtok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-noshort-em-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like long-em-noshort-em but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{long-em-noshort-em-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-noshort-em}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-noshort-em-desc} +%\changes{1.04}{2016-05-02}{renamed from \qt{long-desc-em}} +%\changes{0.5}{2015-12-07}{new} +% The emphasized font will only be used if +% the short form is explicitly invoked through commands like +% \cs{glsshort}. +% \begin{macrocode} +\newabbreviationstyle{long-noshort-em-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{long-desc-em} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{long-desc-em}{long-noshort-em-desc} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-noshort-em-desc} +%\changes{1.04}{2016-05-02}{new} +% The short form is explicitly invoked through commands like +% \cs{glsxtrshort}. The long form is emphasized. +% \begin{macrocode} +\newabbreviationstyle{long-em-noshort-em-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortdescname}, + sort={\the\glslongtok}, + first={\protect\glsfirstlongemfont{\the\glslongtok}}, + firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}}, + text={\glslongemfont{\the\glslongtok}}, + plural={\glslongemfont{\the\glslongpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% + \ifglsxtrinsertinside \else##2\fi + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form, but it +% typically won't be used as the \catattr{regular} attribute is set by this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-em-noshort-em-desc-noreg} +%\changes{1.17}{2017-08-09}{new} +% Like long-em-noshort-em-desc but doesn't set the \catattr{regular} attribute. +% \begin{macrocode} +\newabbreviationstyle{long-em-noshort-em-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-em-noshort-em-desc}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-noshort-em-desc}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-footnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2015-04-30}{renamed from \qt{footnote-em}} +% \begin{macrocode} +\newabbreviationstyle{short-em-footnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form followed by the long form +% as a footnote. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \protect\glsxtrabbrvfootnote{##1}% + {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{footnote-em} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-em-postfootnote} +%\changes{0.5}{2015-12-07}{new} +%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-em}} +% \begin{macrocode} +\newabbreviationstyle{short-em-postfootnote}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% +% \end{macrocode} +% The full format displays the short form. The long form is +% deferred. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% The first use full form and the inline full form use the short +% (long) style. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +%\begin{abbrvstyle}{postfootnote-em} +%Backward compatibility: +% \begin{macrocode} +\@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (User Parentheses Hook)} +% These styles allow the user to adjust the parenthetical forms. +% These styles all test for the existence of the +% field given by: +%\begin{macro}{\glsxtruserfield} +%\changes{1.04}{2016-05-02}{new} +% Default is the useri field. +% \begin{macrocode} +\newcommand*{\glsxtruserfield}{useri} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserparen} +%\changes{1.04}{2016-05-02}{new} +% The format of the parenthetical information. +% The first argument is the long/short form. The second argument +% is the entry's label. If \cs{glscurrentfieldvalue} has been +% defined, then we have at least \styfmt{glossaries} v4.23, which makes +% it easier for the user to adjust this. +% \begin{macrocode} +\ifdef\glscurrentfieldvalue +{ + \newcommand*{\glsxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}% + } +} +{ + \newcommand*{\glsxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}% + } +} +% \end{macrocode} +%\end{macro} +% Font used for short form: +%\begin{macro}{\glsabbrvuserfont} +%\changes{1.04}{2016-05-02}{new} +%\changes{1.17}{2017-08-09}{initialised to default font} +% \begin{macrocode} +\newcommand*{\glsabbrvuserfont}[1]{\glsabbrvdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% Font used for short form on first use: +%\begin{macro}{\glsfirstabbrvuserfont} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsfirstabbrvuserfont}[1]{\glsabbrvuserfont{#1}} +% \end{macrocode} +%\end{macro} +% Font used for long form: +%\begin{macro}{\glslonguserfont} +%\changes{1.04}{2016-05-02}{new} +%\changes{1.17}{2017-08-09}{initialised to default font} +% \begin{macrocode} +\newcommand*{\glslonguserfont}[1]{\glslongdefaultfont{#1}} +% \end{macrocode} +%\end{macro} +% Font used for long form on first use: +%\begin{macro}{\glsfirstlonguserfont} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsfirstlonguserfont}[1]{\glslonguserfont{#1}} +% \end{macrocode} +%\end{macro} +% The default short form suffix: +%\begin{macro}{\glsxtrusersuffix} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newcommand*{\glsxtrusersuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +% +% Description encapsulator. +%\begin{macro}{\glsuserdescription} +%\changes{1.30}{2018-04-25}{new} +%The first argument is the description. The second argument is the +%label. +% \begin{macrocode} +\newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-short-user} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{long-short-user}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}% + \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}% + {\the\glslabeltok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}% + \protect\glsxtruserparen + {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-postshort-user} +%\changes{1.12}{2017-02-03}{new} +%Like \abbrstyle{long-short-user} but defers the parenthetical +%matter to after the link. +% \begin{macrocode} +\newabbreviationstyle{long-postshort-user}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% +% \end{macrocode} +%First use full form: +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% In-line format: +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrlongshortuserdescname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortuserdescname}{% + \protect\glslonguserfont{\the\glslongtok}% + \protect\glsxtruserparen + {\protect\glsabbrvuserfont{\the\glsshorttok}}{\the\glslabeltok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-postshort-user-desc} +%\changes{1.12}{2017-02-03}{new} +%Like \abbrstyle{long-postshort-user} but the user supplies the +%description. +% \begin{macrocode} +\newabbreviationstyle{long-postshort-user-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortuserdescname}, + sort={\the\glslongtok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-postshort-user}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-postlong-user} +%\changes{1.12}{2017-02-03}{new} +%Like \abbrstyle{short-long-user} but defers the parenthetical +%matter to after the link. +% \begin{macrocode} +\newabbreviationstyle{short-postlong-user}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% +% \end{macrocode} +%First use full form: +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% In-line format: +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshortlonguserdescname} +%\changes{1.25}{2017-11-24}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlonguserdescname}{% + \protect\glsabbrvuserfont{\the\glsshorttok}% + \protect\glsxtruserparen + {\protect\glslonguserfont{\the\glslongpltok}}% + {\the\glslabeltok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-postlong-user-desc} +%\changes{1.12}{2017-02-03}{new} +%Like \abbrstyle{short-postlong-user} but leaves the user to specify +%the description. +% \begin{macrocode} +\newabbreviationstyle{short-postlong-user-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlonguserdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-postlong-user}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-short-user-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{long-short-user-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortuserdescname}, + sort={\glsxtrlongshortdescsort},% +% \end{macrocode} +%\changes{1.17}{2017-08-09}{corrected first forms} +% \begin{macrocode} + first={\protect\glsfirstlonguserfont{\the\glslongtok}% + \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}% + {\the\glslabeltok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}% + \protect\glsxtruserparen + {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short-user}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-long-user} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{short-long-user}% +{% +% \end{macrocode} +%\cs{glslonguserfont} is used in the description since \cs{glsdesc} +%doesn't set the style. (Now in \cs{glsuserdescription}.) +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}},% + first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}% + \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}% + {\the\glslabeltok}},% + firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}% + \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}% + {\the\glslabeltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +% \begin{macrocode} + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-long-user-desc} +%\changes{1.04}{2016-05-02}{new} +% \begin{macrocode} +\newabbreviationstyle{short-long-user-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlonguserdescname}, + sort={\glsxtrshortlongdescsort},% +% \end{macrocode} +%\changes{1.17}{2017-08-09}{corrected first forms} +% \begin{macrocode} + first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}% + \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}% + {\the\glslabeltok}},% + firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}% + \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}% + {\the\glslabeltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-long-user}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (Hyphen)} +%These styles are designed to work with the \catattr{markwords} +%attribute. They check if the inserted material (provided by the final +%optional argument of commands like \cs{gls}) starts with a hyphen. +%If it does, the insert is added to the parenthetical material. +%Note that commands like \cs{glsxtrlong} set \cs{glsinsert} to empty +%with the entire link-text stored in \cs{glscustomtext}. +% +%\begin{macro}{\glsxtrifhyphenstart} +%Checks if the argument starts with a hyphen. The argument may be +%\cs{glsinsert} so check for that and expand. +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrifhyphenstart}[3]{% + \ifx\glsinsert#1\relax + \expandafter\@glsxtrifhyphenstart#1\relax\relax + \@end@glsxtrifhyphenstart{#2}{#3}% + \else + \@glsxtrifhyphenstart#1\relax\relax\@end@glsxtrifhyphenstart{#2}{#3}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrifhyphenstart} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\def\@glsxtrifhyphenstart#1#2\@end@glsxtrifhyphenstart#3#4{% + \ifx-#1\relax#3\else #4\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlonghyphenshort} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrlonghyphenshort}\marg{label}\marg{long}\marg{short}\marg{insert} +%\end{definition} +%The \meta{long} and \meta{short} arguments may be the plural form. +%The \meta{long} argument may also be the first letter uppercase form. +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphenshort}[4]{% +% \end{macrocode} +% Grouping is needed to localise the redefinitions. +% \begin{macrocode} + {% +% \end{macrocode} +% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep} +% to a hyphen. The inserted material is also inserted into the +% parenthetical part. (The inserted material is grouped as a +% precautionary measure.) No change is made to \cs{glsxtrwordsep} if +% \meta{insert} doesn't start with a hyphen. +% \begin{macrocode} + \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#4}\fi}% + \ifglsxtrinsertinside\else{#4}\fi + \glsxtrfullsep{#1}% + \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% + \ifglsxtrinsertinside\else{#4}\fi}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsabbrvhyphenfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsabbrvhyphenfont}{\glsabbrvdefaultfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvhyphenfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsfirstabbrvhyphenfont}{\glsabbrvhyphenfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslonghyphenfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glslonghyphenfont}{\glslongdefaultfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstlonghyphenfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsfirstlonghyphenfont}{\glslonghyphenfont}% +% \end{macrocode} +%\end{macro} +% The default short form suffix: +%\begin{macro}{\glsxtrhyphensuffix} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-hyphen-short-hyphen} +%\changes{1.17}{2017-08-09}{new} +%Designed for use with the \catattr{markwords} attribute. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-short-hyphen}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}% + {\glsaccessshortpl{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}% + {\glsaccessshortpl{##1}}{##2}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-hyphen-short-hyphen-desc} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{long-hyphen-short-hyphen} but the description +%must be supplied by the user. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-short-hyphen-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrlonghyphennoshort} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrlonghyphennoshort}\marg{label}\marg{long}\marg{insert} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphennoshort}[3]{% +% \end{macrocode} +% Grouping is needed to localise the redefinitions. +% \begin{macrocode} + {% +% \end{macrocode} +% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep} +% to a hyphen. The inserted material is also inserted into the +% parenthetical part. (The inserted material is grouped as a +% precautionary measure.) No change is made to \cs{glsxtrwordsep} if +% \meta{insert} doesn't start with a hyphen. +% \begin{macrocode} + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}% + \ifglsxtrinsertinside\else{#3}\fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-hyphen-noshort-desc-noreg} +%\changes{1.17}{2017-08-09}{new} +%This version doesn't show the short form (except +%explicitly with \cs{glsxtrshort}). Since \cs{glsxtrshort} doesn't +%support the hyphen switch, the short form just uses the default +%short-form font command. This style won't work with the +%\catattr{regular} as the regular form isn't flexible enough. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-noshort-desc-noreg}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortdescname}, + sort={\expandonce\glsxtrorglong}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + plural={\protect\glslonghyphenfont{\the\glslongpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% + }% +% \end{macrocode} +% The inline full form displays the long format followed by the +% short form in parentheses. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + }% +% \end{macrocode} +% The first use full form only displays the long form. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-hyphen-noshort-noreg} +%\changes{1.17}{2017-08-09}{new} +% It doesn't really make a great deal of sense to have a long-only +% style that doesn't have a description (unless no glossary is +% required), but the best course of +% action here is to use the short form as the name and the long +% form as the description. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-noshort-noreg}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glslonghyphenfont{\the\glslongtok}},% + plural={\protect\glslonghyphenfont{\the\glslongpltok}},% + description={\the\glslongtok}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +%\changes{1.40}{2019-03-31}{corrected formatting commands} +% \begin{macrocode} + \GlsXtrUseAbbrStyleFmts{long-hyphen-noshort-desc-noreg}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrlonghyphen} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert} +%\end{definition} +%Used by \abbrstyle{long-hyphen-postshort-hyphen}. The \meta{insert} +%is check to determine if it starts with a hyphen but isn't used +%here as it's moved to the post-link hook. +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphen}[3]{% +% \end{macrocode} +% Grouping is needed to localise the redefinitions. +% \begin{macrocode} + {% + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstlonghyphenfont{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrposthyphenshort} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrposthyphenshort}\marg{label}\marg{insert} +%\end{definition} +%Used in the post-link hook for the +%\abbrstyle{long-hyphen-postshort-hyphen} style. Much like +%\cs{glsxtrlonghyphenshort} but omits the \meta{long} part. This +%always uses the singular short form. +% \begin{macrocode} +\newcommand*{\glsxtrposthyphenshort}[2]{% + {% + \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% + \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi + \glsxtrfullsep{#1}% + \glsxtrparen + {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}% + \ifglsxtrinsertinside\else{#2}\fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrposthyphensubsequent} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrposthyphensubsequent}\marg{label}\marg{insert} +%\end{definition} +%Format in the post-link hook for subsequent use. The label is +%ignored by default. +% \begin{macrocode} +\newcommand*{\glsxtrposthyphensubsequent}[2]{% + \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}% + \ifglsxtrinsertinside \else{#2}\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-hyphen-postshort-hyphen} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{long-hyphen-short-hyphen} but shifts the insert +%and parenthetical material to the post-link hook. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-postshort-hyphen}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenshort{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Put the insertion into the post-link: +% \begin{macrocode} + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% +% \end{macrocode} +% Subsequent use needs to omit the insertion: +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{##1}}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{##1}}% + }% +% \end{macrocode} +% First use full form: +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}% + }% +% \end{macrocode} +% In-line format. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlonghyphenfont{\glsaccesslong{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlonghyphenfont{\glsaccesslongpl{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlonghyphenfont{\Glsaccesslong{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{long-hyphen-postshort-hyphen-desc} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{long-hyphen-postshort-hyphen} but the description +%must be supplied by the user. +% \begin{macrocode} +\newabbreviationstyle{long-hyphen-postshort-hyphen-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortdescname}, + sort={\glsxtrlongshortdescsort},% + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenshort{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Put the insertion into the post-link: +% \begin{macrocode} + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-postshort-hyphen}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshorthyphenlong} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrshorthyphenlong}\marg{label}\marg{short}\marg{long}\marg{insert} +%\end{definition} +%The \meta{long} and \meta{short} arguments may be the plural form. +%The \meta{long} argument may also be the first letter uppercase form. +% \begin{macrocode} +\newcommand*{\glsxtrshorthyphenlong}[4]{% +% \end{macrocode} +% Grouping is needed to localise the redefinitions. +% \begin{macrocode} + {% +% \end{macrocode} +% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep} +% to a hyphen. The inserted material is also inserted into the +% parenthetical part. (The inserted material is grouped as a +% precautionary measure.) +% \begin{macrocode} + \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}% + \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside{#4}\fi}% + \ifglsxtrinsertinside\else{#4}\fi + \glsxtrfullsep{#1}% + \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% + \ifglsxtrinsertinside\else{#4}\fi}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-hyphen-long-hyphen} +%\changes{1.17}{2017-08-09}{new} +%Designed for use with the \catattr{markwords} attribute. +% \begin{macrocode} +\newabbreviationstyle{short-hyphen-long-hyphen}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% +% \end{macrocode} +% The first use full form and the inline full form are the same for +% this style. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsxtrshorthyphenlong{##1}% + {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsxtrshorthyphenlong{##1}% + {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-hyphen-long-hyphen-desc} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{short-hyphen-long-hyphen} but the description +%must be supplied by the user. +% \begin{macrocode} +\newabbreviationstyle{short-hyphen-long-hyphen-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort}, + first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-hyphen-long-hyphen}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtrshorthyphen} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrshorthyphen}\marg{short}\marg{label}\marg{insert} +%\end{definition} +%Used by \abbrstyle{short-hyphen-postlong-hyphen}. The \meta{insert} +%is check to determine if it starts with a hyphen but isn't used +%here as it's moved to the post-link hook. +% \begin{macrocode} +\newcommand*{\glsxtrshorthyphen}[3]{% +% \end{macrocode} +% Grouping is needed to localise the redefinitions. +% \begin{macrocode} + {% + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstabbrvhyphenfont{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrposthyphenlong} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrposthyphenlong}\marg{label}\marg{insert} +%\end{definition} +%Used in the post-link hook for the +%\abbrstyle{short-hyphen-postlong-hyphen} style. Much like +%\cs{glsxtrshorthyphenlong} but omits the \meta{short} part. This +%always uses the singular long form. +% \begin{macrocode} +\newcommand*{\glsxtrposthyphenlong}[2]{% + {% + \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% + \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi + \glsxtrfullsep{#1}% + \glsxtrparen + {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}% + \ifglsxtrinsertinside\else{#2}\fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-hyphen-postlong-hyphen} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{short-hyphen-long-hyphen} but shifts the insert +%and parenthetical material to the post-link hook. +% \begin{macrocode} +\newabbreviationstyle{short-hyphen-postlong-hyphen}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenlong{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Put the insertion into the post-link: +% \begin{macrocode} + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% +% \end{macrocode} +% In case the user wants to mix and match font styles, these are +% redefined here. +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% +% \end{macrocode} +% Subsequent use needs to omit the insertion: +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{##1}}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{##1}}% + }% +% \end{macrocode} +% First use full form: +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}% + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}% + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}% + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}% + }% +% \end{macrocode} +% In-line format. Commands like \cs{glsxtrfull} set \cs{glsinsert} +% to empty. The entire link-text (provided by the following +% commands) is stored in \cs{glscustomtext}. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstabbrvhyphenfont{\glsaccessshort{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}% + \ifglsxtrinsertinside{##2}\fi}% + \ifglsxtrinsertinside \else{##2}\fi + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{short-hyphen-postlong-hyphen-desc} +%\changes{1.17}{2017-08-09}{new} +%Like \abbrstyle{short-hyphen-postlong-hyphen} but the description +%must be supplied by the user. +% \begin{macrocode} +\newabbreviationstyle{short-hyphen-postlong-hyphen-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongdescname}, + sort={\glsxtrshortlongdescsort},% + first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenlong{\glslabel}{\glsinsert}% + }% + {% +% \end{macrocode} +% Put the insertion into the post-link: +% \begin{macrocode} + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-hyphen-postlong-hyphen}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (No Short on First Use)} +%These styles show only the long form on first use and only the +%short form on subsequent use. +%\begin{macro}{\glsabbrvonlyfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsabbrvonlyfont}{\glsabbrvdefaultfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvonlyfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsfirstabbrvonlyfont}{\glsabbrvonlyfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslongonlyfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glslongonlyfont}{\glslongdefaultfont}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstlongonlyfont} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsfirstlongonlyfont}{\glslongonlyfont}% +% \end{macrocode} +%\end{macro} +% The default short form suffix: +%\begin{macro}{\glsxtronlysuffix} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtronlysuffix}{\glsxtrabbrvpluralsuffix} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtronlyname} +%\changes{1.25}{2017-11-24}{new} +% The default name format for this style. +% \begin{macrocode} +\newcommand*{\glsxtronlyname}{% + \protect\glsabbrvonlyfont{\the\glsshorttok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-only-short-only} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newabbreviationstyle{long-only-short-only}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtronlyname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% + description={\protect\glslongonlyfont{\the\glslongtok}}}% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtronlysuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% +% \end{macrocode} +% The first use full form doesn't show the short form. +% \begin{macrocode} + \renewcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% + \renewcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + }% +% \end{macrocode} +% The inline full form does show the short form. +% \begin{macrocode} + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}% + }% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glsxtronlydescsort} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtronlydescsort}{\the\glslongtok} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtronlydescname} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newcommand*{\glsxtronlydescname}{% + \protect\glslongfont{\the\glslongtok}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-only-short-only-desc} +%\changes{1.17}{2017-08-09}{new} +% \begin{macrocode} +\newabbreviationstyle{long-only-short-only-desc}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtronlydescname}, + sort={\glsxtronlydescsort},% + first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% + plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}}% + }% +% \end{macrocode} +% Unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-only-short-only}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\section{Using Entries in Headings} +% +% There are four main problems with using entries in sectioning +% commands: they can mess with the first use flag if they end up in +% the table of contents, they can add unwanted numbers to the +% entry's location list, the label is corrupted if used inside +% \ics{MakeUppercase} (which is used by the default headings style) +% and they need to be expandable for PDF bookmarks. The +% \styfmt{glossaries} package therefore recommends the use of the +% expandable commands, such as \cs{glsentryshort}, instead but this +% doesn't reflect the formatting since it doesn't include +% \cs{glsabbrvfont}. The commands below are an attempt to get around +% these problems. +% +% The PDF bookmark issue can easily be fixed with \sty{hyperref}'s +% \cs{texorpdfstring} which can simply use the expandable command +% in the PDF string case. The \TeX\ string case can now use +% \cs{glsxtrshort} with the \gloskey[glslink]{noindex} key set, which +% prevents the unwanted additions to the location list, and the +% \gloskey[glslink]{hyper} key set to false, which prevents the problem of +% nested links. This just leaves one thing left that needs to be +% dealt with, and that's what to do if the heading style +% uses \cs{MakeUppercase}. +% +% Note that \styfmt{glossaries} automatically loads \sty{textcase}, so +% the label can be protected from case change with \sty{textcase}'s +% \cs{NoCaseChange}. This means that we don't have a problem +% provided the page style uses \cs{MakeTextUppercase}, but the +% default heading page style uses \cs{MakeUppercase}. +% +% To get around this, save the original definition of \cs{markboth} +% and \cs{markright} and adjust it so that \cs{MakeUppercase} is +% temporarily redefined to \cs{MakeTextUppercase}. Some packages or +% classes redefine these commands, so we can't just assume they +% still have the original kernel definition. +% +%\begin{macro}{\markright} +% Save original definition: +% \begin{macrocode} +\let\@glsxtr@org@markright\markright +% \end{macrocode} +% Redefine (grouping not added in case it interferes with the +% original code): +% \begin{macrocode} +\renewcommand*{\markright}[1]{% + \glsxtrmarkhook + \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}% + \glsxtrrestoremarkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\markboth} +% Save original definition: +% \begin{macrocode} +\let\@glsxtr@org@markboth\markboth +% \end{macrocode} +% Redefine (grouping not added in case it interferes with the +% original code): +% \begin{macrocode} +\renewcommand*{\markboth}[2]{% + \glsxtrmarkhook + \@glsxtr@org@markboth + {\@glsxtrinmark#1\@glsxtrnotinmark}% + {\@glsxtrinmark#2\@glsxtrnotinmark}% + \glsxtrrestoremarkhook +} +% \end{macrocode} +%\end{macro} +% +%Also do this for \cs{@starttoc} +%\begin{macro}{\@starttoc} +% Save original definition: +% \begin{macrocode} +\let\@glsxtr@org@@starttoc\@starttoc +% \end{macrocode} +% Redefine: +% \begin{macrocode} +\renewcommand*{\@starttoc}[1]{% + \glsxtrmarkhook + \@glsxtrinmark + \@glsxtr@org@@starttoc{#1}% + \@glsxtrnotinmark + \glsxtrrestoremarkhook +} +% \end{macrocode} +%\end{macro} +% +% If this causes a problem provide a simple way of switching back to +% the original definitions: +%\begin{macro}{\glsxtrRevertMarks} +% \begin{macrocode} +\newcommand*{\glsxtrRevertMarks}{% + \let\markright\@glsxtr@org@markright + \let\markboth\@glsxtr@org@markboth + \let\@starttoc\@glsxtr@org@@starttoc +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrRevertTocMarks} +%\changes{1.31}{2018-05-09}{new} +%Just restores \cs{@starttoc}. +% \begin{macrocode} +\newcommand*{\glsxtrRevertTocMarks}{% + \let\@starttoc\@glsxtr@org@@starttoc +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifinmark} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifinmark}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrinmark} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@glsxtrinmark}{% + \let\glsxtrifinmark\@firstoftwo +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrnotinmark} +%\changes{1.07}{2016-08-15}{new} +% \begin{macrocode} +\newrobustcmd*{\@glsxtrnotinmark}{% + \let\glsxtrifinmark\@secondoftwo +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitleorpdforheading} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}} +} +{ + \newcommand*{\glsxtrtitleorpdforheading}[3]{#1} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmarkhook} +% Hook used in new definition of \cs{markboth} and \cs{markright} +% to make some changes to apply to the marks: +% \begin{macrocode} +\newcommand*{\glsxtrmarkhook}{% +% \end{macrocode} +% Save current definitions: +% \begin{macrocode} + \let\@glsxtr@org@MakeUppercase\MakeUppercase + \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading + \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort + \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl + \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort + \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl + \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename + \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename + \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext + \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext + \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural + \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural + \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst + \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst + \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural + \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural + \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong + \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl + \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong + \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl + \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull + \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl + \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull + \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl +% \end{macrocode} +% New definitions +% \begin{macrocode} + \let\glsxtrifinmark\@firstoftwo + \let\MakeUppercase\MakeTextUppercase + \let\glsxtrtitleorpdforheading\@thirdofthree + \let\glsxtrtitleshort\glsxtrheadshort + \let\glsxtrtitleshortpl\glsxtrheadshortpl + \let\Glsxtrtitleshort\Glsxtrheadshort + \let\Glsxtrtitleshortpl\Glsxtrheadshortpl + \let\glsxtrtitlename\glsxtrheadname + \let\Glsxtrtitlename\Glsxtrheadname + \let\glsxtrtitletext\glsxtrheadtext + \let\Glsxtrtitletext\Glsxtrheadtext + \let\glsxtrtitleplural\glsxtrheadplural + \let\Glsxtrtitleplural\Glsxtrheadplural + \let\glsxtrtitlefirst\glsxtrheadfirst + \let\Glsxtrtitlefirst\Glsxtrheadfirst + \let\glsxtrtitlefirstplural\glsxtrheadfirstplural + \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural + \let\glsxtrtitlelong\glsxtrheadlong + \let\glsxtrtitlelongpl\glsxtrheadlongpl + \let\Glsxtrtitlelong\Glsxtrheadlong + \let\Glsxtrtitlelongpl\Glsxtrheadlongpl + \let\glsxtrtitlefull\glsxtrheadfull + \let\glsxtrtitlefullpl\glsxtrheadfullpl + \let\Glsxtrtitlefull\Glsxtrheadfull + \let\Glsxtrtitlefullpl\Glsxtrheadfullpl +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrrestoremarkhook} +% Hook used in new definition of \cs{markboth} and \cs{markright} +% to restore the modified definitions. (This is in case the original +% \cs{markboth} and \cs{markright} shouldn't be grouped for some +% reason. There already is some grouping within those original +% definitions, but some of the code lies outside that grouping, and +% possibly there's a reason for it.) +% \begin{macrocode} +\newcommand*{\glsxtrrestoremarkhook}{% + \let\glsxtrifinmark\@secondoftwo + \let\MakeUppercase\@glsxtr@org@MakeUppercase + \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading + \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort + \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl + \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort + \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl + \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename + \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename + \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext + \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext + \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural + \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural + \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst + \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst + \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural + \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural + \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong + \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl + \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong + \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl + \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull + \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl + \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull + \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl +} +% \end{macrocode} +%\end{macro} +% +%\changes{0.5.1}{2015-12-07}{removed \cs{ifglsxtruseuchead}} +% Instead of using one document-wide conditional, use +% \catattr{headuc} attribute to determine whether or not to use the +% all upper case form. +% +%\begin{macro}{\glsxtrheadshort} +% Command used to display short form in the page header. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadshort}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshort[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrshort[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitleshort} +% Command to display short form of abbreviation in section title and +% table of contents. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleshort}[1]{% + \glsxtrshort[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadshortpl} +% Command used to display plural short form in the page header. +% If you want the text converted to upper case, this needs to be +% redefined to use \cs{GLSxtrshortpl} instead. If you are using a +% smallcaps style, the default fonts don't provide italic smallcaps. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadshortpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrshortpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitleshortpl} +% Command to display plural short form of abbreviation in section title and +% table of contents. +%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrshort} to +%\cs{glsxtrshortpl}} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleshortpl}[1]{% + \glsxtrshortpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadshort} +% Command used to display short form in the page header with the +% first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadshort}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshort[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrshort[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitleshort} +% Command to display short form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleshort}[1]{% + \Glsxtrshort[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadshortpl} +% Command used to display plural short form in the page header with the +% first letter converted to upper case. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadshortpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrshortpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitleshortpl} +% Command to display plural short form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleshortpl}[1]{% + \Glsxtrshortpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadname} +% As above but for the \gloskey{name} value. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrheadname}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSname[noindex,hyper=false]{#1}[]% + }% + {% + \glsname[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlename} +% Command to display \gloskey{name} value in section title and +% table of contents. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlename}[1]{% + \glsname[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadname} +% First letter converted to upper case +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrheadname}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSname[noindex,hyper=false]{#1}[]% + }% + {% + \Glsname[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlename} +% Command to display \gloskey{name} value in section title and +% table of contents with the first letter changed to upper case. +% \begin{macrocode} +%\changes{1.21}{2017-11-03}{new} +\newrobustcmd*{\Glsxtrtitlename}[1]{% + \Glsname[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadtext} +% As above but for the \gloskey{text} value. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadtext}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLStext[noindex,hyper=false]{#1}[]% + }% + {% + \glstext[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitletext} +% Command to display \gloskey{text} value in section title and +% table of contents. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitletext}[1]{% + \glstext[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\Glsxtrheadtext} +% First letter converted to upper case +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadtext}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLStext[noindex,hyper=false]{#1}[]% + }% + {% + \Glstext[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitletext} +% Command to display \gloskey{text} value in section title and +% table of contents with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitletext}[1]{% + \Glstext[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadplural} +% As above but for the \gloskey{plural} value. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSplural[noindex,hyper=false]{#1}[]% + }% + {% + \glsplural[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitleplural} +% Command to display \gloskey{plural} value in section title and +% table of contents. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleplural}[1]{% + \glsplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadplural} +% Convert first letter to upper case. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSplural[noindex,hyper=false]{#1}[]% + }% + {% + \Glsplural[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitleplural} +% Command to display \gloskey{plural} value in section title and +% table of contents with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleplural}[1]{% + \Glsplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadfirst} +% As above but for the \gloskey{first} value. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadfirst}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirst[noindex,hyper=false]{#1}[]% + }% + {% + \glsfirst[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlefirst} +% Command to display \gloskey{first} value in section title and +% table of contents. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefirst}[1]{% + \glsfirst[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadfirst} +% First letter converted to upper case +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadfirst}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirst[noindex,hyper=false]{#1}[]% + }% + {% + \Glsfirst[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlefirst} +% Command to display \gloskey{first} value in section title and +% table of contents with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefirst}[1]{% + \Glsfirst[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadfirstplural} +% As above but for the \gloskey{firstplural} value. +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\glsxtrheadfirstplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirstplural[noindex,hyper=false]{#1}[]% + }% + {% + \glsfirstplural[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlefirstplural} +% Command to display \gloskey{firstplural} value in section title and +% table of contents. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefirstplural}[1]{% + \glsfirstplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadfirstplural} +% First letter converted to upper case +%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} +% \begin{macrocode} +\newcommand*{\Glsxtrheadfirstplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirstplural[noindex,hyper=false]{#1}[]% + }% + {% + \Glsfirstplural[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlefirstplural} +% Command to display \gloskey{first} value in section title and +% table of contents with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{% + \Glsfirstplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadlong} +% Command used to display long form in the page header. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsxtrheadlong}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlong[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrlong[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlelong} +% Command to display long form of abbreviation in section title and +% table of contents. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlelong}[1]{% + \glsxtrlong[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadlongpl} +% Command used to display plural long form in the page header. +% If you want the text converted to upper case, this needs to be +% redefined to use \cs{GLSxtrlongpl} instead. If you are using a +% smallcaps style, the default fonts don't provide italic smallcaps. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsxtrheadlongpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrlongpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlelongpl} +% Command to display plural long form of abbreviation in section title and +% table of contents. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrlong} to +%\cs{glsxtrlongpl}} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlelongpl}[1]{% + \glsxtrlongpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadlong} +% Command used to display long form in the page header with the +% first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrheadlong}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlong[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrlong[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlelong} +% Command to display long form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlelong}[1]{% + \Glsxtrlong[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadlongpl} +% Command used to display plural long form in the page header with the +% first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrheadlongpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrlongpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlelongpl} +% Command to display plural long form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlelongpl}[1]{% + \Glsxtrlongpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadfull} +% Command used to display full form in the page header. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsxtrheadfull}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfull[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrfull[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlefull} +% Command to display full form of abbreviation in section title and +% table of contents. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefull}[1]{% + \glsxtrfull[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrheadfullpl} +% Command used to display plural full form in the page header. +% If you want the text converted to upper case, this needs to be +% redefined to use \cs{GLSxtrfullpl} instead. If you are using a +% smallcaps style, the default fonts don't provide italic smallcaps. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsxtrheadfullpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrfullpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlefullpl} +% Command to display plural full form of abbreviation in section title and +% table of contents. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefullpl}[1]{% + \glsxtrfullpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadfull} +% Command used to display full form in the page header with the +% first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrheadfull}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfull[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrfull[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlefull} +% Command to display full form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefull}[1]{% + \Glsxtrfull[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrheadfullpl} +% Command used to display plural full form in the page header with the +% first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrheadfullpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrfullpl[noindex,hyper=false]{#1}[]% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrtitlefullpl} +% Command to display plural full form of abbreviation in section title and +% table of contents with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefullpl}[1]{% + \Glsxtrfullpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtshort} +% Provide a way of using the formatted short form in section +% headings. If \sty{hyperref} has been loaded, use +% \cs{texorpdfstring} for convenience in PDF bookmarks. +%\changes{0.2}{2015-11-30}{new} +%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshort}} +%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshort}} +%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshort}} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtshort}[1]{% + \texorpdfstring + {\glsxtrtitleshort{#1}}% + {\glsentryshort{#1}}% + } +} +{ + \newcommand*{\glsfmtshort}[1]{% + \glsxtrtitleshort{#1}} +} +% \end{macrocode} +%\end{macro} +%Similarly for the plural version. +%\begin{macro}{\glsfmtshortpl} +%\changes{0.2}{2015-11-30}{new} +%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}} +%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshortpl}} +%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshortpl}} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtshortpl}[1]{% + \texorpdfstring + {\glsxtrtitleshortpl{#1}}% + {\glsentryshortpl{#1}}% + } +} +{ + \newcommand*{\glsfmtshortpl}[1]{% + \glsxtrtitleshortpl{#1}} +} +% \end{macrocode} +%\end{macro} +% The case-changing version isn't suitable for PDF bookmarks, so the +% PDF alternative uses the non-case-changing version. +%\begin{macro}{\Glsfmtshort} +% Singular form (first letter uppercase). +%\changes{0.2}{2015-11-30}{new} +%\changes{0.4}{2015-12-03}{changed to use \cs{Glsxtrshort}} +%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshort}} +%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshort}} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtshort}[1]{% + \texorpdfstring + {\Glsxtrtitleshort{#1}}% + {\glsentryshort{#1}}% + } +} +{ + \newcommand*{\Glsfmtshort}[1]{% + \Glsxtrtitleshort{#1}} +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsfmtshortpl} +%Plural form (first letter uppercase). +%\changes{0.2}{2015-11-30}{new} +%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}} +%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshortpl}} +%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshortpl}} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtshortpl}[1]{% + \texorpdfstring + {\Glsxtrtitleshortpl{#1}}% + {\glsentryshortpl{#1}}% + } +} +{ + \newcommand*{\Glsfmtshortpl}[1]{% + \Glsxtrtitleshortpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtname} +%As above but for the \gloskey{name} value. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtname}[1]{% + \texorpdfstring + {\glsxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\glsfmtname}[1]{% + \glsxtrtitlename{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtname} +%First letter converted to upper case. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtname}[1]{% + \texorpdfstring + {\Glsxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\Glsfmtname}[1]{% + \Glsxtrtitlename{#1}} +} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\glsfmttext} +%As above but for the \gloskey{text} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmttext}[1]{% + \texorpdfstring + {\glsxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\glsfmttext}[1]{% + \glsxtrtitletext{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmttext} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmttext}[1]{% + \texorpdfstring + {\Glsxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\Glsfmttext}[1]{% + \Glsxtrtitletext{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtplural} +%As above but for the \gloskey{plural} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtplural}[1]{% + \texorpdfstring + {\glsxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\glsfmtplural}[1]{% + \glsxtrtitleplural{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtplural} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtplural}[1]{% + \texorpdfstring + {\Glsxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\Glsfmtplural}[1]{% + \Glsxtrtitleplural{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfirst} +%As above but for the \gloskey{first} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfirst}[1]{% + \texorpdfstring + {\glsxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\glsfmtfirst}[1]{% + \glsxtrtitlefirst{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfirst} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfirst}[1]{% + \texorpdfstring + {\Glsxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\Glsfmtfirst}[1]{% + \Glsxtrtitlefirst{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfirstpl} +%As above but for the \gloskey{firstplural} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfirstpl}[1]{% + \texorpdfstring + {\glsxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\glsfmtfirstpl}[1]{% + \glsxtrtitlefirstplural{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfirstpl} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfirstpl}[1]{% + \texorpdfstring + {\Glsxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\Glsfmtfirstpl}[1]{% + \Glsxtrtitlefirstplural{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtlong} +%As above but for the \gloskey{long} value. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtlong}[1]{% + \texorpdfstring + {\glsxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\glsfmtlong}[1]{% + \glsxtrtitlelong{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtlong} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtlong}[1]{% + \texorpdfstring + {\Glsxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\Glsfmtlong}[1]{% + \Glsxtrtitlelong{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtlongpl} +%As above but for the \gloskey{longplural} value. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtlongpl}[1]{% + \texorpdfstring + {\glsxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\glsfmtlongpl}[1]{% + \glsxtrtitlelongpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtlongpl} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtlongpl}[1]{% + \texorpdfstring + {\Glsxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\Glsfmtlongpl}[1]{% + \Glsxtrtitlelongpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfull} +%In-line full format. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfull}[1]{% + \texorpdfstring + {\glsxtrtitlefull{#1}}% + {\glsxtrinlinefullformat{#1}{}}% + } +} +{ + \newcommand*{\glsfmtfull}[1]{% + \glsxtrtitlefull{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfull} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfull}[1]{% + \texorpdfstring + {\Glsxtrtitlefull{#1}}% + {\Glsxtrinlinefullformat{#1}{}}% + } +} +{ + \newcommand*{\Glsfmtfull}[1]{% + \Glsxtrtitlefull{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfullpl} +%In-line full plural format. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfullpl}[1]{% + \texorpdfstring + {\glsxtrtitlefullpl{#1}}% + {\glsxtrinlinefullplformat{#1}{}}% + } +} +{ + \newcommand*{\glsfmtfullpl}[1]{% + \glsxtrtitlefullpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfullpl} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfullpl}[1]{% + \texorpdfstring + {\Glsxtrtitlefullpl{#1}}% + {\Glsxtrinlinefullplformat{#1}{}}% + } +} +{ + \newcommand*{\Glsfmtfullpl}[1]{% + \Glsxtrtitlefullpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\section{Multi-Lingual Support} +% Add the facility to load language modules, if they are installed, +% but none are provided with this package. +% +%\begin{macro}{\RequireGlossariesExtraLang} +%\changes{0.5.3}{2015-12-09}{new} +% \begin{macrocode} +\newcommand*{\RequireGlossariesExtraLang}[1]{% + \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ProvidesGlossariesExtraLang} +%\changes{0.5.3}{2015-12-09}{new} +% \begin{macrocode} +\newcommand*{\ProvidesGlossariesExtraLang}[1]{% + \ProvidesFile{glossariesxtr-#1.ldf}% +} +% \end{macrocode} +%\end{macro} +% +% Load any required language modules that are available. This +% doesn't generate any warning if none are found, since they're not +% essential. (The only command that really needs defining for the +% document is \ics{abbreviationsname}, which can simply be +% redefined. However, with \app{bib2gls} it might be useful to +% provide custom rules for a particular locale.) +% +%\begin{macro}{\glsxtr@loaddialect} +%The dialect label should be stored in \cs{this@dialect} +%before using this command. +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand{\glsxtr@loaddialect}{% + \IfTrackedLanguageFileExists{\this@dialect}% + {glossariesxtr-}% prefix + {.ldf}% + {% + \RequireGlossariesExtraLang{\CurrentTrackedTag}% + }% + {}% not found +% \end{macrocode} +% If \sty{glossaries-extra-bib2gls} has been loaded, +% \cs{@glsxtrdialecthook} will check for the associated script, +% otherwise it will do nothing. +% \begin{macrocode} + \@glsxtrdialecthook +} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +\@ifpackageloaded{tracklang} +{% + \AnyTrackedLanguages + {% + \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}% + }% + {}% +} +{} +% \end{macrocode} +% Load \sty{glossaries-extra-stylemods} if required. +% \begin{macrocode} +\@glsxtr@redefstyles +% \end{macrocode} +% and set the style: +% \begin{macrocode} +\@glsxtr@do@style +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossaries-extra-bib2gls.sty> +% \end{macrocode} +%\fi +%\changes{1.27}{2018-02-26}{added glossaries-extra-bib2gls.sty} +%\section{glossaries-extra-bib2gls.sty} +%This package provides additional support for \app{bib2gls} and is +%automatically loaded by the record option. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra-bib2gls}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +%Provide convenient shortcut commands for predefined glossary types. +%\begin{macro}{\printunsrtacronyms} +%\changes{1.40}{2019-03-31}{new} +% \begin{macrocode} +\ifglsacronym + \providecommand*{\printunsrtacronyms}[1][]{% + \printunsrtglossary[type=\acronymtype,#1]}% +\fi +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtindex} +%\changes{1.40}{2019-03-31}{new} +% \begin{macrocode} +\ifglossaryexists{index} +{ + \providecommand*{\printunsrtindex}[1][]{% + \printunsrtglossary[type=index,#1]}% +}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtsymbols} +%\changes{1.40}{2019-03-31}{new} +% \begin{macrocode} +\ifglossaryexists{symbols} +{ + \providecommand*{\printunsrtsymbols}[1][]{% + \printunsrtglossary[type=symbols,#1]}% +}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtnumbers} +%\changes{1.40}{2019-03-31}{new} +% \begin{macrocode} +\ifglossaryexists{numbers} +{ + \providecommand*{\printunsrtnumbers}[1][]{% + \printunsrtglossary[type=numbers,#1]}% +}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrtabbreviations} +%\changes{1.40}{2019-03-31}{new} +% \begin{macrocode} +\ifglossaryexists{abbreviations} +{ + \providecommand*{\printunsrtabbreviations}[1][]{% + \printunsrtglossary[type=abbreviations,#1]}% +}{} +% \end{macrocode} +%\end{macro} +% +%These are some convenient macros for use with custom rules. +%\begin{macro}{\glshex} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glshex}{\string\u} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glscapturedgroup} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} +\newcommand*{\glscapturedgroup}{\string\$} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfHasNonZeroChildCount} +%\changes{1.31}{2018-05-09}{new} +%For use with \app{bib2gls}'s \texttt{save-child-count} resource option. +% \begin{macrocode} +\newcommand*{\GlsXtrIfHasNonZeroChildCount}[3]{% + \GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrprovidecommand} +%\changes{1.27}{2018-02-26}{new} +%For use in \texttt{@preamble}, this behaves like +%\cs{providecommand} in the document but like \cs{renewcommand} +%in \app{bib2gls}. +% \begin{macrocode} +\newcommand*{\glsxtrprovidecommand}{\providecommand} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsrenewcommand} +%\changes{1.37}{2018-11-30}{new} +%Like \cs{renewcommand} but only generates a warning rather than an +%error if the command isn't defined. +% \begin{macrocode} +\newcommand*{\glsrenewcommand}{\@star@or@long\glsxtr@renewcommand} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@renewcommand} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@renewcommand}[1]{% + \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup + \expandafter\@ifundefined\@gtempa + {% + \GlossariesExtraWarning{can't redefine \noexpand#1(not already defined)}% + }% + \relax + \relax + \let\@ifdefinable\@rc@ifdefinable + \new@command#1% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@wrglossarylocation} +%\changes{1.29}{2018-04-09}{new} +%For use with \pkgopt{indexcounter} and \app{bib2gls}. +% \begin{macrocode} +\newcommand*{\glsxtr@wrglossarylocation}[2]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIndexCounterLink} +%\changes{1.29}{2018-04-09}{new} +%\begin{definition} +%\cs{GlsXtrIndexCounterLink}\marg{text}\marg{label} +%\end{definition} +%For use with \pkgopt{indexcounter} and \app{bib2gls}. +% \begin{macrocode} +\ifdef\hyperref +{% + \newcommand*{\GlsXtrIndexCounterLink}[2]{% + \glsxtrifhasfield{indexcounter}{#2}% + {\hyperref[wrglossary.\glscurrentfieldvalue]{#1}}% + {#1}% + } +} +{ + \newcommand*{\GlsXtrIndexCounterLink}[2]{#1} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrDualField} +%\changes{1.30}{2018-04-25}{new} +%\begin{definition} +%\cs{GlsXtrDualField} +%\end{definition} +%The internal field used to store the dual label. The +%\texttt{dual-field} defaults to \texttt{dual} if no value is +%supplied so that's used as the default. +% \begin{macrocode} +\newcommand*{\GlsXtrDualField}{dual} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrDualBackLink} +%\changes{1.30}{2018-04-25}{new} +%\begin{definition} +%\cs{GlsXtrDualBackLink}\marg{text}\marg{label} +%\end{definition} +%Adds a hyperlink to the dual entry. +% \begin{macrocode} +\newcommand*{\GlsXtrDualBackLink}[2]{% + \glsxtrifhasfield{\GlsXtrDualField}{#2}% + {\glshyperlink[#1]{\glscurrentfieldvalue}}% + {#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrBibTeXEntryAliases} +%\changes{1.29}{2018-04-09}{new} +%Convenient shortcut for use with \texttt{entry-type-aliases} to +%alias standard \BibTeX\ entry types to \texttt{@bibtexentry}. +% \begin{macrocode} +\newcommand*{\GlsXtrBibTeXEntryAliases}{% + article=bibtexentry, + book=bibtexentry, + booklet=bibtexentry, + conference=bibtexentry, + inbook=bibtexentry, + incollection=bibtexentry, + inproceedings=bibtexentry, + manual=bibtexentry, + mastersthesis=bibtexentry, + misc=bibtexentry, + phdthesis=bibtexentry, + proceedings=bibtexentry, + techreport=bibtexentry, + unpublished=bibtexentry +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrProvideBibTeXFields} +%\changes{1.29}{2018-04-09}{new} +%Convenient shortcut to define the standard \BibTeX\ fields. +% \begin{macrocode} +\newcommand*{\GlsXtrProvideBibTeXFields}{% + \glsaddstoragekey{address}{}{\glsxtrbibaddress}% + \glsaddstoragekey{author}{}{\glsxtrbibauthor}% + \glsaddstoragekey{booktitle}{}{\glsxtrbibbooktitle}% + \glsaddstoragekey{chapter}{}{\glsxtrbibchapter}% + \glsaddstoragekey{edition}{}{\glsxtrbibedition}% + \glsaddstoragekey{howpublished}{}{\glsxtrbibhowpublished}% + \glsaddstoragekey{institution}{}{\glsxtrbibinstitution}% + \glsaddstoragekey{journal}{}{\glsxtrbibjournal}% + \glsaddstoragekey{month}{}{\glsxtrbibmonth}% + \glsaddstoragekey{note}{}{\glsxtrbibnote}% + \glsaddstoragekey{number}{}{\glsxtrbibnumber}% + \glsaddstoragekey{organization}{}{\glsxtrbiborganization}% + \glsaddstoragekey{pages}{}{\glsxtrbibpages}% + \glsaddstoragekey{publisher}{}{\glsxtrbibpublisher}% + \glsaddstoragekey{school}{}{\glsxtrbibschool}% + \glsaddstoragekey{series}{}{\glsxtrbibseries}% + \glsaddstoragekey{title}{}{\glsxtrbibtitle}% + \glsaddstoragekey{bibtextype}{}{\glsxtrbibtype}% + \glsaddstoragekey{volume}{}{\glsxtrbibvolume}% +} +% \end{macrocode} +%\end{macro} +% +%Multiple supplementary references are only supported with +%\app{bib2gls}. +%\begin{macro}{\glsxtrmultisupplocation} +%\changes{1.36}{2018-08-18}{new} +%This is like \cs{glsxtrsupphypernumber} but the second argument is +%the external file name (which isn't obtained from the +%\catattr{externallocation} attribute). The third argument is the +%formatting (encap) control sequence \emph{name}. This is ignored by +%default, but is set by \app{bib2gls} to the original encap in case +%it's required. +% \begin{macrocode} +\newcommand*{\glsxtrmultisupplocation}[3]{% + {% + \def\glsxtrsupplocationurl{#2}% + \glshypernumber{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdisplaysupploc} +%\changes{1.36}{2018-08-18}{new} +%\begin{definition} +%\cs{glsxtrdisplaysupploc}\marg{prefix}\marg{counter}\marg{format}\marg{src}\marg{location} +%\end{definition} +%This is like \cs{glsnoidxdisplayloc} but is used for supplementary +%locations and so requires an extra argument. +% \begin{macrocode} +\newcommand*\glsxtrdisplaysupploc[5]{% + \setentrycounter[#1]{#2}% + \glsxtrmultisupplocation{#5}{#4}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdisplaylocnameref} +%\changes{1.37}{2018-11-30}{new} +%\cs{glsxtrdisplaylocnameref}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{name}\marg{href}\marg{hcounter}\marg{external +%file} +%Used with the \sty[nameref]{record} package option. The \meta{href} +%argument was obtained from \cs{@currentHref} and the +%\meta{hcounter} argument was obtained from \cs{theHentrycounter}, +%which is more reliable. +%If \sty{hyperref} hasn't been loaded, this just behaves like \cs{glsnoidxdisplayloc}. +% \begin{macrocode} +\ifundef\hyperlink +{ + \newcommand*{\glsxtrdisplaylocnameref}[8]{% + \glsnoidxdisplayloc{#1}{#2}{#3}{#4}% + } +} +{ +% \end{macrocode} +% Default action uses \meta{hcounter}. Equations and pages typically don't +% have a title, so check the counter name. +% \begin{macrocode} + \newcommand*{\glsxtrdisplaylocnameref}[8]{% + \ifstrequal{#2}{equation}% + {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + {% + \ifstrempty{#5}% + {% +% \end{macrocode} +%No title, so just use the location as the link text. +% \begin{macrocode} + \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% + }% + {% + \ifstrequal{#2}{page}% + {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% + {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% + }% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnamereflink} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrfmtnamereflink}\marg{format}\marg{title}\marg{href}\marg{external +%file} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrnamereflink}[4]{% +% \end{macrocode} +%Locally change \cs{glshypernumber} to \cs{@firstofone} to +%remove the normal location hyperlink. +% \begin{macrocode} + \begingroup + \let\glshypernumber\@firstofone +% \end{macrocode} +%If the \meta{external file} argument is empty, an internal link is used, +%otherwise an external one is needed. +% \begin{macrocode} + \ifstrempty{#4}% + {\glsxtrfmtinternalnameref{#3}{#1}{#2}}% + {\glsxtrfmtexternalnameref{#3}{#1}{#2}{#4}}% + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnameloclink} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrnamerefloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{text}\marg{external +%file} +%\end{definition} +%Like \cs{@gls@numberlink}, this creates a hyperlink to the +%target obtained from the prefix, counter and location but uses +%\meta{text} as the hyperlink text. As with regular indexing, this +%will fail if the target name can't be formed by prefixing the +%location value. +% \begin{macrocode} +\newcommand{\glsxtrnameloclink}[6]{% + \begingroup + \setentrycounter[#1]{#2}% + \def\glsxtr@locationhypertext{#5}% + \let\glshypernumber\@firstofone + \def\@glsnumberformat{#3}% + \def\glsxtrsupplocationurl{#6}% + \toks@={}% + \@glsxtr@bibgls@removespaces#4 \@nil + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@bibgls@removespaces} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\def\@glsxtr@bibgls@removespaces#1 #2\@nil{% + \toks@=\expandafter{\the\toks@#1}% + \ifx\\#2\\% + \edef\x{\the\toks@}% + \ifx\x\empty + \else + \protected@edef\x{\glsentrycounter\@glo@counterprefix\the\toks@}% + \ifdefvoid\glsxtrsupplocationurl + {% + \expandafter\glsxtrfmtinternalnameref\expandafter{\x}% + {\@glsnumberformat}{\glsxtr@locationhypertext}% + }% + {% + \expandafter\glsxtrfmtexternalnameref\expandafter{\x}% + {\@glsnumberformat}{\glsxtr@locationhypertext}{\glsxtrsupplocationurl}% + }% + \fi + \else + \@gls@ReturnAfterFi{% + \@glsxtr@bibgls@removespaces#2\@nil + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfmtinternalnameref} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrfmtinternalnameloc}\marg{target}\marg{format}\marg{title} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrfmtinternalnameref}[3]{% + \csuse{#2}{\glsdohyperlink{#1}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfmtexternalnameref} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrfmtexternalnameloc}\marg{target}\marg{format}\marg{title}\marg{file} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrfmtexternalnameref}[4]{% + \csuse{#2}{\hyperref{#4}{}{#1}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrSetWidest} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrSetWidest}\marg{type}\marg{level}\marg{text} +%\end{definition} +%As from \gls{bib2gls} v1.8, this is used by the \texttt{set-widest} +%resource option for the \glostyle{alttree} and the styles +%provided by the \sty{glossary-longextra} package. +% \begin{macrocode} +\newcommand*{\glsxtrSetWidest}[3]{% +% \end{macrocode} +%Check which style options have been provided. (The style packages +%may not have been loaded.) +% \begin{macrocode} + \ifdef\glsupdatewidest + {% + \ifdef\glslongextraUpdateWidest + {% +% \end{macrocode} +%Relevant style packages all loaded. +%If the \meta{type} has been given, append to glossary preamble. +% \begin{macrocode} + \ifstrempty{#1} + {% + \glsupdatewidest[#2]{#3}% + \ifnum#2=0\relax + \glslongextraUpdateWidest{#3}% + \else + \glslongextraUpdateWidestChild{#2}{#3}% + \fi + }% + {% + \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}% + \ifnum#2=0\relax + \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}% + \else + \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}% + \fi + }% + }% + {% +% \end{macrocode} +%Only \glostyle{alttree}. +% \begin{macrocode} + \ifstrempty{#1} + {% + \glsupdatewidest[#2]{#3}% + }% + {% + \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}% + }% + }% + }% + {% +% \end{macrocode} +%\cs{glsupdatewidest} hasn't been defined. This could just mean +%that the \sty{glossaries-extra-stylemods} package hasn't been +%loaded. +% \begin{macrocode} + \ifdef\glssetwidest + {% + \ifdef\glslongextraUpdateWidest + {% +% \end{macrocode} +%Relevant \sty{glossary-tree} and \sty{glossary-longextra} have been loaded. +%If the \meta{type} has been given, append to glossary preamble. +% \begin{macrocode} + \ifstrempty{#1} + {% + \glssetwidest[#2]{#3}% + \ifnum#2=0\relax + \glslongextraUpdateWidest{#3}% + \else + \glslongextraUpdateWidestChild{#2}{#3}% + \fi + }% + {% + \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}% + \ifnum#2=0\relax + \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}% + \else + \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}% + \fi + }% + }% + {% +% \end{macrocode} +%Only \glostyle{alttree}. +% \begin{macrocode} + \ifstrempty{#1} + {% + \glssetwidest[#2]{#3}% + }% + {% + \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}% + }% + }% + }% + {% + \ifdef\glslongextraUpdateWidest + {% +% \end{macrocode} +%\sty{glossary-longextra} has been loaded. +% \begin{macrocode} + \ifstrempty{#1} + {% + \ifnum#2=0\relax + \glslongextraUpdateWidest{#3}% + \else + \glslongextraUpdateWidestChild{#2}{#3}% + \fi + }% + {% + \ifnum#2=0\relax + \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}% + \else + \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}% + \fi + }% + }% +% \end{macrocode} +%Neither \sty{glossary-tree} nor \sty{glossary-longextra} have been +%loaded. Do nothing. +% \begin{macrocode} + {}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrSetWidestFallback} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list} +%\end{definition} +%Used when \gls{bib2gls} can't determine the widest name. +%The \meta{list} argument is a comma-separated list of glossary +%labels. The \meta{max depth} refers to the maximum hierarchical +%depth. This will either be 0 (only top-level entries) or 2 +%(up to two child-levels). +% \begin{macrocode} +\newcommand*{\glsxtrSetWidestFallback}[2]{% + \ifnum#1=0\relax + \ifdef\glsFindWidestTopLevelName + {% + \glsFindWidestTopLevelName[#2]% + }% + {% + \GlossariesExtraWarning{You need stylemods={tree} to + provide a fallback for set-widest}% + }% + \else + \ifdef\glsFindWidestLevelTwo + {% + \glsFindWidestLevelTwo[#2]% + \ifdef\glslongextraUpdateWidestChild + {% + \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnamei}}% + \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnameii}}% + }% + {}% + }% + {% + \GlossariesExtraWarning{You need stylemods={tree} to + provide a fallback for set-widest}% + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@labelprefixes} +%\changes{1.37}{2018-11-30}{new} +%List of label prefixes. +% \begin{macrocode} +\newcommand*{\@glsxtr@labelprefixes}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrclearlabelprefixes} +%\changes{1.37}{2018-11-30}{new} +%List of label prefixes. +% \begin{macrocode} +\newcommand*{\glsxtrclearlabelprefixes}{% + \renewcommand*{\@glsxtr@labelprefixes}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtraddlabelprefix} +%\changes{1.37}{2018-11-30}{new} +%Add prefix to the list. +%These should be added in the order of precedence with the last one +%as a fallback. This doesn't check against +%duplicates as it may be useful to replicate a prefix at the end as +%the fallback. +% \begin{macrocode} +\newcommand*{\glsxtraddlabelprefix}[1]{% + \ifstrempty{#1}% + {\glsxtraddlabelprefix{\empty}}% + {% + \ifdefempty\@glsxtr@labelprefixes + {\def\@glsxtr@labelprefixes{#1}}% + {\appto\@glsxtr@labelprefixes{,#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrprependlabelprefix} +%\changes{1.37}{2018-11-30}{new} +%Inserts at the start of the list. +% \begin{macrocode} +\newcommand*{\glsxtrprependlabelprefix}[1]{% + \ifstrempty{#1}% + {\glsxtrprependlabelprefix{\empty}}% + {% + \ifdefempty\@glsxtr@labelprefixes + {\def\@glsxtr@labelprefixes{#1}}% + {\preto\@glsxtr@labelprefixes{#1,}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifinlabelprefixlist} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glsxtrifinlabelprefixlist}\marg{prefix}\marg{true}\marg{false} +%\end{definition} +%Test if the given prefix is in the list. +% \begin{macrocode} +\newcommand*{\glsxtrifinlabelprefixlist}[3]{% + \ifstrempty{#1}% + {\glsxtrifinlabelprefixlist{\empty}{#2}{#3}}% + {% + \DTLifinlist{#1}{\@glsxtr@labelprefixes}{#2}{#3}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@prefixlabellist} +%\changes{1.37}{2018-11-30}{new} +%This is provided for the benefit of \gls{bib2gls}. It's possible +%that the user may add more prefixes after the start of the +%document, but that can lead to inconsistencies. The final element +%of the list (the fallback) is the only prefix of interest for \gls{bib2gls}. +% \begin{macrocode} +\AtBeginDocument{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}% + \protected@write\@auxout{}{\string\@glsxtr@prefixlabellist{\@glsxtr@labelprefixes}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@get@prefixedlabel} +%\changes{1.37}{2018-11-30}{new} +%Iterate through all the prefixes and find the first +%prefix and label combination that exists. If none found, this could +%mean that it's the first \LaTeX\ run, so the last prefix in the +%list needs to be the fallback one. Grouping is used in case +%of a nested for loop. +% \begin{macrocode} +\newcommand*{\@glsxtr@get@prefixedlabel}[1]{% + \begingroup +% \end{macrocode} +%Initialise to the unprefixed label in the event that the list is +%empty. +% \begin{macrocode} + \edef\@gls@thislabel{#1}% + \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do + {% + \edef\@gls@thislabel{\@glsxtr@prefix#1}% + \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}% + }% + \edef\x{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\x +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dgls} +%\changes{1.37}{2018-11-30}{new} +%Like \cs{gls} but tries the prefixes. (Can't use \cs{pgls} as +%that's provided by \sty{glossaries-prefix}.) Since this command +%is designed for \app{bib2gls}'s dual entry system, the \qt{d} +%stands for \qt{dual}. +% \begin{macrocode} +\newrobustcmd*{\dgls}{\@gls@hyp@opt\@dgls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dgls} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dgls}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@gls@{#1}{\@gls@thislabel}}{\@gls@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglspl} +% \begin{macrocode} +\newrobustcmd*{\dglspl}{\@gls@hyp@opt\@dglspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dglspl} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dglspl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@glspl@{#1}{\@gls@thislabel}}{\@glspl@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGls} +% \begin{macrocode} +\newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGls} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dGls}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@Gls@{#1}{\@gls@thislabel}}{\@Gls@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGlspl} +% \begin{macrocode} +\newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGlspl} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dGlspl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@Glspl@{#1}{\@gls@thislabel}}{\@Glspl@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGLS} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGLS} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dGLS}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@GLS@{#1}{\@gls@thislabel}}{\@GLS@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGLSpl} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGLSpl} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\@dGLSpl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@GLSpl@{#1}{\@gls@thislabel}}{\@GLSpl@{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglslink} +%\changes{1.37}{2018-11-30}{new} +%Like \cs{glslink} but tries the prefixes. +% \begin{macrocode} +\newrobustcmd*{\dglslink}[3][]{% + \@glsxtr@get@prefixedlabel{#2}% + \glslink[#1]{\@gls@thislabel}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglsdisp} +%\changes{1.37}{2018-11-30}{new} +%Like \cs{glsdisp} but tries the prefixes. +% \begin{macrocode} +\newrobustcmd*{\dglsdisp}[3][]{% + \@glsxtr@get@prefixedlabel{#2}% + \glsdisp[#1]{\@gls@thislabel}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%Provide missing Greek letters for use in maths mode. +%These commands are recognised by \app{bib2gls} and will be mapped to the +%Mathematical Greek Italic letters. This ensures that the Greek +%letters that have the same shape as Latin letters are kept +%with the other mathematical Greek letters for sorting purposes. +%The \LaTeX\ version of these commands (provided here) use an upright font +%for capitals and italic for lower case to provide a better match +%with the other Greek symbols provided by the kernel. +% +%\begin{macro}{\Alpha} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Alpha}{\mathrm{A}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Beta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Beta}{\mathrm{B}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Epsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Epsilon}{\mathrm{E}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Zeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Zeta}{\mathrm{Z}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Eta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Eta}{\mathrm{H}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Iota} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Iota}{\mathrm{I}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Kappa} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Kappa}{\mathrm{K}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Mu}{\mathrm{M}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Nu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Nu}{\mathrm{N}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Omicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Omicron}{\mathrm{O}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Rho} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Rho}{\mathrm{P}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Tau} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Tau}{\mathrm{T}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Chi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Chi}{\mathrm{X}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Digamma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\Digamma}{\mathrm{F}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\omicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\providecommand*{\omicron}{\mathit{o}} +% \end{macrocode} +%\end{macro} +% +%Provide corresponding upright characters if \sty{upgreek} has been +%loaded. (The upper case characters are the same as above.) +% \begin{macrocode} +\@ifpackageloaded{upgreek}% +{ +% \end{macrocode} +%\begin{macro}{\Upalpha} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upalpha}{\mathrm{A}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upbeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upbeta}{\mathrm{B}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upepsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upepsilon}{\mathrm{E}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upzeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upzeta}{\mathrm{Z}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upeta}{\mathrm{H}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upiota} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upiota}{\mathrm{I}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upkappa} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upkappa}{\mathrm{K}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upmu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upmu}{\mathrm{M}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upnu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upnu}{\mathrm{N}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upomicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upomicron}{\mathrm{O}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Uprho} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Uprho}{\mathrm{P}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Uptau} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Uptau}{\mathrm{T}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Upchi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\Upchi}{\mathrm{X}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\upomicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} + \providecommand*{\upomicron}{\mathrm{o}} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +}% +{}% upgreek.sty not loaded +% \end{macrocode} +% +%This package provides some basic rules, but it's not intended for +%complete coverage of all locales. The CLDR should provide the +%appropriate locale-sensitive rules. These macros are primarily to +%help construct custom rules to include, for example, Greek maths symbols +%mixed with Latin. For the full rule syntax, see the Java API for +%\href{https://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html}{RuleBaseCollator} +% +%If you want to provide a rule-block for a particular locale to +%allow for customization within that locale, create a file called +%\texttt{glossariesxtr-\meta{tag}.ldf} (where \meta{tag} identifies +%the locale) and add similar commands. See the description +%of \cs{IfTrackedLanguageFileExists} in the \sty{tracklang} manual +%for the allowed forms of \meta{tag}. The simplest is to just use +%the root language label or ISO code. The file will then be automatically loaded +%by \styfmt{glossaries-extra} if the document has support for that +%language. +% +%When combining these blocks of rules, remember to separate them +%with the appropriate character. For example: +%\begin{verbatim} +%sort-rule={\glsxtrcontrolrules +% ;\glsxtrspacerules +% ;\glsxtrnonprintablerules +% ;\glsxtrcombiningdiacriticrules +% ,\glsxtrhyphenrules +% <\glsxtrgeneralpuncrules +% <\glsxtrdigitrules +% <\glsxtrfractionrules +% <\glsxtrGeneralLatinIVrules +% <\glsxtrMathItalicGreekIrules +%} +%\end{verbatim} +% +%\begin{macro}{\glsxtrcontrolrules} +%\changes{1.27}{2018-02-26}{new} +%These are control characters that are usually placed at the start +%of a rule in the `ignored characters' section. These control +%characters are unlikely to appear in any entry fields but are +%provided for completeness. +%\cs{string} is used for punctuation characters in case they've been +%made active. +% \begin{macrocode} +\newcommand*{\glsxtrcontrolrules}{% + \string'\glshex 200B\string'\string=\glshex 200C\string=\glshex 200D + \string=\glshex 200E\string=\glshex 200F\string=\glshex 0000\string=\glshex 0001 + \string=\glshex 0002\string=\glshex 0003\string=\glshex 0004\string=\glshex 0005 + \string=\glshex 0006\string=\glshex 0007\string=\glshex 0008 + \string=\string'\glshex 0009\string'\string=\string'\glshex 000B\string' + \string=\glshex 000E\string=\glshex 000F\string=\string'\glshex +0010\string'\string=\glshex 0011 + \string=\glshex 0012\string=\glshex 0013\string=\glshex 0014\string=\glshex 0015 + \string=\glshex 0016\string=\glshex 0017\string=\glshex 0018\string=\glshex 0019 + \string=\glshex 001A\string=\glshex 001B\string=\glshex 001C\string=\glshex 001D + \string=\glshex 001E\string=\glshex 001F\string=\glshex 007F\string=\glshex 0080 + \string=\glshex 0081\string=\glshex 0082\string=\glshex 0083\string=\glshex 0084 + \string=\glshex 0085\string=\glshex 0086\string=\glshex 0087\string=\glshex 0088 + \string=\glshex 0089\string=\glshex 008A\string=\glshex 008B\string=\glshex 008C + \string=\glshex 008D\string=\glshex 008E\string=\glshex 008F\string=\glshex 0090 + \string=\glshex 0091\string=\glshex 0092\string=\glshex 0093\string=\glshex 0094 + \string=\glshex 0095\string=\glshex 0096\string=\glshex 0097\string=\glshex 0098 + \string=\glshex 0099\string=\glshex 009A\string=\glshex 009B\string=\glshex 009C + \string=\glshex 009D\string=\glshex 009E\string=\glshex 009F +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrspacerules} +%\changes{1.27}{2018-02-26}{new} +%These are space characters. +% \begin{macrocode} +\newcommand*{\glsxtrspacerules}{% + \string' \string'\string; + \string'\glshex 00A0\string'\string; + \string'\glshex 2000\string'\string; + \string'\glshex 2001\string'\string; + \string'\glshex 2002\string'\string; + \string'\glshex 2003\string'\string; + \string'\glshex 2004\string'\string; + \string'\glshex 2005\string'\string; + \string'\glshex 2006\string'\string; + \string'\glshex 2007\string'\string; + \string'\glshex 2008\string'\string; + \string'\glshex 2009\string'\string; + \string'\glshex 200A\string'\string; + \string'\glshex 3000\string' +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnonprintablerules} +%\changes{1.27}{2018-02-26}{new} +%These are non-printable characters (BOM, tabs, line feed and carriage +%return). +% \begin{macrocode} +\newcommand*{\glsxtrnonprintablerules}{% + \string'\glshex FEFF\string'\string; + \string'\glshex 000A\string'\string; + \string'\glshex 0009\string'\string; + \string'\glshex 000C\string'\string; + \string'\glshex 000B\string' +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\glsxtrcombiningdiacriticrules} +%\changes{1.27}{2018-02-26}{new} +%Combining diacritic marks. This is split into multiple macros. +% \begin{macrocode} +\newcommand*{\glsxtrcombiningdiacriticrules}{% + \glsxtrcombiningdiacriticIrules\string; + \glsxtrcombiningdiacriticIIrules\string; + \glsxtrcombiningdiacriticIIIrules\string; + \glsxtrcombiningdiacriticIVrules +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcombiningdiacriticIrules} +%\changes{1.27}{2018-02-26}{new} +%First set of combining diacritic marks. +% \begin{macrocode} +\newcommand*{\glsxtrcombiningdiacriticIrules}{% + \glshex 0301\string;% combining acute + \glshex 0300\string;% combining grave + \glshex 0306\string;% combining breve + \glshex 0302\string;% combining circumflex + \glshex 030C\string;% combining caron + \glshex 030A\string;% combining ring + \glshex 030D\string;% combining vertical line above + \glshex 0308\string;% combining diaeresis + \glshex 030B\string;% combining double acute + \glshex 0303\string;% combining tilde + \glshex 0307\string;% combining dot above + \glshex 0304% combining macron +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcombiningdiacriticIIrules} +%\changes{1.27}{2018-02-26}{new} +%Second set of combining diacritic marks. +% \begin{macrocode} +\newcommand*{\glsxtrcombiningdiacriticIIrules}{% + \glshex 0337\string;% combining short solidus overlay + \glshex 0327\string;% combining cedilla + \glshex 0328\string;% combining ogonek + \glshex 0323\string;% combining dot below + \glshex 0332\string;% combining low line + \glshex 0305\string;% combining overline + \glshex 0309\string;% combining hook above + \glshex 030E\string;% combining double vertical line above + \glshex 030F\string;% combining double grave accent + \glshex 0310\string;% combining candrabindu + \glshex 0311\string;% combining inverted breve + \glshex 0312\string;% combining turned comma above + \glshex 0313\string;% combining comma above + \glshex 0314\string;% combining reversed comma above + \glshex 0315\string;% combining comma above right + \glshex 0316\string;% combining grave accent below + \glshex 0317% combining acute accent below +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcombiningdiacriticIIIrules} +%\changes{1.27}{2018-02-26}{new} +%Third set of combining diacritic marks. +% \begin{macrocode} +\newcommand*{\glsxtrcombiningdiacriticIIIrules}{% + \glshex 0318\string;% combining left tack below + \glshex 0319\string;% combining right tack below + \glshex 031A\string;% combining left angle above + \glshex 031B\string;% combining horn + \glshex 031C\string;% combining left half ring below + \glshex 031D\string;% combining up tack below + \glshex 031E\string;% combining down tack below + \glshex 031F\string;% combining plus sign below + \glshex 0320\string;% combining minus sign below + \glshex 0321\string;% combining palatalized hook below + \glshex 0322\string;% combining retroflex hook below + \glshex 0324\string;% combining diaresis below + \glshex 0325\string;% combining ring below + \glshex 0326\string;% combining comma below + \glshex 0329\string;% combining vertical line below + \glshex 032A\string;% combining bridge below + \glshex 032B\string;% combining inverted double arch below + \glshex 032C\string;% combining caron below + \glshex 032D\string;% combining circumflex accent below + \glshex 032E\string;% combining breve below + \glshex 032F\string;% combining inverted breve below + \glshex 0330\string;% combining tilde below + \glshex 0331\string;% combining macron below + \glshex 0333\string;% combining double low line + \glshex 0334\string;% combining tilde overlay + \glshex 0335\string;% combining short stroke overlay + \glshex 0336\string;% combining long stroke overlay + \glshex 0338\string;% combining long solidus overlay + \glshex 0339\string;% combining combining right half ring below + \glshex 033A\string;% combining inverted bridge below + \glshex 033B\string;% combining square below + \glshex 033C\string;% combining seagull below + \glshex 033D\string;% combining x above + \glshex 033E\string;% combining vertical tilde + \glshex 033F\string;% combining double overline + \glshex 0342\string;% combining Greek perispomeni + \glshex 0344\string;% combining Greek dialytika tonos + \glshex 0345\string;% combining Greek ypogegrammeni + \glshex 0360\string;% combining double tilde + \glshex 0361\string;% combining double inverted breve + \glshex 0483\string;% combining Cyrillic titlo + \glshex 0484\string;% combining Cyrillic palatalization + \glshex 0485\string;% combining Cyrillic dasia pneumata + \glshex 0486% combining Cyrillic psili pneumata +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcombiningdiacriticIVrules} +%\changes{1.27}{2018-02-26}{new} +%Fourth set of combining diacritic marks. +% \begin{macrocode} +\newcommand*{\glsxtrcombiningdiacriticIVrules}{% + \glshex 20D0\string;% combining left harpoon above + \glshex 20D1\string;% combining right harpoon above + \glshex 20D2\string;% combining long vertical line overlay + \glshex 20D3\string;% combining short vertical line overlay + \glshex 20D4\string;% combining anticlockwise arrow above + \glshex 20D5\string;% combining clockwise arrow above + \glshex 20D6\string;% combining left arrow above + \glshex 20D7\string;% combining right arrow above + \glshex 20D8\string;% combining ring overlay + \glshex 20D9\string;% combining clockwise ring overlay + \glshex 20DA\string;% combining anticlockwise ring overlay + \glshex 20DB\string;% combining three dots above + \glshex 20DC\string;% combining four dots above + \glshex 20DD\string;% combining enclosing circle + \glshex 20DE\string;% combining enclosing square + \glshex 20DF\string;% combining enclosing diamond + \glshex 20E0\string;% combining enclosing circle backslash + \glshex 20E1% combining left right arrow above +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrhyphenrules} +%\changes{1.27}{2018-02-26}{new} +%Hyphens. +% \begin{macrocode} +\newcommand*{\glsxtrhyphenrules}{% + \string'\string-\string'\string;% ASCII hyphen + \glshex 00AD\string;% soft hyphen + \glshex 2010\string;% hyphen + \glshex 2011\string;% non-breaking hyphen + \glshex 2012\string;% figure dash + \glshex 2013\string;% en dash + \glshex 2014\string;% em dash + \glshex 2015\string;% horizontal bar + \glshex 2212\string=\glshex 207B\string=\glshex 208B% minus sign +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncrules} +%\changes{1.27}{2018-02-26}{new} +%General punctuation. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncrules}{% + \glsxtrgeneralpuncIrules + \string<\glsxtrcurrencyrules + \string<\glsxtrgeneralpuncIIrules +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncIrules} +%\changes{1.27}{2018-02-26}{new} +%First set of general punctuation. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncIrules}{% + \string'\glshex 005F\string'% underscore + \string<\glshex 00AF% macron + \string<\string'\glshex 002C\string'% comma + \string<\string'\glshex 003B\string'% semi-colon + \string<\string'\glshex 003A\string'% colon + \string<\string'\glshex 0021\string'% exclamation mark + \string<\glshex 00A1% inverted exclamation mark + \string<\string'\glshex 003F\string'% question mark + \string<\glshex 00BF% inverted question mark + \string<\string'\glshex 002F\string'% solidus + \string<\string'\glshex 002E\string'% full stop + \string<\glshex 00B4% acute accent + \string<\string'\glshex 0060\string'% grave accent + \string<\string'\glshex 005E\string'% circumflex accent + \string<\glshex 00A8% diaersis + \string<\string'\glshex 007E\string'% tilde + \string<\glshex 00B7% middle dot + \string<\glshex 00B8% cedilla + \string<\string'\glshex 0027\string'% straight apostrophe + \string<\string'\glshex 0022\string'% straight double quote + \string<\glshex 00AB% left guillemet + \string<\glshex 00BB% right guillemet + \string<\string'\glshex 0028\string'% left parenthesis + \string=\glshex 207D\string=\glshex 208D% super/subscript left parenthesis + \string<\string'\glshex 0029\string'% right parenthesis + \string=\glshex 207E\string=\glshex 208E% super/subscript right parenthesis + \string<\string'\glshex 005B\string'% left square bracket + \string<\string'\glshex 005D\string'% right square bracket + \string<\string'\glshex 007B\string'% left curly bracket + \string<\string'\glshex 007D\string'% right curly bracket + \string<\glshex 00A7% section sign + \string<\glshex 00B6% pilcrow sign + \string<\glshex 00A9% copyright sign + \string<\glshex 00AE% registered sign + \string<\string'\glshex 0040\string'% at sign +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcurrencyrules} +%\changes{1.27}{2018-02-26}{new} +%General punctuation. +% \begin{macrocode} +\newcommand*{\glsxtrcurrencyrules}{% + \glshex 00A4% currency sign + \string<\glshex 0E3F% Thai currency symbol baht + \string<\glshex 00A2% cent sign + \string<\glshex 20A1% colon sign + \string<\glshex 20A2% cruzeiro sign + \string<\string'\glshex 0024\string'% dollar sign + \string<\glshex 20AB% dong sign + \string<\glshex 20AC% euro sign + \string<\glshex 20A3% French franc sign + \string<\glshex 20A4% lira sign + \string<\glshex 20A5% mill sign + \string<\glshex 20A6% naira sign + \string<\glshex 20A7% peseta sign + \string<\glshex 00A3% pound sign + \string<\glshex 20A8% rupee sign + \string<\glshex 20AA% new sheqel sign + \string<\glshex 20A9% won sign + \string<\glshex 00A5% yen sign +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncIIrules} +%\changes{1.27}{2018-02-26}{new} +%Second set of general punctuation. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncIIrules}{% + \string'\glshex 002A\string'% asterisk + \string<\string'\glshex 005C\string'% backslash + \string<\string'\glshex 0026\string'% ampersand + \string<\string'\glshex 0023\string'% hash sign + \string<\string'\glshex 0025\string'% percent sign + \string<\string'\glshex 002B\string'% plus sign + \string=\glshex 207A\string=\glshex 208A% super/subscript plus sign + \string<\glshex 00B1% plus-minus sign + \string<\glshex 00F7% division sign + \string<\glshex 00D7% multiplication sign + \string<\string'\glshex 003C\string'% less-than sign + \string<\string'\glshex 003D\string'% equals sign + \string<\string'\glshex 003E\string'% greater-than sign + \string<\glshex 00AC% not sign + \string<\string'\glshex 007C\string'% vertical bar (pipe) + \string<\glshex 00A6% broken bar + \string<\glshex 00B0% degree sign + \string<\glshex 00B5% micron sign +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinIrules} +%\changes{1.27}{2018-02-26}{new} +%Basic Latin alphabet. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinIrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string<\glsxtrLatinT + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinIIrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (eth between D and E, \ss\ treated as SS). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinIIrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SS \string, \glsxtrLatinEszettSs + \string<\glsxtrLatinT + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinIIIrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (eth between D and E, \ss\ treated as SZ). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinIIIrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SZ, \glsxtrLatinEszettSz + \string<\glsxtrLatinT + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinIVrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (\AE\ treated as AE and \OE treated as OE, +%\TH treated as TH, \ss\ treated as SS, eth between D and E). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinIVrules}{% + \glsxtrLatinA + \string& AE , \glsxtrLatinAELigature + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string& OE , \glsxtrLatinOELigature + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SS , \glsxtrLatinEszettSs + \string<\glsxtrLatinT + \string& th =\glshex 00DE + \string& TH =\glshex 00FE + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinVrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (eth between D and E, \ss\ treated as SS, +%\TH\ treated as TH). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinVrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SS , \glsxtrLatinEszettSs + \string<\glsxtrLatinT + \string& th =\glshex 00DE + \string& TH =\glshex 00FE + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinVIrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (eth between D and E, \ss\ treated as SZ, +%\TH\ treated as TH). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinVIrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SZ , \glsxtrLatinEszettSz + \string<\glsxtrLatinT + \string& th =\glshex 00DE + \string& TH =\glshex 00FE + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinVIIrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (\AE\ between A and B, eth between D and E, +%insular G as G, \OE\ between O and P, long S equivalent to S, +%\TH\ between T and U and wynn as W). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinVIIrules}{% + \glsxtrLatinA + \string<\glsxtrLatinAELigature + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinEth + \string<\glsxtrLatinE + \string<f,F% + \string<\glsxtrLatinInsularG + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinOELigature + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glshex 017F=\glsxtrLatinS % s and long s + \string<\glsxtrLatinT + \string<\glsxtrLatinThorn + \string<u,U% + \string<v,V% + \string< w\string=\glshex 01BF, W\string=\glshex 01F7 + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinVIIIrules} +%\changes{1.27}{2018-02-26}{new} +%General Latin alphabet (\AE\ treated as AE and \OE treated as OE, +%\TH treated as TH, \ss\ treated as SS, eth treated as D, \O\ +%treated as O, \L\ treated as L). +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinVIIIrules}{% + \glsxtrLatinA + \string& AE , \glsxtrLatinAELigature + \string<b,B% + \string<c,C% + \string<\glshex 00F0\string;d,\glshex 00D0\string;D% D and eth + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glshex 0142\string=\glsxtrLatinL\string=\glshex 0141% L and \L + \string<\glsxtrLatinM + \string<\glsxtrLatinN + \string<\glshex 00F8\string=\glsxtrLatinO\string=\glshex 00D8% O and \O + \string& OE , \glsxtrLatinOELigature + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS + \string& SS , \glsxtrLatinEszettSs + \string<\glsxtrLatinT + \string& th =\glshex 00DE + \string& TH =\glshex 00FE + \string<u,U% + \string<v,V% + \string<w,W% + \string<\glsxtrLatinX + \string<y,Y% + \string<z,Z% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinA} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinA}{% + a\string=\glshex 00AA\string=\glshex 2090,A +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinE} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinE}{% + e\string=\glshex 2091,E +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinH} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinH}{% + h\string=\glshex 2095,H +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinI} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinI}{% + i\string=\glshex 2071,I +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinK} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinK}{% + k\string=\glshex 2096,K +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinL} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinL}{% + l\string=\glshex 2097,L +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinM} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinM}{% + m\string=\glshex 2098,M +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinN} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinN}{% + n\string=\glshex 207F\string=\glshex 2099,N +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinO} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinO}{% + o\string=\glshex 00BA\string=\glshex 2092,O +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinP} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinP}{% + p\string=\glshex 209A,P +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinS} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinS}{% + s\string=\glshex 209B,S +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinT} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinT}{% + t\string=\glshex 209C,T +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinX} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinX}{% + x\string=\glshex 2093,X +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinSchwa} +%\changes{1.27}{2018-02-26}{new} +%Latin schwa (lower case, subscript and upper case). +% \begin{macrocode} +\newcommand*{\glsxtrLatinSchwa}{% + \glshex 0259\string=\glshex 2094,\glshex 018F +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinEszettSs} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinEszettSs}{% + \glshex 00DF% eszett + \string=\glshex 017Fs % long S s +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinEszettSz} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinEszettSz}{% + \glshex 00DF% eszett + \string= \glshex 017Fz % long S z +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinEth} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinEth}{% + \glshex 00F0,\glshex 00D0% eth +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinThorn} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinThorn}{% + \glshex 00FE,\glshex 00DE% thorn +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinAELigature} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinAELigature}{% + \glshex 00E6,\glshex 00C6% AE-ligature +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinOELigature} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinOELigature}{% + \glshex 0153,\glshex 0152% OE-ligature +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinAA} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinAA}{% + \glshex 00E5=a\glshex 030A,% \aa + \glshex 00C5=A\glshex 030A% \AA +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinWynn} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinWynn}{% + \glshex 01BF,\glshex 01F7% wynn +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinInsularG} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinInsularG}{% + \glshex 1D79,\glshex A77D% insular G + \string; g, G +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinOslash} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinOslash}{% + \glshex 00F8,\glshex 00D8% \o, \O +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrLatinLslash} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrLatinLslash}{% + \glshex 0142,\glshex 0141% \l, \L +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathUpGreekIrules} +%\changes{1.27}{2018-02-26}{new} +%Includes digamma between epsilon and zeta. +% \begin{macrocode} +\newcommand*{\glsxtrMathUpGreekIrules}{% + \glsxtrUpAlpha + \string<\glsxtrUpBeta + \string<\glsxtrUpGamma + \string<\glsxtrUpDelta + \string<\glsxtrUpEpsilon + \string<\glsxtrUpDigamma + \string<\glsxtrUpZeta + \string<\glsxtrUpEta + \string<\glsxtrUpTheta + \string<\glsxtrUpIota + \string<\glsxtrUpKappa + \string<\glsxtrUpLambda + \string<\glsxtrUpMu + \string<\glsxtrUpNu + \string<\glsxtrUpXi + \string<\glsxtrUpOmicron + \string<\glsxtrUpPi + \string<\glsxtrUpRho + \string<\glsxtrUpSigma + \string<\glsxtrUpTau + \string<\glsxtrUpUpsilon + \string<\glsxtrUpPhi + \string<\glsxtrUpChi + \string<\glsxtrUpPsi + \string<\glsxtrUpOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathUpGreekIIrules} +%\changes{1.27}{2018-02-26}{new} +%Doesn't include digamma. +% \begin{macrocode} +\newcommand*{\glsxtrMathUpGreekIIrules}{% + \glsxtrUpAlpha + \string<\glsxtrUpBeta + \string<\glsxtrUpGamma + \string<\glsxtrUpDelta + \string<\glsxtrUpEpsilon + \string<\glsxtrUpZeta + \string<\glsxtrUpEta + \string<\glsxtrUpTheta + \string<\glsxtrUpIota + \string<\glsxtrUpKappa + \string<\glsxtrUpLambda + \string<\glsxtrUpMu + \string<\glsxtrUpNu + \string<\glsxtrUpXi + \string<\glsxtrUpOmicron + \string<\glsxtrUpPi + \string<\glsxtrUpRho + \string<\glsxtrUpSigma + \string<\glsxtrUpTau + \string<\glsxtrUpUpsilon + \string<\glsxtrUpPhi + \string<\glsxtrUpChi + \string<\glsxtrUpPsi + \string<\glsxtrUpOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicGreekIrules} +%\changes{1.27}{2018-02-26}{new} +%Includes (upright) digamma between epsilon and zeta (there isn't +%an italic digamma), so don't mix with \cs{glsxtrMathUpGreekIrules} +%or there may be unexpected results. +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicGreekIrules}{% + \glsxtrMathItalicAlpha + \string<\glsxtrMathItalicBeta + \string<\glsxtrMathItalicGamma + \string<\glsxtrMathItalicDelta + \string<\glsxtrMathItalicEpsilon + \string<\glsxtrUpDigamma + \string<\glsxtrMathItalicZeta + \string<\glsxtrMathItalicEta + \string<\glsxtrMathItalicTheta + \string<\glsxtrMathItalicIota + \string<\glsxtrMathItalicKappa + \string<\glsxtrMathItalicLambda + \string<\glsxtrMathItalicMu + \string<\glsxtrMathItalicNu + \string<\glsxtrMathItalicXi + \string<\glsxtrMathItalicOmicron + \string<\glsxtrMathItalicPi + \string<\glsxtrMathItalicRho + \string<\glsxtrMathItalicSigma + \string<\glsxtrMathItalicTau + \string<\glsxtrMathItalicUpsilon + \string<\glsxtrMathItalicPhi + \string<\glsxtrMathItalicChi + \string<\glsxtrMathItalicPsi + \string<\glsxtrMathItalicOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicGreekIIrules} +%\changes{1.27}{2018-02-26}{new} +%Doesn't include digamma. +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicGreekIIrules}{% + \glsxtrMathItalicAlpha + \string<\glsxtrMathItalicBeta + \string<\glsxtrMathItalicGamma + \string<\glsxtrMathItalicDelta + \string<\glsxtrMathItalicEpsilon + \string<\glsxtrMathItalicZeta + \string<\glsxtrMathItalicEta + \string<\glsxtrMathItalicTheta + \string<\glsxtrMathItalicIota + \string<\glsxtrMathItalicKappa + \string<\glsxtrMathItalicLambda + \string<\glsxtrMathItalicMu + \string<\glsxtrMathItalicNu + \string<\glsxtrMathItalicXi + \string<\glsxtrMathItalicOmicron + \string<\glsxtrMathItalicPi + \string<\glsxtrMathItalicRho + \string<\glsxtrMathItalicSigma + \string<\glsxtrMathItalicTau + \string<\glsxtrMathItalicUpsilon + \string<\glsxtrMathItalicPhi + \string<\glsxtrMathItalicChi + \string<\glsxtrMathItalicPsi + \string<\glsxtrMathItalicOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicUpperGreekIrules} +%\changes{1.27}{2018-02-26}{new} +%Upper case only (includes upright digamma). +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicUpperGreekIrules}{% + \glshex 1D6E2% upper case alpha (maths italic) + \string<\glshex 1D6E3% upper case beta (maths italic) + \string<\glshex 1D6E4% upper case gamma (maths italic) + \string<\glshex 1D6E5% upper case delta (maths italic) + \string<\glshex 1D6E6% upper case epsilon (maths italic) + \string<\glshex 03DC% upper case digamma + \string<\glshex 1D6E7% upper case zeta (maths italic) + \string<\glshex 1D6E8% upper case eta (maths italic) + \string<\glshex 1D6E9% upper case theta (maths italic) + \string=\glshex 1D6F3% upper case theta variant (maths italic) + \string<\glshex 1D6EA% upper case iota (maths italic) + \string<\glshex 1D6EB% upper case kappa (maths italic) + \string<\glshex 1D6EC% upper case lambda (maths italic) + \string<\glshex 1D6ED% upper case mu (maths italic) + \string<\glshex 1D6EE% upper case nu (maths italic) + \string<\glshex 1D6EF% upper case xi (maths italic) + \string<\glshex 1D6F0% upper case omicron (maths italic) + \string<\glshex 1D6F1% upper case pi (maths italic) + \string<\glshex 1D6F2% upper case rho (maths italic) + \string<\glshex 1D6F4% upper case sigma (maths italic) + \string<\glshex 1D6F5% upper case tau (maths italic) + \string<\glshex 1D6F6% upper case upsilon (maths italic) + \string<\glshex 1D6F7% upper case phi (maths italic) + \string<\glshex 1D6F8% upper case chi (maths italic) + \string<\glshex 1D6F9% upper case psi (maths italic) + \string<\glshex 1D6FA% upper case omega (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicUpperGreekIIrules} +%\changes{1.27}{2018-02-26}{new} +%Upper case only (doesn't include upright digamma). +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicUpperGreekIIrules}{% + \glshex 1D6E2% upper case alpha (maths italic) + \string<\glshex 1D6E3% upper case beta (maths italic) + \string<\glshex 1D6E4% upper case gamma (maths italic) + \string<\glshex 1D6E5% upper case delta (maths italic) + \string<\glshex 1D6E6% upper case epsilon (maths italic) + \string<\glshex 1D6E7% upper case zeta (maths italic) + \string<\glshex 1D6E8% upper case eta (maths italic) + \string<\glshex 1D6E9% upper case theta (maths italic) + \string=\glshex 1D6F3% upper case theta variant (maths italic) + \string<\glshex 1D6EA% upper case iota (maths italic) + \string<\glshex 1D6EB% upper case kappa (maths italic) + \string<\glshex 1D6EC% upper case lambda (maths italic) + \string<\glshex 1D6ED% upper case mu (maths italic) + \string<\glshex 1D6EE% upper case nu (maths italic) + \string<\glshex 1D6EF% upper case xi (maths italic) + \string<\glshex 1D6F0% upper case omicron (maths italic) + \string<\glshex 1D6F1% upper case pi (maths italic) + \string<\glshex 1D6F2% upper case rho (maths italic) + \string<\glshex 1D6F4% upper case sigma (maths italic) + \string<\glshex 1D6F5% upper case tau (maths italic) + \string<\glshex 1D6F6% upper case upsilon (maths italic) + \string<\glshex 1D6F7% upper case phi (maths italic) + \string<\glshex 1D6F8% upper case chi (maths italic) + \string<\glshex 1D6F9% upper case psi (maths italic) + \string<\glshex 1D6FA% upper case omega (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicLowerGreekIrules} +%\changes{1.27}{2018-02-26}{new} +%Lower case only (includes upright digamma). +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicLowerGreekIrules}{% + \glshex 1D6FC% lower case alpha (maths italic) + \string<\glshex 1D6FD% lower case beta (maths italic) + \string<\glshex 1D6FE% lower case gamma (maths italic) + \string<\glshex 1D6FF% lower case delta (maths italic) + \string<\glshex 1D700% lower case epsilon (maths italic) + \string=\glshex 1D716% lower case epsilon variant (maths italic) + \string<\glshex 03DD% lower case digamma + \string<\glshex 1D701% lower case zeta (maths italic) + \string<\glshex 1D702% lower case eta (maths italic) + \string<\glshex 1D703% lower case theta (maths italic) + \string=\glshex 1D717% lower case theta variant (maths italic) + \string<\glshex 1D704% lower case iota (maths italic) + \string<\glshex 1D705% lower case kappa (maths italic) + \string=\glshex 1D718% lower case kappa variant (maths italic) + \string<\glshex 1D706% lower case lambda (maths italic) + \string<\glshex 1D707% lower case mu (maths italic) + \string<\glshex 1D708% lower case nu (maths italic) + \string<\glshex 1D709% lower case xi (maths italic) + \string<\glshex 1D70A% lower case omicron (maths italic) + \string<\glshex 1D70B% lower case pi (maths italic) + \string=\glshex 1D71B% lower case pi variant (maths italic) + \string<\glshex 1D70C% lower case rho (maths italic) + \string=\glshex 1D71A% lower case rho variant (maths italic) + \string<\glshex 1D70D% lower case final sigma (maths italic) + \string=\glshex 1D70E% lower case sigma (maths italic) + \string<\glshex 1D70F% lower case tau (maths italic) + \string<\glshex 1D710% lower case upsilon (maths italic) + \string<\glshex 1D711% lower case phi (maths italic) + \string=\glshex 1D719% lower case phi variant (maths italic) + \string<\glshex 1D712% lower case chi (maths italic) + \string<\glshex 1D713% lower case psi (maths italic) + \string<\glshex 1D714% lower case omega (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicLowerGreekIIrules} +%\changes{1.27}{2018-02-26}{new} +%Lower case only (doesn't includes upright digamma). +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicLowerGreekIIrules}{% + \glshex 1D6FC% lower case alpha (maths italic) + \string<\glshex 1D6FD% lower case beta (maths italic) + \string<\glshex 1D6FE% lower case gamma (maths italic) + \string<\glshex 1D6FF% lower case delta (maths italic) + \string<\glshex 1D700% lower case epsilon (maths italic) + \string=\glshex 1D716% lower case epsilon variant (maths italic) + \string<\glshex 1D701% lower case zeta (maths italic) + \string<\glshex 1D702% lower case eta (maths italic) + \string<\glshex 1D703% lower case theta (maths italic) + \string=\glshex 1D717% lower case theta variant (maths italic) + \string<\glshex 1D704% lower case iota (maths italic) + \string<\glshex 1D705% lower case kappa (maths italic) + \string=\glshex 1D718% lower case kappa variant (maths italic) + \string<\glshex 1D706% lower case lambda (maths italic) + \string<\glshex 1D707% lower case mu (maths italic) + \string<\glshex 1D708% lower case nu (maths italic) + \string<\glshex 1D709% lower case xi (maths italic) + \string<\glshex 1D70A% lower case omicron (maths italic) + \string<\glshex 1D70B% lower case pi (maths italic) + \string=\glshex 1D71B% lower case pi variant (maths italic) + \string<\glshex 1D70C% lower case rho (maths italic) + \string=\glshex 1D71A% lower case rho variant (maths italic) + \string<\glshex 1D70D% lower case final sigma (maths italic) + \string=\glshex 1D70E% lower case sigma (maths italic) + \string<\glshex 1D70F% lower case tau (maths italic) + \string<\glshex 1D710% lower case upsilon (maths italic) + \string<\glshex 1D711% lower case phi (maths italic) + \string=\glshex 1D719% lower case phi variant (maths italic) + \string<\glshex 1D712% lower case chi (maths italic) + \string<\glshex 1D713% lower case psi (maths italic) + \string<\glshex 1D714% lower case omega (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathGreekIrules} +%\changes{1.27}{2018-02-26}{new} +%Includes both upright and italic with digamma between epsilon and +%zeta. +% \begin{macrocode} +\newcommand*{\glsxtrMathGreekIrules}{% + \glsxtrMathItalicAlpha + \string;\glsxtrUpAlpha + \string<\glsxtrMathItalicBeta + \string;\glsxtrUpBeta + \string<\glsxtrMathItalicGamma + \string;\glsxtrUpGamma + \string<\glsxtrMathItalicDelta + \string;\glsxtrUpDelta + \string<\glsxtrMathItalicEpsilon + \string;\glsxtrUpEpsilon + \string<\glsxtrUpDigamma + \string<\glsxtrMathItalicZeta + \string;\glsxtrUpZeta + \string<\glsxtrMathItalicEta + \string;\glsxtrUpEta + \string<\glsxtrMathItalicTheta + \string;\glsxtrUpTheta + \string<\glsxtrMathItalicIota + \string;\glsxtrUpIota + \string<\glsxtrMathItalicKappa + \string;\glsxtrUpKappa + \string<\glsxtrMathItalicLambda + \string;\glsxtrUpLambda + \string<\glsxtrMathItalicMu + \string;\glsxtrUpMu + \string<\glsxtrMathItalicNu + \string;\glsxtrUpNu + \string<\glsxtrMathItalicXi + \string;\glsxtrUpXi + \string<\glsxtrMathItalicOmicron + \string;\glsxtrUpOmicron + \string<\glsxtrMathItalicPi + \string;\glsxtrUpPi + \string<\glsxtrMathItalicRho + \string;\glsxtrUpRho + \string<\glsxtrMathItalicSigma + \string;\glsxtrUpSigma + \string<\glsxtrMathItalicTau + \string;\glsxtrUpTau + \string<\glsxtrMathItalicUpsilon + \string;\glsxtrUpUpsilon + \string<\glsxtrMathItalicPhi + \string;\glsxtrUpPhi + \string<\glsxtrMathItalicChi + \string;\glsxtrUpChi + \string<\glsxtrMathItalicPsi + \string;\glsxtrUpPsi + \string<\glsxtrMathItalicOmega + \string;\glsxtrUpOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathGreekIIrules} +%\changes{1.27}{2018-02-26}{new} +%Includes both upright and italic (digamma not included). +% \begin{macrocode} +\newcommand*{\glsxtrMathGreekIIrules}{% + \glsxtrMathItalicAlpha + \string;\glsxtrUpAlpha + \string<\glsxtrMathItalicBeta + \string;\glsxtrUpBeta + \string<\glsxtrMathItalicGamma + \string;\glsxtrUpGamma + \string<\glsxtrMathItalicDelta + \string;\glsxtrUpDelta + \string<\glsxtrMathItalicEpsilon + \string;\glsxtrUpEpsilon + \string<\glsxtrMathItalicZeta + \string;\glsxtrUpZeta + \string<\glsxtrMathItalicEta + \string;\glsxtrUpEta + \string<\glsxtrMathItalicTheta + \string;\glsxtrUpTheta + \string<\glsxtrMathItalicIota + \string;\glsxtrUpIota + \string<\glsxtrMathItalicKappa + \string;\glsxtrUpKappa + \string<\glsxtrMathItalicLambda + \string;\glsxtrUpLambda + \string<\glsxtrMathItalicMu + \string;\glsxtrUpMu + \string<\glsxtrMathItalicNu + \string;\glsxtrUpNu + \string<\glsxtrMathItalicXi + \string;\glsxtrUpXi + \string<\glsxtrMathItalicOmicron + \string;\glsxtrUpOmicron + \string<\glsxtrMathItalicPi + \string;\glsxtrUpPi + \string<\glsxtrMathItalicRho + \string;\glsxtrUpRho + \string<\glsxtrMathItalicSigma + \string;\glsxtrUpSigma + \string<\glsxtrMathItalicTau + \string;\glsxtrUpTau + \string<\glsxtrMathItalicUpsilon + \string;\glsxtrUpUpsilon + \string<\glsxtrMathItalicPhi + \string;\glsxtrUpPhi + \string<\glsxtrMathItalicChi + \string;\glsxtrUpChi + \string<\glsxtrMathItalicPsi + \string;\glsxtrUpPsi + \string<\glsxtrMathItalicOmega + \string;\glsxtrUpOmega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpAlpha} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpAlpha}{% + \glshex 03B1,% lower case alpha + \glshex 0391% upper case alpha +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpBeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpBeta}{% + \glshex 03B2,% lower case beta + \glshex 0392% upper case beta +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpGamma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpGamma}{% + \glshex 03B3,% lower case gamma + \glshex 0393% upper case gamma +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpDelta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpDelta}{% + \glshex 03B4,% lower case delta + \glshex 0394% upper case delta +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpEpsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpEpsilon}{% + \glshex 03B5% lower case epsilon + \string=\glshex 03F5,% lower case epsilon variant + \glshex 0395% upper case epsilon +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpDigamma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpDigamma}{% + \glshex 03DD,% lower case digamma + \glshex 03DC% upper case digamma +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpZeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpZeta}{% + \glshex 03B6,% lower case zeta + \glshex 0396% upper case zeta +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpEta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpEta}{% + \glshex 03B7,% lower case eta + \glshex 0397% upper case eta +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpTheta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpTheta}{% + \glshex 03B8% lower case theta + \string=\glshex 03D1,% lower case theta variant + \glshex 0398% upper case theta +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpIota} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpIota}{% + \glshex 03B9,% lower case iota + \glshex 0399% upper case iota +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpKappa} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpKappa}{% + \glshex 03BA% lower case kappa + \string=\glshex 03F0,% lower case kappa variant + \glshex 039A% upper case kappa +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpLambda} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpLambda}{% + \glshex 03BB,% lower lambda + \glshex 039B% upper case lambda +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpMu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpMu}{% + \glshex 03BC,% lower case mu + \glshex 039C% upper case mu +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpNu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpNu}{% + \glshex 03BD,% lower case nu + \glshex 039D% upper case nu +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpXi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpXi}{% + \glshex 03BE,% lower case xi + \glshex 039E% upper case xi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpOmicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpOmicron}{% + \glshex 03BF,% lower case omicron + \glshex 039F% upper case omicron +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpPi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpPi}{% + \glshex 03C0% lower case pi + \string=\glshex 03D6,% lower case pi variant + \glshex 03A0% upper case pi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpRho} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpRho}{% + \glshex 03C1% lower case rho + \string=\glshex 03F1,% lower case rho variant + \glshex 03A1% upper case rho +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpSigma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpSigma}{% + \glshex 03C2% lower case sigma + \string=\glshex 03C3,% lower case sigma + \glshex 03A3% upper case sigma +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpTau} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpTau}{% + \glshex 03C4,% lower case tau + \glshex 03A4% upper case tau +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpUpsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpUpsilon}{% + \glshex 03C5,% lower case upsilon + \glshex 03A5% upper case upsilon +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpPhi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpPhi}{% + \glshex 03C6% lower case phi + \string=\glshex 03D5,% lower case phi variant + \glshex 03A6% upper case phi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpChi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpChi}{% + \glshex 03C7,% lower case chi + \glshex 03A7% upper case chi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpPsi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpPsi}{% + \glshex 03C8,% lower case psi + \glshex 03A8% upper case psi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrUpOmega} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrUpOmega}{% + \glshex 03C9,% lower case omega + \glshex 03A9% upper case omega +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicAlpha} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicAlpha}{% + \glshex 1D6FC,% lower case alpha (maths italic) + \glshex 1D6E2% upper case alpha (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicBeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicBeta}{% + \glshex 1D6FD,% lower case beta (maths italic) + \glshex 1D6E3% upper case beta (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicGamma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicGamma}{% + \glshex 1D6FE,% lower case gamma (maths italic) + \glshex 1D6E4% upper case gamma (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicDelta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicDelta}{% + \glshex 1D6FF,% lower case delta (maths italic) + \glshex 1D6E5% upper case delta (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicEpsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicEpsilon}{% + \glshex 1D700% lower case epsilon (maths italic) + \string=\glshex 1D716,% lower case epsilon variant (maths italic) + \glshex 1D6E6% upper case epsilon (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicZeta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicZeta}{% + \glshex 1D701,% lower case zeta (maths italic) + \glshex 1D6E7% upper case zeta (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicEta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicEta}{% + \glshex 1D702,% lower case eta (maths italic) + \glshex 1D6E8% upper case eta (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicTheta} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicTheta}{% + \glshex 1D703% lower case theta (maths italic) + \string=\glshex 1D717,% lower case theta variant (maths italic) + \glshex 1D6E9% upper case theta (maths italic) + \string=\glshex 1D6F3% upper case theta variant (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicIota} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicIota}{% + \glshex 1D704,% lower case iota (maths italic) + \glshex 1D6EA% upper case iota (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicKappa} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicKappa}{% + \glshex 1D705% lower case kappa (maths italic) + \string=\glshex 1D718,% lower case kappa variant (maths italic) + \glshex 1D6EB% upper case kappa (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicLambda} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicLambda}{% + \glshex 1D706,% lower case lambda (maths italic) + \glshex 1D6EC% upper case lambda (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicMu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicMu}{% + \glshex 1D707,% lower case mu (maths italic) + \glshex 1D6ED% upper case mu (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicNu} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicNu}{% + \glshex 1D708,% lower case nu (maths italic) + \glshex 1D6EE% upper case nu (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicXi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicXi}{% + \glshex 1D709,% lower case xi (maths italic) + \glshex 1D6EF% upper case xi (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicOmicron} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicOmicron}{% + \glshex 1D70A,% lower case omicron (maths italic) + \glshex 1D6F0% upper case omicron (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicPi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicPi}{% + \glshex 1D70B% lower case pi (maths italic) + \string=\glshex 1D71B,% lower case pi variant (maths italic) + \glshex 1D6F1% upper case pi (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicRho} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicRho}{% + \glshex 1D70C% lower case rho (maths italic) + \string=\glshex 1D71A,% lower case rho variant (maths italic) + \glshex 1D6F2% upper case rho (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicSigma} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicSigma}{% + \glshex 1D70D% lower case final sigma (maths italic) + \string=\glshex 1D70E,% lower case sigma (maths italic) + \glshex 1D6F4% upper case sigma (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicTau} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicTau}{% + \glshex 1D70F,% lower case tau (maths italic) + \glshex 1D6F5% upper case tau (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicUpsilon} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicUpsilon}{% + \glshex 1D710,% lower case upsilon (maths italic) + \glshex 1D6F6% upper case upsilon (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicPhi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicPhi}{% + \glshex 1D711% lower case phi (maths italic) + \string=\glshex 1D719,% lower case phi variant (maths italic) + \glshex 1D6F7% upper case phi (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicChi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicChi}{% + \glshex 1D712,% lower case chi (maths italic) + \glshex 1D6F8% upper case chi (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicPsi} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicPsi}{% + \glshex 1D713,% lower case psi (maths italic) + \glshex 1D6F9% upper case psi (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicOmega} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicOmega}{% + \glshex 1D714,% lower case omega (maths italic) + \glshex 1D6FA% upper case omega (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicPartial} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicPartial}{% + \glshex 1D715% partial differential (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrMathItalicNabla} +%\changes{1.27}{2018-02-26}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMathItalicNabla}{% + \glshex 1D6FB% nabla (maths italic) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdigitrules} +%\changes{1.27}{2018-02-26}{new} +%Digits from the Basic Latin set and subscript and superscript digit +%rules. +% \begin{macrocode} +\newcommand*{\glsxtrdigitrules}{% + 0\string=\glshex 2080\string=\glshex 2070 + \string<1\string=\glshex 2081\string=\glshex 00B9 + \string<2\string=\glshex 2082\string=\glshex 00B2 + \string<3\string=\glshex 2083\string=\glshex 00B3 + \string<4\string=\glshex 2084\string=\glshex 2074 + \string<5\string=\glshex 2085\string=\glshex 2075 + \string<6\string=\glshex 2086\string=\glshex 2076 + \string<7\string=\glshex 2087\string=\glshex 2077 + \string<8\string=\glshex 2088\string=\glshex 2078 + \string<9\string=\glshex 2089\string=\glshex 2079 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrBasicDigitrules} +%\changes{1.27}{2018-02-26}{new} +%Digits from the Basic Latin set. +% \begin{macrocode} +\newcommand*{\glsxtrBasicDigitrules}{% + 0\string<1\string<2\string<3\string<4% + \string<5\string<6\string<7\string<8\string<9% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrSubScriptDigitrules} +%\changes{1.27}{2018-02-26}{new} +%Subscript digits. +% \begin{macrocode} +\newcommand*{\glsxtrSubScriptDigitrules}{% + \glshex 2080% subscript 0 + \string<\glshex 2081% subscript 1 + \string<\glshex 2082% subscript 2 + \string<\glshex 2083% subscript 3 + \string<\glshex 2084% subscript 4 + \string<\glshex 2085% subscript 5 + \string<\glshex 2086% subscript 6 + \string<\glshex 2087% subscript 7 + \string<\glshex 2088% subscript 8 + \string<\glshex 2089% subscript 9 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrSuperScriptDigitrules} +%\changes{1.27}{2018-02-26}{new} +%Superscript digits. +% \begin{macrocode} +\newcommand*{\glsxtrSuperScriptDigitrules}{% + \glshex 2070% superscript 0 + \string<\glshex 00B9% superscript 1 + \string<\glshex 00B2% superscript 2 + \string<\glshex 00B3% superscript 3 + \string<\glshex 2074% superscript 4 + \string<\glshex 2075% superscript 5 + \string<\glshex 2076% superscript 6 + \string<\glshex 2077% superscript 7 + \string<\glshex 2078% superscript 8 + \string<\glshex 2079% superscript 9 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfractionrules} +%\changes{1.27}{2018-02-26}{new} +%Vulgar fractions. +% \begin{macrocode} +\newcommand*{\glsxtrfractionrules}{% + \glshex 215F% fraction numerator one (1/) + \string<\glshex 2189% zero thirds (0/3 = 0) + \string<\glshex 2152% one tenth (1/10 = 0.1) + \string<\glshex 2151% one ninth (1/9 ~ 0.111) + \string<\glshex 215B% one eighth (1/8 = 0.125) + \string<\glshex 2150% one seventh (1/7 ~ 0.143) + \string<\glshex 2159% one sixth (1/6 ~ 0.167) + \string<\glshex 2155% one fifth (1/5 = 0.2) + \string<\glshex 00BC% one quarter (1/4 = 0.25) + \string<\glshex 2153% one third (1/3 ~ 0.333) + \string<\glshex 215C% three eighths (3/8 = 0.375) + \string<\glshex 2156% two fifths (2/5 = 0.4) + \string<\glshex 00BD% one half (1/2 = 0.5) + \string<\glshex 2157% three fifths (3/5 = 0.6) + \string<\glshex 215D% five eighths (5/8 = 0.625) + \string<\glshex 2154% two thirds (2/3 ~ 0.667) + \string<\glshex 00BE% three quarters (3/4 = 0.75) + \string<\glshex 2158% four fifths (4/5 = 0.8) + \string<\glshex 215A% five sixths (5/6 ~ 0.833) + \string<\glshex 215E% seven eighths (7/8 = 0.875) +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrdialecthook} +%Check for scripts associated with the document dialects. +%\changes{1.28}{2018-03-06}{save and restore \cs{TrackLangRequireDialectPrefix}} +% \begin{macrocode} +\renewcommand{\@glsxtrdialecthook}{% + \ifundef\CurrentTrackedScript + {% + \TrackLangIfHasDefaultScript{\CurrentTrackedLanguage}% + {% + \edef\CurrentTrackedScript{% + \TrackLangGetDefaultScript\CurrentTrackedLanguage}% + }% + {}% + }% + {}% + \ifdef\CurrentTrackedScript + {% + \let\gls@orgTrackLangRequireDialectPrefix\TrackLangRequireDialectPrefix + \def\TrackLangRequireDialectPrefix{glossariesxtr-}% + \let\CurrentTrackedTag\CurrentTrackedScript + \IfFileExists{\TrackLangRequireDialectPrefix\CurrentTrackedTag.ldf} + {\RequireGlossariesExtraLang{\CurrentTrackedTag}}% + {}% + \let\TrackLangRequireDialectPrefix\gls@orgTrackLangRequireDialectPrefix + }% + {}% +} +% \end{macrocode} +%\end{macro} +%If \cs{glsxtr@loaddialect} has been defined, then +%\sty{glossaries-extra-bib2gls} has been loaded after +%\sty{glossaries-extra}. (For example, through +%\ics{glossariesextrasetup}.) Not recommended, but if this has been +%done try to find the associated language resources. +% \begin{macrocode} +\ifdef\glsxtr@loaddialect +{% + \@ifpackageloaded{tracklang} + {% + \AnyTrackedLanguages + {% + \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}% + }% + {}% + } + {} +} +{} +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra-bib2gls.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossaries-extra-stylemods.sty> +% \end{macrocode} +%\fi +%\chapter{Style Adjustments (\styfmt{glossaries-extra-stylemods.sty})} +% This package adjusts the predefined styles so that they include the post +% description hook. Also, some other minor adjustments may be made +% to make existing styles more flexible. +% +%\section{Package Initialisation} +% First identify package: +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra-stylemods}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +% Provide package options to automatically load required predefined +% styles. The simplest method is to just test for the existence of +% the file \texttt{glossary-}\meta{option}\texttt{.sty}. Packages +% can't be loaded whilst the options are being processed, so save +% the list in \cs{@glsxtr@loadstyles}. +%\begin{macro}{\@glsxtr@loadstyles} +% \begin{macrocode} +\newcommand*{\@glsxtr@loadstyles}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{all} +%\changes{1.21}{2017-11-03}{new} +%\changes{1.38}{2018-12-01}{added \styfmt{glossary-longextra}} +%\changes{1.40}{2019-03-22}{added \styfmt{glossary-topic}} +%Provide all known styles. +% \begin{macrocode} +\DeclareOption{all}{% + \appto\@glsxtr@loadstyles{% + \RequirePackage{glossary-inline}% + \RequirePackage{glossary-list}% + \RequirePackage{glossary-tree}% + \RequirePackage{glossary-mcols}% + \RequirePackage{glossary-long}% + \RequirePackage{glossary-longragged}% + \RequirePackage{glossary-longbooktabs}% + \RequirePackage{glossary-super}% + \RequirePackage{glossary-superragged}% + \RequirePackage{glossary-bookindex}% + \RequirePackage{glossary-longextra}% + \RequirePackage{glossary-topic}% + } +} +% \end{macrocode} +%\end{option} +% +% \begin{macrocode} +\DeclareOption*{% + \IfFileExists{glossary-\CurrentOption.sty} + {\eappto\@glsxtr@loadstyles{% + \noexpand\RequirePackage{glossary-\CurrentOption}}% + }% + {% + \PackageError{glossaries-extra-styles}% + {Unknown option `\CurrentOption'}{}% + }% +} +% \end{macrocode} +% Process the package options: +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% +% Load the required packages: +% \begin{macrocode} +\@glsxtr@loadstyles +% \end{macrocode} +% Adjust the styles so that they all have the post description hook. +% Also, instead of having a hard-coded \cs{space} before the +% location, use: +%\begin{macro}{\glsxtrprelocation} +%\changes{1.21}{2017-11-03}{new} +%This uses \cs{providecommand} as the same command is also +%provided by \sty{glossary-bookindex}. +% \begin{macrocode} +\providecommand*{\glsxtrprelocation}{\space} +% \end{macrocode} +%\end{macro} +% +%In case we have an old version of \sty{glossaries}: +%\begin{macro}{\renewglossarystyle} +% \begin{macrocode} +\providecommand{\renewglossarystyle}[2]{% + \ifcsundef{@glsstyle@#1}% + {% + \PackageError{glossaries-extra}{Glossary style `#1' isn't already defined}{}% + }% + {% + \csdef{@glsstyle@#1}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\section{List-Like Styles} +% The list-like styles mostly already use the post description hook. +% Only the \glostyle{listdotted} style need modifying to add this. +% \begin{macrocode} +\ifdef{\@glsstyle@listdotted} +{% + \renewglossarystyle{listdotted}{% + \setglossarystyle{list}% + \renewcommand*{\glossentry}[2]{% + \item[]\makebox[\glslistdottedwidth][l]{% + \glsentryitem{##1}% + \glstarget{##1}{\glossentryname{##1}}% + \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}% + \glossentrydesc{##1}\glspostdescription}% + \renewcommand*{\subglossentry}[3]{% + \item[]\makebox[\glslistdottedwidth][l]{% + \glssubentryitem{##2}% + \glstarget{##2}{\glossentryname{##2}}% + \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}% + \glossentrydesc{##2}\glspostdescription}% + } +} +{% +% \end{macrocode} +% Assume the style isn't required if it hasn't already been defined. +% \begin{macrocode} +} +% \end{macrocode} +% The \glostyle{sublistdotted} style doesn't display the description +% for top-level entries. Sub-level entries use the +% \glostyle{listdottedstyle}. +% +%The other list styles would be easier to adapt if the space +%before the number list wasn't hard coded. +%\changes{1.21}{2017-11-03}{modified list to remove hard coded \cs{space}} +% \begin{macrocode} +\ifdef{\@glsstyle@list} +{% +% \end{macrocode} +%\begin{macro}{\glslistprelocation} +%\changes{1.21}{2017-11-03}{new} +%Space before number list for top-level entries. +% \begin{macrocode} + \newcommand{\glslistprelocation}{\glsxtrprelocation} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistchildprelocation} +%\changes{1.21}{2017-11-03}{new} +%Space before number list for child entries. +% \begin{macrocode} + \newcommand{\glslistchildprelocation}{\glslistprelocation} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistchildpostlocation} +%\changes{1.21}{2017-11-03}{new} +%Full stop after number list. +% \begin{macrocode} + \newcommand{\glslistchildpostlocation}{.} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistdesc} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glslistdesc}[1]{\glossentrydesc{#1}\glspostdescription} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistgroupskip} +%\changes{1.41}{2019-04-09}{new} +% \begin{macrocode} + \newcommand{\glslistgroupskip}{\nobreak\indexspace\nobreak} +% \end{macrocode} +%\end{macro} +%Redefine \glostyle{list} to use these commands. +% \begin{macrocode} + \renewglossarystyle{list}{% + \renewenvironment{theglossary}% + {\begin{description}}{\end{description}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossentry}[2]{% + \item[\glsentryitem{##1}% + \glstarget{##1}{\glossentryname{##1}}] + \glslistdesc{##1}\glslistprelocation ##2}% + \renewcommand*{\subglossentry}[3]{% + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\space + \glslistdesc{##2}% + \glslistchildprelocation ##3\glslistchildpostlocation}% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glslistgroupskip\fi}% + } +} +{} +% \end{macrocode} +%Similarly for \glostyle{altlist}. Since it requires \glostyle{list}, +%the new commands should have been defined above. +% \begin{macrocode} +\ifdef{\@glsstyle@altlist} +{% + \renewglossarystyle{altlist}{% + \setglossarystyle{list}% + \renewcommand*{\glossentry}[2]{% + \item[\glsentryitem{##1}% + \glstarget{##1}{\glossentryname{##1}}]% + \mbox{}\par\nobreak\@afterheading + \glslistdesc{##1}\glslistprelocation ##2}% + \renewcommand{\subglossentry}[3]{% + \par + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glslistdesc{##2}% + \glslistchildprelocation ##3}% + } +} +{} +% \end{macrocode} +%Redefine \glostyle{listgroup} so that it discourages a break +%after group headings. +%\changes{1.21}{2017-11-03}{redefined \texttt{listgroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@listgroup} +{% + \renewglossarystyle{listgroup}{% + \setglossarystyle{list}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +% \end{macrocode} +%Similarly for \glostyle{listhypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{listhypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@listhypergroup} +{% + \renewglossarystyle{listhypergroup}{% + \setglossarystyle{list}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +% \end{macrocode} +%Similarly for \glostyle{altlistgroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{altlistgroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@altlistgroup} +{% + \renewglossarystyle{altlistgroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +% \end{macrocode} +%Similarly for \glostyle{altlisthypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{altlisthypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@altlisthypergroup} +{% + \renewglossarystyle{altlisthypergroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +% \end{macrocode} +% +%\section{Longtable Styles} +% The three and four column styles require adjustment to add the +% post-description hook. The two column styles need the hard-coded +% \cs{space} changed to \cs{glsxtrprelocation}. +% \begin{macrocode} +\ifcsdef{@glsstyle@long} +{% + \renewglossarystyle{long}{% + \renewenvironment{theglossary}% + {\begin{longtable}{lp{\glsdescwidth}}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription + \glsxtrprelocation ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription + \glsxtrprelocation ##3\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & \tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +%Three column style: +% \begin{macrocode} +\ifcsdef{@glsstyle@long3col} +{% + \renewglossarystyle{long3col}{% + \renewenvironment{theglossary}% + {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + ##3\tabularnewline + }% +% \end{macrocode} +%Conditional needs to be outside of \cs{glsgroupskip} otherwise it +%can cause \qt{Incomplete \cs{iftrue}} errors. +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% Four column style: +% \begin{macrocode} +\ifcsdef{@glsstyle@long4col} +{% + \renewglossarystyle{long4col}{% + \renewenvironment{theglossary}% + {\begin{longtable}{llll}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & + \glossentrysymbol{##1} & + ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + \glossentrysymbol{##2} & ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% +%The styles in \sty{glossary-longbooktabs} are all based on the +%styles in \sty{glossary-long}, so no adjustments are needed for +%that package. +% +%\section{Long Ragged Styles} +% The three and four column styles require adjustment for the +% post-description hook, but not the two column styles. However, the +% two-column styles need to have \cs{space} replaced with +% \cs{glsxtrprelocation}. +% \begin{macrocode} +\ifcsdef{@glsstyle@longragged} +{% + \renewglossarystyle{longragged}{% + \renewenvironment{theglossary}% + {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2% + \tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}% + \glspostdescription\glsxtrprelocation ##3% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & \tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +%Three and four column styles don't use \cs{glsxtrprelocation} since the number +%list is in its own column. +% \begin{macrocode} +\ifcsdef{@glsstyle@longragged3col} +{% + \renewglossarystyle{longragged3col}{% + \renewenvironment{theglossary}% + {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}% + >{\raggedright}p{\glspagelistwidth}}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% Four column style: +% \begin{macrocode} +\ifcsdef{@glsstyle@altlongragged4col} +{% + \renewglossarystyle{altlongragged4col}{% + \renewenvironment{theglossary}% + {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l% + >{\raggedright}p{\glspagelistwidth}}}% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & \glossentrysymbol{##1} & + ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + \glossentrysymbol{##2} & ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% +%\section{Supertabular Styles} +% The three and four column styles require adjustment to add the +% post-description hook. The two column styles need the hard-coded +% \cs{space} changed to \cs{glsxtrprelocation}. +% \begin{macrocode} +\ifcsdef{@glsstyle@super} +{% + \renewglossarystyle{super}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{lp{\glsdescwidth}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription + \glsxtrprelocation ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription + \glsxtrprelocation ##3\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& \tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +%Three column style: +% \begin{macrocode} +\ifcsdef{@glsstyle@super3col} +{% + \renewglossarystyle{super3col}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% Four column styles: +% \begin{macrocode} +\ifcsdef{@glsstyle@super4col} +{% + \renewglossarystyle{super4col}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{llll}}{% + \end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & + \glossentrysymbol{##1} & ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + \glossentrysymbol{##2} & ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% +%\section{Super Ragged Styles} +% The three and four column styles require adjustment for the +% post-description hook, but not the two column styles. However, the +% two-column styles need to have \cs{space} replaced with +% \cs{glsxtrprelocation}. +% \begin{macrocode} +\ifcsdef{@glsstyle@superragged} +{% + \renewglossarystyle{superragged}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2% + \tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription + \glsxtrprelocation ##3% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& \tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +%Three column style: +% \begin{macrocode} +\ifcsdef{@glsstyle@superragged3col} +{% + \renewglossarystyle{superragged3col}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}% + >{\raggedright}p{\glspagelistwidth}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & + ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% Four columns: +% \begin{macrocode} +\ifcsdef{@glsstyle@altsuperragged4col} +{% + \renewglossarystyle{altsuperragged4col}{% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l% + >{\raggedright}p{\glspagelistwidth}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \glossentrydesc{##1}\glspostdescription & + \glossentrysymbol{##1} & ##2\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + & + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & + \glossentrysymbol{##2} & ##3\tabularnewline + }% +% \end{macrocode} +%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}} +% \begin{macrocode} + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +% \end{macrocode} +% +%\section{Inline Style} +% The \glostyle{inline} style is dealt with slightly differently. +% The \cs{glspostdescription} hook is actually in +% \cs{glspostinline}, which is called at the end of the glossary. +% The original definition of \cs{glspostinline} also includes a +% space, which is unnecessary. Here, instead of redefining the +% \glostyle{inline} style, just redefine \cs{glspostinline} and +% \cs{glsinlinedescformat}. +% \begin{macrocode} +\ifdef{\@glsstyle@inline} +{% + \renewcommand*{\glspostinline}{.\spacefactor\sfcode`\.} +% \end{macrocode} +% Just use \cs{glsxtrpostdescription} instead of +% \cs{glspostdescription}. +% \begin{macrocode} + \renewcommand*{\glsinlinedescformat}[3]{% + \space#1\glsxtrpostdescription} + \renewcommand*{\glsinlinesubdescformat}[3]{% + #1\glsxtrpostdescription} +% \end{macrocode} +% The default settings don't show the location lists, so there's no +% adjustment for \cs{glsxtrprelocation}. +% \begin{macrocode} +} +{} +% \end{macrocode} +% +%\section{Tree Styles} +% Redefine both \cs{glstreenamefmt} and \cs{glstreegroupheaderfmt} +% in terms of \cs{glstreedefaultnamefmt} to make it easier to change +% both at the same time or only change one without affecting the +% other. +% \begin{macrocode} +\ifdef\glstreenamefmt +{ +% \end{macrocode} +%\begin{macro}{\glstreedefaultnamefmt} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreedefaultnamefmt}[1]{\textbf{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreenamefmt} +%\changes{1.31}{2018-05-09}{added redefinition} +% \begin{macrocode} + \renewcommand{\glstreenamefmt}[1]{\glstreedefaultnamefmt{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreegroupheaderfmt} +%\changes{1.31}{2018-05-09}{added redefinition} +%This command was only introduced to \sty{glossary-tree} v4.22, so +%it may not be defined. +% \begin{macrocode} + \def\glstreegroupheaderfmt#1{\glstreedefaultnamefmt{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreenavigationfmt} +%\changes{1.31}{2018-05-09}{added redefinition} +%This command was only introduced to \sty{glossary-tree} v4.22, so +%it may not be defined. +% \begin{macrocode} + \def\glstreenavigationfmt#1{\glstreedefaultnamefmt{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreePreHeader} +%\changes{1.41}{2019-04-09}{new} +%Takes the label as the first argument and title as the second +%argument so this can be modified to add a bookmark. +% \begin{macrocode} + \newcommand{\glstreePreHeader}[2]{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +{} +% \end{macrocode} +% The \glostyle{index} style is redefined so that the space before +% the number list isn't hard coded. +%\changes{1.21}{2017-11-03}{modified index to remove hard coded \cs{space}} +% \begin{macrocode} +\ifdef{\@glsstyle@index} +{ +% \end{macrocode} +%\begin{macro}{\glstreeprelocation} +%\changes{1.21}{2017-11-03}{new} +%The space before the number list for top-level entries. This is +%shared by the other tree styles. +% \begin{macrocode} + \newcommand*{\glstreeprelocation}{\glsxtrprelocation} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreechildprelocation} +%\changes{1.21}{2017-11-03}{new} +%The space before the number list for child entries. This is +%shared by the other tree styles. +% \begin{macrocode} + \newcommand*{\glstreechildprelocation}{\glstreeprelocation} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreegroupskip} +%\changes{1.41}{2019-04-09}{new} +% \begin{macrocode} + \newcommand{\glstreegroupskip}{\nopagebreak\indexspace\nobreak} +% \end{macrocode} +%\end{macro} +%Modify the \glostyle{index} style. +% \begin{macrocode} + \renewglossarystyle{index}{% + \renewenvironment{theglossary}% + {\setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}% + \let\item\glstreeitem + \let\subitem\glstreesubitem + \let\subsubitem\glstreesubsubitem + }% + {\par}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossentry}[2]{% + \item\glsentryitem{##1}% + \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% + \glstreesymbol{##1}% + \glstreeDescLoc{##1}{##2}% + }% + \renewcommand{\subglossentry}[3]{% + \ifcase##1\relax + \item + \or + \subitem + \glssubentryitem{##2}% + \else + \subsubitem + \fi + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}% + \glstreechildsymbol{##2}% + \glstreeChildDescLoc{##2}{##3}% + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}% + } +} +{} +% \end{macrocode} +% +% The \glostyle{indexgroup} style is redefined to discourage a page +% break after the heading. +%\changes{1.21}{2017-11-03}{redefined \texttt{indexgroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@indexgroup} +{% + \renewglossarystyle{indexgroup}{% + \setglossarystyle{index}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading + }% + } +} +{} +% \end{macrocode} +% +%Similarly for \glostyle{indexhypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{indexhypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@indexhypergroup} +{% + \renewglossarystyle{indexhypergroup}{% + \setglossarystyle{index}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading}% + }% +} +{} +% \end{macrocode} +% +%Adjust \glostyle{tree} style to remove hard coded space before +%number list. +% \begin{macrocode} +\ifdef{\@glsstyle@tree} +{% +% \end{macrocode} +%Provide a command for use with the \glostyle{tree} styles that displays +%the pre-description separator, the +%description and post-description hook. +%\begin{macro}{\glstreedesc} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreedesc}[1]{% + \glstreepredesc\glossentrydesc{#1}\glspostdescription + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreeDescLoc} +%\changes{1.41}{2019-04-09}{new} +%\begin{definition} +%\cs{glstreeDescLoc}\marg{label}\marg{location} +%\end{definition} +%This checks for the description and symbol. If both are missing, +%don't want a space at the start of the location list. (For example, +%the entry may just have a cross-reference.) +% \begin{macrocode} + \newcommand{\glstreeDescLoc}[2]{% + \ifglshasdesc{#1}% + {\glstreedesc{#1}\glstreeprelocation}% + {\ifglshassymbol{#1}{\glstreeprelocation}{}}% + #2% + } +% \end{macrocode} +%\end{macro} +%Similarly for the symbol. +%\begin{macro}{\glstreesymbol} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreesymbol}[1]{% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% + }% +% \end{macrocode} +%\end{macro} +%And for the child entries: +%\begin{macro}{\glstreechilddesc} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreechilddesc}[1]{% + \glstreechildpredesc\glossentrydesc{#1}\glspostdescription + }% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreeChildDescLoc} +%\changes{1.41}{2019-04-09}{new} +% \begin{macrocode} + \newcommand{\glstreeChildDescLoc}[2]{% + \ifglshasdesc{#1}% + {\glstreechilddesc{#1}\glstreechildprelocation}% + {\ifglshassymbol{#1}{\glstreechildprelocation}{}}% + #2% + }% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreechildsymbol} +%\changes{1.31}{2018-05-09}{new} +%This just behaves in the same way as the top-level. +% \begin{macrocode} + \newcommand{\glstreechildsymbol}[1]{% + \glstreesymbol{#1}% + }% +% \end{macrocode} +%\end{macro} +% \begin{macrocode} + \renewglossarystyle{tree}{% + \renewenvironment{theglossary}% + {\setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}}% + {}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \hangindent0pt\relax + \parindent0pt\relax + \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% + \glstreesymbol{##1}% + \glstreeDescLoc{##1}{##2}\par + }% + \renewcommand{\subglossentry}[3]{% + \hangindent##1\glstreeindent\relax + \parindent##1\glstreeindent\relax + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}% + \glstreechildsymbol{##2}% + \glstreeChildDescLoc{##2}{##3}\par + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}% + }% +} +{} +% \end{macrocode} +% +% The \glostyle{treegroup} style is redefined to discourage a page +% break after the heading. +%\changes{1.21}{2017-11-03}{redefined \texttt{treegroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@treegroup} +{% + \renewglossarystyle{treegroup}{% + \setglossarystyle{tree}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading}% + } +} +{} +% \end{macrocode} +% +%Similarly for \glostyle{treehypergroup} +%\changes{1.21}{2017-11-03}{redefined \texttt{treehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@treehypergroup} +{% + \renewglossarystyle{treehypergroup}{% + \setglossarystyle{tree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading}% + } +} +{} +% \end{macrocode} +% +%Adjust \glostyle{treenoname} style to remove hard coded space before +%number list. +% \begin{macrocode} +\ifdef{\@glsstyle@treenoname} +{% +% \end{macrocode} +%Provide a command for use with the \glostyle{treenoname} styles that displays +%the pre-description separator, the +%description and post-description hook. +%\begin{macro}{\glstreenonamedesc} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreenonamedesc}[1]{% + \glstreepredesc\glossentrydesc{#1}\glspostdescription + }% +% \end{macrocode} +%\end{macro} +%Similarly for the symbol. +%\begin{macro}{\glstreenonamesymbol} +%\changes{1.31}{2018-05-09}{new} +% \begin{macrocode} + \newcommand{\glstreenonamesymbol}[1]{% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% + }% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreenonamechilddesc} +%\changes{1.31}{2018-05-09}{new} +%The child entry doesn't have the pre-description separator as the +%name isn't displayed. +% \begin{macrocode} + \newcommand{\glstreenonamechilddesc}[1]{% + \glossentrydesc{#1}\glspostdescription + }% +% \end{macrocode} +%\end{macro} +% \begin{macrocode} + \renewglossarystyle{treenoname}{% + \renewenvironment{theglossary}% + {\setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}}% + {}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \hangindent0pt\relax + \parindent0pt\relax + \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% + \glstreenonamesymbol{##1}% + \glstreenonamedesc{##1}% + \glstreeprelocation##2\par + }% + \renewcommand{\subglossentry}[3]{% + \hangindent##1\glstreeindent\relax + \parindent##1\glstreeindent\relax + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \glstarget{##2}{\strut}% + \glstreenonamechilddesc{##2}% + \glstreechildprelocation##3\par + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}% + } +} +{} +% \end{macrocode} +% +% The \glostyle{treenonamegroup} style is redefined to discourage a page +% break after the heading. +%\changes{1.21}{2017-11-03}{redefined \texttt{treenonamegroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@treenonamegroup} +{% + \renewglossarystyle{treenonamegroup}{% + \setglossarystyle{treenoname}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading + }% + } +} +{} +% \end{macrocode} +% +%Similarly for \glostyle{treenonamehypergroup} +%\changes{1.21}{2017-11-03}{redefined \texttt{treenonamehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@treenonamehypergroup} +{% + \renewglossarystyle{treenonamehypergroup}{% + \setglossarystyle{treenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading}% + } +} +{} +% \end{macrocode} +% +% The \glostyle{alttree} style is redefined to make it easier to +% made minor adjustments. +% \begin{macrocode} +\ifdef{\@glsstyle@alttree} +{% +% \end{macrocode} +% Only redefine this style if it's already been defined. +% +%\begin{macro}{\glsxtralttreeSymbolDescLocation} +%\changes{1.05}{2016-06-10}{new} +%\begin{definition} +%\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{location +%list} +%\end{definition} +%Layout the symbol, description and location for top-level entries. +% \begin{macrocode} + \newcommand{\glsxtralttreeSymbolDescLocation}[2]{% + {% + \let\par\glsxtrAltTreePar + \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}% +% \end{macrocode} +%\changes{1.41}{2019-04-09}{added check for description} +% \begin{macrocode} + \ifglshasdesc{#1}% + {\glossentrydesc{#1}\glspostdescription\glstreeprelocation}{}% + #2\par + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrAltTreeIndent} +%\changes{1.05}{2016-06-10}{new} +% Paragraph indent for subsequent paragraphs in multi-paragraph +% descriptions. +% \begin{macrocode} + \newlength\glsxtrAltTreeIndent +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrAltTreePar} +%\changes{1.05}{2016-06-10}{new} +%Multi-paragraph descriptions need to keep the hanging indent. +% \begin{macrocode} + \newcommand{\glsxtrAltTreePar}{% + \@@par + \glsxtrAltTreeSetHangIndent + \setlength{\parindent}{\dimexpr\hangindent+\glsxtrAltTreeIndent}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtralttreeSubSymbolDescLocation} +%\changes{1.05}{2016-06-10}{new} +%\begin{definition} +%\cs{glsxtralttreeSubSymbolDescLocation}\marg{level}\marg{label}\marg{location +%list} +%\end{definition} +%Layout the symbol, description and location for sub-entries. +% Defaults to the same as the top-level. +% \begin{macrocode} + \newcommand{\glsxtralttreeSubSymbolDescLocation}[3]{% + \glsxtralttreeSymbolDescLocation{#2}{#3}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtreetopindent} +%\changes{1.05}{2016-06-10}{new} +% The original style has to keep computing the width of the name at +% each entry. This register allows the style to compute it once for +% the top-level at the start of the glossary. +% \begin{macrocode} + \newlength\glsxtrtreetopindent +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtralttreeInit} +%\changes{1.05}{2016-06-10}{new} +% User-level initialisation for the \glostyle{alttree} style. +% \begin{macrocode} + \newcommand*{\glsxtralttreeInit}{% + \settowidth{\glsxtrtreetopindent}{\glstreenamefmt{\glsgetwidestname\space}}% + \glsxtrAltTreeIndent=\parindent + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gglssetwidest} +%\changes{1.21}{2017-11-03}{new} +% The original \cs{glssetwidest} only uses \cs{def}. This uses +% \cs{gdef}. +% \begin{macrocode} + \newcommand*{\gglssetwidest}[2][0]{% + \csgdef{@glswidestname\romannumeral#1}{#2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\eglssetwidest} +%\changes{1.05}{2016-06-10}{new} +% The original \cs{glssetwidest} only uses \cs{def}. This uses +% \cs{protected@csedef}. +% \begin{macrocode} + \newcommand*{\eglssetwidest}[2][0]{% + \protected@csedef{@glswidestname\romannumeral#1}{#2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xglssetwidest} +%\changes{1.05}{2016-06-10}{new} +%Like the above but uses \cs{protected@csxdef}. +% \begin{macrocode} + \newcommand*{\xglssetwidest}[2][0]{% + \protected@csxdef{@glswidestname\romannumeral#1}{#2}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsupdatewidest} +%\changes{1.23}{2017-11-12}{new} +%Only sets if new value is wider than old value. +% \begin{macrocode} + \newcommand*{\glsupdatewidest}[2][0]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\csdef{@glswidestname\romannumeral#1}{#2}}% + {% + \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}% + \settowidth{\dimen@ii}{#2}% + \ifdim\dimen@ii>\dimen@ + \csdef{@glswidestname\romannumeral#1}{#2}% + \fi + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gglsupdatewidest} +%\changes{1.23}{2017-11-12}{new} +%As above but global definition. +% \begin{macrocode} + \newcommand*{\gglsupdatewidest}[2][0]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\csgdef{@glswidestname\romannumeral#1}{#2}}% + {% + \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}% + \settowidth{\dimen@ii}{#2}% + \ifdim\dimen@ii>\dimen@ + \csgdef{@glswidestname\romannumeral#1}{#2}% + \fi + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\eglsupdatewidest} +%\changes{1.23}{2017-11-12}{new} +%As \cs{glsupdatewidest} but expands value. +% \begin{macrocode} + \newcommand*{\eglsupdatewidest}[2][0]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\protected@csedef{@glswidestname\romannumeral#1}{#2}}% + {% + \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}% + \settowidth{\dimen@ii}{#2}% + \ifdim\dimen@ii>\dimen@ + \protected@csedef{@glswidestname\romannumeral#1}{#2}% + \fi + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xglsupdatewidest} +%\changes{1.23}{2017-11-12}{new} +%As above but global. +% \begin{macrocode} + \newcommand*{\xglsupdatewidest}[2][0]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\protected@csxdef{@glswidestname\romannumeral#1}{#2}}% + {% + \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}% + \settowidth{\dimen@ii}{#2}% + \ifdim\dimen@ii>\dimen@ + \protected@csxdef{@glswidestname\romannumeral#1}{#2}% + \fi + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsgetwidestname} +%\changes{1.05}{2016-06-10}{new} +% Provide a user-level macro to obtain the widest top-level name. +% \begin{macrocode} + \newcommand*{\glsgetwidestname}{\@glswidestname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsgetwidestsubname} +%\changes{1.05}{2016-06-10}{new} +% Provide a user-level macro to obtain the widest sub-entry name. +% \begin{macrocode} + \newcommand*{\glsgetwidestsubname}[1]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\@glswidestname}% + {\csuse{@glswidestname\romannumeral#1}}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestTopLevelName} +%CamelCase is easier for long command names. Provide a CamelCase +%synonym of \ics{glsfindwidesttoplevelname}. +% \begin{macrocode} + \let\glsFindWidestTopLevelName\glsfindwidesttoplevelname +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedTopLevelName} +%\changes{1.05}{2016-06-10}{new} +% Like \cs{glsfindwidesttoplevelname} but has an additional check +% that the entry has been used. Only useful if the glossaries occur +% at the end of the document, in which case this command should go +% at the start of the glossary. Alternatively, place at the end of +% the document and save for the next run. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedTopLevelName}[1][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \ifglshasparent{\@glo@label}% + {}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + }% + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedAnyName} +%\changes{1.05}{2016-06-10}{new} +% Like the above but doesn't check the parent key. Useful if all +% levels should have the same width for the name. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedAnyName}[1][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestAnyName} +%\changes{1.05}{2016-06-10}{new} +% Like the above but doesn't check is the entry has been used. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestAnyName}[1][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedLevelTwo} +%\changes{1.05}{2016-06-10}{new} +% This is like \cs{glsFindWidestUsedTopLevelName} but also sets the +% first two sub-levels as well. Any entry that has a +% great-grandparent is ignored. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedLevelTwo}[1][\@glo@types]{% + \dimen@=0pt\relax + \dimen@i=0pt\relax + \dimen@ii=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \ifglshasparent{\@glo@label}% + {% + \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}% + \ifglshasparent{\@glo@parent}% + {% + \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}% + \ifglshasparent{\@glo@parent}% + {}% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@ii + \dimen@ii=\gls@tmplen + \eglssetwidest[2]{\glsentryname{\@glo@label}}% + \fi + }% + }% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@i + \dimen@i=\gls@tmplen + \eglssetwidest[1]{\glsentryname{\@glo@label}}% + \fi + }% + }% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@ + \dimen@=\gls@tmplen + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + }% + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestLevelTwo} +%\changes{1.05}{2016-06-10}{new} +% This is like \cs{glsFindWidestUsedLevelTwo} but doesn't check if the +% entry has been used. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestLevelTwo}[1][\@glo@types]{% + \dimen@=0pt\relax + \dimen@i=0pt\relax + \dimen@ii=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglshasparent{\@glo@label}% + {% + \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}% + \ifglshasparent{\@glo@parent}% + {% + \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}% + \ifglshasparent{\@glo@parent}% + {}% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@ii + \dimen@ii=\gls@tmplen + \eglssetwidest[2]{\glsentryname{\@glo@label}}% + \fi + }% + }% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@i + \dimen@i=\gls@tmplen + \eglssetwidest[1]{\glsentryname{\@glo@label}}% + \fi + }% + }% + {% + \settowidth{\gls@tmplen}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\gls@tmplen>\dimen@ + \dimen@=\gls@tmplen + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + }% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedAnyNameSymbol} +%\changes{1.05}{2016-06-10}{new} +% Like the \cs{glsFindWidestUsedAnyName} but also measures the +% symbol. The length of the widest symbol is stored in the second argument +% should be a length register. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedAnyNameSymbol}[2][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\glsentrysymbol{\@glo@label}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestAnyNameSymbol} +%\changes{1.05}{2016-06-10}{new} +% Like the above but doesn't check if the entry has been used. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestAnyNameSymbol}[2][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\glsentrysymbol{\@glo@label}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedAnyNameSymbolLocation} +%\changes{1.05}{2016-06-10}{new} +% Like the \cs{glsFindWidestUsedAnyNameSymbol} but also measures the +% location list. This requires \ics{glsentrynumberlist}. +% The length of the widest symbol is stored in the second argument +% should be a length register. The length of the widest location +% list is stored in the third argument, which should also be a +% length register. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedAnyNameSymbolLocation}[3][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + #3=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\glsentrysymbol{\@glo@label}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + \settowidth{\dimen@}% + {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}% + \ifdim\dimen@>#3\relax + #3=\dimen@ + \fi + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestAnyNameSymbolLocation} +%\changes{1.05}{2016-06-10}{new} +% Like the \cs{glsFindWidestUsedAnyNameSymbol} but doesn't check if +% the entry has been used. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestAnyNameSymbolLocation}[3][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + #3=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\glsentrysymbol{\@glo@label}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + \settowidth{\dimen@}% + {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}% + \ifdim\dimen@>#3\relax + #3=\dimen@ + \fi + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestUsedAnyNameLocation} +%\changes{1.05}{2016-06-10}{new} +% Like the \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't +% measure the symbol. The length of the widest location +% list is stored in the second argument, which should be a +% length register. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestUsedAnyNameLocation}[2][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + }% + {}% + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsFindWidestAnyNameLocation} +%\changes{1.05}{2016-06-10}{new} +% Like the \cs{glsFindWidestAnyNameLocation} but doesn't +% check the \gls{firstuse} flag. +% \begin{macrocode} + \newrobustcmd*{\glsFindWidestAnyNameLocation}[2][\@glo@types]{% + \dimen@=0pt\relax + \gls@tmplen=0pt\relax + #2=0pt\relax + \forallglossaries[#1]{\@gls@type}% + {% + \forglsentries[\@gls@type]{\@glo@label}% + {% + \settowidth{\dimen@}% + {\glstreenamefmt{\glsentryname{\@glo@label}}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \eglssetwidest{\glsentryname{\@glo@label}}% + \fi + \settowidth{\dimen@}% + {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}% + \ifdim\dimen@>#2\relax + #2=\dimen@ + \fi + }% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrComputeTreeIndent} +%\changes{1.05}{2016-06-10}{new} +% Compute the value of \cs{glstreeindent}. Argument is the entry label. +% (Ignored in default definition, but this command may be redefined +% to take the particular entry into account.) Note that the +% sub-levels modify \cs{glstreeindent}. +% \begin{macrocode} + \newcommand*{\glsxtrComputeTreeIndent}[1]{% + \glstreeindent=\glsxtrtreetopindent\relax + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrComputeTreeSubIndent} +%\changes{1.05}{2016-06-10}{new} +%\begin{definition} +%\cs{glsxtrComputeTreeSubIndent}\marg{level}\marg{label}\marg{register} +%\end{definition} +% Compute the indent for the sub-entries. The first argument is the +% level, the second argument is the entry label and the third +% argument is the length register used to store the computed indent. +% \begin{macrocode} + \newcommand*{\glsxtrComputeTreeSubIndent}[3]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {% + \settowidth{#3}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{#3}{\glstreenamefmt{% + \csname @glswidestname\romannumeral#1\endcsname\space}}% + }% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrAltTreeSetHangIndent} +%\changes{1.05}{2016-06-10}{new} +% Set \cs{hangindent} for top-level entries: +% \begin{macrocode} + \newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrAltTreeSetSubHangIndent} +%\changes{1.05}{2016-06-10}{new} +% Set \cs{hangindent} for sub-entries: +% \begin{macrocode} + \newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent} +% \end{macrocode} +%\end{macro} +% +% Redefine \glostyle{alttree}: +% \begin{macrocode} + \renewglossarystyle{alttree}{% + \renewenvironment{theglossary}% + {% + \glsxtralttreeInit + \def\@gls@prevlevel{-1}% + \mbox{}\par}% + {\par}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \ifnum\@gls@prevlevel=0\relax + \else + \glsxtrComputeTreeIndent{##1}% + \fi + \parindent\glstreeindent + \glsxtrAltTreeSetHangIndent + \makebox[0pt][r]% + {% + \glstreenamebox{\glstreeindent}% + {% + \glsentryitem{##1}% + \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% + }% + }% + \glsxtralttreeSymbolDescLocation{##1}{##2}% + \def\@gls@prevlevel{0}% + } + \renewcommand{\subglossentry}[3]{% + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \ifnum\@gls@prevlevel=##1\relax + \else + \glsxtrComputeTreeSubIndent{##1}{##2}{\gls@tmplen}% + \ifnum\@gls@prevlevel<##1\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \glsxtrComputeTreeSubIndent{\@gls@prevlevel}{##2}{\glstreeindent}% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##1}% + \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{% + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}% + \glsxtralttreeSubSymbolDescLocation{##1}{##2}{##3}% + \def\@gls@prevlevel{##1}% + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}% + } +}% +{% +} +% \end{macrocode} +%Redefine \glostyle{alttreegroup} so that it discourages a break +%after group headings. +%\changes{1.21}{2017-11-03}{redefined \texttt{alttreegroup} to discourage +%breaks after group headings} +%Can't use \cs{@afterheading} here as it messes with the first item +%of the group. +% \begin{macrocode} +\ifdef{\@glsstyle@alttreegroup} +{% + \renewglossarystyle{alttreegroup}{% + \setglossarystyle{alttree}% + \renewcommand{\glsgroupheading}[1]{\par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip + }% + }% +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{alttreehypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{alttreehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@alttreehypergroup} +{% + \renewglossarystyle{alttreehypergroup}{% + \setglossarystyle{alttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip + }% + } +}% +{% +} +% \end{macrocode} +% +%\section{Multicolumn Styles} +%Adjust \glostyle{mcolindexgroup} to discourage page breaks after +%the group headings. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexgroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolindexgroup} +{% + \renewglossarystyle{mcolindexgroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcolindexhypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexhypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolindexhypergroup} +{% + \renewglossarystyle{mcolindexhypergroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcolindexspannav}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexspannav} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolindexspannav} +{% + \renewglossarystyle{mcolindexspannav}{% + \setglossarystyle{index}% + \renewenvironment{theglossary}% + {% + \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]% + \setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}% + \let\item\glstreeitem}% + {\end{multicols}}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreegroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreegroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreegroup} +{% + \renewglossarystyle{mcoltreegroup}{% + \setglossarystyle{mcoltree}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreehypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreehypergroup} +{% + \renewglossarystyle{mcoltreehypergroup}{% + \setglossarystyle{mcoltree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreespannav}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreespannav} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreespannav} +{% + \renewglossarystyle{mcoltreespannav}{% + \setglossarystyle{tree}% + \renewenvironment{theglossary}% + {% + \begin{multicols}{\glsmcols}% + [\noindent\glstreenavigationfmt{\glsnavigation}]% + \setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}% + }% + {\end{multicols}}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreenonamegroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamegroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreenonamegroup} +{% + \renewglossarystyle{mcoltreenonamegroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip\@afterheading + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreenonamehypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreenonamehypergroup} +{% + \renewglossarystyle{mcoltreenonamehypergroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading}% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcoltreenonamespannav}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamespannav} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcoltreenonamespannav} +{% + \renewglossarystyle{mcoltreenonamespannav}{% + \setglossarystyle{treenoname}% + \renewenvironment{theglossary}% + {% + \begin{multicols}{\glsmcols}% + [\noindent\glstreenavigationfmt{\glsnavigation}]% + \setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}% + }% + {\end{multicols}}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip\@afterheading}% + } +}% +{% +} +% \end{macrocode} +%\glostyle{mcolalttree} needs adjusting so that it uses \cs{glsxtralttreeInit} +%This doesn't use \verb|\mbox{}\par| which would unbalance the top +%of the columns. +%\changes{1.21}{2017-11-03}{adjusted mcolalttree} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolalttree} +{% + \renewglossarystyle{mcolalttree}{% + \setglossarystyle{alttree}% + \renewenvironment{theglossary}% + {% + \glsxtralttreeInit + \def\@gls@prevlevel{-1}% + \begin{multicols}{\glsmcols}% + }% + {\par\end{multicols}}% + } +}% +{% +} +% \end{macrocode} +%Redefine \glostyle{mcolalttreegroup} to discourage page breaks +%after the group headings. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreegroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolalttreegroup} +{% + \renewglossarystyle{mcolalttreegroup}{% + \setglossarystyle{mcolalttree}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupskip + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcolalttreehypergroup}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreehypergroup} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolalttreehypergroup} +{% + \renewglossarystyle{mcolalttreehypergroup}{% + \setglossarystyle{mcolalttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}% + \glstreegroupskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip + }% + } +}% +{% +} +% \end{macrocode} +%Similarly for \glostyle{mcolalttreespannav}. +%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreespannav} to discourage +%breaks after group headings} +% \begin{macrocode} +\ifdef{\@glsstyle@mcolalttreespannav} +{% + \renewglossarystyle{mcolalttreespannav}{% + \setglossarystyle{alttree}% + \renewenvironment{theglossary}% + {% + \glsxtralttreeInit + \def\@gls@prevlevel{-1}% + \begin{multicols}{\glsmcols}% + [\noindent\glstreenavigationfmt{\glsnavigation}]% + }% + {\par\end{multicols}}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupskip + }% + } +}% +{% +} +% \end{macrocode} +% +% Reset the default style +% \begin{macrocode} +\ifx\@glossary@default@style\relax +\else + \setglossarystyle{\@glsxtr@current@style} +\fi +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra-stylemods.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-bookindex.sty> +% \end{macrocode} +%\fi +%\chapter{bookindex style (\styfmt{glossary-bookindex.sty})} +%\changes{1.21}{2017-11-03}{new} +%\section{Package Initialisation and Options} +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-bookindex}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +%Load required packages. +% \begin{macrocode} +\RequirePackage{multicol} +\RequirePackage{glossary-tree} +% \end{macrocode} +%\begin{macro}{\glsxtrbookindexcols} +%\changes{1.21}{2017-11-03}{new} +% Number of columns. +% \begin{macrocode} +\newcommand{\glsxtrbookindexcols}{2} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexname} +%\changes{1.21}{2017-11-03}{new} +%Format used for top-level entries. +% (Argument is the label.) +% \begin{macrocode} +\newcommand*{\glsxtrbookindexname}[1]{\glossentryname{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubname} +%\changes{1.21}{2017-11-03}{new} +%Format used for sub entries. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexsubname}[1]{\glsxtrbookindexname{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrprelocation} +%\changes{1.21}{2017-11-03}{new} +%Provide in case \sty{glossaries-stylemods} isn't loaded. +% \begin{macrocode} +\providecommand*{\glsxtrprelocation}{\space} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\glsxtrbookindexprelocation} +%\changes{1.21}{2017-11-03}{new} +%Separator used before location list for top-level entries. +%Version 1.22 has removed the \cs{ifglsnopostdot} check +%since this style doesn't display the description. +%\changes{1.22}{2017-11-08}{removed check for no post dot} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexprelocation}[1]{% + \glsxtrifhasfield{location}{#1}% + {,\glsxtrprelocation}% + {\glsxtrprelocation}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubprelocation} +%\changes{1.21}{2017-11-03}{new} +%Separator used before location list for sub-entries. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexsubprelocation}[1]{% + \glsxtrbookindexprelocation{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexlocation} +%\changes{1.39}{2019-03-22}{new} +%\begin{definition} +%\cs{glsxtrbookindexlocation}\marg{label}\marg{location} +%\end{definition} +%Displays the location. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexlocation}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexsublocation} +%\changes{1.39}{2019-03-22}{new} +%\begin{definition} +%\cs{glsxtrbookindexlocation}\marg{label}\marg{location} +%\end{definition} +%Displays the location for sub-entries. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexsublocation}{\glsxtrbookindexlocation} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexparentchildsep} +%\changes{1.21}{2017-11-03}{new} +%Separator used between top-level parent and child entry. +% \begin{macrocode} +\newcommand{\glsxtrbookindexparentchildsep}{\nopagebreak} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexparentsubchildsep} +%\changes{1.21}{2017-11-03}{new} +%Separator used between sub-level parent and child entry. +% \begin{macrocode} +\newcommand{\glsxtrbookindexparentsubchildsep}{\glsxtrbookindexparentchildsep} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexbetween} +%\changes{1.21}{2017-11-03}{new} +%Between two top-level entries identified by the labels in the +%arguments. +% \begin{macrocode} +\newcommand{\glsxtrbookindexbetween}[2]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubbetween} +%\changes{1.21}{2017-11-03}{new} +%Between two level~1 entries identified by the labels in the +%arguments. +% \begin{macrocode} +\newcommand{\glsxtrbookindexsubbetween}[2]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubsubbetween} +%\changes{1.21}{2017-11-03}{new} +%Between two level~2 entries identified by the labels in the +%arguments. +% \begin{macrocode} +\newcommand{\glsxtrbookindexsubsubbetween}[2]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexatendgroup} +%\changes{1.21}{2017-11-03}{new} +%At the end of a letter group. The argument is the index of the last +%top-level entry. +% \begin{macrocode} +\newcommand{\glsxtrbookindexatendgroup}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubatendgroup} +%\changes{1.21}{2017-11-03}{new} +%At the end of a letter group. The argument is the index of the last +%level~1 entry. +% \begin{macrocode} +\newcommand{\glsxtrbookindexsubatendgroup}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexsubsubatendgroup} +%\changes{1.21}{2017-11-03}{new} +%At the end of a letter group. The argument is the index of the last +%level~2 entry. +% \begin{macrocode} +\newcommand{\glsxtrbookindexsubsubatendgroup}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexgroupskip} +%\changes{1.21}{2017-11-03}{new} +%Group separator. +% \begin{macrocode} +\newcommand{\glsxtrbookindexgroupskip}{\ifglsnogroupskip\else\indexspace\fi} +% \end{macrocode} +%\end{macro} +% +%Format group title. +%\begin{macro}{\glsxtrbookindexformatheader} +%\changes{1.21}{2017-11-03}{new} +%Group separator. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexformatheader}[1]{% + \par{\centering\glstreegroupheaderfmt{#1}\par}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexbookmark} +%\changes{1.21}{2017-11-03}{new} +%Book mark group heading if supported. +% \begin{macrocode} +\ifdef\pdfbookmark +{% + \newcommand*{\glsxtrbookindexbookmark}[2]{% + \ifdefstring{\@@glossarysec}{chapter}% + {\pdfbookmark[1]{#1}{#2}}% + {\pdfbookmark[2]{#1}{#2}}% + } +} +{% + \newcommand*{\glsxtrbookindexbookmark}[2]{} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexcolspread} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexcolspread}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexmulticolsenv} +%\changes{1.25}{2017-11-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexmulticolsenv}{multicols} +% \end{macrocode} +%\end{macro} +% +%Define the style. +% \begin{macrocode} +\newglossarystyle{bookindex}{% + \setglossarystyle{index}% + \renewenvironment{theglossary}% + {% + \ifnum\glsxtrbookindexcols>1\relax + \ifdefempty\glsxtrbookindexcolspread + {% + \edef\glsxtr@beginbookindex{% + \noexpand\begin{\glsxtrbookindexmulticolsenv} + {\glsxtrbookindexcols}% + }% + }% + {% + \edef\glsxtr@beginbookindex{% + \noexpand\begin{\glsxtrbookindexmulticolsenv}% + {\glsxtrbookindexcols}[\glsxtrbookindexcolspread]% + }% + }% + \else + \def\glsxtr@beginbookindex{}% + \fi + \glsxtr@beginbookindex + \setlength{\parindent}{0pt}% + \setlength{\parskip}{0pt plus 0.3pt}% + \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep + \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep + \let\@glsxtr@bookindex@between\@gobble + \let\@glsxtr@bookindex@subbetween\@gobble + \let\@glsxtr@bookindex@subsubbetween\@gobble + \let\@glsxtr@bookindex@atendgroup\relax + \let\@glsxtr@bookindex@subatendgroup\relax + \let\@glsxtr@bookindex@subsubatendgroup\relax + \let\@glsxtr@bookindexgroupskip\relax + }% + {% +% \end{macrocode} +% Do end group hooks. +% \begin{macrocode} + \@glsxtr@bookindex@subsubatendgroup + \@glsxtr@bookindex@subatendgroup + \@glsxtr@bookindex@atendgroup +% \end{macrocode} +%End \env{multicols} environment. +% \begin{macrocode} + \ifnum\glsxtrbookindexcols>1\relax + \edef\glsxtr@endbookindex{% + \noexpand\end{\glsxtrbookindexmulticolsenv}% + }% + \else + \def\glsxtr@endbookindex{}% + \fi + \glsxtr@endbookindex + }% +% \end{macrocode} +%Use ragged right as columns are likely to be narrow and +%indexes tend not to be fully justified. +% \begin{macrocode} + \renewcommand*{\glossaryheader}{\raggedright}% +% \end{macrocode} +%Top level entry format. +% \begin{macrocode} + \renewcommand*{\glossentry}[2]{% +% \end{macrocode} +%Do separator. +% \begin{macrocode} + \@glsxtr@bookindex@between{##1}% +% \end{macrocode} +%Update separators. +% \begin{macrocode} + \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep + \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep + \let\@glsxtr@bookindex@subbetween\@gobble + \let\@glsxtr@bookindex@subsubbetween\@gobble + \edef\@glsxtr@bookindex@between{% + \noexpand\glsxtrbookindexbetween{##1}% + }% + \edef\@glsxtr@bookindex@atendgroup{% + \noexpand\glsxtrbookindexatendgroup{##1}% + }% + \let\@glsxtr@bookindex@subatendgroup\relax + \let\@glsxtr@bookindex@subsubatendgroup\relax +% \end{macrocode} +%Format entry. +% \begin{macrocode} + \glstreeitem + \glsentryitem{##1}% + \glstarget{##1}{\glsxtrbookindexname{##1}}% + \glsxtrbookindexprelocation{##1}% + \glsxtrbookindexlocation{##1}{##2}% + }% + \renewcommand{\subglossentry}[3]{% + \ifcase##1\relax +% \end{macrocode} +% Level 0 (shouldn't happen as that's formatted with \cs{glossentry}). +% \begin{macrocode} + \glstreeitem + \or +% \end{macrocode} +% Level 1. +% \begin{macrocode} + \@glsxtr@bookindex@sep + \@glsxtr@bookindex@subbetween{##2}% + \let\@glsxtr@bookindex@sep\relax +% \end{macrocode} +% Update separators. +% \begin{macrocode} + \let\@glsxtr@bookindex@subsubbetween\@gobble + \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep + \edef\@glsxtr@bookindex@subbetween{% + \noexpand\glsxtrbookindexsubbetween{##2}% + }% + \edef\@glsxtr@bookindex@atsubendgroup{% + \noexpand\glsxtrbookindexatsubendgroup{##1}% + }% +% \end{macrocode} +% Start sub-item. +% \begin{macrocode} + \glstreesubitem + \glssubentryitem{##2}% + \else +% \end{macrocode} +% All other levels. +% \begin{macrocode} + \@glsxtr@bookindex@subsep + \@glsxtr@bookindex@subsubbetween{##2}% +% \end{macrocode} +% Update separators. +% \begin{macrocode} + \let\@glsxtr@bookindex@subsep\relax + \edef\@glsxtr@bookindex@subsubbetween{% + \noexpand\glsxtrbookindexsubsubbetween{##2}% + }% + \edef\@glsxtr@bookindex@atsubsubendgroup{% + \noexpand\glsxtrbookindexatsubsubendgroup{##1}% + }% +% \end{macrocode} +% Start sub-sub-item. +% \begin{macrocode} + \glstreesubsubitem + \fi +% \end{macrocode} +% Format entry. +% \begin{macrocode} + \glstarget{##2}{\glsxtrbookindexsubname{##2}}% + \glsxtrbookindexsubprelocation{##2}% + \glsxtrbookindexsublocation{##2}{##3}% + }% +% \end{macrocode} +% The group skip is moved to the group heading to avoid interfering +% with the end letter group hooks. +% \begin{macrocode} + \renewcommand*{\glsgroupskip}{}% +% \end{macrocode} +% Group heading format. +% \begin{macrocode} + \renewcommand*{\glsgroupheading}[1]{% +% \end{macrocode} +% Do end group hooks. +% \begin{macrocode} + \@glsxtr@bookindex@subsubatendgroup + \@glsxtr@bookindex@subatendgroup + \@glsxtr@bookindex@atendgroup + \@glsxtr@bookindexgroupskip +% \end{macrocode} +% Update separators. +% \begin{macrocode} + \let\@glsxtr@bookindexgroupskip\glsxtrbookindexgroupskip + \let\@glsxtr@bookindex@between\@gobble + \let\@glsxtr@bookindex@atendgroup\relax + \let\@glsxtr@bookindex@subatendgroup\relax + \let\@glsxtr@bookindex@subsubatendgroup\relax +% \end{macrocode} +% Fetch the group title from the label supplied in \verb|#1|. +%\changes{1.41}{2019-04-09}{changed \cs{thisgrptitle} to +%\cs{glsxtrcurrentgrptitle}}% +% \begin{macrocode} + \glsxtrgetgrouptitle{##1}{\glsxtrcurrentgrptitle}% +% \end{macrocode} +% Do the PDF bookmark if supported. +% \begin{macrocode} + \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{index.##1}% +% \end{macrocode} +% Format the group title. +% \begin{macrocode} + \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}% + \nopagebreak\indexspace\nopagebreak\@afterheading + }% +} +% \end{macrocode} +% Some supplementary commands that may be useful. +% These store the entry label for the current page. Since the page +% number is needed in the control sequence, this uses +% \cs{glsxtrbookindexthepage} instead of \cs{thepage} in case +% the page numbering has been set to something that contains +% formatting commands. +%\begin{macro}{\glsxtrbookindexthepage} +%\changes{1.21}{2017-11-03}{new} +%The \cs{@printglossary} sets \cs{currentglossary} to the current +%glossary label. This is used as a prefix in case the page number is +%reset. +% \begin{macrocode} +\newcommand{\glsxtrbookindexthepage}{% + \ifdef\currentglossary{\currentglossary.\arabic{page}}{\arabic{page}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexmarkentry} +%\changes{1.21}{2017-11-03}{new} +%Writes entry information to the \texttt{.aux} file. The argument is +%the entry label. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexmarkentry}[1]{% + \protected@write\@auxout + {\let\glsxtrbookindexthepage\relax}% + {\string\glsxtr@setbookindexmark{\glsxtrbookindexthepage}{#1}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtr@setbookindexmark} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@setbookindexmark}[2]{% + \ifcsundef{glsxtr@idxfirstmark@#1}% + {\csgdef{glsxtr@idxfirstmark@#1}{#2}}% + {}% + \csgdef{glsxtr@idxlastmark@#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexfirstmarkfmt} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexfirstmarkfmt}[1]{% + \glsentryname{#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexfirstmark} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexfirstmark}{% + \letcs{\glsxtr@label}{glsxtr@idxfirstmark@\glsxtrbookindexthepage}% + \ifdef\glsxtr@label + {\glsxtrbookindexfirstmarkfmt{\glsxtr@label}}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexlastmarkfmt} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexlastmarkfmt}[1]{% + \glsentryname{#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrbookindexlastmark} +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrbookindexlastmark}{% + \letcs{\glsxtr@label}{glsxtr@idxlastmark@\glsxtrbookindexthepage}% + \ifdef\glsxtr@label + {\glsxtrbookindexlastmarkfmt{\glsxtr@label}}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\iffalse +% \begin{macrocode} +%</glossary-bookindex.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-longextra.sty> +% \end{macrocode} +%\fi +%\chapter{longextra styles (\styfmt{glossary-longextra.sty})} +%\changes{1.37}{2018-11-30}{new} +%\section{Package Initialisation and Options} +%Provides additional long styles. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-longextra}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +%Load required packages. +% \begin{macrocode} +\RequirePackage{glossary-longbooktabs} +% \end{macrocode} +% +%\begin{macro}{\glslongextraNameFmt} +%\changes{1.37}{2018-11-30}{new} +%\changes{1.38}{2018-12-01}{bug fix: removed double param} +%\begin{definition} +%\cs{glslongextraNameFmt}\marg{label} +%\end{definition} +%Governs the way the name is displayed. +% \begin{macrocode} +\newcommand{\glslongextraNameFmt}[1]{% + \glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraDescFmt}\marg{label} +%\end{definition} +%Governs the way the description is displayed. +% \begin{macrocode} +\newcommand{\glslongextraDescFmt}[1]{% + \glossentrydesc{#1}\glspostdescription +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymbolFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraSymbolFmt}\marg{label} +%\end{definition} +%Governs the way the symbol is displayed. +% \begin{macrocode} +\newcommand{\glslongextraSymbolFmt}[1]{\glossentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraLocationFmt}\marg{label}\marg{location list} +%\end{definition} +%Governs the way the location is displayed. +% \begin{macrocode} +\newcommand{\glslongextraLocationFmt}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubNameFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraSubNameFmt}\marg{level}\marg{label} +%\end{definition} +%Governs the way the child name is displayed. Just does the +%sub-entry counter, if enabled, and the target. +% \begin{macrocode} +\newcommand{\glslongextraSubNameFmt}[2]{% + \glssubentryitem{#2}\glstarget{#2}{\strut}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubDescFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraSubDescFmt}\marg{level}\marg{label} +%\end{definition} +%Governs the way the child description is displayed. +% \begin{macrocode} +\newcommand{\glslongextraSubDescFmt}[2]{% + \glslongextraDescFmt{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubSymbolFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label} +%\end{definition} +%Governs the way the child symbol is displayed. +% \begin{macrocode} +\newcommand{\glslongextraSubSymbolFmt}[2]{% + \glslongextraSymbolFmt{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubLocationFmt} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraSubLocationFmt}\marg{level}\marg{label}\marg{location list} +%\end{definition} +%Governs the way the child location list is displayed. +% \begin{macrocode} +\newcommand{\glslongextraSubLocationFmt}[3]{#3} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameAlign} +%\changes{1.37}{2018-11-30}{new} +%Alignment for the name column. +% \begin{macrocode} +\newcommand{\glslongextraNameAlign}{l} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescAlign} +%\changes{1.37}{2018-11-30}{new} +%Alignment for the description column. +% \begin{macrocode} +\newcommand{\glslongextraDescAlign}{>{\raggedright}p{\glsdescwidth}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymbolAlign} +%\changes{1.37}{2018-11-30}{new} +%Alignment for the symbol column. +% \begin{macrocode} +\newcommand{\glslongextraSymbolAlign}{c} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationAlign} +%\changes{1.37}{2018-11-30}{new} +%Alignment for the location column. +% \begin{macrocode} +\newcommand{\glslongextraLocationAlign}{>{\raggedright}p{\glspagelistwidth}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraGroupHeading} +%\changes{1.37}{2018-11-30}{new} +%Used to format the letter group headings. The first argument is the +%number of columns in the table. The second is the group +%\emph{label} (not the title). +% \begin{macrocode} +\newcommand{\glslongextraGroupHeading}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraHeaderFormat} +%\changes{1.37}{2018-11-30}{new} +%Format for the column headers. +% \begin{macrocode} +\newcommand{\glslongextraHeaderFmt}[1]{\textbf{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescHeader}{% + \glslongextraNameDescTabularHeader\endhead + \glslongextraNameDescTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%Unlike the \glostyle{alttree} style, there aren't different widths +%for the hierarchical levels. +%\begin{macro}{\glslongextraSetWidest} +%\changes{1.37}{2018-11-30}{new} +%Provide in case the tree styles haven't been loaded. +% \begin{macrocode} +\newcommand*{\glslongextraSetWidest}[1]{% + \def\@glslongextrawidestname{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslongextrawidestname} +%\changes{1.37}{2018-11-30}{new} +%Pick up the widest name from the \glostyle{alttree} style if it has +%been set. (Will expand to nothing otherwise.) +% \begin{macrocode} +\newcommand*{\@glslongextrawidestname}{\csuse{@glswidestname}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraUpdateWidest} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand*{\glslongextraUpdateWidest}[1]{% + \ifundef\@glslongextrawidestname + {\def\@glslongextrawidestname{#1}}% + {% + \settowidth{\dimen@}{\@glslongextrawidestname}% + \settowidth{\dimen@ii}{#1}% + \ifdim\dimen@ii>\dimen@ + \def\@glslongextrawidestname{#1}% + \fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraUpdateWidestChild} +%\changes{1.37}{2018-11-30}{new} +%\begin{definition} +%\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text} +%\end{definition} +%Used by \cs{glsxtrSetWidest} in \sty{glossaries-extra-bib2gls}. +%Does nothing by default, since the default action in these styles +%is to omit the child name. If the child name should be displayed, +%then this needs to be redefined to use +%\cs{glslongextraUpdateWidest}. +% \begin{macrocode} +\newcommand*{\glslongextraUpdateWidestChild}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSetDescWidth} +%\changes{1.37}{2018-11-30}{new} +% Computes the value of \cs{glsdescwidth} for the styles that only +% have name and description columns. +% \begin{macrocode} +\newcommand{\glslongextraSetDescWidth}{% + \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\entryname}% +% \end{macrocode} +% Has the widest name been set. +% \begin{macrocode} + \settowidth{\dimen@}{\glsnamefont{\@glslongextrawidestname}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \fi +% \end{macrocode} +% Description width is \cs{linewidth} less 4\cs{tabcolsep} less the +% width of the name column. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymSetDescWidth} +%\changes{1.37}{2018-11-30}{new} +% Computes the value of \cs{glsdescwidth} for the styles that only +% have name, symbol and description columns. +% \begin{macrocode} +\newcommand{\glslongextraSymSetDescWidth}{% +% \end{macrocode} +% Work out the size for just the name and description style. +% \begin{macrocode} + \glslongextraSetDescWidth +% \end{macrocode} +% Now work out the symbol column width. This is assuming that the +% column title will be the widest text in the column. +% \begin{macrocode} + \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\symbolname}% +% \end{macrocode} +% Subtract 2\cs{tabcolsep} and the symbol header width. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\gls@tmplen}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocSetDescWidth} +%\changes{1.37}{2018-11-30}{new} +% Computes the value of \cs{glsdescwidth} for the styles that only +% have name, location and description columns. +% \begin{macrocode} +\newcommand{\glslongextraLocSetDescWidth}{% +% \end{macrocode} +% Work out the size for just the name and description style. +% \begin{macrocode} + \glslongextraSetDescWidth +% \end{macrocode} +% Subtract 2\cs{tabcolsep} and the location list column width. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymLocSetDescWidth} +%\changes{1.37}{2018-11-30}{new} +% Computes the value of \cs{glsdescwidth} for the styles that +% have name, symbol, location and description columns. +% \begin{macrocode} +\newcommand{\glslongextraSymLocSetDescWidth}{% +% \end{macrocode} +% Work out the size for just the name, symbol and description style. +% \begin{macrocode} + \glslongextraSymSetDescWidth +% \end{macrocode} +% Subtract 2\cs{tabcolsep} and the location list column width. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifGlsLongExtraUseTabular} +%\changes{1.37}{2018-11-30}{new} +%If true use \env{tabular} instead of \env{longtable}. Obviously +%only intended for short glossaries that can fit into a single page. +% \begin{macrocode} +\newif\ifGlsLongExtraUseTabular +\GlsLongExtraUseTabularfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraTabularVAlign} +%\changes{1.37}{2018-11-30}{new} +%Only used with the \env{tabular} setting. +% \begin{macrocode} +\newcommand*{\glslongextraTabularVAlign}{c} +% \end{macrocode} +%\end{macro} +%\begin{abbrvstyle}{long-name-desc} +%\changes{1.37}{2018-11-30}{new} +%Two column style with multi-lined descriptions and header. +%This is similar to the \glostyle{longragged-booktabs} style. +% \begin{macrocode} +\newglossarystyle{long-name-desc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign}}% + \@glslongextra@begintab + }% + {% + \glslongextraNameDescTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameDescTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign}}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameDescHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraDescFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2} + & + \glslongextraSubDescFmt{##1}{##2}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraNameDescLocationHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescLocationHeader}{% + \glslongextraNameDescLocationTabularHeader\endhead + \glslongextraNameDescLocationTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescLocationTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescLocationTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescLocationTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-name-desc-loc} +%\changes{1.37}{2018-11-30}{new} +%Three columns: name, description and location list. +% \begin{macrocode} +\newglossarystyle{long-name-desc-loc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraNameDescLocationTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraLocationFmt{##1}{##2}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2}& + \glslongextraSubDescFmt{##1}{##2}& + \glslongextraSubLocationFmt{##1}{##2}{##3}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraDescNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescNameHeader}{% + \glslongextraDescNameTabularHeader\endhead + \glslongextraDescNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\descriptionname& + \glslongextraHeaderFmt\entryname \tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-desc-name} +%\changes{1.37}{2018-11-30}{new} +%Like \glostyle{name-desc} but swaps the columns. +% \begin{macrocode} +\newglossarystyle{long-desc-name}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign}}% + \@glslongextra@begintab + }% + {% + \glslongextraDescNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraDescNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign}}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraDescNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraDescFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraLocationDescNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescNameHeader}{% + \glslongextraLocationDescNameTabularHeader\endhead + \glslongextraLocationDescNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationDescNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname& + \glslongextraHeaderFmt\descriptionname& + \glslongextraHeaderFmt\entryname \tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationDescNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-loc-desc-name} +%\changes{1.37}{2018-11-30}{new} +%Three columns: location, description and name. +% \begin{macrocode} +\newglossarystyle{long-loc-desc-name}% +{% + \ifGlsLongExtraUseTabular + {% + \glslongextraLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign}}% + \@glslongextra@begintab + }% + {% + \glslongextraLocationDescNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign}}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraLocationFmt{##1}{##2} & + \glslongextraDescFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubLocationFmt{##1}{##2}{##3} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraNameDescSymHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymHeader}{% + \glslongextraNameDescSymTabularHeader\endhead + \glslongextraNameDescSymTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescSymTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescSymTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-name-desc-sym} +%\changes{1.37}{2018-11-30}{new} +%Three column style with symbol in the third column. +% \begin{macrocode} +\newglossarystyle{long-name-desc-sym}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraNameDescSymTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameDescSymTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameDescSymHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraSymbolFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraNameDescSymLocationHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymLocationHeader}{% + \glslongextraNameDescSymLocationTabularHeader\endhead + \glslongextraNameDescSymLocationTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescSymLocationTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameDescSymLocationTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameDescSymLocationTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-name-desc-sym-loc} +%\changes{1.37}{2018-11-30}{new} +%Four columns: name, description and location +% \begin{macrocode} +\newglossarystyle{long-name-desc-sym-loc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraNameDescSymLocationTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraSymbolFmt{##1}& + \glslongextraLocationFmt{##1}{##2}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2}& + \glslongextraSubLocationFmt{##1}{##2}{##3}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraNameSymDescHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescHeader}{% + \glslongextraNameSymDescTabularHeader\endhead + \glslongextraNameSymDescTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameSymDescTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameSymDescTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-name-sym-desc} +%\changes{1.37}{2018-11-30}{new} +%Three column style with symbol in the second column. +% \begin{macrocode} +\newglossarystyle{long-name-sym-desc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraNameSymDescTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameSymDescTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameSymDescHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraSymbolFmt{##1} & + \glslongextraDescFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraNameSymDescLocationHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescLocationHeader}{% + \glslongextraNameSymDescLocationTabularHeader\endhead + \glslongextraNameSymDescLocationTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameSymDescLocationTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraNameSymDescLocationTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraNameSymDescLocationTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-name-sym-desc-loc} +%\changes{1.37}{2018-11-30}{new} +%Four column style with symbol in the second column. +% \begin{macrocode} +\newglossarystyle{long-name-sym-desc-loc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraNameSymDescLocationTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraLocationAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraNameFmt{##1} & + \glslongextraSymbolFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraLocationFmt{##1}{##2}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubNameFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubLocationFmt{##1}{##2}{##3}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraSymDescNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescNameHeader}{% + \glslongextraSymDescNameTabularHeader\endhead + \glslongextraSymDescNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymDescNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymDescNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-sym-desc-name} +%\changes{1.37}{2018-11-30}{new} +%Three column style with symbol in the first column, description in +%the second and name in the third. +% \begin{macrocode} +\newglossarystyle{long-sym-desc-name}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraSymDescNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraSymDescNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraSymDescNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraSymbolFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraLocationSymDescNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationSymDescNameHeader}{% + \glslongextraLocationSymDescNameTabularHeader\endhead + \glslongextraLocationSymDescNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationSymDescNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationSymDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationSymDescNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationSymDescNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-loc-sym-desc-name} +%\changes{1.37}{2018-11-30}{new} +%Four column style with location list, symbol, description and name. +% \begin{macrocode} +\newglossarystyle{long-loc-sym-desc-name}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraLocationSymDescNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraLocationFmt{##1}{##2} & + \glslongextraSymbolFmt{##1} & + \glslongextraDescFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubLocationFmt{##1}{##2}{##3} & + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraDescSymNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymNameHeader}{% + \glslongextraDescSymNameTabularHeader\endhead + \glslongextraDescSymNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescSymNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescSymNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-desc-sym-name} +%\changes{1.37}{2018-11-30}{new} +%Three column style with description in the first column, symbol in +%the second and name in the third. +% \begin{macrocode} +\newglossarystyle{long-desc-sym-name}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraDescSymNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraDescSymNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraDescSymNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraDescFmt{##1} & + \glslongextraSymbolFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{macro}{\glslongextraLocationDescSymNameHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescSymNameHeader}{% + \glslongextraLocationDescSymNameTabularHeader\endhead + \glslongextraLocationDescSymNameTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationDescSymNameTabularHeader} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescSymNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLocationDescSymNameTabularFooter} +%\changes{1.37}{2018-11-30}{new} +% \begin{macrocode} +\newcommand{\glslongextraLocationDescSymNameTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{long-loc-desc-sym-name} +%\changes{1.37}{2018-11-30}{new} +%Four column style with location list, description, symbol and name. +% \begin{macrocode} +\newglossarystyle{long-loc-desc-sym-name}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraLocationDescSymNameTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymLocSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraLocationAlign + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% + \renewcommand{\glossentry}[2]{% + \glslongextraLocationFmt{##1}{##2} & + \glslongextraDescFmt{##1} & + \glslongextraSymbolFmt{##1} & + \glslongextraNameFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubLocationFmt{##1}{##2}{##3} & + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubSymbolFmt{##1}{##2} & + \glslongextraSubNameFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\iffalse +% \begin{macrocode} +%</glossary-longextra.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-topic.sty> +% \end{macrocode} +%\fi +%\chapter{topic styles (\styfmt{glossary-topic.sty})} +%\changes{1.40}{2019-03-22}{new} +%\section{Package Initialisation and Options} +%Provides \qt{topic} styles where top-level entries are considered a +%topic. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-topic}[2019/04/09 v1.41 (NLCT)] +% \end{macrocode} +%Load required package. +% \begin{macrocode} +\RequirePackage{multicol} +% \end{macrocode} +%The top-level entries act like headers. If the top-level entry has a +%description it's placed below the name. +%\begin{style}{topic} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newglossarystyle{topic}{% + \renewenvironment{theglossary}% + {% + \glstopicInit + \def\glstopic@prechildren{}% + \def\glstopic@prevlevel{-1}% + }% + {\par}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{% + \def\glstopic@prevlevel{-1}% + \glstopicGroupHeading{##1}% + }% + \renewcommand{\glossentry}[2]{% + \hangindent0pt\relax + \parindent\glstopicParIndent\relax + \glstopicItem{##1}{##2}% +% \end{macrocode} +%\changes{1.41}{2019-04-09}{added penalty if no description} +%If there isn't a description, penalise a page break. +% \begin{macrocode} + \ifglshasdesc{##1}% + {% + \def\glstopic@prechildren{}% + }% + {% + \def\glstopic@prechildren{\nopagebreak}% + }% + }% + \renewcommand{\subglossentry}[3]{% + \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi + \def\glstopic@prevlevel{##1}% + \glstopicAssignSubIndent{##1}% + \glstopicSubItem{##1}{##2}{##3}% + }% + \renewcommand*{\glsgroupskip}{}% +} +% \end{macrocode} +%\end{style} +%\begin{macro}{\glstopicGroupHeading} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicGroupHeading}\marg{group label} +%\end{definition} +%May be redefined if letter group headings are required. For +%example: +%\begin{verbatim} +%\renewcommand*{\glstopicGroupHeading}[1]{% +% \glsxtrgetgrouptitle{#1}{\thisgrptitle}% +% \section*{\thisgrptitle}% +%} +%\end{verbatim} +% \begin{macrocode} +\newcommand*{\glstopicGroupHeading}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicItem} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicItem}\marg{label}\marg{location list} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glstopicItem}[2]{% + \glspar\glstopicPreSkip\glspar\noindent + \glstopicMarker{#1}% + \glstopicTitleFont + {% + \glsentryitem{#1}\glstarget{#1}{\glstopicTitle{#1}}% + }% + \ifglshasdesc{#1}% + {\glspar\nobreak\glstopicMidSkip\glspar\nobreak + \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip}% + {\glspar\nobreak\glstopicPostSkip}% + \glstopicLoc{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicMarker} +%\changes{1.40}{2019-03-22}{new} +% May be used to insert a bookmark etc if required. +% \begin{macrocode} +\newcommand*{\glstopicMarker}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicName} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicTitle}[1]{\Glossentryname{#1}% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicTitleFont} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicTitleFont}[1]{\textbf{\large #1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicDesc} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicDesc}[1]{\Glossentrydesc{#1}\glspostdescription} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicLoc} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicLoc}[2]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicParIndent} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newlength\glstopicParIndent +\setlength\glstopicParIndent{20pt} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubIndent} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newlength\glstopicSubIndent +\setlength\glstopicSubIndent{20pt} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicInit} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand{\glstopicInit}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicAssignSubIndent} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicAssignSubIndent}\marg{level} +%\end{definition} +%Used to set the indentation for sub-levels. +% \begin{macrocode} +\newcommand*{\glstopicAssignSubIndent}[1]{% +% \end{macrocode} +%\changes{1.41}{2019-04-09}{moved \cs{par} from \cs{glstopicSubItem}} +% \begin{macrocode} + \par + \parindent\dimexpr#1\glstopicSubIndent-\glstopicSubIndent\relax + \glstopicAssignWidest{#1}% + \hangindent\dimexpr\parindent+\glstopicwidest\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstopicwidest} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newlength\glstopicwidest +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstopicAssignWidest} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicAssignWidest}\marg{level} +%\end{definition} +%Used in the definition of \cs{glstopicAssignSubIndent} +%to set the indentation from the widest name for the given +%level. This will require \sty{glossary-tree} to set the values. +% \begin{macrocode} +\newcommand*{\glstopicAssignWidest}[1]{% + \ifcsundef{@glswidestlength\romannumeral#1}% + {% + \ifcsdef{@glswidestname\romannumeral#1}% + {% + \settowidth{\glstopicwidest}{% + \glstopicSubNameFont{\csuse{@glswidestname\romannumeral#1}}% + \glstopicSubItemSep + }% + }% + {\setlength{\glstopicwidest}{0pt}}% +% \end{macrocode} +%Save the value so that it doesn't have to keep being recalculated. +% \begin{macrocode} + \csedef{@glswidestlength\romannumeral#1}{\the\glstopicwidest}% + }% + {\setlength{\glstopicwidest}{\csuse{@glswidestlength\romannumeral#1}}}% +} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\glstopicPreSkip} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicPreSkip}{\medskip} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicMidSkip} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicMidSkip}{\smallskip} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicPostSkip} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicPostSkip}{\smallskip} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubItem} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location list} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glstopicSubItem}[3]{% +% \end{macrocode} +%\changes{1.41}{2019-04-09}{moved \cs{par} to \cs{glstopicAssignSubIndent}} +% \begin{macrocode} + \glstopicSubItemBox{#1}{\glstopicSubNameFont{\glsentryitem{#2}% + \glstarget{#2}{\glossentryname{#2}}}% + \glstopicSubItemSep + }% + \ifglshassymbol{#2}{(\glossentrysymbol{#2})\space}{}% +% \end{macrocode} +%\changes{1.41}{2019-04-09}{added check for description} +% \begin{macrocode} + \ifglshasdesc{#2}% + {\glossentrydesc{#2}\glspostdescription\glstopicSubPreLocSep}{}% + \glstopicSubLoc{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubItemSep} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicSubItemSep}{\quad} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubItemBox} +%\changes{1.40}{2019-03-22}{new} +%\begin{definition} +%\cs{glstopicSubItemBox}\marg{level}\marg{text} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glstopicSubItemBox}[2]{% + \ifdim\glstopicwidest>0pt\relax\makebox[\glstopicwidest][l]{#2}\else#2\fi +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubNameFont} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicSubNameFont}[1]{\textbf{#1}} +% \end{macrocode} +%\end{macro} +%\changes{1.41}{2019-04-09}{new} +% \begin{macrocode} +\newcommand*{\glstopicSubPreLocSep}{\space} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstopicSubLoc} +%\changes{1.40}{2019-03-22}{new} +%\changes{1.41}{2019-04-09}{moved \cs{space} to \cs{glstopicSubPreLocSep}} +% \begin{macrocode} +\newcommand*{\glstopicSubLoc}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstopicCols} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicCols}{2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstopicColsEnv} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newcommand*{\glstopicColsEnv}{multicols} +% \end{macrocode} +%\end{macro} +% +%\begin{style}{topicmcols} +%\changes{1.40}{2019-03-22}{new} +% \begin{macrocode} +\newglossarystyle{topicmcols}{% + \renewenvironment{theglossary}% + {% + \glstopicInit + \def\glstopic@prechildren{}% + \def\glstopic@postchildren{}% + \def\glstopic@prevlevel{-1}% + }% + {% + \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi + \par + }% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{% + \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi + \def\glstopic@prevlevel{-1}% + \glstopicGroupHeading{##1}% + }% + \renewcommand{\glossentry}[2]{% + \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi + \def\glstopic@prevlevel{0}% + \hangindent0pt\relax + \parindent\glstopicParIndent\relax + \glstopicItem{##1}{##2}% + \ifnum\glstopicCols>1\relax +% \end{macrocode} +%\changes{1.41}{2019-04-09}{added penalty if no description} +%If there isn't a description, penalise a page break. +% \begin{macrocode} + \ifglshasdesc{##1}% + {% + \edef\glstopic@prechildren{% + \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}% + }% + {% + \edef\glstopic@prechildren{% + \noexpand\nopagebreak + \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}% + }% + \edef\glstopic@postchildren{\noexpand\end{\glstopicColsEnv}}% + \fi + }% + \renewcommand{\subglossentry}[3]{% + \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi + \def\glstopic@prevlevel{##1}% + \glstopicAssignSubIndent{##1}% + \glstopicSubItem{##1}{##2}{##3}% + }% + \renewcommand*{\glsgroupskip}{}% +} +% \end{macrocode} +%\end{style} +%\iffalse +% \begin{macrocode} +%</glossary-topic.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-xr.tex> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% This file is part of the glossaries-extra bundle +% These are dummy glossary entries with cross-references for use in +% test documents. +%COMMENT +\newglossaryentry{lorem}{name={lorem},description={ipsum}} + +\newglossaryentry{alias-lorem}{name={alias-lorem},description={ipsum}, + alias={lorem}} + +\newglossaryentry{dolor}{name={dolor},description={sit}} + +\newglossaryentry{amet}{name={amet},description={consectetuer}, + see={dolor}} + +\newglossaryentry{adipiscing}{name={adipiscing},description={elit}} + +\newglossaryentry{ut}{name={ut},description={purus}} + +\newglossaryentry{elit}{name={elit},description={vestibulum}, + seealso={adipiscing,ut}} + +\newglossaryentry{placerat}{name={placerat},description={ac}} + +\newglossaryentry{vitae}{name={vitae},description={felis}} + +\newglossaryentry{curabitur}{name={curabitur},description={gravida}} + +\newglossaryentry{mauris}{name={mauris},description={nam}} + +\newglossaryentry{arcu}{name={arcu},description={libero}, + seealso={placerat,vitae,curabitur}} + +\newglossaryentry{nonummy}{name={nonummy},description={eget}, + seealso={mauris}} + +\newglossaryentry{consectetuer}{name={consectetuer},description={id}, + parent={nonummy}} + +\newglossaryentry{vulputate}{name={vulputate},description={a magna}, + parent={nonummy}} + +\newglossaryentry{donec}{name={donec},description={vehicula}} + +\newglossaryentry{augue}{name={augue},description={eu neque}} + +\newglossaryentry{pellentesque}{name={pellentesque},description={habitant}, + see={augue}} + +\newglossaryentry{morbi}{name={morbi},description={tristique}} + +\newglossaryentry{senectus}{name={senectus},description={et netus}} + +\newglossaryentry{et}{name={et},description={malesuada}, + see={vulputate}} + +\newglossaryentry{fames}{name={fames},description={ac}} + +\newglossaryentry{turpis}{name={turpis},description={egestas}, + seealso={consectetuer}} + +\newglossaryentry{leo}{name={leo},description={cras}} + +\newglossaryentry{viverra}{name={viverra},description={metus}} + +\newglossaryentry{rhoncus}{name={rhoncus},description={sem}} + +\newglossaryentry{nulla}{name={nulla},description={et}} + +\newglossaryentry{lectus}{name={lectus},description={vestibulum}} + +\newglossaryentry{urna}{name={urna},description={fringilla}, + parent={lectus},see={nulla}} + +\newglossaryentry{ultrices}{name={ultrices},description={phasellus}, + parent={lectus}} + +\newglossaryentry{eu}{name={eu},description={tellus}, + parent={lectus}} + +\newglossaryentry{alias-eu}{name={alias-eu},description={tellus}, + alias={eu}} + +\newglossaryentry{sit}{name={sit},description={amet}} + +\newglossaryentry{tortor}{name={tortor},description={gravida}} + +\newglossaryentry{integer}{name={integer},description={sapien}} + +\newglossaryentry{est}{name={est},description={iaculis}} + +\newglossaryentry{in}{name={in},description={pretium}, + seealso={sit,tortor,est}} + +\newglossaryentry{quis}{name={quis},description={viverra}} + +\newglossaryentry{ac}{name={ac},description={nunc}} + +\newglossaryentry{praesent}{name={praesent},description={eget \gls{ac}}} + +\newglossaryentry{sem}{name={sem},description={vel leo +\glshyperlink{quis}}} + +\newglossaryentry{bibendum}{name={bibendum},description={ultrices}} + +\newglossaryentry{aenean}{name={aenean},description={faucibus}} + +\newglossaryentry{malesuada}{name={malesuada},description={eu}, + parent={aenean}} + +\newglossaryentry{pulvinar}{name={pulvinar},description={at}, + parent={aenean}} + +\newglossaryentry{mollis}{name={mollis},description={ac nulla}, + parent={aenean}} + +\newglossaryentry{auctor}{name={auctor},description={semper}, + parent={aenean}} + +\newglossaryentry{varius}{name={varius},description={orci}, + parent={aenean}} + +\newglossaryentry{eget}{name={eget},description={risus}} + +\newglossaryentry{duis}{name={duis},description={nibh}} + +\newglossaryentry{mi}{name={mi},description={congue}} + +\newglossaryentry{accumsan}{name={accumsan},description={eleifend}} + +\newglossaryentry{sagittis}{name={sagittis},description={quis}, + see={eget}} + +\newglossaryentry{diam}{name={diam},description={duis}} + +\newglossaryentry{orci}{name={orci},description={dignissim}, + seealso={diam}} +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-xr.tex> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-acronym-desc.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@acronym{ndl, + description = {fringilla a, euismod sodales, + sollicitudin vel, wisi}, + short = {NDL}, + long = {nam dui ligula} +} + +@acronym{mal, + description = {non justo}, + short = {MAL}, + long = {morbi auctor lorem} +} + +@acronym{nll, + description = {pretium at, lobortis vitae, ultricies et, +tellus}, + short = {NLL}, + long = {name lacus libero} +} + +@acronym{da, + description = {tortor sed accumsan bibendum, erat ligula +aliquet magna, vitae ornare odio metus a mi}, + short = {DA}, + long = {donec aliquet} +} + +@acronym{mao, + description = {et nisl hendrerit mollis}, + short = {MAO}, + long = {morbi ac orci} +} + +@acronym{sum, + description = {cras nec ante}, + short = {SUM}, + long = {suspendisse ut massa} +} + +@acronym{pan, + description = {cum sociis natoque penatibus et magnis dis +parturient montes, nascetur ridiculus mus}, + short = {PAN}, + long = {pellentesque a nulla} +} + +@acronym{atu, + description = {nulla ullamcorper vestibulum +turpis}, + short = {ATU}, + long = {aliquam tincidunt urna} +} + +@acronym{pclm, + description = {nulla malesuada porttitor diam}, + short = {PCLM}, + long = {pellentesque cursus luctus mauris} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-acronym-desc.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-acronym.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@acronym{lid, + short = {LID}, + long = {lorem ipsum dolor} +} + +@acronym{stc, + short = {STC}, + long = {sit amet consectetuer} +} + +@acronym{aeu, + short = {AEU}, + long = {adipiscing elit ut} +} + +@acronym{pev, + short = {PEV}, + long = {purus elit vestibulum} +} + +@acronym{upa, + short = {UPA}, + long = {ut placerat ac} +} + +@acronym{avf, + short = {AVF}, + long = {adipiscing vitae felis} +} + +@acronym{cdg, + short = {CDG}, + long = {curabitur dictum gravida} +} + +@acronym{mna, + short = {MNA}, + long = {mauris nam arcu} +} + +@acronym{lne, + short = {LNE}, + long = {libero nonummy eget} +} + +@acronym{civ, + short = {CIV}, + long = {consectetuer id vulputate} +} + +@acronym{amd, + short = {AMD}, + long = {a magna donec} +} + +@acronym{vae, + short = {VAE}, + long = {vehicula augue eu} +} + +@acronym{nph, + short = {NPH}, + long = {neque pellentesque habitant} +} + +@acronym{mts, + short = {MTS}, + long = {morbi tristique senectus} +} + +@acronym{ene, + short = {ENE}, + long = {et netus et} +} + +@acronym{mfa, + short = {MFA}, + long = {malesuada fames ac} +} + +@acronym{tem, + short = {TEM}, + long = {turpis egestas mauris} +} + +@acronym{ulc, + short = {ULC}, + long = {ut leo cras} +} + +@acronym{vmr, + short = {VMR}, + long = {viverra metus rhoncus} +} + +@acronym{sne, + short = {SNE}, + long = {sem nulla et} +} + +@acronym{lvu, + short = {LVU}, + long = {lectus vestibulum urna} +} + +@acronym{fup, + short = {FUP}, + long = {fringilla ultrices phasellus} +} + +@acronym{ets, + short = {ETS}, + long = {eu tellus sit} +} + +@acronym{atg, + short = {ATG}, + long = {amet tortor gravida} +} + +@acronym{pis, + short = {PIS}, + long = {placerat integer sapien} +} + +@acronym{eii, + short = {EII}, + long = {est iaculis in} +} + +@acronym{pqv, + short = {PQV}, + long = {pretium quis viverra} +} + +@acronym{anp, + short = {ANP}, + long = {ac nunc praesent} +} + +@acronym{esv, + short = {ESV}, + long = {eget sem vel} +} + +@acronym{lub, + short = {LUB}, + long = {leo ultrices bibendum} +} + +@acronym{afm, + short = {AFM}, + long = {aenean faucibus morbi} +} + +@acronym{dnm, + short = {DNM}, + long = {dolor nulla malesuada} +} + +@acronym{epa, + short = {EPA}, + long = {eu pulvinar at} +} + +@acronym{man, + short = {MAC}, + long = {mollis ac nulla} +} + +@acronym{cas, + short = {CAS}, + long = {curabitur auctor semper} +} + +@acronym{ndv, + short = {NDV}, + long = {nulla donec varius} +} + +@acronym{oer, + short = {OER}, + long = {orci eget risus} +} + +@acronym{dnmc, + short = {DNMC}, + long = {duis nibh mi congue} +} + +@acronym{cea, + short = {CEA}, + long = {congue eu accumsan} +} + +@acronym{esq, + short = {ESQ}, + long = {eleifend sagittis quis} +} + +@acronym{dia, + short = {DIA}, + long = {duis eget orci} +} + +@acronym{sao, + short = {SAO}, + long = {sit amet orci} +} + +@acronym{drn, + short = {DRN}, + long = {dignissim rutrum nam} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-acronym.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-acronyms-lang.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@acronym{li, + user1 = {love itself}, + short = {LI}, + long = {lorem ipsum} +} + +@acronym{np, + user1 = {produces none}, + short = {NP}, + long = {nulla pariatur} +} + +@acronym{sic, + user1 = {blame belongs}, + short = {SIC}, + long = {sunt in culpa} +} + +@acronym{esoc, + user1 = {blinded by +desire}, + short = {ESOC}, + long = {excepturi sint obcaecati cupiditat} +} + +@acronym{nmruu, + short = {NMRUU}, + long = {nulla malesuada +risus ut urna} +} + +@acronym{di, + short = {DI}, + long = {duis iaculi} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-acronyms-lang.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-brief.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{lorem, + name = {lorem}, + description = {ipsum} +} + +@entry{dolor, + name = {dolor}, + description = {sit} +} + +@entry{amet, + name = {amet}, + description = {consectetuer} +} + +@entry{adipiscing, + name = {adipiscing}, + description = {elit} +} + +@entry{ut, + name = {ut}, + description = {purus} +} + +@entry{elit, + name = {elit}, + description = {vestibulum} +} + +@entry{placerat, + name = {placerat}, + description = {ac} +} + +@entry{vitae, + name = {vitae}, + description = {felis} +} + +@entry{curabitur, + name = {curabitur}, + description = {gravida} +} + +@entry{mauris, + name = {mauris}, + description = {nam} +} + +@entry{arcu, + name = {arcu}, + description = {libero} +} + +@entry{nonummy, + name = {nonummy}, + description = {eget} +} + +@entry{consectetuer, + name = {consectetuer}, + description = {id} +} + +@entry{vulputate, + name = {vulputate}, + description = {a magna} +} + +@entry{donec, + name = {donec}, + description = {vehicula} +} + +@entry{augue, + name = {augue}, + description = {eu neque} +} + +@entry{pellentesque, + name = {pellentesque}, + description = {habitant} +} + +@entry{morbi, + name = {morbi}, + description = {tristique} +} + +@entry{senectus, + name = {senectus}, + description = {et netus} +} + +@entry{et, + name = {et}, + description = {malesuada} +} + +@entry{fames, + name = {fames}, + description = {ac} +} + +@entry{turpis, + name = {turpis}, + description = {egestas} +} + +@entry{leo, + name = {leo}, + description = {cras} +} + +@entry{viverra, + name = {viverra}, + description = {metus} +} + +@entry{rhoncus, + name = {rhoncus}, + description = {sem} +} + +@entry{nulla, + name = {nulla}, + description = {et} +} + +@entry{lectus, + name = {lectus}, + description = {vestibulum} +} + +@entry{urna, + name = {urna}, + description = {fringilla} +} + +@entry{ultrices, + name = {ultrices}, + description = {phasellus} +} + +@entry{eu, + name = {eu}, + description = {tellus} +} + +@entry{sit, + name = {sit}, + description = {amet} +} + +@entry{tortor, + name = {tortor}, + description = {gravida} +} + +@entry{integer, + name = {integer}, + description = {sapien} +} + +@entry{est, + name = {est}, + description = {iaculis} +} + +@entry{in, + name = {in}, + description = {pretium} +} + +@entry{quis, + name = {quis}, + description = {viverra} +} + +@entry{ac, + name = {ac}, + description = {nunc} +} + +@entry{praesent, + name = {praesent}, + description = {eget} +} + +@entry{sem, + name = {sem}, + description = {vel leo} +} + +@entry{bibendum, + name = {bibendum}, + description = {ultrices} +} + +@entry{aenean, + name = {aenean}, + description = {faucibus} +} + +@entry{malesuada, + name = {malesuada}, + description = {eu} +} + +@entry{pulvinar, + name = {pulvinar}, + description = {at} +} + +@entry{mollis, + name = {mollis}, + description = {ac nulla} +} + +@entry{auctor, + name = {auctor}, + description = {semper} +} + +@entry{varius, + name = {varius}, + description = {orci} +} + +@entry{eget, + name = {eget}, + description = {risus} +} + +@entry{duis, + name = {duis}, + description = {nibh} +} + +@entry{mi, + name = {mi}, + description = {congue} +} + +@entry{accumsan, + name = {accumsan}, + description = {eleifend} +} + +@entry{sagittis, + name = {sagittis}, + description = {quis} +} + +@entry{diam, + name = {diam}, + description = {duis} +} + +@entry{orci, + name = {orci}, + description = {dignissim} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-brief.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-childnoname.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{scelerisque, + name = {scelerisque}, + description = {at} +} + +@entry{vestibulum, + parent = {scelerisque}, + description = {eu, nulla} +} + +@entry{utodionisl, + parent = {scelerisque}, + description = {facilisis id} +} + +@entry{molliset, + parent = {scelerisque}, + description = {nec, enim} +} + +@entry{aeneansem, + parent = {scelerisque}, + description = {sem leo} +} + +@entry{pellentesquesit, + parent = {scelerisque}, + description = {sit amet} +} + +@entry{sapien, + parent = {scelerisque}, + description = {vehicula +pellentesque} +} + +@entry{consequat, + parent = {scelerisque}, + description = {tellus +et tortor} +} + +@entry{uttempor, + name = {ut tempor}, + description = {laoreet +quam} +} + +@entry{nullamid, + parent = {uttempor}, + description = {wisi a +libero} +} + +@entry{tristique, + parent = {uttempor}, + description = {semper} +} + +@entry{nullamnislmassa, + parent = {uttempor}, + description = {rutrum +ut} +} + +@entry{eleifend, + name = {eleifend}, + description = {sit amet +faucibus} +} + +@entry{elementum, + parent = {eleifend}, + description = {elementum} +} + +@entry{urnasapien, + parent = {eleifend}, + description = {urna sapien} +} + +@entry{consectetuermauris, + name = {consectetuer}, + description = {mauris} +} + +@entry{quisegestas, + parent = {consectetuermauris}, + description = {quis egestas} +} + +@entry{leojusto, + parent = {consectetuermauris}, + description = {leo +justo} +} + +@entry{nonrisus, + name = {non risus}, + description = {morbi non +felis} +} + +@entry{aclibero, + parent = {nonrisus}, + description = {ac libero} +} + +@entry{vulputatefringilla, + parent = {nonrisus}, + description = {vulputate +fringilla} +} + +@entry{maurislibero, + name = {mauris}, + description = {libero eros} +} + +@entry{lacinia, + parent = {maurislibero}, + description = {lacinia +non} +} + +@entry{sodales, + parent = {maurislibero}, + description = {sodales +quis} +} + +@entry{dapibus, + parent = {maurislibero}, + description = {dapibus +porttitor, pede} +} + +@entry{class, + name = {class}, + description = {aptent taciti} +} + +@entry{sociosqu, + parent = {class}, + description = {sociosqu} +} + +@entry{adlitora, + parent = {class}, + description = {ad litora} +} + +@entry{torquent, + parent = {class}, + description = {torquent per +conubia} +} + +@entry{nostra, + name = {nostra}, + description = {per inceptos +hymenaeos} +} + +@entry{morbidapibus, + parent = {nostra}, + description = {morbi +dapibus} +} + +@entry{mauriscondimentum, + parent = {nostra}, + description = {mauris +condimentum nulla} +} + +@entry{cumsociis, + name = {cum sociis}, + description = {natoque +penatibus} +} + +@entry{etmagnis, + parent = {cumsociis}, + description = {et +magnis} +} + +@entry{disparturient, + parent = {cumsociis}, + description = {dis +parturient montes} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-childnoname.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-cite.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{fusce, + user1 = {article-minimal}, + name = {fusce}, + description = {suscipit cursus sem} +} + +@entry{vivamus, + user1 = {article-full}, + name = {vivamus}, + description = {risus mi, egestas ac} +} + +@entry{imperdiet, + user1 = {whole-journal}, + name = {imperdiet}, + description = {varius, faucibus quis, leo} +} + +@entry{aenean2, + user1 = {inbook-minimal}, + name = {aenean}, + description = {tincidunt} +} + +@entry{crasid, + user1 = {inbook-full}, + name = {cras id}, + description = {justo quis nibh scelerisque dignissim} +} + +@entry{aliquam2, + user1 = {book-minimal}, + name = {aliquam}, + description = {sagittis elementum dolor} +} + +@entry{aeneanconsectetuer, + user1 = {book-full}, + name = {aenean consectetuer}, + description = {justo in pede} +} + +@entry{curabiturullamcorper, + user1 = {booklet-minimal}, + name = {curabitur ullamcorper}, + description = {ligula nec orci} +} + +@entry{aliquampurus, + user1 = {booklet-full}, + name = {aliquam purus}, + description = {turpis, aliquam id} +} + +@entry{ornarevitae, + user1 = {incollection-minimal}, + name = {ornare vitae}, + description = {porttitor non, wisi} +} + +@entry{maecenasluctus, + user1 = {incollection-full}, + name = {maecenas luctus}, + description = {porta lorem} +} + +@entry{donecvitae, + user1 = {manual-minimal}, + name = {donec vitae}, + description = {ligula eu ante pretium varius} +} + +@entry{proin, + user1 = {manual-full}, + name = {proin}, + description = {tortor metus, convallis et} +} + +@entry{hendrerit, + user1 = {mastersthesis-minimal}, + name = {hendrerit}, + description = {non, scelerisque in, urna} +} + +@entry{crasquis, + user1 = {mastersthesis-full}, + name = {cras qui}, + description = {libero eu ligula bibendum tempor} +} + +@entry{vivamustellus, + user1 = {misc-minimal}, + name = {vivamus tellus}, + description = {quam, malesuada eu, tempus sed, tempor sed, velit} +} + +@entry{doneclacinia, + user1 = {misc-full}, + name = {donec lacinia}, + description = {auctor libero} +} + +@entry{praesent2, + user1 = {inproceedings-minimal}, + name = {praesent}, + description = {sed neque id pede mollis rutrum} +} + +@entry{vestibulum2, + user1 = {inproceedings-minimal,phdthesis-minimal}, + name = {vestibulum}, + description = {iaculis risus} +} + +@entry{pellentesque2, + name = {pellentesque}, + description = {lacus} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-cite.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-images.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{sedfeugiat, + user1 = {example-image}, + name = {sed feugiat}, + description = {Cum sociis natoque penatibus et magnis dis parturient montes, +nascetur ridiculus mus. Ut pellentesque augue sed urna. Vestibulum +diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam +at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit +amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod. +Aenean vel lectus. Nunc imperdiet justo nec dolor. + +Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In +mi erat, cursus id, nonummy sed, ullamcorper eget, sapien. Praesent +pretium, magna in eleifend egestas, pede pede pretium lorem, quis +consectetuer tortor sapien facilisis magna. Mauris quis magna +varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam +porttitor quam a lacus. Praesent vel arcu ut tortor cursus volutpat. +In vitae pede quis diam bibendum placerat. Fusce elementum convallis +neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, +mi. Duis nec dui quis leo sagittis commodo. +} +} + +@entry{aliquamlectus, + user1 = {example-image-a}, + name = {aliquam lectus}, + description = {Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris +porttitor pharetra tortor. Sed fringilla justo sed mauris. Mauris +tellus. Sed non leo. Nullam elementum, magna in cursus sodales, +augue est scelerisque sapien, venenatis congue nulla arcu et pede. +Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi, +suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla +et nisl. + +Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt +nulla. Vestibulum rhoncus molestie odio. Sed lobortis, justo et +pretium lobortis, mauris turpis condimentum augue, nec ultricies +nibh arcu pretium enim. Nunc purus neque, placerat id, imperdiet +sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem +accumsan laoreet. In hac habitasse platea dictumst. Etiam +condimentum facilisis libero. Suspendisse in elit quis nisl aliquam +dapibus. Pellentesque auctor sapien. Sed egestas sapien nec lectus. +Pellentesque vel dui vel neque bibendum viverra. Aliquam porttitor +nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris +et libero. Proin euismod porta felis. Nam lobortis, metus quis +elementum commodo, nunc lectus elementum mauris, eget vulputate +ligula tellus eu neque. Vivamus eu dolor. +} +} + +@entry{nullainipsum, + user1 = {example-image-b}, + name = {nulla in ipsum}, + description = {Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi. +Pellentesque habitant morbi tristique senectus et netus et malesuada +fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis +erat, ullamcorper in, dictum non, ultricies ut, lectus. Proin vel +arcu a odio lobortis euismod. Vestibulum ante ipsum primis in +faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut +est. Aliquam odio. Pellentesque massa turpis, cursus eu, euismod +nec, tempor congue, nulla. Duis viverra gravida mauris. Cras +tincidunt. Curabitur eros ligula, varius ut, pulvinar in, cursus +faucibus, augue. + +Nulla mattis luctus nulla. Duis commodo velit at leo. Aliquam +vulputate magna et leo. Nam vestibulum ullamcorper leo. Vestibulum +condimentum rutrum mauris. Donec id mauris. Morbi molestie justo et +pede. Vivamus eget turpis sed nisl cursus tempor. Curabitur mollis +sapien condimentum nunc. In wisi nisl, malesuada at, dignissim sit +amet, lobortis in, odio. Aenean consequat arcu a ante. Pellentesque +porta elit sit amet orci. Etiam at turpis nec elit ultricies +imperdiet. Nulla facilisi. In hac habitasse platea dictumst. +Suspendisse viverra aliquam risus. Nullam pede justo, molestie +nonummy, scelerisque eu, facilisis vel, arcu. +} +} + +@entry{curabiturtellusmagna, + user1 = {example-image-c}, + name = {curabitur tellus magna}, + description = {Donec interdum. Praesent scelerisque. Maecenas posuere sodales +odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a, +turpis. Etiam ligula arcu, elementum a, venenatis quis, sollicitudin +sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus +vel, nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut +pede tincidunt porta. Lorem ipsum dolor sit amet, consectetuer +adipiscing elit. Etiam congue neque id dolor. + +Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac +libero. Sed sem justo, laoreet vitae, fringilla at, adipiscing ut, +nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id +tortor ac mauris porta vulputate. Integer porta neque vitae massa. +Maecenas tempus libero a libero posuere dictum. Vestibulum ante +ipsum primis in faucibus orci luctus et ultrices posuere cubilia +Curae; Aenean quis mauris sed elit commodo placerat. Class aptent +taciti sociosqu ad litora torquent per conubia nostra, per inceptos +hymenaeos. Vivamus rhoncus tincidunt libero. Etiam elementum pretium +justo. Vivamus est. Morbi a tellus eget pede tristique commodo. +Nulla nisl. Vestibulum sed nisl eu sapien cursus rutrum. +} +} + +@entry{nullanonmauris, + user1 = {example-image-16x10}, + name = {nulla non mauris}, + description = {Nullam varius. Etiam dignissim elementum metus. Vestibulum faucibus, +metus sit amet mattis rhoncus, sapien dui laoreet odio, nec +ultricies nibh augue a enim. Fusce in ligula. Quisque at magna et +nulla commodo consequat. Proin accumsan imperdiet sem. Nunc porta. +Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In +ac elit eget ipsum pharetra faucibus. Maecenas viverra nulla in +massa. + +Nulla ac nisl. Nullam urna nulla, ullamcorper in, interdum sit amet, +gravida ut, risus. Aenean ac enim. In luctus. Phasellus eu quam +vitae turpis viverra pellentesque. Duis feugiat felis ut enim. +Phasellus pharetra, sem id porttitor sodales, magna nunc aliquet +nibh, nec blandit nisl mauris at pede. Suspendisse risus risus, +lobortis eget, semper at, imperdiet sit amet, quam. Quisque +scelerisque dapibus nibh. Nam enim. Lorem ipsum dolor sit amet, +consectetuer adipiscing elit. Nunc ut metus. Ut metus justo, auctor +at, ultrices eu, sagittis ut, purus. Aliquam aliquam. +} +} + +@entry{etiampedemassa, + user1 = {example-image-10x16}, + name = {etiam pede massa}, + description = {Vestibulum luctus commodo lacus. Morbi lacus dui, tempor sed, +euismod eget, condimentum at, tortor. Phasellus aliquet odio ac +lacus tempor faucibus. Praesent sed sem. Praesent iaculis. Cras +rhoncus tellus sed justo ullamcorper sagittis. Donec quis orci. +Sed ut tortor quis tellus euismod tincidunt. Suspendisse congue nisl +eu elit. Aliquam tortor diam, tempus id, tristique eget, sodales +vel, nulla. Praesent tellus mi, condimentum sed, viverra at, +consectetuer quis, lectus. In auctor vehicula orci. Sed pede sapien, +euismod in, suscipit in, pharetra placerat, metus. Vivamus commodo +dui non odio. Donec et felis. + +Etiam suscipit aliquam arcu. Aliquam sit amet est ac purus bibendum +congue. Sed in eros. Morbi non orci. Pellentesque mattis lacinia +elit. Fusce molestie velit in ligula. Nullam et orci vitae nibh +vulputate auctor. Aliquam eget purus. Nulla auctor wisi sed ipsum. +Morbi porttitor tellus ac enim. Fusce ornare. Proin ipsum enim, +tincidunt in, ornare venenatis, molestie a, augue. Donec vel pede in +lacus sagittis porta. Sed hendrerit ipsum quis nisl. Suspendisse +quis massa ac nibh pretium cursus. Sed sodales. Nam eu neque quis +pede dignissim ornare. Maecenas eu purus ac urna tincidunt congue. +} +} + +@entry{donecetnisl, + user1 = {example-image-16x9}, + name = {donec et nisl}, + description = {Aenean dictum odio sit amet risus. Morbi purus. Nulla a est sit amet +purus venenatis iaculis. Vivamus viverra purus vel magna. Donec in +justo sed odio malesuada dapibus. Nunc ultrices aliquam nunc. +Vivamus facilisis pellentesque velit. Nulla nunc velit, vulputate +dapibus, vulputate id, mattis ac, justo. Nam mattis elit dapibus +purus. Quisque enim risus, congue non, elementum ut, mattis quis, +sem. Quisque elit. + +Maecenas non massa. Vestibulum pharetra nulla at lorem. Duis quis +quam id lacus dapibus interdum. Nulla lorem. Donec ut ante quis +dolor bibendum condimentum. Etiam egestas tortor vitae lacus. +Praesent cursus. Mauris bibendum pede at elit. Morbi et felis a +lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at +lectus. Vestibulum ante ipsum primis in faucibus orci luctus et +ultrices posuere cubilia Curae; Praesent nonummy luctus nibh. Proin +turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac +habitasse platea dictumst. +} +} + +@entry{vivamuseutellus, + user1 = {example-image-9x16}, + name = {vivamus eu tellus}, + description = {Nam orci orci, malesuada id, gravida nec, ultricies vitae, erat. +Donec risus turpis, luctus sit amet, interdum quis, porta sed, +ipsum. Suspendisse condimentum, tortor at egestas posuere, neque +metus tempor orci, et tincidunt urna nunc a purus. Sed facilisis +blandit tellus. Nunc risus sem, suscipit nec, eleifend quis, cursus +quis, libero. Curabitur et dolor. Sed vitae sem. Cum sociis natoque +penatibus et magnis dis parturient montes, nascetur ridiculus mus. +Maecenas ante. Duis ullamcorper enim. Donec tristique enim eu leo. +Nullam molestie elit eu dolor. Nullam bibendum, turpis vitae +tristique gravida, quam sapien tempor lectus, quis pretium tellus +purus ac quam. Nulla facilisi. + +Duis aliquet dui in est. Donec eget est. Nunc lectus odio, varius +at, fermentum in, accumsan non, enim. Aliquam erat volutpat. Proin +sit amet nulla ut eros consectetuer cursus. Phasellus dapibus +aliquam justo. Nunc laoreet. Donec consequat placerat magna. Duis +pretium tincidunt justo. Sed sollicitudin vestibulum quam. Nam quis +ligula. Vivamus at metus. Etiam imperdiet imperdiet pede. Aenean +turpis. Fusce augue velit, scelerisque sollicitudin, dictum vitae, +tempor et, pede. Donec wisi sapien, feugiat in, fermentum ut, +sollicitudin adipiscing, metus. +} +} + +@entry{donecvelnibh, + user1 = {example-image-golden}, + name = {donec vel nibh}, + description = {Donec pede. Sed id quam id wisi laoreet suscipit. Nulla lectus +dolor, aliquam ac, fringilla eget, mollis ut, orci. In pellentesque +justo in ligula. Maecenas turpis. Donec eleifend leo at felis +tincidunt consequat. Aenean turpis metus, malesuada sed, condimentum +sit amet, auctor a, wisi. Pellentesque sapien elit, bibendum ac, +posuere et, congue eu, felis. Vestibulum mattis libero quis metus +scelerisque ultrices. Sed purus. + +Donec molestie, magna ut luctus ultrices, tellus arcu nonummy velit, +sit amet pulvinar elit justo et mauris. In pede. Maecenas euismod +elit eu erat. Aliquam augue wisi, facilisis congue, suscipit in, +adipiscing et, ante. In justo. Cras lobortis neque ac ipsum. Nunc +fermentum massa at ante. Donec orci tortor, egestas sit amet, +ultrices eget, venenatis eget, mi. Maecenas vehicula leo semper +est. Mauris vel metus. Aliquam erat volutpat. In rhoncus sapien ac +tellus. Pellentesque ligula. +} +} + +@entry{crasdapibus, + user1 = {example-image-golden-upright}, + name = {cras dapibus}, + description = {Aenean interdum nibh sed wisi. Praesent sollicitudin vulputate dui. +Praesent iaculis viverra augue. Quisque in libero. Aenean gravida +lorem vitae sem ullamcorper cursus. Nunc adipiscing rutrum ante. +Nunc ipsum massa, faucibus sit amet, viverra vel, elementum semper, +orci. Cras eros sem, vulputate et, tincidunt id, ultrices eget, +magna. Nulla varius ornare odio. Donec accumsan mauris sit amet +augue. Sed ligula lacus, laoreet non, aliquam sit amet, iaculis +tempor, lorem. Suspendisse eros. Nam porta, leo sed congue tempor, +felis est ultrices eros, id mattis velit felis non metus. Curabitur +vitae elit non mauris varius pretium. Aenean lacus sem, tincidunt +ut, consequat quis, porta vitae, turpis. Nullam laoreet fermentum +urna. Proin iaculis lectus. + +Sed mattis, erat sit amet gravida malesuada, elit augue egestas +diam, tempus scelerisque nunc nisl vitae libero. Sed consequat +feugiat massa. Nunc porta, eros in eleifend varius, erat leo rutrum +dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummy +quis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam +et augue at nunc pellentesque ullamcorper. Duis nisl nibh, laoreet +suscipit, convallis ut, rutrum id, enim. Phasellus odio. Nulla +nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut +odio nisl, facilisis id, mollis et, scelerisque nec, enim. Aenean +sem leo, pellentesque sit amet, scelerisque sit amet, vehicula +pellentesque, sapien. +} +} + +@entry{sedconsequat, + user1 = {example-image-1x1}, + name = {sed consequat}, + description = {Ut tempor laoreet quam. Nullam id wisi a libero tristique semper. +Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nulla +ac massa eu risus blandit mattis. Mauris ut nunc. In hac habitasse +platea dictumst. Aliquam eget tortor. Quisque dapibus pede in erat. +Nunc enim. In dui nulla, commodo at, consectetuer nec, malesuada +nec, elit. Aliquam ornare tellus eu urna. Sed nec metus. Cum sociis +natoque penatibus et magnis dis parturient montes, nascetur +ridiculus mus. Pellentesque habitant morbi tristique senectus et +netus et malesuada fames ac turpis egestas. + +Phasellus id magna. Duis malesuada interdum arcu. Integer metus. +Morbi pulvinar pellentesque mi. Suspendisse sed est eu magna +molestie egestas. Quisque mi lorem, pulvinar eget, egestas quis, +luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquam +ante hendrerit pellentesque. Class aptent taciti sociosqu ad litora +torquent per conubia nostra, per inceptos hymenaeos. Morbi wisi. +Etiam arcu mauris, facilisis sed, eleifend non, nonummy ut, pede. +Cras ut lacus tempor metus mollis placerat. Vivamus eu tortor vel +metus interdum malesuada. +} +} + +@entry{sedeleifend, + name = {sed eleifend}, + description = {Morbi non felis ac libero vulputate fringilla. Mauris libero eros, +lacinia non, sodales quis, dapibus porttitor, pede. Class aptent +taciti sociosqu ad litora torquent per conubia nostra, per inceptos +hymenaeos. Morbi dapibus mauris condimentum nulla. Cum sociis +natoque penatibus et magnis dis parturient montes, nascetur +ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt +dui vitae turpis. Donec leo. Morbi vulputate convallis est. Integer +aliquet. Pellentesque aliquet sodales urna. +} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-images.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-long.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{loremipsum, + name = {lorem ipsum}, + description = {dolor sit amet, consectetuer adipiscing elit. Ut purus +elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur +dictum gravida mauris.} +} + +@entry{namearcu, + name = {name arcu}, + description = {libero, nonummy eget, consectetuer id, vulputate a, magna. Donec +vehicula augue eu neque. Pellentesque habitant morbi tristique +senectus et netus et malesuada fames ac turpis egestas. Mauris ut +leo.} +} + +@entry{crasviverra, + name = {cras viverra}, + description = {metus rhoncus sem. Nulla et lectus vestibulum +urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida +placerat.} +} + +@entry{integersapien, + name = {integer sapien}, + description = {est, iaculis in, pretium quis, viverra ac, +nunc. Praesent eget sem vel leo ultrices bibendum. Aenean +faucibus.} +} + +@entry{morbidolor, + name = {morbi dolor}, + description = {nulla, malesuada eu, pulvinar at, mollis ac, nulla. +Curabitur auctor semper nulla. Donec varius orci eget risus. Duis +nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis +eget orci sit amet orci dignissim rutrum.} +} + +@entry{namdui, + name = {nam dui}, + description = {ligula, fringilla a, euismod sodales, +sollicitudin vel, wisi. Morbi auctor lorem non justo.} +} + +@entry{namlacus, + name = {nam lacus}, + description = {libero, pretium at, lobortis vitae, ultricies et, +tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, +vitae ornare odio metus a mi.} +} + +@entry{morbiac, + name = {morbi ac}, + description = {orci et nisl hendrerit mollis. Suspendisse ut massa. +Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus +et magnis dis parturient montes, nascetur ridiculus mus.} +} + +@entry{aliquam, + name = {aliquam}, + description = {tincidunt urna. Nulla ullamcorper +vestibulum turpis. Pellentesque cursus luctus mauris.} +} + +@entry{nullamalesuada, + name = {nulla malesuada}, + description = {porttitor diam. Donec felis erat, congue non, volutpat at, +tincidunt tristique, libero. Vivamus viverra fermentum felis.} +} + +@entry{donecnonummy, + name = {donec nonummy}, + description = {pellentesque ante. Phasellus +adipiscing semper elit. Proin fermentum massa ac quam. Sed diam +turpis, molestie vitae, placerat a, molestie nec, leo.} +} + +@entry{maecenaslacinia, + name = {maecenas lacinia}, + description = {nam ipsum ligula, eleifend at, accumsan nec, suscipit +a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat +lorem.} +} + +@entry{sedlacinia, + name = {sed lacinia}, + description = {nulla vitae enim. Pellentesque tincidunt purus +vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec +bibendum quam in tellus.} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-long.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-multipar.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{loremi-ii, + name = {lorem 1--2}, + description = {Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, +vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur +dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer +id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque +habitant morbi tristique senectus et netus et malesuada fames ac +turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla +et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus +sit amet tortor gravida placerat. Integer sapien est, iaculis in, +pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices +bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar +at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius +orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, +sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum. + +Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, +wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, +lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed +accumsan bibendum, erat ligula aliquet magna, vitae ornare odio +metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut +massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque +penatibus et magnis dis parturient montes, nascetur ridiculus mus. +Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis. +Pellentesque cursus luctus mauris.} +} + +@entry{loremiii-iv, + name = {lorem 3--4}, + description = {Nulla malesuada porttitor diam. Donec felis erat, congue non, +volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum +felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper +elit. Proin fermentum massa ac quam. Sed diam turpis, molestie +vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum +ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit +ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia +nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer +non enim. Praesent euismod nunc eu purus. Donec bibendum quam in +tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate +metus eu enim. Vestibulum pellentesque felis eu massa. + +Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo +vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, +consectetuer adipiscing elit. In hac habitasse platea dictumst. +Integer tempus convallis augue. Etiam facilisis. Nunc elementum +fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida +sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget +enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus +quis tortor vitae risus porta vehicula.} +} + +@entry{loremv-vi, + name = {lorem 5--6}, + description = {Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla +a faucibus semper, leo velit ultricies tellus, ac venenatis arcu +wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis +sagittis posuere, turpis lacus congue quam, in hendrerit risus eros +eget felis. Maecenas eget erat in sapien mattis porttitor. +Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo +facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus +sagittis dui, et vehicula libero dui cursus dui. Mauris tempor +ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras +nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget +nunc. Nam feugiat lacus vel est. Curabitur consectetuer.% + + +Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit +amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent +enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus +eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec +eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem +egestas dui, et convallis elit erat sed nulla. Donec luctus. +Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies +non, pharetra in, velit. Integer arcu est, nonummy in, fermentum +faucibus, egestas vel, odio.} +} + +@entry{loremvii-viii, + name = {lorem 7--8}, + description = {Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. +Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed +accumsan risus eget odio. In hac habitasse platea dictumst. +Pellentesque non elit. Fusce sed justo eu urna porta tincidunt. +Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. +Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc +dui lobortis purus, quis congue purus metus ultricies tellus. Proin +et quam. Class aptent taciti sociosqu ad litora torquent per conubia +nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum +vel, eleifend faucibus, vehicula eu, lacus. + +Pellentesque habitant morbi tristique senectus et netus et malesuada +fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit +amet, egestas sed, leo. Praesent feugiat sapien aliquet odio. +Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque +lectus, consectetuer at, consectetuer sed, eleifend ac, lectus. +Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed +porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus. +Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante +tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh +leo, facilisis non, adipiscing quis, ultrices a, dui.} +} + +@entry{loremix-x, + name = {lorem 9--10}, + description = {Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio, +nec commodo wisi enim eget quam. Quisque libero justo, consectetuer +a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris +vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet +ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod. +Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in +faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque +sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna +vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante +justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus. +Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam +auctor, pede consequat laoreet varius, eros tellus scelerisque quam, +pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus. + +Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper +quis, commodo eu, libero. Fusce sagittis erat at erat tristique +mollis. Maecenas sapien libero, molestie et, lobortis in, sodales +eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper +leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque +tristique sodales est. Maecenas imperdiet lacinia velit. Cras non +urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros. +Praesent malesuada, diam id pretium elementum, eros sem dictum +tortor, vel consectetuer odio sem sed wisi.} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-multipar.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-parent.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{sedmattis, + name = {sed mattis}, + description = {erat sit amet} +} + +@entry{nunc, + name = {nunc}, + description = {nisl vitae} +} + +@entry{nonconvallis, + name = {non +convallis}, + description = {lectus orci ut nibh} +} + +@entry{condimentum, + name = {condimentum}, + description = {at +nisl} +} + +@entry{aliquamet, + name = {aliquam et}, + description = {augue} +} + +@entry{rutrum, + name = {rutrum}, + description = {id, enim} +} + +% child entries: + + +@entry{gravida, + parent = {sedmattis}, + name = {gravida}, + description = {malesuada} +} + +@entry{elitaugue, + parent = {sedmattis}, + name = {elit augue}, + description = {egestas diam} +} + +@entry{tempus, + parent = {sedmattis}, + name = {tempus}, + description = {scelerisque} +} + +@entry{libero, + parent = {nunc}, + name = {libero}, + description = {sed +consequat} +} + +@entry{feugiat, + parent = {nunc}, + name = {feugiat}, + description = {massa} +} + +@entry{porta, + parent = {nunc}, + name = {porta}, + description = {eros +in eleifend} +} + +@entry{variuserat, + parent = {nunc}, + name = {varius erat}, + description = {leo rutrum dui} +} + +@entry{sedlorem, + parent = {nonconvallis}, + name = {sedlorem}, + description = {massa} +} + +@entry{nonummyquis, + parent = {nonconvallis}, + name = {nonummy +quis}, + description = {egestas id} +} + +@entry{maecenas, + parent = {condimentum}, + name = {maecenas}, + description = {at nibh} +} + +@entry{atnunc, + parent = {aliquamet}, + name = {at nunc}, + description = {pellentesque +ullamcorper} +} + +@entry{phasellus, + parent = {rutrum}, + name = {phasellus}, + description = {odio} +} + +@entry{nullanulla, + parent = {rutrum}, + name = {nulla nulla}, + description = {elit, molestie non} +} + +% level 2: + +@entry{duisnisl, + parent = {atnunc}, + name = {duisnisl}, + description = {laoreet +suscipit} +} + +@entry{duisnibh, + parent = {atnunc}, + name = {duisnibh}, + description = {convallis ut} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-parent.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-symbolnames.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +% Encoding: UTF-8 +@entry{sym.alpha, + name = {\ensuremath{\alpha}}, + description = {Quisque ullamcorper placerat ipsum.} +} + +@entry{sym.beta, + name = {\ensuremath{\beta}}, + description = {Cras nibh.} +} + +@entry{sym.gamma, + name = {\ensuremath{\gamma}}, + description = {Morbi vel justo vitae lacus tincidunt ultrices.} +} + +@entry{sym.delta, + name = {\ensuremath{\delta}}, + description = {Lorem ipsum dolor sit amet, consectetuer adipiscing +elit.} +} + +@entry{sym.epsilon, + name = {\ensuremath{\epsilon}}, + description = {In hac habitasse platea dictumst.} +} + +@entry{sym.zeta, + name = {\ensuremath{\zeta}}, + description = {Integer tempus convallis augue.} +} + +@entry{sym.eta, + name = {\ensuremath{\eta}}, + description = {Etiam facilisis.} +} + +@entry{sym.theta, + name = {\ensuremath{\theta}}, + description = {Nunc elementum fermentum wisi.} +} + +@entry{sym.iota, + name = {\ensuremath{i}}, + description = {Aenean placerat.} +} + +@entry{sym.kappa, + name = {\ensuremath{\kappa}}, + description = {Ut imperdiet, enim sed gravida sollicitudin, felis odio +placerat quam, ac pulvinar elit purus eget enim.} +} + +@entry{sym.lambda, + name = {\ensuremath{\lambda}}, + description = {Nunc vitae tortor.} +} + +@entry{sym.mu, + name = {\ensuremath{\mu}}, + description = {Proin tempus nibh sit amet nisl.} +} + +@entry{sym.nu, + name = {\ensuremath{\nu}}, + description = {Vivamus quis tortor vitae risus porta vehicula.} +} + +@entry{sym.xi, + name = {\ensuremath{\xi}}, + description = {Fusce mauris.} +} + +@entry{sym.pi, + name = {\ensuremath{\pi}}, + description = {Vestibulum luctus nibh at lectus.} +} + +@entry{sym.rho, + name = {\ensuremath{\rho}}, + description = {Sed bibendum, nulla a faucibus semper, leo velit +ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.} +} + +@entry{sym.sigma, + name = {\ensuremath{\sigma}}, + description = {Aliquam pellentesque, augue quis sagittis posuere, +turpis lacus congue quam, in hendrerit risus eros eget felis.} +} + +@entry{sym.tau, + name = {\ensuremath{\tau}}, + description = {Maecenas eget erat in sapien mattis porttitor.} +} + +@entry{sym.upsilon, + name = {\ensuremath{\upsilon}}, + description = {Vestibulum porttitor.} +} + +@entry{sym.phi, + name = {\ensuremath{\phi}}, + description = {Nulla facilisi.} +} + +@entry{sym.chi, + name = {\ensuremath{\chi}}, + description = {Sed a turpis eu lacus commodo facilisis.} +} + +@entry{sym.psi, + name = {\ensuremath{\psi}}, + description = {Morbi fringilla, wisi in dignissim interdum, justo +lectus sagittis dui, et vehicula libero dui cursus dui.} +} + +@entry{sym.omega, + name = {\ensuremath{\omega}}, + description = {Mauris tempor ligula sed lacus.} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-symbolnames.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-symbols.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{alpha, + symbol = {\ensuremath{\alpha}}, + name = {alpha}, + description = {Quisque ullamcorper placerat ipsum.} +} + +@entry{beta, + symbol = {\ensuremath{\beta}}, + name = {beta}, + description = {Cras nibh.} +} + +@entry{gamma, + symbol = {\ensuremath{\gamma}}, + name = {gamma}, + description = {Morbi vel justo vitae lacus tincidunt ultrices.} +} + +@entry{delta, + symbol = {\ensuremath{\delta}}, + name = {delta}, + description = {Lorem ipsum dolor sit amet, consectetuer adipiscing +elit.} +} + +@entry{epsilon, + symbol = {\ensuremath{\epsilon}}, + name = {epsilon}, + description = {In hac habitasse platea dictumst.} +} + +@entry{zeta, + symbol = {\ensuremath{\zeta}}, + name = {zeta}, + description = {Integer tempus convallis augue.} +} + +@entry{eta, + symbol = {\ensuremath{\eta}}, + name = {eta}, + description = {Etiam facilisis.} +} + +@entry{theta, + symbol = {\ensuremath{\theta}}, + name = {theta}, + description = {Nunc elementum fermentum wisi.} +} + +@entry{iota, + symbol = {\ensuremath{i}}, + name = {iota}, + description = {Aenean placerat.} +} + +@entry{kappa, + symbol = {\ensuremath{\kappa}}, + name = {kappa}, + description = {Ut imperdiet, enim sed gravida sollicitudin, felis odio +placerat quam, ac pulvinar elit purus eget enim.} +} + +@entry{lambda, + symbol = {\ensuremath{\lambda}}, + name = {lambda}, + description = {Nunc vitae tortor.} +} + +@entry{mu, + symbol = {\ensuremath{\mu}}, + name = {mu}, + description = {Proin tempus nibh sit amet nisl.} +} + +@entry{nu, + symbol = {\ensuremath{\nu}}, + name = {nu}, + description = {Vivamus quis tortor vitae risus porta vehicula.} +} + +@entry{xi, + symbol = {\ensuremath{\xi}}, + name = {xi}, + description = {Fusce mauris.} +} + +@entry{pi, + symbol = {\ensuremath{\pi}}, + name = {pi}, + description = {Vestibulum luctus nibh at lectus.} +} + +@entry{rho, + symbol = {\ensuremath{\rho}}, + name = {rho}, + description = {Sed bibendum, nulla a faucibus semper, leo velit +ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.} +} + +@entry{sigma, + symbol = {\ensuremath{\sigma}}, + name = {sigma}, + description = {Aliquam pellentesque, augue quis sagittis posuere, +turpis lacus congue quam, in hendrerit risus eros eget felis.} +} + +@entry{tau, + symbol = {\ensuremath{\tau}}, + name = {tau}, + description = {Maecenas eget erat in sapien mattis porttitor.} +} + +@entry{upsilon, + symbol = {\ensuremath{\upsilon}}, + name = {upsilon}, + description = {Vestibulum porttitor.} +} + +@entry{phi, + symbol = {\ensuremath{\phi}}, + name = {phi}, + description = {Nulla facilisi.} +} + +@entry{chi, + symbol = {\ensuremath{\chi}}, + name = {chi}, + description = {Sed a turpis eu lacus commodo facilisis.} +} + +@entry{psi, + symbol = {\ensuremath{\psi}}, + name = {psi}, + description = {Morbi fringilla, wisi in dignissim interdum, justo +lectus sagittis dui, et vehicula libero dui cursus dui.} +} + +@entry{omega, + symbol = {\ensuremath{\omega}}, + name = {omega}, + description = {Mauris tempor ligula sed lacus.} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-symbols.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-url.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{aenean-url, + user1 = {http://uk.tug.org/}, + name = {aenean}, + description = {adipiscing auctor est} +} + +@entry{morbi-url, + user1 = {http://www.ctan.org/}, + name = {morbi}, + description = {quam arcu, malesuada sed, volutpat et, elementum sit +amet, libero} +} + +@entry{duis-url, + user1 = {http://www.tug.org/}, + name = {duis}, + description = {mattis} +} + +@entry{sed-url, + user1 = {http://theoval.cmp.uea.ac.uk/\protect~nlct/}, + name = {sed}, + description = {cursus lectus quis odio (uses +\texttt{\string\protect\string~})} +} + +@entry{sed2-url, + user1 = {http://theoval.cmp.uea.ac.uk/\string~nlct/}, + name = {sed}, + description = {cursus lectus quis odio (uses +\texttt{\string\string\string~})} +} + +@entry{sed3-url, + user1 = {http://theoval.cmp.uea.ac.uk/\glstildechar nlct/}, + name = {sed}, + description = {cursus lectus quis odio (uses +\texttt{\string\glstildechar})} +} + +@entry{phasellus-url, + user1 = {http://theoval.cmp.uea.ac.uk/}, + name = {phasellus}, + description = {arcu (catcode change)} +} + +@entry{phasellus2-url, + user1 = {http://theoval.cmp.uea.ac.uk/\%7Enlct +}, + name = {phasellus}, + description = {arcu (uses \texttt{\string\%})} +} + +@entry{phasellus3-url, + user1 = {http://theoval.cmp.uea.ac.uk/\glspercentchar 7Enlct +}, + name = {phasellus}, + description = {arcu (uses + \texttt{\string\glspercentchar})} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-url.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*example-glossaries-xr.bib> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<<COMMENT +% Encoding: UTF-8 +%COMMENT +@entry{lorem, + name = {lorem}, + description = {ipsum} +} + +@entry{alias-lorem, + name = {alias-lorem}, + description = {ipsum}, + alias = {lorem} +} + +@entry{dolor, + name = {dolor}, + description = {sit} +} + +@entry{amet, + see = {dolor}, + name = {amet}, + description = {consectetuer} +} + +@entry{adipiscing, + name = {adipiscing}, + description = {elit} +} + +@entry{ut, + name = {ut}, + description = {purus} +} + +@entry{elit, + name = {elit}, + description = {vestibulum}, + seealso = {adipiscing,ut} +} + +@entry{placerat, + name = {placerat}, + description = {ac} +} + +@entry{vitae, + name = {vitae}, + description = {felis} +} + +@entry{curabitur, + name = {curabitur}, + description = {gravida} +} + +@entry{mauris, + name = {mauris}, + description = {nam} +} + +@entry{arcu, + name = {arcu}, + description = {libero}, + seealso = {placerat,vitae,curabitur} +} + +@entry{nonummy, + name = {nonummy}, + description = {eget}, + seealso = {mauris} +} + +@entry{consectetuer, + parent = {nonummy}, + name = {consectetuer}, + description = {id} +} + +@entry{vulputate, + parent = {nonummy}, + name = {vulputate}, + description = {a magna} +} + +@entry{donec, + name = {donec}, + description = {vehicula} +} + +@entry{augue, + name = {augue}, + description = {eu neque} +} + +@entry{pellentesque, + see = {augue}, + name = {pellentesque}, + description = {habitant} +} + +@entry{morbi, + name = {morbi}, + description = {tristique} +} + +@entry{senectus, + name = {senectus}, + description = {et netus} +} + +@entry{et, + see = {vulputate}, + name = {et}, + description = {malesuada} +} + +@entry{fames, + name = {fames}, + description = {ac} +} + +@entry{turpis, + name = {turpis}, + description = {egestas}, + seealso = {consectetuer} +} + +@entry{leo, + name = {leo}, + description = {cras} +} + +@entry{viverra, + name = {viverra}, + description = {metus} +} + +@entry{rhoncus, + name = {rhoncus}, + description = {sem} +} + +@entry{nulla, + name = {nulla}, + description = {et} +} + +@entry{lectus, + name = {lectus}, + description = {vestibulum} +} + +@entry{urna, + parent = {lectus}, + see = {nulla}, + name = {urna}, + description = {fringilla} +} + +@entry{ultrices, + parent = {lectus}, + name = {ultrices}, + description = {phasellus} +} + +@entry{eu, + parent = {lectus}, + name = {eu}, + description = {tellus} +} + +@entry{alias-eu, + name = {alias-eu}, + description = {tellus}, + alias = {eu} +} + +@entry{sit, + name = {sit}, + description = {amet} +} + +@entry{tortor, + name = {tortor}, + description = {gravida} +} + +@entry{integer, + name = {integer}, + description = {sapien} +} + +@entry{est, + name = {est}, + description = {iaculis} +} + +@entry{in, + name = {in}, + description = {pretium}, + seealso = {sit,tortor,est} +} + +@entry{quis, + name = {quis}, + description = {viverra} +} + +@entry{ac, + name = {ac}, + description = {nunc} +} + +@entry{praesent, + name = {praesent}, + description = {eget \gls{ac}} +} + +@entry{sem, + name = {sem}, + description = {vel leo +\glshyperlink{quis}} +} + +@entry{bibendum, + name = {bibendum}, + description = {ultrices} +} + +@entry{aenean, + name = {aenean}, + description = {faucibus} +} + +@entry{malesuada, + parent = {aenean}, + name = {malesuada}, + description = {eu} +} + +@entry{pulvinar, + parent = {aenean}, + name = {pulvinar}, + description = {at} +} + +@entry{mollis, + parent = {aenean}, + name = {mollis}, + description = {ac nulla} +} + +@entry{auctor, + parent = {aenean}, + name = {auctor}, + description = {semper} +} + +@entry{varius, + parent = {aenean}, + name = {varius}, + description = {orci} +} + +@entry{eget, + name = {eget}, + description = {risus} +} + +@entry{duis, + name = {duis}, + description = {nibh} +} + +@entry{mi, + name = {mi}, + description = {congue} +} + +@entry{accumsan, + name = {accumsan}, + description = {eleifend} +} + +@entry{sagittis, + see = {eget}, + name = {sagittis}, + description = {quis} +} + +@entry{diam, + name = {diam}, + description = {duis} +} + +@entry{orci, + name = {orci}, + description = {dignissim}, + seealso = {diam} +} + +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%</example-glossaries-xr.bib> +% \end{macrocode} +%\fi +%\Finale +\endinput diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.ins b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins new file mode 100644 index 0000000000..e8bd0d99db --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins @@ -0,0 +1,57 @@ +% glossaries-extra.ins generated using makedtx version 1.2 2019/4/9 21:59 +\input docstrip + +\preamble + + glossaries-extra.dtx + Copyright 2019 Nicola Talbot + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either version 1.3 + of this license or (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt + and version 1.3 or later is part of all distributions of LaTeX + version 2005/12/01 or later. + + This work has the LPPL maintenance status `maintained'. + + The Current Maintainer of this work is Nicola Talbot. + + This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-bib2gls.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, glossary-longextra.sty, glossary-topic.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbolnames.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{glossaries-extra.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra.sty,package}} +\file{glossaries-extra-bib2gls.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra-bib2gls.sty,package}} +\file{glossaries-extra-stylemods.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra-stylemods.sty,package}} +\file{glossary-bookindex.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-bookindex.sty,package}} +\file{glossary-longextra.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-longextra.sty,package}} +\file{glossary-topic.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-topic.sty,package}} +\file{example-glossaries-xr.tex}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{example-glossaries-xr.tex,package}} +\file{example-glossaries-acronym-desc.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronym-desc.bib}} +\file{example-glossaries-acronym.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronym.bib}} +\file{example-glossaries-acronyms-lang.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronyms-lang.bib}} +\file{example-glossaries-brief.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-brief.bib}} +\file{example-glossaries-childnoname.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-childnoname.bib}} +\file{example-glossaries-cite.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-cite.bib}} +\file{example-glossaries-images.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-images.bib}} +\file{example-glossaries-long.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-long.bib}} +\file{example-glossaries-multipar.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-multipar.bib}} +\file{example-glossaries-parent.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-parent.bib}} +\file{example-glossaries-symbolnames.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-symbolnames.bib}} +\file{example-glossaries-symbols.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-symbols.bib}} +\file{example-glossaries-url.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-url.bib}} +\file{example-glossaries-xr.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-xr.bib}} +} + +\endbatchfile diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf Binary files differnew file mode 100644 index 0000000000..7d04e01e7a --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex new file mode 100644 index 0000000000..e123813d21 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex @@ -0,0 +1,430 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex + +\documentclass{report} + +\usepackage[T1]{fontenc} +\usepackage{relsize} +\usepackage{etoolbox} +\usepackage[colorlinks,linkcolor=magenta]{hyperref} +\usepackage{glossaries-extra} + +% If you get any undefined control sequences or undefined +% style errors, make sure you have the latest versions of +% glossaries-extra.sty and glossaries.sty + +\makeglossaries + +% This command is used for short forms for styles +% that don't have a designated command: +\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}} + +% This command is used on first use for short forms +% for styles that don't have a designated command: +%\renewcommand{\glsfirstabbrvdefaultfont}[1]{\textsf{#1}} + +% This command is used for long forms for styles +% that don't have a designated command: +\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}} + +% This command is used on first use for long forms +% for styles that don't have a designated command: +%\renewcommand{\glsfirstlongdefaultfont}[1]{\textsf{#1}} + +% These commands are used by the '-hyphen' styles. +% For example, to switch to small-caps for the short form: +%\renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont} +%\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix} +% and emphasize the long form +%\renewcommand{\glslonghyphenfont}{\emph} + +\renewcommand{\glsxtrabbrvfootnote}[2]{% + \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}% +} + +\glssetcategoryattribute{long-hyphen-short-hyphen}{markwords}{true} +\glssetcategoryattribute{long-hyphen-postshort-hyphen}{markwords}{true} +\glssetcategoryattribute{long-hyphen-short-hyphen-desc}{markwords}{true} +\glssetcategoryattribute{long-hyphen-postshort-hyphen-desc}{markwords}{true} +\glssetcategoryattribute{short-hyphen-long-hyphen}{markwords}{true} +\glssetcategoryattribute{short-hyphen-postlong-hyphen}{markwords}{true} +\glssetcategoryattribute{short-hyphen-long-hyphen-desc}{markwords}{true} +\glssetcategoryattribute{short-hyphen-postlong-hyphen-desc}{markwords}{true} +\glssetcategoryattribute{long-hyphen-noshort-desc-noreg}{markwords}{true} +\glssetcategoryattribute{long-hyphen-noshort-noreg}{markwords}{true} + +\newcommand{\stylelist}{} + +\newcommand{\teststyle}[1]{% + \listadd{\stylelist}{#1}% + \setabbreviationstyle[#1]{#1}% + \newabbreviation[category=#1,% + %sort={#1},% order by style name + user1={user text}% + ]{sample-#1}{short}{long form}% + \csdef{glsxtrpostdesc#1}{ [style: #1]}% +} + +\newcommand{\testdescstyle}[1]{% + \listadd{\stylelist}{#1}% + \setabbreviationstyle[#1]{#1}% + \newabbreviation[category=#1,% + %sort={#1},% order by style name + user1={user text},% + description={sample description}]{sample-#1}{short}{long form}% + \csdef{glsxtrpostdesc#1}{ [style: #1]}% +} + +\teststyle{long-short} +\teststyle{short-long} +%\teststyle{footnote}% synonym: short-footnote +\teststyle{short-footnote} +%\teststyle{postfootnote}% synonym: short-postfootnote +\teststyle{short-postfootnote} +%\teststyle{short}% synonym: short-nolong +\teststyle{short-nolong} +\teststyle{short-nolong-noreg} +\teststyle{nolong-short} +\teststyle{nolong-short-noreg} +%\teststyle{long}% synonym: long-noshort +\teststyle{long-noshort} +\teststyle{long-noshort-noreg} +\teststyle{long-only-short-only} +\teststyle{long-short-sc} +\teststyle{short-sc-long} +%\teststyle{short-sc}% synonym: short-sc-nolong +\teststyle{short-sc-nolong} +\teststyle{nolong-short-sc} +\teststyle{long-noshort-sc} +%\teststyle{long-sc}% deprecated synonym of long-noshort-sc +\teststyle{short-sc-footnote} +%\teststyle{footnote-sc}% deprecated synonym of short-sc-footnote +\teststyle{short-sc-postfootnote} +%\teststyle{postfootnote-sc}% deprecated synonym of short-sc-postfootnote +\teststyle{long-short-sm} +\teststyle{short-sm-long} +%\teststyle{short-sm}% synonym: short-sm-nolong +\teststyle{short-sm-nolong} +\teststyle{nolong-short-sm} +%\teststyle{long-sm}% deprecated synonym of long-noshort-sm +\teststyle{long-noshort-sm} +\teststyle{short-sm-footnote} +%\teststyle{footnote-sm}% deprecated synonym of short-sm-footnote +\teststyle{short-sm-postfootnote} +%\teststyle{postfootnote-sm}% deprecated synonym of short-sm-postfootnote +\teststyle{long-short-em} +\teststyle{long-em-short-em} +\teststyle{short-em-long} +\teststyle{short-em-long-em} +\teststyle{short-em-nolong} +%\teststyle{short-em}% synonym: short-em-nolong +\teststyle{nolong-short-em} +\teststyle{long-noshort-em} +%\teststyle{long-em}% deprecated synonym of long-noshort-em +\teststyle{long-em-noshort-em} +\teststyle{long-em-noshort-em-noreg} +\teststyle{short-em-footnote} +%\teststyle{footnote-em}% deprecated synonym of short-em-footnote +\teststyle{short-em-postfootnote} +%\teststyle{postfootnote-em}% deprecated synonym of short-em-postfootnote +\teststyle{long-short-user} +\teststyle{long-postshort-user} +\teststyle{short-long-user} +\teststyle{short-postlong-user} +\teststyle{long-hyphen-short-hyphen} +\teststyle{long-hyphen-postshort-hyphen} +\teststyle{short-hyphen-long-hyphen} +\teststyle{short-hyphen-postlong-hyphen} +\teststyle{long-hyphen-noshort-noreg} + +\testdescstyle{long-short-desc} +\testdescstyle{short-long-desc} +%\testdescstyle{short-desc}% synonym: short-nolong-desc +\testdescstyle{short-nolong-desc} +\testdescstyle{short-nolong-desc-noreg} +%\testdescstyle{long-desc}% synonym: long-noshort-desc +\testdescstyle{long-noshort-desc} +\testdescstyle{long-noshort-desc-noreg} +\testdescstyle{long-only-short-only-desc} +\testdescstyle{long-short-sc-desc} +\testdescstyle{short-sc-long-desc} +%\testdescstyle{short-sc-desc}% synonym: short-sc-nolong-desc +\testdescstyle{short-sc-nolong-desc} +\testdescstyle{long-noshort-sc-desc} +%\testdescstyle{long-desc-sc}% deprecated synonym of long-noshort-sc-desc +\testdescstyle{long-short-sm-desc} +\testdescstyle{short-sm-long-desc} +%\testdescstyle{short-sm-desc}% synonym: short-sm-nolong-desc +\testdescstyle{short-sm-nolong-desc} +\testdescstyle{long-noshort-sm-desc} +%\testdescstyle{long-desc-sm}% deprecated synonym of long-noshort-sm-desc +\testdescstyle{long-short-em-desc} +\testdescstyle{long-em-short-em-desc} +\testdescstyle{short-em-long-desc} +\testdescstyle{short-em-long-em-desc} +%\testdescstyle{short-em-desc}% synonym: short-em-nolong-desc +\testdescstyle{short-em-nolong-desc} +\testdescstyle{long-noshort-em-desc} +%\testdescstyle{long-desc-em}% deprecated synonym of long-noshort-em-desc +\testdescstyle{long-em-noshort-em-desc} +\testdescstyle{long-em-noshort-em-desc-noreg} +\testdescstyle{long-short-user-desc} +\testdescstyle{long-postshort-user-desc} +\testdescstyle{short-long-user-desc} +\testdescstyle{short-postlong-user-desc} +\testdescstyle{long-hyphen-short-hyphen-desc} +\testdescstyle{long-hyphen-postshort-hyphen-desc} +\testdescstyle{short-hyphen-long-hyphen-desc} +\testdescstyle{short-hyphen-postlong-hyphen-desc} +\testdescstyle{long-hyphen-noshort-desc-noreg} + +\newcommand{\marg}[1]{\{\textnormal{\emph{#1}}\}} +\pagestyle{headings} + +\makeatletter +\renewcommand{\l@section}{\@dottedtocline {1}{1.5em}{3.3em}} +\makeatother + +\begin{document} +\pagenumbering{roman} +This is a test document demonstrating abbreviation styles +provided by the \textsf{glossaries-extra} package. Hyperlinks +are shown in +\makeatletter +\textcolor{\@linkcolor}{\@linkcolor}. +\makeatother + +Some of the styles just use the default formatting commands (which don't +change the font). To make the default setting clearer, this document has done: +\begin{verbatim} +\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}} +\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}} +\end{verbatim} +So any text in this document that's rendered in sans-serif would normally not have any font +change implemented. + +Each test entry is defined using +\begin{verbatim} + \newabbreviation[category=#1,user1={user text}]% + {sample-#1}{short}{long form}% +\end{verbatim} +for the non\texttt{-desc} styles or +\begin{verbatim} + \newabbreviation[category=#1,user1={user text},% + description={sample description}]% + {sample-#1}{short}{long form}% +\end{verbatim} +for the \texttt{-desc} styles (where \verb|#1| is the style label). +Note that many of the entries will have duplicate sort values, so +don't build this with \texttt{xindy}. You can change the ordering +in the glossary to that it's sorted according to the style name +by changing the above definitions to: +\begin{verbatim} + \newabbreviation[category=#1,user1={user text},sort={#1}]% + {sample-#1}{short}{long form}% + \newabbreviation[category=#1,user1={user text},sort={#1},% + description={sample description}]% + {sample-#1}{short}{long form}% +\end{verbatim} + +To assist with distinguishing between the various styles, +the post-description hook (used after displaying the description in +the glossary) is set to \verb*| [style: #1]| for all categories, +and the footnote command \verb|\glsxtrabbrvfootnote| has been +redefined to include the short form hyperlinked to the glossary. + +The test entries that use the \texttt{-hyphen} styles have had the +\texttt{markwords} attribute set. This is designed to trigger +compound word hyphenation if the inserted text (through the final +optional argument of \verb|\gls|) starts with a hyphen. + +\tableofcontents + +\pagenumbering{arabic} +\chapter{First Use} +First use of \verb|\gls|. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\gls{\thislabel}.\glspar} + +\chapter{Next Use} +Next use of \verb|\gls|. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\gls{\thislabel}.\glspar} + +\chapter{First Use With Insert} +First use of \texttt{\string\gls\marg{label}[-insert]}. The conditional +\verb|\ifglsxtrinsertinside| is used by some styles to +determine whether or not to include the inserted material +inside the font changing command used by the style. +The default is: \ifglsxtrinsertinside true\else false\fi. + +In this test chapter, each entry is reset, then displayed with +\begin{verbatim} +\glsxtrinsertinsidefalse +\end{verbatim} +then reset and displayed with +\begin{verbatim} +\glsxtrinsertinsidetrue +\end{verbatim} +(following the semi-colon). Some styles may only obey this +conditional for particular commands. (For example, the inline +commands like \verb|\glsxtrfull| may behave differently to +commands like \verb|\gls|.) + +Some of the styles just use the default font commands (which don't +change the font) so there's no noticeable difference. To make the +differences more noticeable this document has done: +\begin{verbatim} +\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}} +\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}} +\end{verbatim} + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsreset{\thislabel}\glsxtrinsertinsidefalse +\gls{\thislabel}[-insert]; +\glsreset{\thislabel}\glsxtrinsertinsidetrue +\gls{\thislabel}[-insert].\glspar} + +\chapter{Next Use With Insert} +Next use of \texttt{\string\gls\marg{label}[-insert]}. + +In this test chapter, each entry is displayed +with \verb|\glsxtrinsertinsidefalse| and then displayed with +\verb|\glsxtrinsertinsidetrue| +(following the semi-colon). Some styles don't check this +conditional. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrinsertinsidefalse +\gls{\thislabel}[-insert]; +\glsxtrinsertinsidetrue +\gls{\thislabel}[-insert].\glspar} + +\chapter{Full Form} +Full form using \verb|\glsxtrfull| (inline full style). +This may differ from the display form used by \verb|\gls| +on first use, depending on the style. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrfull{\thislabel}.\glspar} + +\chapter{Short Form} +Short form using \verb|\glsxtrshort|. +This may differ from the display form used by \verb|\gls| +on subsequent use, depending on the style. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrshort{\thislabel}.\glspar +} + +\chapter{Long Form} +Long form using \verb|\glsxtrlong|. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrlong{\thislabel}.\glspar} + +\chapter{Full Form With Insert} +Full form using \texttt{\string\glsxtrfull\marg{label}[-insert]} (inline full style). +In this test chapter, each entry is displayed +with \verb|\glsxtrinsertinsidefalse| and then displayed with +\verb|\glsxtrinsertinsidetrue| +(following the semi-colon). + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrinsertinsidefalse +\glsxtrfull{\thislabel}[-insert]; +\glsxtrinsertinsidetrue +\glsxtrfull{\thislabel}[-insert].\glspar} + +\chapter{Short Form With Insert} +Short form using \texttt{\string\glsxtrshort\marg{label}[-insert]}. + +In this test chapter, each entry is displayed +with \verb|\glsxtrinsertinsidefalse| and then displayed with +\verb|\glsxtrinsertinsidetrue| +(following the semi-colon). + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrinsertinsidefalse +\glsxtrshort{\thislabel}[-insert]; +\glsxtrinsertinsidetrue +\glsxtrshort{\thislabel}[-insert].\glspar} + +\chapter{Long Form With Insert} +Long form using \texttt{\string\glsxtrlong\marg{label}[-insert]}. +Note that the \texttt{hyphen} styles with the \texttt{markwords} +attribute don't adjust in this case. + +In this test chapter, each entry is displayed +with \verb|\glsxtrinsertinsidefalse| and then displayed with +\verb|\glsxtrinsertinsidetrue| +(following the semi-colon). + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsxtrinsertinsidefalse +\glsxtrlong{\thislabel}[-insert]; +\glsxtrinsertinsidetrue +\glsxtrlong{\thislabel}[-insert].\glspar} + +\chapter{First Form} +First form using \verb|\glsfirst|. This may be different +from the first use of \verb|\gls| depending on the style. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsfirst{\thislabel}.\glspar} + +\chapter{Text Form} +Text form using \verb|\glstext|. This may be different +from the subsequent use of \verb|\gls| depending on the style. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glstext{\thislabel}.\glspar} + +\chapter{First Form With Insert} +First form using \texttt{\string\glsfirst\marg{label}[-insert]}. +This is different from the first use of \verb|\gls| +as can be seen by the location of the inserted material. +(There's no check for the conditional +\verb|\ifglsxtrinsertinside|.) In general it's best not +to use \verb|\glsfirst| with abbreviations. Use either +\verb|\gls| (possibly with a reset) or \verb|\glsxtrfull|. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glsfirst{\thislabel}[-insert].\glspar} + +\chapter{Text Form With Insert} +Text form using \texttt{\string\glstext\marg{label}[-insert]}. +This doesn't check for the conditional +\verb|\ifglsxtrinsertinside|. + +\forglsentries{\thislabel}{\glscategory{\thislabel}: +\glstext{\thislabel}[-insert].\glspar} + +\chapter{Summary} + +\renewcommand{\do}[1]{\section{#1} +First use \texttt{\string\gls\marg{label}}: +\glsreset{sample-#1}\gls{sample-#1}.\par\noindent +Next use \texttt{\string\gls\marg{label}}: \gls{sample-#1}.\par\noindent +First use \texttt{\string\gls\marg{label}[-insert]}: +\glsreset{sample-#1}\gls{sample-#1}[-insert].\par\noindent +Next use \texttt{\string\gls\marg{label}[-insert]}: +\gls{sample-#1}[-insert].\par\noindent +\texttt{\string\glsxtrfull\marg{label}[-insert]}: +\glsxtrfull{sample-#1}[-insert].\par\noindent +\texttt{\string\glsxtrshort\marg{label}[-insert]}: +\glsxtrshort{sample-#1}[-insert].\par\noindent +\texttt{\string\glsxtrlong\marg{label}[-insert]}: +\glsxtrlong{sample-#1}[-insert].\par\noindent +Name: \glsentryname{sample-#1}.\par\noindent +Sort: \texttt{\glsentrysort{sample-#1}}.\par\noindent +Description: \glsentrydesc{sample-#1}.\par +} + +\dolistloop{\stylelist} +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf Binary files differnew file mode 100644 index 0000000000..e85508041d --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex new file mode 100644 index 0000000000..9d598f408f --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex @@ -0,0 +1,36 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{report} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} +\newabbreviation{svg}{SVG}{scalable vector graphics} + +\begin{document} +\tableofcontents + +\chapter{Sample} + +First use: \gls{html}, \gls{xml} and \gls{svg}. + +Next use: \gls{html}, \gls{xml} and \gls{svg}. + +Resetting. +\glsresetall + +Provide specific text (no first use trigger): \glslink{html}{SHTML}. +(Has been used? \ifglsused{html}{Yes}{No}.) + +Provide specific text (first use trigger): \glsdisp{html}{SHTML}. +(Has been used? \ifglsused{html}{Yes}{No}.) + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf Binary files differnew file mode 100644 index 0000000000..51d427f7ca --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex new file mode 100644 index 0000000000..85d24a8059 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex @@ -0,0 +1,124 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage{cmap} + +\usepackage[accsupp,% use glossaries-accsupp + %nonumberlist,% suppress location list in glossary + nopostdot=false% insert dot after description in glossary +]{glossaries-extra} + +\makeglossaries + +% Change the format of the location lists: +\renewcommand{\GlsXtrFormatLocationList}[1]{Page list: #1.} + +% Default uses "ActualText" instead of "E". Redefine if required. +% Support in PDF viewers is variable. +%\renewcommand*{\glsaccsupp}[2]{% +% \BeginAccSupp{E=#1}#2\EndAccSupp{}% +%} + +\newabbreviation + [% add accessibility information: + %shortaccess={specific learning difference},% short access + %access={specific learning difference},% name access + textaccess={specific learning difference},% text access + ] + {spld}{SpLD}{specific learning difference} + +\glssetcategoryattribute{initialism}{accessinsertdots}{true} +\glssetcategoryattribute{initialism}{nameshortaccess}{true} + +\newabbreviation[category=initialism]{pi}{PI}{Private Investigator} + +% \ensuremath is required in the following as the +% accessibility support clashes with math-mode. + +% The firstaccess key defaults to the access key if omitted. +% This means that on first use if firstaccess hasn't been +% set but access has been set it will use the access text +% that's used for the name field in the glossary (not the +% value of the textaccess field). If this is inappropriate +% you need to explicitly add the firstaccess key. + +\newglossaryentry{R}{name={\ensuremath{\Re}}, + access={set of real numbers symbol},% name access + textaccess={set of real numbers},% text access + %firstaccess={set of real numbers},% first access + description={set of real numbers}} + +\newglossaryentry{in}{name={\ensuremath{\in}}, + access={is element of set symbol},% name access + textaccess={in},% text access + %firstaccess={in},% first access + description={is an element of}} + +\begin{document} +This is a sample document testing the accsupp option. +If your PDF viewer doesn't provide a text-to-speech facility +try copying the text on this page and pasting to a text file +to see the difference. + +\section{An Abbreviation} + +First use: \gls{spld}. +Next use: \gls{spld}. + +Access name: \glsentryaccess{spld}. + +Access text: \glsentrytextaccess{spld}. + +Access short: \glsentryshortaccess{spld}. + +If the access field isn't set in the above, no replacement text +is used in the corresponding \verb|\glstext|, \verb|\glsaccesstext| etc commands. + +Text field: \glstext{spld} [no-index/link version: \glsaccesstext{spld}]. +Short field: \glsxtrshort{spld} [no-index/link version: \glsaccessshort{spld}]. + +\section{An Initialism} + +The short form should be read as two letters: P I (not as the word +pi). + +First use: \gls{pi}. +Next use: \gls{pi}. + +Access short: \glsentryshortaccess{pi}. +Actual short value: \glsentryshort{pi}. +Access (name): \glsentryaccess{pi}. + +\section{A Symbol} + +First use: \gls{R}. Next use: \gls{R}. +Text field: \glstext{R}. Name field: \glsname{R}. + +First use: \gls{in}. Next use: \gls{in}. +Text field: \glstext{in}. Name field: \glsname{in}. + +Now test in math-mode: +\[ +x \gls{in} \gls{R} +\] + +The ``firstaccess'' field is used on first use. If this hasn't +been set the ``access'' field is used instead. The ``textaccess'' +field is used on subsequent use. If this hasn't been set the +``access'' field is used instead. The ``access'' field is used +for the entry name in the glossary list. + +Access (name) field: \glsentryaccess{R}. +First Access field: \glsentryfirstaccess{R}. +Text Access field: \glsentrytextaccess{R}. + +Access (name) field: \glsentryaccess{in}. +First Access field: \glsentryfirstaccess{in}. +Text Access field: \glsentrytextaccess{in}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf Binary files differnew file mode 100644 index 0000000000..a792bef02b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex new file mode 100644 index 0000000000..f3c85c8c94 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex @@ -0,0 +1,43 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{report} + +\usepackage[colorlinks]{hyperref} +\usepackage[nopostdot=false]{glossaries-extra} + +\makeglossaries + +\renewcommand*{\glsxtrpostdescacronym}{% + \space(\textsc{origin:} \glsentrylong{\glscurrententrylabel})% +} + +\newacronym[description={a device that emits a narrow intense +beam of light}]{laser}{laser}{light amplification by stimulated +emission of radiation} + +\newacronym[description={a form of \gls{laser} generating a beam of +microwaves}]{maser}{maser}{microwave amplification by stimulated +emission of radiation} + +\newacronym[description={a system for detecting the location and +speed of ships, aircraft, etc, through the use of radio waves}]{radar}{radar}{radio detection and ranging} + +\newacronym[description={portable breathing apparatus for divers}]{scuba}{scuba}{self-contained underwater breathing +apparatus} + +\begin{document} +\tableofcontents + +\chapter{Sample} + +An acronym is a word formed from the initial letters of other words. +Since it's a word, an acronym is pronounced as a word rather than as +a series of letters. Examples of acronyms: \gls{laser}, \gls{maser}, +\gls{radar} and \gls{scuba}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf Binary files differnew file mode 100644 index 0000000000..748c73c9cb --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex new file mode 100644 index 0000000000..1301d14cc4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex @@ -0,0 +1,30 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\newacronym{laser}{laser}{light amplification by stimulated +emission of radiation} + +\newacronym{maser}{maser}{microwave amplification by stimulated +emission of radiation} + +\newacronym{radar}{radar}{radio detection and ranging} + +\newacronym{scuba}{scuba}{self-contained underwater breathing +apparatus} + +\begin{document} +An acronym is a word formed from the initial letters of other words. +Since it's a word, an acronym is pronounced as a word rather than as +a series of letters. Examples of acronyms: \gls{laser}, \gls{maser}, +\gls{radar} and \gls{scuba}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf Binary files differnew file mode 100644 index 0000000000..7254b52a70 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex new file mode 100644 index 0000000000..dd14470fbc --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex @@ -0,0 +1,48 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\newglossaryentry{numberlist}{name={number list}, + description={\nopostdesc}, + alias={locationlist}} + +\newglossaryentry{locationlist}{name={location list}, + description={list of locations} +} + +\renewcommand{\glsxtrsetaliasnoindex}{% + \ifglshasfield{alias}{\glslabel}% + {% + \setkeys{glslink}{noindex}% + \glsxtrindexaliased + }% + {}% +} + +\newglossaryentry{sample}{name={sample}, +description={an example}} + +\newglossaryentry{sample-alias}{name={sample-alias}, +description={\nopostdesc}, +alias={sample} +} + +\begin{document} + +\gls{numberlist} or \gls{locationlist}. + +\gls{sample} or \gls{sample-alias}. + +\newpage +\gls{numberlist} + +\gls{sample-alias} +\newpage +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf Binary files differnew file mode 100644 index 0000000000..e0776db2de --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex new file mode 100644 index 0000000000..201c55c26f --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex @@ -0,0 +1,32 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +% Don't use with indexonlyfirst setting! + +\GlsXtrSetDefaultGlsOpts{noindex} +\GlsXtrSetAltModifier{>}{noindex=false} + +\newglossaryentry{sample}{name={sample},description={an example}} + +\begin{document} +This is a sample document. +The \gls{sample} entry is used on this page but isn't indexed. + +\newpage +The \gls>{sample} entry is used on this page and is indexed. + +\newpage +The \gls{sample} entry is used on this page but isn't indexed. + +\newpage +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf Binary files differnew file mode 100644 index 0000000000..ab853285b4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex new file mode 100644 index 0000000000..261e878f73 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex @@ -0,0 +1,100 @@ +% arara: pdflatex +% arara: makeglossaries if found("aux", "@istfilename") +% arara: pdflatex +\documentclass[12pt]{book} + +\usepackage[T1]{fontenc} +\usepackage{tgtermes} +\usepackage[dvipsnames]{xcolor} +\usepackage{pifont} +\usepackage{tikz} + +\usepackage[colorlinks]{hyperref} +\usepackage[stylemods=tree,style=alttree,savenumberlist]{glossaries-extra} + +\makeglossaries + +\loadglsentries{example-glossaries-multipar} + +\glssetcategoryattribute{general}{glossname}{firstuc} + +\renewcommand*{\GlsXtrFormatLocationList}[1]{% + {% + \hypersetup{hidelinks}% + \textcolor{Plum}{\ding{230}}~\textbf{#1}% + }% +} + +% Suppress hanging paragraphs: +%\renewcommand*{\glsxtrAltTreeSetHangIndent}{} + +\newlength\maxlocwidth + +\renewcommand*{\glsxtralttreeInit}{% +% setup lengths + \glsFindWidestAnyNameLocation[\currentglossary]% + {\maxlocwidth}% + \settowidth + {\glsxtrtreetopindent}% + {\glstreenamefmt{\glsgetwidestname}}% + \addtolength{\glsxtrtreetopindent}% + {\dimexpr1em+2\nameinnersep+2\nameoutersep}% + \addtolength{\maxlocwidth}{1em}% + \glsxtrAltTreeIndent=\parindent +} + +\newlength\nameinnersep +\nameinnersep=4pt +\newlength\nameoutersep +\nameoutersep=2pt + +\renewcommand*{\glstreenamebox}[2]{% + \makebox[#1][l]% + {% + \begin{tikzpicture}[baseline=(X.base)] + \node[fill=Orchid, + align=center, + text width=\dimexpr#1-2\nameinnersep-2\nameoutersep, + inner sep=\nameinnersep, + outer sep=\nameoutersep + ] (X) {#2}; + \end{tikzpicture}% + }% +} + +\newcommand*{\locbox}[1]{% + \begin{tikzpicture}[baseline=(X.base)] + \node[text width=\maxlocwidth, + draw=CadetBlue, + fill=CornflowerBlue, + double, + thick, + align=center, + rounded corners] + (X) {#1}; + \end{tikzpicture}% +} + +\renewcommand{\glsxtralttreeSymbolDescLocation}[2]{% + \marginpar[\hfill\locbox{#2}]{\locbox{#2}}% + % scope \par change + {% + \let\par\glsxtrAltTreePar + \glossentrydesc{#1}\glspostdescription\par + }% +} + +\begin{document} + +\frontmatter +\chapter{Front Matter Test} +\forallglsentries{\thislabel}{\gls{\thislabel}.\newpage} + +\mainmatter + +\chapter{Main Matter Test} +\forallglsentries{\thislabel}{\gls{\thislabel}.\newpage} + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf Binary files differnew file mode 100644 index 0000000000..56d3b3e27d --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex new file mode 100644 index 0000000000..c328aee923 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex @@ -0,0 +1,60 @@ +% arara: pdflatex +% arara: makeglossaries if found("aux", "@istfilename") +% arara: pdflatex +\documentclass{book} + +\usepackage[stylemods=tree,style=alttree,savenumberlist]{glossaries-extra} + +\makeglossaries + +\loadglsentries{example-glossaries-symbols} + +\newlength\maxsymbolwidth +\newlength\maxlocwidth +\newlength\fieldsep +\setlength{\fieldsep}{10pt} +\newlength\midfield +\newlength\rightfield + +\renewcommand*{\glsxtralttreeInit}{% +% setup lengths + \glsFindWidestAnyNameSymbolLocation[\currentglossary]% + {\maxsymbolwidth}{\maxlocwidth}% + \settowidth + {\glsxtrtreetopindent}% + {\glstreenamefmt{\glsgetwidestname}}% + \addtolength{\glsxtrtreetopindent}{\fieldsep}% + \ifdim\maxsymbolwidth>\maxlocwidth + \setlength{\rightfield}{\maxsymbolwidth}% + \else + \setlength{\rightfield}{\maxlocwidth}% + \fi + \addtolength{\rightfield}{\fieldsep}% + \setlength + {\midfield}% + {\dimexpr\linewidth-\glsxtrtreetopindent-\rightfield}% +} + +\renewcommand{\glsxtralttreeSymbolDescLocation}[2]{% + \parbox[t]{\midfield}{\raggedright + \glossentrydesc{#1}\glspostdescription\strut\par}% + \parbox[t]{\rightfield}{\raggedleft + \glossentrysymbol{#1}\par + \sffamily#2\strut\par + }% + \par +} + +\begin{document} + +\frontmatter +\setcounter{page}{37}% test wide page number +Test document. +\newpage +Indexing all entries here. +\glsaddall + +\mainmatter +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf Binary files differnew file mode 100644 index 0000000000..36df4991dd --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex new file mode 100644 index 0000000000..986828ecc4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex @@ -0,0 +1,23 @@ +% arara: pdflatex +% arara: makeglossaries if found("aux", "@istfilename") +% arara: pdflatex +\documentclass{article} + +\usepackage[symbols,stylemods=tree,style=alttree]{glossaries-extra} + +\makeglossaries + +\loadglsentries{example-glossaries-parent.tex} +\loadglsentries[symbols]{example-glossaries-symbols} + +\begin{document} +\glsaddall +\glsunsetall + +%\glsFindWidestUsedLevelTwo +\preto{\glsxtralttreeInit}{% + \glsFindWidestUsedLevelTwo[\currentglossary]% +} +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf Binary files differnew file mode 100644 index 0000000000..59a5978d4f --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex new file mode 100644 index 0000000000..2aeac3b5f4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex @@ -0,0 +1,129 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: makeindex +% arara: pdflatex +\documentclass[index=totoc]{scrreprt} + +\usepackage[T1]{fontenc} + +\usepackage{makeidx} +\usepackage[colorlinks, + hyperindex=false% necessary for the encap entry + ]{hyperref} +\usepackage[abbreviations]{glossaries-extra} + +\renewcommand{\abbreviationsname}{List of Abbreviations} + +\makeindex +\makeglossaries + +% Provided by koma classes: +\setindexpreamble{Page numbers in bold indicate an entry +in the glossary or list of abbreviations.\par\medskip} + +% Automatically index the location of entry in the glossary +% for those entries that are in the "general" category and +% use "htextbf" as the encap value: + +% (Without the troublesome "encap" entry, hyperref's default +% hyperindex=true option could've been used and the attribute +% could simply be set to "textbf" and there'd be no need +% to define "htextbf".) + +\glssetcategoryattribute{general}{indexname}{htextbf} +\glssetcategoryattribute{general}{dualindex}{hyperpage} + +% Automatically index the location of entry in the glossary +% for those entries that are in the "abbreviation" category +% and use "htextbf" as the encap value: + +\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}} +\glssetcategoryattribute{abbreviation}{indexname}{htextbf} +\glssetcategoryattribute{abbreviation}{dualindex}{hyperpage} + +% Allow "format" key to override "dualindex" attribute. +\GlsXtrEnableIndexFormatOverride + +% Convert the first letter of the name to upper case in the +% glossary for general entries: +\glssetcategoryattribute{general}{glossname}{firstuc} + +% Convert the name to upper case in the glossary for +% abbreviations: +\glssetcategoryattribute{abbreviation}{glossname}{uc} + +% Define general entries: + +\newglossaryentry{duck}{name=duck,% + description={a waterbird with webbed feet}} + +\newglossaryentry{parrot}{name=parrot,% + description={mainly tropical bird with bright plumage}} + +\newglossaryentry{at}{name={@},% + description={makeindex's default for the ``actual value''}} + +\newglossaryentry{level}{name={!},% + description={makeindex's default for the ``level value''}} + +\newglossaryentry{esc}{name={"},% + description={makeindex's default for the ``escape value''}} + +\newglossaryentry{encap}{name={|},% + description={makeindex's default for the ``encap value''}} + +% Set abbreviation style: + +\setabbreviationstyle{long-short-sc} + +% Define abbreviations: + +\newabbreviation + {html}% identifying label + {html}% short form + {hypertext markup language}% long form + +\newabbreviation + {xml}% identifying label + {xml}% short form + {extensible markup language}% long form + +\title{Sample document testing the glossaries-extra package} +\author{Nicola Talbot} + +\begin{document} +\maketitle + +\tableofcontents + +\chapter{Introduction} + +% If hyperref's default hyperindex=true option is in use +% the indexed term here won't need the |hyperpage bit. +This is a sample\index{sample|hyperpage} document testing the +\texttt{glossaries-extra} package. + +\chapter{General Entries} + +Sample entries: \gls{duck} and \gls{parrot}. + +Test makeindex's special characters: \gls{at} (actual) +\gls{esc} (escape) \gls{level} (level) and \gls{encap} (encap). + +\newpage + +Use some entries again: \gls{duck} and \gls[format=hyperit]{parrot}. + +\chapter{Abbreviations} + +First use: \gls{html} and \gls{xml}. + +Next use: \gls{html} and \gls{xml}. + +\printglossaries + +\printindex + +\end{document} + diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf Binary files differnew file mode 100644 index 0000000000..93a8d36a55 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex new file mode 100644 index 0000000000..da2b32d6d9 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex @@ -0,0 +1,127 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: makeindex +% arara: pdflatex +\documentclass{report} + +\usepackage[T1]{fontenc} + +\usepackage{makeidx} +\usepackage[abbreviations,counter=chapter,nopostdot=false]{glossaries-extra} + +\renewcommand*{\abbreviationsname}{List of Abbreviations} +\renewcommand*{\glossarypreamble}{\emph{Numbers refer to the +\textbf{chapter} where the entry was referenced.}} + +\makeindex +\makeglossaries + +% Automatically index the location of entry in the glossary +% for those entries that are in the "general" category: + +\glssetcategoryattribute{general}{indexname}{textbf} +\glssetcategoryattribute{general}{dualindex}{true} + +% Only index first use for the glossary location lists +% (doesn't affect the indexing from "dualindex" attribute): +%\glssetcategoryattribute{general}{indexonlyfirst}{true} + +% Automatically index the location of entry in the glossary +% for those entries that are in the "abbreviation" category +% and use "textbf" as the encap: + +\glssetcategoryattribute{abbreviation}{indexname}{textbf} +\glssetcategoryattribute{abbreviation}{dualindex}{true} + +% Only index first use for the glossary location lists +% (doesn't affect the indexing from "dualindex" attribute): +%\glssetcategoryattribute{abbreviation}{indexonlyfirst}{true} + +% Convert the first letter of the name to upper case in the +% glossary for general entries: +\glssetcategoryattribute{general}{glossname}{firstuc} + +% Allow "format" key to override "dualindex" attribute. +\GlsXtrEnableIndexFormatOverride + +% use first field instead of name field +\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}} + +% use long form for the sort value, if provided: +\renewcommand*{\glsxtrautoindexassignsort}[2]{% + \ifglshaslong{#2}% + {\glsletentryfield{#1}{#2}{long}}% + {\glsletentryfield{#1}{#2}{sort}}% +} + +% Define general entries: + +\newglossaryentry{duck}{name=duck,% + description={a waterbird with webbed feet}} + +\newglossaryentry{parrot}{name=parrot,% + description={mainly tropical bird with bright plumage}} + +\newglossaryentry{at}{name={@},% + description={makeindex's default for the ``actual value''}} + +\newglossaryentry{esc}{name={"},% + description={makeindex's default for the ``escape value''}} + +\newglossaryentry{level}{name={!},% + description={makeindex's default for the ``level value''}} + +\newglossaryentry{encap}{name={|},% + description={makeindex's default for the ``encap value''}} + +% Set abbreviation style: + +\setabbreviationstyle{long-short-sc} + +% Define abbreviations: + +\newabbreviation + {html}% identifying label + {html}% short form + {hypertext markup language}% long form + +\newabbreviation + {xml}% identifying label + {xml}% short form + {extensible markup language}% long form + +\title{Sample document testing the glossaries-extra package} +\author{Nicola Talbot} + +\begin{document} +\maketitle + +\chapter{Introduction} + +This is a sample\index{sample} document testing the +\texttt{glossaries-extra} package. + +\chapter{General Entries} + +Sample entries: \gls{duck} and \gls{parrot}. + +Test makeindex's special characters: \gls{at} (actual) +\gls{esc} (escape) \gls{level} (level) and \gls{encap} (encap). + +\chapter{Abbreviations} + +First use: \gls{html} and \gls{xml}. + +Next use: \gls{html} and \gls{xml}. + +\newpage + +Uses some entries again: \gls{duck} and \gls[format=textit]{parrot}. + +\printglossaries + +\printindex + +\end{document} + diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf Binary files differnew file mode 100644 index 0000000000..8429430c25 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex new file mode 100644 index 0000000000..4216b7f611 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex @@ -0,0 +1,22 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\newglossaryentry{sample1}{name={sample 1},description={an example}} +\newglossaryentry{sample2}{name={sample 2},description={an +example},see={sample1}} +\newglossaryentry{sample3}{name={sample 3},description={an +example},seealso={sample2}} + +\begin{document} +\gls{sample3}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf Binary files differnew file mode 100644 index 0000000000..be4f0703ab --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex new file mode 100644 index 0000000000..abadf2b850 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex @@ -0,0 +1,32 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[nonumberlist]{glossaries-extra} + +\makeglossaries + +\renewcommand*{\glsxtrpostdescgeneral}{% + \ifglshasfield{see}{\glscurrententrylabel} + {, \glsxtrusesee{\glscurrententrylabel}}% + {}% + \ifglshasfield{seealso}{\glscurrententrylabel} + { (\glsxtruseseealso{\glscurrententrylabel})}% + {}% +} + +\newglossaryentry{sample1}{name={sample 1},description={an example}} +\newglossaryentry{sample2}{name={sample 2},description={an +example},see={sample1}} +\newglossaryentry{sample3}{name={sample 3},description={an +example},see={sample2}} +\newglossaryentry{sample4}{name={sample 4},description={an +example},seealso={sample2,sample3}} + +\begin{document} +\gls{sample4}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf Binary files differnew file mode 100644 index 0000000000..418419a652 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex new file mode 100644 index 0000000000..8271b488fa --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex @@ -0,0 +1,28 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[docdef]{glossaries-extra} + +\makeglossaries + +\begin{document} + +\printglossaries + +This is a sample document testing the use of document definitions +for those who are happy to accept all the associated drawbacks +of not following the advice in the glossaries manual about +defining all your entries in the preamble. Use it at your own +peril. + +\newglossaryentry{sample}{name=sample,description={an example}} +\newglossaryentry{sample2}{name={another sample}, + description={another example},see={sample}} +\newabbreviation{ab}{AB}{sample abbreviation} + +Use \gls{sample2}. + +Use \gls{ab}. +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf Binary files differnew file mode 100644 index 0000000000..0b032a464c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex new file mode 100644 index 0000000000..739cf1061e --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex @@ -0,0 +1,44 @@ +% arara: pdflatex +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableEntryCounting + {abbreviation}% list of categories to use entry counting + {2}% trigger value + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} +\newabbreviation{css}{CSS}{cascading style sheet} + +\newglossaryentry{sample}{name={sample},description={sample}} + +\begin{document} +This is a sample document that uses entry counting. The entry counting +has been enabled on the \texttt{abbreviation} category. +This means that abbreviations will only be added to the glossary +if they have been used more than $n$ times, where in this +document $n$ has been set to +\glsgetcategoryattribute{abbreviation}{entrycount}. +Entries in other categories behave as normal. + + +Used once: \gls{html}. + +Used twice: \gls{xml} and \gls{xml}. + +Used three times: \gls{css} and \gls{css} and \gls{css}. + +Used once but this entry is in the ``general'' category +which doesn't have the ``entrycount'' attribute set: +\gls{sample}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf Binary files differnew file mode 100644 index 0000000000..b598bbe672 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-external.tex b/macros/latex/contrib/glossaries-extra/samples/sample-external.tex new file mode 100644 index 0000000000..e3e5fda1d3 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-external.tex @@ -0,0 +1,38 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\newignoredglossary*{external} + +\glssetcategoryattribute{external}{targeturl}{\glsentryuseri{\glslabel}} + +\makeglossaries + +\newglossaryentry{sample}{name={sample},description={an example}} + +\newcommand*{\newexternalentry}[3]{% + \newglossaryentry{#1}{type={external},category={external},user1={#2},#3}% +} + +\newcommand*{\glsxtrpostlinkexternal}{% + \glsxtrpostlinkAddDescOnFirstUse +} + +\newexternalentry{bib2gls}{https://github.com/nlct/bib2gls} +{name={bib2gls}, + description={command line application to convert from .bib to .glstex} +} + + +\begin{document} +An internal example: \gls{sample}. + +An external example: \gls{bib2gls}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf Binary files differnew file mode 100644 index 0000000000..44b0b88aba --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex new file mode 100644 index 0000000000..2c96d8a1fb --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex @@ -0,0 +1,58 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage{amsmath} +\usepackage[colorlinks]{hyperref} +\usepackage[postdot,style=index]{glossaries-extra} + +\makeglossaries + +\newcommand*{\mtx}[1]{\boldsymbol{#1}} +\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}} + +\newglossaryentry{matrix}{% + name={matrix}, + symbol={\ensuremath{\mtx{M}}}, + plural={matrices}, + user1={mtx}, + description={rectangular array of values} +} + +\newglossaryentry{identitymatrix}{% + name={identity matrix}, + symbol={\ensuremath{\mtx{I}}}, + plural={identity matrices}, + description={a diagonal matrix with all diagonal elements equal to +1 and all other elements equal to 0} +} + +\newglossaryentry{matrixinv}{% + name={matrix inverse}, + symbol={\ensuremath{\mtxinv{M}}}, + user1={mtxinv}, + description={a square \gls{matrix} such that + $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$} +} + +\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex} + +\begin{document} +A \gls{matrix} is denoted \glssymbol{matrix}. +The inverse is denoted \glssymbol{matrixinv}. + +\newpage + +\[ + \glsxtrfmt{matrix}{A} + \glsxtrfmt{matrixinv}{A} + = + \glssymbol{identitymatrix} +\] + +\newpage + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf Binary files differnew file mode 100644 index 0000000000..ddd2da6376 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex new file mode 100644 index 0000000000..eed767a5c0 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex @@ -0,0 +1,30 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{report} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +%\setabbreviationstyle{footnote}% similar to glossaries.sty acronym style of the same name +\setabbreviationstyle{postfootnote}% put the footnote after following punctuation if present + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} + +\begin{document} +\chapter{Sample} + +First use: \gls{xml} and \gls{html}. + +\chapter{Another Sample} + +Next use: \gls{xml} and \gls{html}. + +Short form: \glsxtrshort{xml}\@. Long form: \glsxtrlong{html}. +Full form: \glsxtrfull{xml}. + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf Binary files differnew file mode 100644 index 0000000000..d14b7ac990 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-header.tex b/macros/latex/contrib/glossaries-extra/samples/sample-header.tex new file mode 100644 index 0000000000..4b004c0245 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-header.tex @@ -0,0 +1,73 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{report} + +\usepackage[T1]{fontenc}% provide bold small caps +\usepackage[utf8]{inputenc} +\usepackage{slantsc}% provide slanted small caps +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle{long-short-sc} +\newabbreviation{html}{html}{hypertext markup language} + +\newglossaryentry{sample}{name=sample, + description={an example}} + +\pagestyle{headings} + +% entries with the headuc attribute set to "true" +% will ensure the \glsfmttext etc commands use the +% upper case version in page headers. +\glssetcategoryattribute{general}{headuc}{true} + +% This attribute isn't set for the "abbreviation" category +% which keeps the abbreviation as small caps in the header. + +% Uncomment the following to set the attribute for the +% abbreviations as well: +%\glssetcategoryattribute{abbreviation}{headuc}{true} + +\begin{document} +\begin{abstract} +This is a sample document that tests the use of entries +in sectioning commands through commands like \verb|\glsfmtshort| +and \verb|\glsfmttext|. +\end{abstract} + +\tableofcontents + +\chapter{\Glsfmttext{sample} Chapter with \glsfmtshort{html} Abbreviation} +\label{ch:sample} + +First use: \gls{html}. Next use: \gls{html}. +Note that the \gls{sample} entry that occurs at the start of +the chapter title appears in lower case in the PDF bookmarks, since +the case-changing command can't be used there. + +\newpage + +Page break to test header. + +\chapter{Another + \texorpdfstring{\Glsfmttext{sample}}{Sample} + Chapter with \glsfmtshort{html} Abbreviation} + +The case-changing commands can't be used in PDF bookmarks, +so this chapter has used \verb|\texorpdfstring| to provide +an alternative for the PDF bookmark. The first chapter +(\nameref{ch:sample}) +didn't do this so ``\Gls{sample}'' appeared in lower case in +the PDF bookmark. + +\newpage + +Page break to test header. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf Binary files differnew file mode 100644 index 0000000000..6862cdf5af --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex new file mode 100644 index 0000000000..459888c0b4 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex @@ -0,0 +1,42 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{etoolbox} +\usepackage + [ + indexcrossrefs=false% cross-ref indexing performed explicitly + ] + {glossaries-extra} + +\makeglossaries + +% Keep a list of entries that have been indexed +\newcommand*{\indexedlist}{} +\renewcommand*{\glsxtrdowrglossaryhook}[1]{% + \xifinlist{#1}{\indexedlist}{}{\listxadd{\indexedlist}{#1}}% +} + +\newglossaryentry{sample1}{name={sample 1},description={an example}} +\newglossaryentry{sample2}{name={sample 2},description={an +example},see={sample1}} +\newglossaryentry{sample3}{name={sample 3},description={an +example},see={sample2}} + +\newglossaryentry{sample4}{name={sample 4},description={an example}} + +\begin{document} +This is sample document. + +\gls{sample3}. + +\printglossaries + +% index all the cross-referenced entries that haven't been used: +\glsxtraddallcrossrefs + +Entries that haven't been indexed: +\forglsentries{\thislabel}{\xifinlist{\thislabel}{\indexedlist}{}{\space\thislabel}}. + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf Binary files differnew file mode 100644 index 0000000000..70a828f297 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex new file mode 100644 index 0000000000..39aa4e905f --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex @@ -0,0 +1,70 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +% set up the styles: +\setabbreviationstyle{long-short-sc} + +\setabbreviationstyle[initialism]{short-long} +\glssetcategoryattribute{initialism}{insertdots}{true} +\glssetcategoryattribute{initialism}{discardperiod}{true} +\glssetcategoryattribute{initialism}{retainfirstuseperiod}{true} + +% define the entries: + +\newabbreviation{html}{html}{hypertext markup language} + +\newabbreviation[category=initialism]{eg}{eg}{for example} +\newabbreviation[category=initialism]{si}{SI}{sample initials} + +\begin{document} +\section{Examples} + +Abbreviations with dots \gls{eg} and \gls{si} and abbreviation +without dots \gls{html} and the end of the sentence. + +(Next use.) Abbreviations with dots \gls{eg} and \gls{si} and abbreviation +without dots \gls{html} and the end of the sentence. + +Plural: \glspl{si} and at the end of a sentence \glspl{si}. + +Reset\glsresetall. First use end of sentence: +\gls{eg}. \gls{si}. \gls{html}. + +Next use end of sentence: +\gls{eg}. \gls{si}. \gls{html}. + +\section{Space Factors} + +Test the space factors. (More visible if we switch to a monospaced +font.) + +\begin{ttfamily} +Initialisms in the middle \gls{eg} and \gls{si} of a sentence. + +Initialism at the end of a sentence \gls{eg}. +Initialism at the end of a sentence \gls{si}. +Another sentence. +\end{ttfamily} + +Compare with explicitly writing the text without \verb|\gls| +and judicious use of \verb*|\ | and \verb|\@|: + +\begin{ttfamily} +Initialisms in the middle e.g.\ and S.I. of a sentence. + +Initialism at the end of a sentence e.g. +Initialism at the end of a sentence S.I\@. +Another sentence. +\end{ttfamily} + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf Binary files differnew file mode 100644 index 0000000000..6ecfa45889 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex new file mode 100644 index 0000000000..d8375eaabf --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex @@ -0,0 +1,44 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\renewcommand*{\glslinkpostsetkeys}{% + \ifnum\GlsXtrLinkCounterValue{\glslabel}>1 + \setkeys{glslink}{hyper=false}% + \fi +} + +%\GlsXtrEnableLinkCounting[section]{general} +\GlsXtrEnableLinkCounting{general} + +\newglossaryentry{sample1}{name={sample1},description={an example}} +\newglossaryentry{sample2}{name={sample2},description={another example}} + +\newabbreviation{ex}{ex}{example} + +\begin{document} + +\section{Sample Section} + +\Gls{sample1}, \gls{sample2} and \gls{ex}. +\Glstext{sample1} and \gls{ex} again. +Link count: \GlsXtrTheLinkCounter{sample1} (sample1), +\GlsXtrTheLinkCounter{sample2} (sample2) and +\GlsXtrTheLinkCounter{ex} (ex). + +\section{Another Sample Section} + +\Gls{sample1}, \gls{sample2} and \gls{ex}. +Link count: \GlsXtrTheLinkCounter{sample1} (sample1), +\GlsXtrTheLinkCounter{sample2} (sample2) and +\GlsXtrTheLinkCounter{ex} (ex). + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf Binary files differnew file mode 100644 index 0000000000..ed38e87d42 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex new file mode 100644 index 0000000000..421a5af0ba --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex @@ -0,0 +1,25 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle[inline]{long-short} +\setabbreviationstyle[footer]{footnote} + +\newabbreviation[category=inline]{html}{HTML}{hypertext markup language} + +\newabbreviation[category=footer]{shtml}{SHTML}{server-parsed HTML} + +\begin{document} + +First use: \gls{shtml} and \gls{html}. + +Next use: \gls{shtml} and \gls{html}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf Binary files differnew file mode 100644 index 0000000000..47a2626b99 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex new file mode 100644 index 0000000000..a85c7c6b9b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex @@ -0,0 +1,35 @@ +\documentclass{article} + +\usepackage[symbols,automake]{glossaries-extra} +\usepackage{glossary-mcols} + +\makeglossaries[main] + +\newglossaryentry{duck}{name=duck,% + description={a waterbird with webbed feet}} + +\newglossaryentry{parrot}{name=parrot,% + description={mainly tropical bird with bright plumage}} + +\newglossaryentry{zebra}{name=zebra,% + description={black and white striped African wild horse}} + +\newglossaryentry{aardvark}{name=aardvark,% + description={African ant-eating mammal}} + +\glsxtrnewsymbol[description={zeta}]{zeta}{$\zeta$} +\glsxtrnewsymbol[description={beta}]{beta}{$\beta$} +\glsxtrnewsymbol[description={alpha}]{alpha}{$\alpha$} +\glsxtrnewsymbol[description={gamma}]{gamma}{$\gamma$} + +\begin{document} + +General terms: \gls{duck}, \gls{zebra}, \gls{aardvark}, +\gls{parrot}. + +Symbols: \gls{beta}, \gls{gamma}, \gls{alpha}, \gls{zeta}. + +\printglossary[style=mcolindexgroup] +\printnoidxglossary[type=symbols,sort=use,style=index] + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf Binary files differnew file mode 100644 index 0000000000..3c9208ba08 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex new file mode 100644 index 0000000000..352200311e --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex @@ -0,0 +1,344 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{report} + +\usepackage[T1]{fontenc} +\usepackage[colorlinks]{hyperref} +\usepackage[nopostdot=false]{glossaries-extra} + +\makeglossaries + +% regular terms: + +% (Version 1.04+) The following will make regular terms appear +% in sans-serif when used with \gls etc but won't affect the +% abbreviations: + +%\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}} + +% or limit to just the "general" category: +%\renewcommand*{\glsxtrregularfont}[1]{% +% \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}} + +% or limit to a particular attribute: + +%\glssetcategoryattribute{general}{font}{sf} +%\glssetcategoryattribute{acronym}{font}{sf} + +%\renewcommand*{\glsxtrregularfont}[1]{% +% \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}} + +% or use the attribute to store the font control sequence name: + +%\glssetcategoryattribute{general}{font}{textsf} +%\glssetcategoryattribute{acronym}{font}{emph} +% +%\renewcommand*{\glsxtrregularfont}[1]{% +% \glshasattribute{\glslabel}{font}% +% {\csuse{\glsgetattribute{\glslabel}{font}}{#1}}% +% {#1}% +%} + +% The following will make the first letter of the name upper case +% in the glossary for the general entries: +\glssetcategoryattribute{general}{glossname}{firstuc} + +% The following will make the first letter of the description upper case +% in the glossary for the general entries: +\glssetcategoryattribute{general}{glossdesc}{firstuc} + +% (version 1.04+) The following will make the description +% appear in italic in the glossary for general entries: + +%\glssetcategoryattribute{general}{glossdescfont}{emph} + +% (version 1.04+) The following will make the name +% appear in italic in the glossary for general entries: + +%\glssetcategoryattribute{general}{glossnamefont}{emph} + +\newglossaryentry{duck}{name=duck,% + description={a waterbird with webbed feet}} + +\newglossaryentry{parrot}{name=parrot,% + description={mainly tropical bird with bright plumage}} + +% acronyms: + +% The following redefinition will add the provided text to the end of the +% description in the glossary. + +\renewcommand*{\glsxtrpostdescacronym}{% + \space(\textsc{acronym:} \glsentrylong{\glscurrententrylabel})% +} + +% The following will make the first letter of the name upper case +% in the glossary for the acronym entries: +\glssetcategoryattribute{acronym}{glossname}{firstuc} + +% The following will make the first letter of the description upper case +% in the glossary for the acronym entries: +\glssetcategoryattribute{acronym}{glossdesc}{firstuc} + +% Enable tagging of initials. The second argument is the name of +% the command you want to use to tag initial letters. The +% command will be defined robustly and will only be activated +% in the glossary for the categories listed in the first +% argument. +% If the specified tagging command (\itag here) is used +% anywhere else it will just do its argument. +\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag} + +\newacronym[description={a device that emits a narrow intense +beam of light}]{laser}{laser} +{\itag{l}ight \itag{a}mplification by \itag{s}timulated +\itag{e}mission of \itag{r}adiation} + +\newacronym[description={a form of \gls{laser} generating a beam of +microwaves}]{maser}{maser} +{\itag{m}icrowave \itag{a}mplification by \itag{s}timulated +\itag{e}mission of \itag{r}adiation} + +\newacronym[description={a system for detecting the location and +speed of ships, aircraft, etc, through the use of radio waves}]{radar}{radar} +{\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging} + +\newacronym[description={portable breathing apparatus for divers}]{scuba}{scuba} +{\itag{s}elf-\itag{c}ontained \itag{u}nderwater +\itag{b}reathing \itag{a}pparatus} + +% The following redefinition will add the provided text to the end of the +% description in the glossary. + +\renewcommand*{\glsxtrpostdescabbreviation}{% + \space (abbreviation)% +} + +% The following will set the description in title case +% in the glossary for the abbreviations: +\glssetcategoryattribute{abbreviation}{glossdesc}{title} + +% The following will convert the abbreviations to all capitals +% in the glossary: +\glssetcategoryattribute{abbreviation}{glossname}{uc} + +% Use \textsc in the abbreviations: +\setabbreviationstyle{long-short-sc} + +% Some other attributes you might want to try: + +% Use 's (apostrophe s) for the plural suffix +% (only affects the short plural not the long plural) +%\glssetcategoryattribute{abbreviation}{aposplural}{true} + +% Suppress the default suffix for the short plural. +% (Don't use with the above for the same category.) +%\glssetcategoryattribute{abbreviation}{noshortplural}{true} + +% abbreviations: + +\newabbreviation + {html}% identifying label + {html}% short form + {\itag{h}yper\itag{t}ext \itag{m}arkup \itag{l}anguage}% long form + +\newabbreviation + {xml}% identifying label + {xml}% short form + {e\itag{x}tensible \itag{m}arkup \itag{l}anguage}% long form + +\newabbreviation + {svg}% identifying label + {svg}% short form + {\itag{s}calable \itag{v}ector \itag{g}raphics}% long form + +\newabbreviation + {svm}% identifying label + {svm}% short form + {\itag{s}upport \itag{v}ector \itag{m}achine}% long form + +\title{Sample Document Illustrating the glossaries-extra Package} +\author{Nicola Talbot} + +\begin{document} +\pagenumbering{alph} +\maketitle + +\pagenumbering{roman} +\tableofcontents + +\pagenumbering{arabic} +\chapter{Categories} + +The \texttt{glossaries-extra} package provides an extra key called +\texttt{category}, which is used to assign a category to each entry. +For example, the category for the ``duck'' entry is: +\glscategory{duck}. + +The category value is just a label, which needs to be expandable, so +make sure you avoid problematic characters in it. You can test the +category with \verb|\glsifcategory|. + +The entry ``duck'' \glsifcategory{duck}{general}{is}{isn't} a +general entry. +The entry ``laser'' \glsifcategory{laser}{general}{is}{isn't} a +general entry. + +A category can have attributes set. For example, both the +``general'' category and the ``acronym'' category have the attribute +``regular'' set to ``true''. + +You can obtain the value of an attribute for a given category with +\begin{verbatim} +\glsgetcategoryattribute{category}{attribute} +\end{verbatim} +This does nothing if the category +or attribute aren't defined. + +Category ``general'' has the attribute ``regular'' set to +``\glsgetcategoryattribute{general}{regular}''. +Category ``acronym'' has the attribute ``regular'' set to +``\glsgetcategoryattribute{acronym}{regular}''. +Category ``abbreviation'' has the attribute ``regular'' set to +``\glsgetcategoryattribute{abbreviation}{regular}''. + +You can test if a category has an attribute set to a given value +with +\begin{verbatim} +\glsifcategoryattribute{category}{attribute}{value}{true code}{false +code} +\end{verbatim} + +Category ``general'' +\glsifcategoryattribute{general}{regular}{true}{has}{doesn't have} +the ``regular'' attribute set to ``true''. +Category ``acronym'' +\glsifcategoryattribute{acronym}{regular}{true}{has}{doesn't have} +the ``regular'' attribute set to ``true''. +Category ``abbreviation'' +\glsifcategoryattribute{abbreviation}{regular}{true}{has}{doesn't have} +the ``regular'' attribute set to ``true''. + +\chapter{Regular Terms} + +By default glossary entries have the category ``general''. +For +example\glsforeachincategory{general}{\thistype}{\thislabel}{, +\gls{\thislabel}} have the category field set to ``general''. + +Commands like \verb|\newabbreviation| and \verb|\newacronym| +override this. + +Regular terms are those entries whose category has the ``regular'' +attribute set to ``true''. There's a convenient shortcut to +determine if an entry has a category with the ``regular'' attribute +set: +\begin{verbatim} +\glsifregular{entry-label}{true code}{false code} +\end{verbatim} + +For example: \gls{duck} \glsifregular{duck}{is}{isn't} a regular +term; +\gls{laser} \glsifregular{laser}{is}{isn't} a regular +term. + +The regular attribute determines what \verb|\gls| (and plural and +case-changing variants) should do. A regular entry (even if +it's been defined using \verb|\newacronym| or +\verb|\newabbreviation|) uses the \texttt{first} (or +\texttt{firstplural}) key on first use and the \texttt{text} +(or \texttt{plural}) key on subsequent use. + +An abbreviation whose category doesn't have the regular attribute +set to ``true'' will use the abbreviation style assigned +to that category for first and subsequent use, which will use +the values of the \texttt{long} (or \texttt{longplural}) +and \texttt{short} (or \texttt{shortplural}) keys. +The first use of \verb|\gls| may or may not match \verb|\glsfirst| +for non-regular entries, depending on the abbreviation style. + +\chapter{Abbreviations} + +Abbreviations include acronyms, initialisms and contractions. +Some abbreviation styles may set category attributes. +For example, the ``short'' style sets the ``regular'' attribute for +the category used by the abbreviations with that style applied. +Whereas the ``long-short'' style will switch off the ``regular'' attribute +if it has previously been switched on. +Styles must be set before defining abbreviations, but you may set +different styles for different categories. + +For example, by default the ``short'' style is set for abbreviations +with the ``acronym'' category using: +\begin{verbatim} +\setabbreviationstyle[acronym]{short} +\end{verbatim} +whereas the ``short-long'' style is set for abbreviations with the +``abbreviation'' category: +\begin{verbatim} +\setabbreviationstyle{long-short} +\end{verbatim} +(The optional argument defaults to ``abbreviation''.) + +If no style has been set for a particular category, the style for the +``abbreviation'' category is used instead. + +\section{Acronyms} + +An acronym is a word formed from the initial letters of other words. +Since it's a word, an acronym is pronounced as a word rather than as +a series of letters. Examples of acronyms: \gls{laser}, \gls{maser}, +\gls{radar} and \gls{scuba}. + +Since acronyms are treated as words, the ``acronym'' category +has the ``regular'' attribute set to ``true''. The default +abbreviation style for acronyms is ``short'', which doesn't expand +the entry on first use. + +The description defaults to the long +form with the ``short'' style. This example document overrides +the default description by using the \texttt{description} +key in the optional argument of \verb|\newacronym|. This +document also sets the post description hook +(\verb|\glsxtrpostdescacronym|) to insert the long form in +parentheses after the description when it's displayed in the glossary. + +\section{Initialism} + +Initialisms are formed from initial letters of words where the +letters are sounded out. Examples of initialisms: +\gls{svm}, \gls{html}, \gls{svg} and \gls{xml}. + +The \texttt{glossaries-extra} package sets the default abbreviation +style to \texttt{long-short}. This document has changed it to +\texttt{long-short-sc} (use small caps). Next use: +\gls{svm}, \gls{html}, \gls{svg} and \gls{xml}. + +Note that the acronyms (like \gls{laser}) don't use small caps. +This is because the acronyms and initialisms have separate styles +applied since they are in separate categories. + +\section{Plurals} + +The default plural for the short form is obtained by appending +the abbreviation plural suffix to the singular form. You can +override this on a per-entry basis using the \texttt{shortplural} +key in the optional argument of \verb|\newabbreviation| +(or \verb|\newacronym|) or you can prevent the suffix from +being added to all entries in a particular category (or categories) +by setting the \texttt{noshortplural} attribute to ``true'' for +the relevant category (before defining the entries). + +Alternatively you can automatically insert an apostrophe before +the plural suffix by setting the \texttt{aposplural} attribute to +``true''. The \texttt{aposplural} attribute overrides the +\texttt{noshortplural} attribute. + +Plurals: \glspl{svm}, \glspl{laser}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf Binary files differnew file mode 100644 index 0000000000..83b5b168d8 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex new file mode 100644 index 0000000000..169b28e9c2 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex @@ -0,0 +1,355 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass[fontsize=10pt,open=any]{scrbook} + +\usepackage[T1]{fontenc} +\usepackage{tgtermes} +\usepackage{xcolor} +\usepackage{siunitx} +\usepackage[hidelinks]{hyperref} +\usepackage[nopostdot=false,% don't suppress the post-description dot + stylemods=longragged,% load glossary-longragged.sty and glossaries-extra-stylemods.sty + style=longragged3col,% set the glossary style + nogroupskip% don't have a gap between groups +]{glossaries-extra} + +% KOMA class alterations (the default sans-serif clashes +% with the smallcaps font in the headings examples) +\setkomafont{disposition}{\normalcolor\bfseries} + +\pagestyle{headings} + +% Need a wider column for the location list: +\setlength{\glspagelistwidth}{0.12\textwidth} + +% Adjust the description column width if necessary: +%\setlength{\glsdescwidth}{0.5\textwidth} + +% Default font for name field in the glossary. This may be +% overridden by the category attributes: +\renewcommand*{\glsnamefont}[1]{\textbf{#1}} + +\makeglossaries + +% Define some semantic commands: +\newcommand*{\animalfont}[1]{\textcolor{brown}{#1}} +\newcommand*{\vegetablefont}[1]{\textcolor{teal}{#1}} +\newcommand*{\mineralfont}[1]{\textcolor{violet}{#1}} +\newcommand*{\myacronymfont}[1]{\textcolor{orange}{#1}} +\newcommand*{\bacteriafont}[1]{\textcolor{green}{#1}} +\newcommand*{\unitfont}[1]{\textcolor{blue}{#1}} +\newcommand*{\constantfont}[1]{\textcolor{magenta}{#1}} + +% Make the first letter of the name field uppercase in the glossary +% for the given categories: + +\glssetcategoryattribute{animal}{glossname}{firstuc} +\glssetcategoryattribute{mineral}{glossname}{firstuc} +\glssetcategoryattribute{vegetable}{glossname}{firstuc} + +% Make the name field in the glossary use a font changing command +% (overrides \glsnamefont). In this example, I'm using the semantic +% commands I defined above. The backslash is omitted. + +\glssetcategoryattribute{animal}{glossnamefont}{animalfont} +\glssetcategoryattribute{mineral}{glossnamefont}{mineralfont} +\glssetcategoryattribute{vegetable}{glossnamefont}{vegetablefont} +\glssetcategoryattribute{acronym}{glossnamefont}{myacronymfont} +\glssetcategoryattribute{bacteria}{glossnamefont}{bacteriafont} +\glssetcategoryattribute{unit}{glossnamefont}{unitfont} +\glssetcategoryattribute{constant}{glossnamefont}{constantfont} + +% Modify the font used for the description in the glossary: +%\glssetcategoryattribute{bacteria}{glossdescfont}{textsf} + +% Modify the way commands like \gls display regular terms according +% to attribute. + +\glssetcategoryattribute{general}{font}{textsf} +\glssetcategoryattribute{mineral}{font}{mineralfont} +\glssetcategoryattribute{animal}{font}{animalfont} +\glssetcategoryattribute{vegetable}{font}{vegetablefont} +\glssetcategoryattribute{acronym}{font}{myacronymfont} +\glssetcategoryattribute{unit}{font}{unitfont} +\glssetcategoryattribute{constant}{font}{constantfont} + +% I can't add one of the above for the "abbreviation" or "bacteria" +% category as they aren't considered regular entries. (They use +% one of the abbreviation styles that sets the "regular" attribute +% to "false".) +\glssetcategoryattribute{bacteria}{font}{bacteriafont}% ignored! +% If the abbreviation style for "bacteria" is changed to, say, +% "short-em", the attribute won't be ignored. + +% Adjust \glsxtrregularfont so that it picks up the appropriate +% command from the "font" attribute (set above). +\renewcommand*{\glsxtrregularfont}[1]{% + \glshasattribute{\glslabel}{font}% + {\csuse{\glsgetattribute{\glslabel}{font}}{#1}}% + {#1}% +} + +\newglossaryentry{duck}{name=duck, + category={animal}, + description={a waterbird with webbed feet}} + +\newglossaryentry{parrot}{name=parrot, + category={animal}, + description={mainly tropical bird with bright plumage}} + +\newglossaryentry{cabbage}{name=cabbage, + category={vegetable}, + description={vegetable with thick green or purple leaves}} + +\newglossaryentry{brocolli}{name=brocolli, + category={vegetable}, + description={vegetable with heads of small green or purple flower +buds}} + +\newglossaryentry{quartz}{name=quartz, + category=mineral, + description={hard mineral consisting of silica}} + +\newglossaryentry{corundum}{name=corundum, + category=mineral, + description={crystalline form of aluminium oxide}} + +% The following doesn't have the category explicitly set, so it +% defaults to "general": + +\newglossaryentry{loremipsum}{name={lorem ipsum}, + description={dummy text}} + +% The following set the category to "unit": + +\newglossaryentry{ohm}{name=ohm,symbol={\si{\ohm}}, +category=unit, +description=unit of electrical resistance} + +\newglossaryentry{angstrom}{name={\aa}ngstr\"om, +category=unit, +symbol={\si{\angstrom}},sort=angstrom, +description={non-SI unit of length}} + +% The selected style doesn't display the symbol +% so add it to the post-name hook: +\newcommand*{\glsxtrpostnameunit}{ (\glsentrysymbol{\glscurrententrylabel})} + +% Insert the symbol after commands like \gls but only on first use +% (and only for the "unit" category): + +\newcommand*{\glsxtrpostlinkunit}{% + \ifdefempty\glscustomtext{\glsxtrpostlinkAddSymbolOnFirstUse}{}} +% The above "post-link" hook occurs after the link-text produced by +% \gls so it's place outside the \unitfont argument. + +% Mathematic constants need the "sort" key set because the "name" +% field contains commands: +\newglossaryentry{pi}{name={\ensuremath{\pi}}, +sort=pi, +category=constant, +user1=pi, +description={ratio of a circle's circumference to its diameter}} + +% Insert the description and "user1" text after commands like \gls but only on first use +% (and only for the "constant" category): + +\newcommand*{\glsxtrpostlinkconstant}{% + \ifdefempty\glscustomtext + {\glsxtrifwasfirstuse{ (\glsentryuseri{\glslabel}, + \glsentrydesc{\glslabel})}{}}% + {}} + +% Insert the "user1" text after the description in the glossary +% but only for the "constant" category: +\newcommand*{\glsxtrpostdescconstant}{\space + (\glsentryuseri{\glscurrententrylabel})} + +% \newacronym sets the category to "acronym" by default. The +% "short-em" style makes it a regular entry. +\setabbreviationstyle[acronym]{short-em} + +\newacronym{laser}{laser}{light amplification by +stimulated emission of radiation} + +\newacronym{scuba}{scuba}{self-contained underwater breathing +apparatus} + +% \newabbreviation sets the category to "abbreviation" by default. +% The "long-short-sc" style sets the regular attribute to false. +\setabbreviationstyle{long-short-sc} + +\newabbreviation{html}{html}{hypertext markup language} + +\newabbreviation{svg}{svg}{scalable vector graphics} + +% The optional argument can be used to set a different category: +\setabbreviationstyle[bacteria]{long-em-short-em} +%\setabbreviationstyle[bacteria]{short-em} + +% An alternative approach that uses \bacteriafont in the document +% and in the glossary is to provide a custom style: +%\newabbreviationstyle{bacteria}% +%{% +% \GlsXtrUseAbbrStyleSetup{long-short}% +%}% +%{% +% \GlsXtrUseAbbrStyleFmts{long-short}% +% \renewcommand*{\glsabbrvfont}[1]{\bacteriafont{##1}}% +% \renewcommand*{\glsfirstlongfont}[1]{\bacteriafont{##1}}% +% \renewcommand*{\glslongfont}[1]{\bacteriafont{##1}}% +%} +% (the definition of \bacteriafont would need to be adjusted to +% include \emph) +%\setabbreviationstyle[bacteria]{bacteria} + +\newabbreviation[category=bacteria]% + {cbot}% label + {C.~botulinum}% short + {Clostridium botulinum}% long + +\newabbreviation[category=bacteria]% + {putida}% label + {P.~putida}% short + {Pseudomonas putida}% long + +% Abbreviations that have translations. These put the translated +% text in the "user1" field. The "-user" abbreviation styles +% insert this field (if present) into the parenthetical material +% when used with \gls. + +\setabbreviationstyle[foreign]{short-long-user} + +% The fonts used by this style can be adjusted: +\renewcommand*{\glsabbrvuserfont}[1]{\textsf{\color{red}#1}}% short-form font +\renewcommand*{\glslonguserfont}[1]{\textsf{#1}}% long-form font + +\newabbreviation[category=foreign,user1={French \TeX\ user group}] + {gutenberg}{GUTenburg}{Groupe francophone des utilisateurs de \TeX} + +% Insert the translation (user1) text after the description +% in the glossary but only for the "foreign" category: +\newcommand*{\glsxtrpostdescforeign}{\space + (Translation: \glsentryuseri{\glscurrententrylabel})} + +% Now we have an awkward one that ends with a period: +\setabbreviationstyle[foreignenddot]{short-long-user} + +% Need to discard the end of sentence period for the +% entries in this category. + +\glssetcategoryattribute{foreignenddot}{discardperiod}{true} + +% But not on first use (the user1 text doesn't end with a +% period): +\glssetcategoryattribute{foreignenddot}{retainfirstuseperiod}{true} + +\newabbreviation + [user1={German Speaking \TeX\ User Group},category=foreignenddot] + {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ e.V.} + +% Insert the translation (user1) text after the description +% in the glossary but only for the "foreignenddot" category: +\newcommand*{\glsxtrpostdescforeignenddot}{\space + (Translation: \glsentryuseri{\glscurrententrylabel})} + +% Insert page/pages tag before location list: +\GlsXtrEnablePreLocationTag{Page: }{Pages: } + +\begin{document} +\tableofcontents + +\chapter{Samples in the Main Document Text} + +\section{All Entries} + +First use (\verb|\gls|): \forglsentries{\thislabel}{\gls{\thislabel}. } + +Next use (\verb|\gls|): \forglsentries{\thislabel}{\gls{\thislabel}. } + +Using \verb|\glsfirst|: \forglsentries{\thislabel}{\glsfirst{\thislabel}. } + +Using \verb|\glstext|: \forglsentries{\thislabel}{\glstext{\thislabel}. } + +\section{Abbreviations only} +Abbreviations that have the \verb|regular| attribute set are +hybrids and can have odd results. In this example, the hybrid +entries are: +\forglsentries{\thislabel}{% + \ifglshasshort{\thislabel}% + {% is an abbreviation + \glsifregular{\thislabel}% + {% is regular + \texttt{\thislabel}. + }% + {}% + } + {}% +} + +Using \verb|\glsxtrfull|: +\forglsentries{\thislabel}{% + \ifglshasshort{\thislabel}{\glsxtrfull{\thislabel}. }{}} + +Using \verb|\glsxtrshort|: +\forglsentries{\thislabel}{% + \ifglshasshort{\thislabel}{\glsxtrshort{\thislabel}. }{}} + +Using \verb|\glsxtrlong|: +\forglsentries{\thislabel}{% + \ifglshaslong{\thislabel}{\glsxtrlong{\thislabel}. }{}} + +\section{Symbols} + +Using \verb|\glssymbol|: +\forglsentries{\thislabel}{% + \ifglshassymbol{\thislabel}{\glssymbol{\thislabel}. }{}} + +\section{User Field} + +Using \verb|\glsuseri|: +\forglsentries{\thislabel}{% + \ifglshasfield{useri}{\thislabel}{\glsuseri{\thislabel}[.] }{}} + +(The full stop in the above is placed inside square brackets +to prevent the \verb|discardperiod| attribute from discarding it +since the \verb|useri| field doesn't end with a dot.) + +\chapter{Math Mode} +Inline: $\gls{pi} = \frac{C}{d}$, display: + +\[ + \gls{pi} = \frac{C}{d} +\] + +\chapter{Samples in Headings} + +Don't use commands like \verb|\gls| in section headings, but you can +use commands like \verb|\glsfmttext| or \verb|\glsfmtshort|. + +\forglsentries{\thislabel}{% + \ifglshasshort{\thislabel}% + {\section{\glsfmtshort{\thislabel}}}% + {% +% the constant entry "pi" can't be used in the PDF bookmarks, +% so use the user1 text for the bookmark + \glsifcategory{\thislabel}{constant} + {% + \section{\texorpdfstring{\glsfmttext{\thislabel}}{\glsentryuseri{\thislabel}}}% + }% + {% + \section{\glsfmttext{\thislabel}}% + }% + }% + \Glsdesc[noindex]{\thislabel}. +} + + +\renewcommand{\glossarypreamble}{\emph{This glossary uses the style +`\csuse{@glossary@default@style}' with modifications made +through categories and their attributes.}\par\medskip} +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf Binary files differnew file mode 100644 index 0000000000..da7a9f2d44 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex b/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex new file mode 100644 index 0000000000..a7c32a6908 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex @@ -0,0 +1,46 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle{long-short-sc} + +\newabbreviation{ssi}{ssi}{server side includes} +\newabbreviation{html}{html}{hypertext markup language} + +%DON'T use this with upper casing commands! +\newabbreviation{shtml}{shtml}{\gls{ssi} enabled \gls{html}} + +% Alternatively +%\newabbreviation{shtml}{shtml}{\glsxtrshort{ssi} enabled \glsxtrshort{html}} + +% Or +%\newabbreviation{shtml}{shtml}{\glsps{ssi} enabled \glsps{html}} +% (optional) enable indexing when \glsps occurs in glossary: +%\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}} + +\begin{document} + +This is a sample document testing nested link text. +The \texttt{glossaries-extra} package temporarily modifies +commands like \verb|\gls| or \verb|\glsxtrshort| that occur +in fields, when any of those field is accessed through linking +commands. + +First use: \gls{shtml}. + +\newpage + +Next use: \gls{shtml}. + +\newpage + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf Binary files differnew file mode 100644 index 0000000000..d2a571a233 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex new file mode 100644 index 0000000000..da909b222f --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex @@ -0,0 +1,33 @@ +% arara: pdflatex +% arara: pdflatex +\documentclass{article} + +\usepackage[ + docdef=restricted, + undefaction=warn + ]{glossaries-extra} + +\makenoidxglossaries + +\begin{document} +\newglossaryentry{sample}{name={sample},description={an example}} + +\gls{sample}. + +\verb|\printnoidxglossaries| follows: +\printnoidxglossaries + +Too late to define an entry with the \texttt{docdef=restricted} +setting. (Definitions must come before \verb|\printglossary|.) + +\newglossaryentry{sample2}{name={sample2},description={another +example}} + +New entry just defined: \gls{sample2}. +This will cause an error (or warning with \texttt{undefaction=warn}) +in \verb|\printnoidxglossaries|. +This missing entry will cause a missing entry marker ?? +at the start of the glossary (before the header). + + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf Binary files differnew file mode 100644 index 0000000000..80898cefa1 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex new file mode 100644 index 0000000000..1d9a71876c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex @@ -0,0 +1,49 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{lipsum} +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableEntryUnitCounting{general}{0}{page} + +\newglossaryentry{sample}{name={sample},description={an example}} +\newglossaryentry{sample2}{name={another sample},description={another example}} + +\renewcommand*{\glslinkcheckfirsthyperhook}{% + \ifnum\glsentrycurrcount\glslabel>0 + \setkeys{glslink}{hyper=false}% + \fi +} + +\begin{document} + +A \gls{sample} entry. \Gls{sample2}. +Next use: \gls{sample}, \gls{sample2}. + +\lipsum[1] + +\Gls{sample} and more \glspl{sample}. +\Gls{sample2} and \gls{sample2}. + +\newpage + +Next page: \gls{sample} and \gls{sample2}. + +Again: \gls{sample} and \gls{sample2}. + +\lipsum[2-5] + +Now for a \gls{sample} paragraph that spans the page break. +\lipsum*[6-7] The entry in the final sentence in this \gls{sample} paragraph +is incrementing and testing the count from the previous page. + +Another \gls{sample} paragraph. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf Binary files differnew file mode 100644 index 0000000000..1daeb9987c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex new file mode 100644 index 0000000000..51b91b2530 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex @@ -0,0 +1,60 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[xindy]{glossaries-extra} + +\makeglossaries + +% The starred version will attempt to allow UTF8 characters +% in the label, but this may fail! +\GlsXtrEnableOnTheFly* + +\begin{document} +This is a \glsxtr{sample} document illustrating on-the-fly +simultaneous \glsxtr{definition} and \glsxtr{usage} +for \glsxtr[format=textbf][plural=glossaries]{glossary} +\glsxtrpl[][plural=entries]{entry}. This has +drawbacks and it's really much better to define entries in the +\glsxtr{preamble}, but you may find it useful for simple +indexing. + +\newpage + +\Glsxtr{preamble} \glsxtrpl{definition} are much better, +but here is a \glsxtr{sample} of what you can do. + +\newpage +The \glsxtrpl{glossary} must come at the end of the document +with this usage. + +\newpage +Commands can't occur in the label. The ``name'' key has to be +used instead, but the starred version of +\verb|\GlsXtrEnableOnTheFly| attempts to allow non-ASCII +characters in the label, but this may break some commands, +so take care! + +The \glsxtr{naïve} +\glsxtr[][plural={phœnixes}]{phœnix} sent +off its \glsxtr{résumé} covered in +\glsxtr{pâté} from the \glsxtr{soirée}. + +Terms that contain commands must have the ``name'' set and the +command removed from the label +\glsxtr[][name={\emph{e.g.}}]{eg} like this, but +really it's much better to define the entry in the preamble +and use the standard \verb|\gls| instead. + +\newpage +The previous page presupposes the existence of +\glsxtrpl{phœnix}. + +\newpage + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf Binary files differnew file mode 100644 index 0000000000..98df08cb26 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex new file mode 100644 index 0000000000..2ca31d1354 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex @@ -0,0 +1,55 @@ +% arara: xelatex +% arara: makeglossaries +% arara: xelatex +\documentclass{article} + +\usepackage{fontspec} +\usepackage[xindy]{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableOnTheFly + +\begin{document} +This is a \glsxtr{sample} document illustrating on-the-fly +simultaneous \glsxtr{definition} and \glsxtr{usage} +for \glsxtr[format=textbf][plural=glossaries]{glossary} +\glsxtrpl[][plural=entries]{entry}. This has +drawbacks and it's really much better to define entries in the +\glsxtr{preamble}, but you may find it useful for simple +indexing. + +\newpage + +\Glsxtr{preamble} \glsxtrpl{definition} are much better, +but here is a \glsxtr{sample} of what you can do. + +\newpage +The \glsxtrpl{glossary} must come at the end of the document +with this usage. + +\newpage +Commands can't occur in the label. The ``name'' key has to be +used instead, but XeTeX makes life a bit easier for non-ASCII +characters. + +The \glsxtr{naïve} +\glsxtr[][plural={phœnixes}]{phœnix} sent +off its \glsxtr{résumé} covered in +\glsxtr{pâté} from the \glsxtr{soirée}. + +Terms that contain commands must have the ``name'' set and the +command removed from the label +\glsxtr[][name={\emph{e.g.}}]{eg} like this, but +really it's much better to define the entry in the preamble +and use the standard \verb|\gls| instead. + +\newpage +The previous page presupposes the existence of +\glsxtrpl{phœnix}. + +\newpage + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf Binary files differnew file mode 100644 index 0000000000..1d60fe8175 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex new file mode 100644 index 0000000000..8431c6abe2 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex @@ -0,0 +1,50 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\GlsXtrEnableOnTheFly + +\begin{document} +This is a \glsxtr{sample} document illustrating on-the-fly +simultaneous \glsxtr{definition} and \glsxtr{usage} +for \glsxtr[format=textbf][plural=glossaries]{glossary} +\glsxtrpl[][plural=entries]{entry}. This has +drawbacks and it's really much better to define entries in the +\glsxtr{preamble}, but you may find it useful for simple +indexing. + +\newpage + +\Glsxtr{preamble} \glsxtrpl{definition} are much better, +but here is a \glsxtr{sample} of what you can do. + +\newpage +The \glsxtrpl{glossary} must come at the end of the document +with this usage. + +\newpage +Commands can't occur in the label. The ``name'' key has to be +used instead. Isn't this fiddly and not really worth the +effort. May as well just define all the \glspl{entry} in the +\glsxtr{preamble} instead. + +The \glsxtr[][name={na\"{\i}ve}]{naive} +\glsxtr[][plural={ph\oe nixes},name={ph\oe nix}]{phoenix} sent +off its \glsxtr[][name={r\'esum\'e}]{resume} covered in +\glsxtr[][name={p\^at\'e}]{pate} from +the \glsxtr[][name={soir\'ee}]{soiree}. + +\newpage +The previous page presupposes the existence of +\glsxtrpl{phoenix}. + +\newpage + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf Binary files differnew file mode 100644 index 0000000000..97cb891003 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex b/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex new file mode 100644 index 0000000000..bb1722f9d7 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex @@ -0,0 +1,34 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{report} + +\usepackage[nopostdot=false]{glossaries-extra} + +\makeglossaries + +\GlsXtrEnablePreLocationTag{Page: }{Pages: } + +\newglossaryentry{sample1}{name={sample1},description={an example}} +\newglossaryentry{sample2}{name={sample2},description={another example}} +\newglossaryentry{sample3}{name={sample3},description={a third example}} + +\newglossaryentry{sample4}{name={sample4},description={a fourth example}} +\glsadd[format=glsignore]{sample4} + +\begin{document} +\chapter{First} + +Two entries: \gls{sample1}, \gls{sample2}. + +\chapter{Second} + +One entry: \gls{sample1}. + +\chapter{Third} + +All entries: \gls{sample1}, \gls{sample2}, \gls{sample3}. + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf Binary files differnew file mode 100644 index 0000000000..5193bfe0bd --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex new file mode 100644 index 0000000000..c54e3dcede --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex @@ -0,0 +1,47 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +% Sample entry in the "general" category: + +\newglossaryentry{sample}{name={sample},description={an example}} + +\setabbreviationstyle[initialism]{short} + +% Set the attribute "insertdots" set to "true" to automatically +% insert periods between the letters in initialism: +\glssetcategoryattribute{initialism}{insertdots}{true} + +% This can cause a problem if any of the initialisms occur at the +% end of a sentence so set the attribute "discardperiod" set to "true": +\glssetcategoryattribute{initialism}{discardperiod}{true} + +\newabbreviation + [category=initialism,description={for example}] + {eg}{eg}{exempli gratia} + +% Now for an abbreviation without dots. This is strictly speaking +% also an initialism, but it's going to be assigned the standard +% "abbreviation" category: +\newabbreviation{html}{HTML}{hypertext markup language} +% (This will use the style currently set for the "abbreviation" +% category, which is the short-long style by default.) + +\begin{document} + +Entry occurs at the end of a sentence: \gls{eg}. +Entry occurs at the end of a sentence: \gls{sample}. +Entry occurs at the end of a sentence: \gls{html}. + +Entry \gls{eg} occurs in the middle of a sentence. +Entry \gls{sample} occurs in the middle of a sentence. +Entry \gls{html} occurs in the middle of a sentence. + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf Binary files differnew file mode 100644 index 0000000000..7e7448c361 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex new file mode 100644 index 0000000000..5993302b7c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex @@ -0,0 +1,76 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage[style=tree]{glossaries-extra} + +\makeglossaries + +% Append the description in parentheses on first use +% for entries with the "describe" category: + +\glssetregularcategory{describe} + +\newcommand*{\glsxtrpostlinkdescribe}{% + \glsxtrpostlinkAddDescOnFirstUse +} + +\newglossaryentry{sample1}{name={sample1}, + category=describe, + description={the first sample entry}} + +% Append the symbol in parentheses on first use for +% entries with the "symbol" category: + +\glssetregularcategory{symbol} + +\newcommand*{\glsxtrpostlinksymbol}{% + \glsxtrifwasfirstuse + {% + \space (denoted: \glsentrysymbol{\glslabel})% + }% + {}% +} + +\newglossaryentry{sample2}{name={sample2}, + symbol={\ensuremath{\mathcal{S}_2}}, + category=symbol, + description={the second sample entry}} + +% Append the description as a footnote for general entries +% on first use: + +%\newcommand*{\glsxtrpostlinkgeneral}{% +% \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}% +%} + +% or (defer footnote mark until after any following punctuation): + +\newcommand*{\glsxtrpostlinkgeneral}{% + \glsxtrifwasfirstuse + {\glsxtrdopostpunc{\footnote{\glsentrydesc{\glslabel}}}}% + {}% +} + +% Disable hyperlink of first use for those entries in the "general" +% category: + +\glssetcategoryattribute{general}{nohyperfirst}{true} + +\newglossaryentry{sample3}{name={sample3}, + description={the third sample entry}} + +\begin{document} + +First use: \gls{sample1}, \gls{sample2} and \gls{sample3}. + +Next use: \gls{sample1}, \gls{sample2} and \gls{sample3}. + +Value of first field (post-link hook is still used): \glsfirst{sample1}, \glsfirst{sample2} +and \glsfirst{sample3}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf Binary files differnew file mode 100644 index 0000000000..196eeb389b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex new file mode 100644 index 0000000000..7fa2f325fb --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex @@ -0,0 +1,24 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{glossaries-extra} +\usepackage{glossaries-prefix} + +\makeglossaries + +\newabbreviation + [prefix={an\space}, + prefixfirst={a~}] + {svm}{SVM}{support vector machine} + +\begin{document} + +This is a sample document to test prefixes. +First use: \pgls{svm}. +Next use: \pgls{svm}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf Binary files differnew file mode 100644 index 0000000000..23daf02f3c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex new file mode 100644 index 0000000000..94bce09132 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex @@ -0,0 +1,74 @@ +% arara: pdflatex +% arara: bib2gls +% arara: pdflatex +\documentclass{article} + +\usepackage{amsmath} +\usepackage[colorlinks]{hyperref} +\usepackage[record=nameref,% use bib2gls with nameref information (requires bib2gls v1.8+) + equations,% switch to equation counter in numbered equations + floats,% switch to corresponding counter when in a float + counter=section,% use section as the default record counter + stylemods,% load glossaries-extra-stylemods.sty + style=index]{glossaries-extra} + +\GlsXtrLoadResources[ + % entries defined in example-glossaries-brief.bib and + % example-glossaries-symbols: + src={example-glossaries-brief,example-glossaries-symbols}, + sort={en-GB},% sort according to en-GB locale + %selection=all,% select all entries provided in the .bib file + loc-suffix% add default suffix (full stop) for location list + ] + +\begin{document} + +\Gls[counter=page]{dolor}. + +\section{Sample Section} + +\gls{dolor}, \gls{amet}. + +See \url{https://ctan.org/pkg/bib2gls} for converting +\texttt{.bib} to \texttt{.glstex} files. + +\section{Another Section} + +\glspl{lorem}, \gls{amet}. + +`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}. + +\begin{figure}[hb] +\centering +X +\caption{Sample Figure \glsfmttext{lorem}} +\end{figure} + +\gls{lorem} again. + +\section{Yet Another Section} + +\Gls{lorem}, \gls{amet}, \gls{alpha}. + +\begin{equation} +\glssymbol{alpha} = 2\glssymbol[counter=page]{beta} +\end{equation} + +\gls{beta}. + +\begin{align} +\glssymbol{alpha} &= 2\glssymbol{beta}\\ +\glssymbol{gamma} &= \glssymbol{beta}[^2] = \frac{1}{4}\glssymbol{alpha}[^2] +\end{align} + +\newpage + +\Gls{lorem} and \gls[counter=page]{dolor}. + +\section{Section about \glsfmttext{lorem}} + +\Gls{lorem}. + +\printunsrtglossary + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf Binary files differnew file mode 100644 index 0000000000..338bc55bb1 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record.tex b/macros/latex/contrib/glossaries-extra/samples/sample-record.tex new file mode 100644 index 0000000000..95f7bf9811 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-record.tex @@ -0,0 +1,51 @@ +% arara: pdflatex +% arara: bib2gls +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage[record,% use bib2gls + stylemods,% load glossaries-extra-stylemods.sty + style=index]{glossaries-extra} + +\GlsXtrRecordCounter{section} + +% suppress the space that normally occurs before the locations: +\renewcommand{\glsxtrprelocation}{} + +\GlsXtrLoadResources[ + src={example-glossaries-brief},% entries defined in example-glossaries-brief.bib + sort={en-GB},% sort according to en-GB locale + %selection=all,% select all entries provided in the .bib file + loc-prefix={{, page},{, pages}},% prefix for location list + loc-suffix% suffix for location list + ] + +\begin{document} + +\section{Sample Section} +\printunsrtglossaryunit[nonumberlist]{section} +% or: +%\printunsrtglossary*{\printunsrtglossaryunitsetup{section}% +% \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}% +%} + +\gls{dolor}, \gls{amet}. + +Check first use flag for `amet': \ifglsused{amet}{used}{not used}. +Check first use flag for `lorem': \ifglsused{lorem}{used}{not used}. +`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}. + +See \url{https://ctan.org/pkg/bib2gls} for converting +\texttt{.bib} to \texttt{.glstex} files. + +\section{Another Section} +\printunsrtglossaryunit[nonumberlist]{section} + +\glspl{lorem}, \gls{amet}. + +`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}. + +\printunsrtglossary + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf Binary files differnew file mode 100644 index 0000000000..0662789138 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex new file mode 100644 index 0000000000..b0ca68763b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex @@ -0,0 +1,33 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[docdef=restricted, + undefaction=warn + ]{glossaries-extra} + +\makeglossaries + +\begin{document} + +\newglossaryentry{sample}{name={sample},description={an example}} + +\gls{sample}. + +\printglossaries + +Too late to define an entry with the \texttt{docdef=restricted} +setting. (Definitions must come before \verb|\printglossary|.) + +\newglossaryentry{sample2}{name={sample2},description={another +example}} + +New entry just defined: \gls{sample2}. +This will cause an error (or warning with \texttt{undefaction=warn}) +in \verb|\printglossaries|. +This missing entry will be marked with two question marks ?? +in the glossary. + + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf Binary files differnew file mode 100644 index 0000000000..67862dfd86 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex new file mode 100644 index 0000000000..bb72a7ce1c --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex @@ -0,0 +1,29 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage + %[debug=showtargets]% requires glossaries.sty v4.32 + {glossaries-extra} + +%\renewcommand*{\glsshowtarget}[1]{\texttt{\small [#1]}} + +\makeglossaries + +\newglossaryentry{sample}{name={sample},description={an example}} + +\renewcommand{\thesection}{S.\arabic{section}} +\renewcommand{\theHsection}{\thepart.\thesection} + +\begin{document} +\part{Sample Part} +\section{Sample Section} + +\part{Another Part} +\section{Another Section} +\gls[counter=section]{sample}. + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf Binary files differnew file mode 100644 index 0000000000..fd234df18b --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex new file mode 100644 index 0000000000..e2de8bfbef --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex @@ -0,0 +1,30 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\makeglossaries + +\glssetcategoryattribute{supplementary}{externallocation}{sample-suppl-hyp.pdf} + +\newglossaryentry{sample}{category={supplementary}, + name={sample},description={an example}} + +\begin{document} +\section{Sample} +Some \gls{sample} text. + +Test link: \hyperref{sample-suppl-hyp.pdf}{}{section.II.S.2}{S.2}. + +In this document, \verb|\theHsection| is in the form: \theHsection. + +In the other document, it's in the form II.S.2 so +\texttt{theHvalue} is needed to ensure the hyperlink is correct. + +\printglossaries +\glsadd[format=glsxtrsupphypernumber,thevalue={S.2},theHvalue={II.S.2},counter=section]{sample} +\end{document} + diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf Binary files differnew file mode 100644 index 0000000000..5ca8b571c0 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex new file mode 100644 index 0000000000..2945b55f81 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex @@ -0,0 +1,18 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage{glossaries-extra} + +\makeglossaries + +\newglossaryentry{sample}{name={sample},description={an example}} + +\begin{document} +Some \gls{sample} text. + +\printglossaries +\glsadd[thevalue={S.2}]{sample} +\end{document} + diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf Binary files differnew file mode 100644 index 0000000000..a78c307b62 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex new file mode 100644 index 0000000000..6b295688fc --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex @@ -0,0 +1,14 @@ +% arara: pdflatex +\documentclass{article} + +\usepackage{glossaries-extra} + +\newglossaryentry{sample}{name={sample},description={an example}} + +\renewcommand{\thepage}{S.\arabic{page}} + +\begin{document} +First page. +\newpage +\gls{sample}. +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf Binary files differnew file mode 100644 index 0000000000..c7a5afbce6 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex b/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex new file mode 100644 index 0000000000..041dc24e48 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex @@ -0,0 +1,54 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{article} + +\usepackage[T1]{fontenc} +\usepackage[colorlinks]{hyperref} +\usepackage[nogroupskip]{glossaries-extra} + +\makeglossaries + +\setabbreviationstyle[acronym]{long-short-user} + +% Translations are stored in the user1 key in the sample file +% (loaded below). +% This is the default for the long-short-user style so +% \glsxtruserfield doesn't need changing, but let's illustrate +% changing the font style for the short form: + +\renewcommand{\glsabbrvuserfont}[1]{\textsc{\MakeLowercase{#1}}} +\renewcommand*{\glsxtrusersuffix}{\glsxtrscsuffix} + +\loadglsentries{example-glossaries-acronyms-lang} + +% The entries in the above file are all defined using +% \newacronym, which automatically sets the category +% to "acronym" (which is why the abbreviation style needs +% to use "acronym" in the optional argument). The glossary +% can be adapted by using the post-description hook for this +% category. + +% \glscurrentfieldvalue only works with glossaries v4.23 (and above) +\renewcommand{\glsxtrpostdescacronym}{% + \ifglshasfield{\glsxtruserfield}{\glscurrententrylabel}% + { (English: \glscurrentfieldvalue)}% + {}% +} + +\begin{document} + +\section{Sample} + +First use: + +\forglsentries{\thislabel}{\gls{\thislabel}. } + +Next use: + +\forglsentries{\thislabel}{\gls{\thislabel}. } + +\printglossaries + +\end{document} + diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf Binary files differnew file mode 100644 index 0000000000..f5ce99c373 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex b/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex new file mode 100644 index 0000000000..194f4a4bc8 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex @@ -0,0 +1,21 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage[undefaction=warn]{glossaries-extra} + +\makeglossaries + +\newglossaryentry{sample}{name=sample,description={an example}} + +\begin{document} + +Defined entry: \gls{sample}, \glslink{sample}{text}. + +Undefined entry: \gls{undefined}, \glslink{undefined}{text}. + +\printglossaries +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf Binary files differnew file mode 100644 index 0000000000..4c397377f0 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex new file mode 100644 index 0000000000..7979120c45 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex @@ -0,0 +1,90 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +\documentclass{report} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} + +\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter} + +\makeglossaries + +\newabbreviation{html}{HTML}{hypertext markup language} +\newabbreviation{xml}{XML}{extensible markup language} +\newabbreviation{css}{CSS}{cascading style sheet} + +\newglossaryentry{sample}{name={sample},description={sample}} + +\newcommand*{\lastruncount}[1]{% +Overall number of times the \texttt{#1} entry is used in +this chapter: \glsentryprevcount{#1}. (Information obtained +from previous run.)% +} + +\newcommand*{\currentruncount}[1]{% +Number of times the \texttt{#1} entry has been used this +chapter so far: \glsentrycurrcount{#1}.% +} + +\newcommand*{\triggertest}[1]{% +Normal usage of \texttt{\char`\\gls} \glsxtrifcounttrigger{#1}{has}{hasn't} been +suppressed for the \texttt{#1} entry in this chapter.% +} + +\begin{document} + +This is a sample document that uses entry counting per unit. The unit entry counting +has been enabled on the \texttt{abbreviation} category. +The unit has been set to +``\glsgetcategoryattribute{abbreviation}{unitcount}''. +This means that abbreviations will only be added to the glossary if +they are used more than $n$ times per +\glsgetcategoryattribute{abbreviation}{unitcount}, +where in this document $n$ has been set to +\glsgetcategoryattribute{abbreviation}{entrycount}. +Entries in other categories behave as normal. + +\chapter{Sample} + +\lastruncount{xml} + +Used once: \gls{html}. + +Used twice: \gls{xml} and \gls{xml}. + +Used three times: \gls{css} and \gls{css} and \gls{css}. + +Used once but this entry is in the ``general'' category +which doesn't have the entry unit counting set: +\gls{sample}. + +\currentruncount{xml} + +\triggertest{xml} + +\currentruncount{css} + +\triggertest{css} + +\chapter{Another Sample} + +Used once in this chapter: \gls{xml}. + +Used twice in this chapter: \gls{css} and \gls{css}. + +\currentruncount{css} + +\triggertest{css} + +Total number of times the \texttt{css} entry was used +throughout the document on the previous run: +\glsentryprevtotalcount{css}. + +Total number of times the \texttt{xml} entry was used +throughout the document on the previous run: +\glsentryprevtotalcount{xml}. + +\printglossaries + +\end{document} diff --git a/macros/latex/contrib/glossaries-extra/samples/sample.pdf b/macros/latex/contrib/glossaries-extra/samples/sample.pdf Binary files differnew file mode 100644 index 0000000000..c5fb78f8f9 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample.pdf diff --git a/macros/latex/contrib/glossaries-extra/samples/sample.tex b/macros/latex/contrib/glossaries-extra/samples/sample.tex new file mode 100644 index 0000000000..42e2f4d677 --- /dev/null +++ b/macros/latex/contrib/glossaries-extra/samples/sample.tex @@ -0,0 +1,26 @@ +% arara: pdflatex +% arara: makeglossaries +% arara: pdflatex +% arara: pdflatex +\documentclass{article} + +\usepackage[colorlinks]{hyperref} +\usepackage{glossaries-extra} +\usepackage{glossary-mcols} +\setglossarystyle{mcolindex} + +\makeglossaries + +\loadglsentries{example-glossaries-brief} + +\begin{document} + +\tableofcontents + +\section{Sample} + +Entries: \forglsentries{\thislabel}{\gls{\thislabel}. } + +\printglossaries + +\end{document} |