diff options
author | Norbert Preining <norbert@preining.info> | 2022-10-20 03:04:26 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-10-20 03:04:26 +0000 |
commit | 3b961a61ef9fb89adf20a89550d5de0bfe135448 (patch) | |
tree | e36f997e624c704dbb4ed2b5fdbd02835ea3c133 /macros/latex/contrib/glossaries-extra/glossaries-extra.dtx | |
parent | 7b6cdf4c23e6ed232601dabc70f5553a8dee9c9b (diff) |
CTAN sync 202210200304
Diffstat (limited to 'macros/latex/contrib/glossaries-extra/glossaries-extra.dtx')
-rw-r--r-- | macros/latex/contrib/glossaries-extra/glossaries-extra.dtx | 48545 |
1 files changed, 40944 insertions, 7601 deletions
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx index 530455599f..ff8449fc09 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx @@ -1,25 +1,28 @@ %\iffalse % glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: -% -comment ".*\.tex" -% -comment ".*\.bib" +% -doc "glossaries-extra-codedoc.tex" % -setambles ".*\.bib=>\nopreamble\nopostamble" -% -author "Nicola Talbot" % -macrocode ".*\.tex" % -macrocode ".*\.bib" -% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" -% -doc "glossaries-extra-codedoc.tex" +% -comment ".*\.tex" +% -comment ".*\.bib" +% -codetitle "Main Package Code (glossaries-extra.sty)" +% -section "section" +% -author "Nicola Talbot" % -src "glossaries-extra.sty\Z=>glossaries-extra.sty" +% -src "(.+)\.def\Z=>\1.def" % -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 "glossary-table.sty\Z=>glossary-table.sty" % -src "(example-glossaries-.+\.tex)\Z=>\1" % -src "(example-glossaries-.+\.bib)\Z=>\1" -% -section "chapter" +% -src "(glossar.+-2021-11-22.sty)\Z=>\1" % glossaries-extra -% Created on 2021/11/22 21:22 +% Created on 2022/10/19 17:47 %\fi %\iffalse %<*package> @@ -42,198 +45,118 @@ %\fi % \iffalse % Doc-Source file to use with LaTeX2e -% Copyright (C) 2021 Nicola Talbot, all rights reserved. +% Copyright (C) 2022 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} +\documentclass{article} +\usepackage{doc} -\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} +\CheckSum{69102} +\RecordChanges +\PageIndex +\SetupDoc{reportchangedates} \setcounter{IndexColumns}{2} -\CheckSum{30886} - -\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}}} -\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}} -\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters}} - -\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}} -\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}} - -\newcommand*{\stylefmt}[1]{\textsf{#1}} +\usepackage[T1]{fontenc} +\usepackage{etoolbox} +\usepackage{tcolorbox} +\usepackage[colorlinks]{hyperref} -\newcommand*{\glostyle}[1]{\stylefmt{#1}% - \index{glossary styles:>#1=\protect\stylefmt{#1}|main}} +\definecolor{defbackground}{rgb}{1,1,0.75} -\newcommand*{\acrstyle}[1]{\stylefmt{#1}% - \index{acronym styles (glossaries):>#1=\protect\stylefmt{#1}|main}} +\newtcolorbox{definition}{halign=flush left, + colframe=black,colback=defbackground, + fontupper=\ttfamily, + before upper={\frenchspacing\obeylines}, + after={\par\noindent\ignorespacesafterend} +} -\newcommand*{\abbrstyle}[1]{\stylefmt{#1}% - \index{abbreviation styles:>#1=\protect\stylefmt{#1}|main}} +\NewDocElement{Option}{option} +\NewDocElement{AbbrvStyle}{abbrvstyle} +\NewDocElement{Style}{style} -\newcommand*{\category}[1]{\textsf{#1}\index{entry categories:>#1={\protect\sffamily#1}|main}} +\pdfstringdefDisableCommands{% + \let\sty\@firstofone + \let\app\@firstofone + \let\ctr\@firstofone + \let\category\@firstofone + \let\catattr\@firstofone + \let\glostyle\@firstofone + \let\abbrstyle\@firstofone + \let\pkgoptfmt\@firstofone + \renewcommand{\marg}[1]{\string<#1\string>}% + \renewcommand{\oarg}[1]{\string[#1\string]}% +} -\newcommand*{\catattr}[1]{\textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}} +\newcommand{\sty}[1]{\textsf{#1}} +\newcommand{\app}[1]{\texttt{#1}} +\newcommand{\ctr}[1]{\textsf{#1}} +\newcommand{\env}[1]{\textsf{#1}} +\newcommand{\category}[1]{\textsf{#1}} +\newcommand{\catattr}[1]{\textsf{#1}} +\newcommand{\glostyle}[1]{\textsf{#1}} +\newcommand{\abbrstyle}[1]{\textsf{#1}} +\newcommand{\pkgoptfmt}[1]{\textsf{#1}} +\newcommand{\pkgopt}[2][]{\pkgoptfmt{#2\ifstrempty{#1}{}{=#1}}} +\newcommand{\gloskey}[2][]{\textsf{#2}} +\newcommand{\qt}[1]{``#1''} +\newcommand{\sectionref}[1]{\S\ref{#1}} +\newcommand{\dequals}{=} -\GlossaryPrologue{% - \chapter*{{Change History}}% - \markboth{{Change History}}{{Change History}}% - \phantomsection - \addcontentsline{toc}{chapter}{Change History}% - \raggedright -} +\providecommand\marg[1]{% + \allowbreak{\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} +\providecommand\oarg[1]{% + \allowbreak{\ttfamily[}\meta{#1}{\ttfamily]}} -\title{glossaries-extra.sty v1.48: +\title{glossaries-extra.sty v1.49: documented code} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} -\date{2021-11-22} +\date{2022-10-14} \begin{document} \DocInput{glossaries-extra.dtx} \end{document} %</driver> %\fi -%\MakeShortVerb{"} -%\DeleteShortVerb{\|} +%\maketitle % -% \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} +%See \texttt{glossaries-extra-manual.pdf} for the user manual. % %\tableofcontents % -%\StopEventually{% -% \printglossaries -% \PrintChanges -% \PrintIndex -%} -% +%\StopEventually{\PrintChanges \PrintIndex} % % -%\chapter{Main Package Code (\styfmt{glossaries-extra.sty})} +%\section{Main Package Code (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} +%\subsection{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossaries-extra}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} % Requires \sty{xkeyval} to define package options. % \begin{macrocode} @@ -243,21 +166,21 @@ Dickimaw Books\\ % \begin{macrocode} \RequirePackage{etoolbox} % \end{macrocode} -% Has \styfmt{glossaries} already been loaded? +% Has \sty{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. +% \sty{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}. +% Not already loaded, so pass options to \sty{glossaries}. % \begin{macrocode} \newcommand{\glsxtr@dooption}[1]{% \PassOptionsToPackage{#1}{glossaries}% @@ -293,7 +216,7 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} %\begin{macro}{\glsxtr@warnonexistsordo} -% If user wants \pkgopt[warn]{undefaction}, then \styfmt{glossaries} +% If user wants \pkgopt[warn]{undefaction}, then \sty{glossaries} % v4.19 is required. % \begin{macrocode} \newcommand*{\glsxtr@warnonexistsordo}[1]{} @@ -664,6 +587,15 @@ Dickimaw Books\\ %\changes{1.19}{2017-09-09}{Use \cs{@glsrecordlocref} instead of \cs{@glslocref}} % \begin{macrocode} \newcommand*\@glsxtr@dorecord{% + \@@glsxtr@dorecord\@gls@label\glsxtr@record\@glsxtr@do@nameref@record +} +% \end{macrocode} +%\end{macro} + +%\begin{macro}{\@@glsxtr@dorecord} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*\@@glsxtr@dorecord[3]{% \global\let\@glsrecordlocref\theglsentrycounter \let\@glsxtr@orgprefix\@glo@counterprefix \ifx\theglsentrycounter\theHglsentrycounter @@ -677,28 +609,26 @@ Dickimaw Books\\ \protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}% \@onelevel@sanitize\@glsxtr@theentrycounter \@onelevel@sanitize\@glsxtr@theHentrycounter - \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix + \@xp@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 +%If the counter isn't \ctr{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}% + #3% + {#1}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\@glsrecordlocref}% \else - \protected@write\@auxout{}{\string\glsxtr@record - {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% + \@bibgls@write@aux{}{\string#2% + {#1}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\@glsrecordlocref}}% \fi \@glsxtr@counterrecordhook @@ -723,21 +653,18 @@ Dickimaw Books\\ {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}% \else - \protected@write\@auxout{}{\string\glsxtr@record + \@bibgls@write@aux{}{\string\glsxtr@record {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}}% \fi \else - \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix - {\theglsentrycounter}{\theHglsentrycounter}% - }% - \@do@gls@getcounterprefix + \@xp@gls@getcounterprefix{\theglsentrycounter}{\theHglsentrycounter}% \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 + \@bibgls@write@aux{}{\string\glsxtr@record {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}% {\theglsentrycounter}}% \fi @@ -790,7 +717,7 @@ Dickimaw Books\\ \newcommand*{\@glsxtr@do@nameref@record}[5]{% \gls@ifnotmeasuring {% - \protected@write\@auxout{}{\string\glsxtr@record@nameref + \@bibgls@write@aux{}{\string\glsxtr@record@nameref {#1}{#2}{#3}{#4}{#5}% {\csuse{@currentlabelname}}{\csuse{@currentHref}}% {\theHglsentrycounter}}% @@ -837,7 +764,7 @@ Dickimaw Books\\ \@@glsxtrwrglossmark \def\@gls@xref{#2}% \@onelevel@sanitize\@gls@xref - \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}% + \@bibgls@write@aux{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}% } % \end{macrocode} %\end{macro} @@ -1135,6 +1062,79 @@ Dickimaw Books\\ % \end{macrocode} %\end{option} % +% +%\begin{option}{bibglsaux} +%\changes{1.49}{2022-10-14}{new} +%Provide an option to put the records in a different aux file that +%will only be read by bib2gls and not by \LaTeX. A large number of +%records in the aux file can slow down the document build as \LaTeX\ +%has to parse it all. This will require an extra write register, so +%may not be so desirable for documents with small glossaries but a +%large number of temporary files. +% \begin{macrocode} +\define@key{glossaries-extra.sty}{bibglsaux}{% + \glsxtrsetbibglsaux{#1}% +} +% \end{macrocode} +%\end{option} +% +%\begin{macro}{\glsxtrsetbibglsaux} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glsxtrsetbibglsaux}[1]{% + \renewcommand{\@glsxtr@setup@bibglsaux}{\@@glsxtr@setup@bibglsaux{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@setup@bibglsaux} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@setup@bibglsaux}{% + \renewcommand{\glsxtrsetbibglsaux}[1]{% + \@@glsxtr@setup@bibglsaux{##1}% + }% +} +\AtBeginDocument{\@glsxtr@setup@bibglsaux} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtr@setup@bibglsaux} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\@@glsxtr@setup@bibglsaux}[1]{% + \ifstrempty{#1}% + {\renewcommand{\@bibgls@write@aux}{\protected@write\@auxout}}% + {\@set@bibgls@write@aux{#1.aux}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@bibgls@write@aux} +%\changes{1.49}{2022-10-14}{new} +%Just used for writing records. +% \begin{macrocode} +\newcommand{\@bibgls@write@aux}{\protected@write\@auxout} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@set@bibgls@write@aux} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\@set@bibgls@write@aux}[1]{% + \protected@write\@auxout{}% + {\string\providecommand{\string\@bibgls@input}[1]{}}% + \protected@write\@auxout{}{\string\@bibgls@input{#1}}% + \global\newwrite\@bibgls@auxout + \openout\@bibgls@auxout=#1 + \AtEndDocument{\closeout\@bibgls@auxout}% + \gdef\@bibgls@write@aux{\protected@write\@bibgls@auxout}% + \gdef\@set@bibgls@write@aux##1{\GlossariesExtraWarning{repeated + invocation of bibglsaux option ignored}}% +} +% \end{macrocode} +%\end{macro} +% %\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 @@ -1221,7 +1221,7 @@ Dickimaw Books\\ % \begin{macrocode} \@glsxtrindexcrossrefsfalse % \end{macrocode} -% But allow \gloskey{see} key to switch it on automatically. +% But allow \gloskey{see} and \gloskey{seealso} keys to switch it on automatically. %\begin{macro}{\@glsxtr@autoindexcrossrefs} %\changes{1.0}{2016-01-24}{new} % \begin{macrocode} @@ -1414,7 +1414,7 @@ Dickimaw Books\\ \disable@keys{glossaries-extra.sty}{abbreviations}% % \end{macrocode} % If the \pkgopt{acronym} option hasn't been used, change -% \ics{acronymtype} to \ics{glsxtrabbrvtype}. +% \cs{acronymtype} to \cs{glsxtrabbrvtype}. %\changes{0.4}{2015-12-03}{added redefinition of \cs{acronymtype}} % \begin{macrocode} \ifglsacronym @@ -1434,37 +1434,95 @@ Dickimaw Books\\ % \end{macrocode} %\end{option} % +%\begin{macro}{\shortcut@gls} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@gls}{\cgls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\shortcut@glspl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@glspl}{\cglspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\shortcut@Gls} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@Gls}{\cGls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\shortcut@Glspl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@Glspl}{\cGlspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\shortcut@GLS} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@GLS}{\cGLS} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\shortcut@GLSpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\shortcut@GLSpl}{\cGLSpl} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrDefineAbbreviationShortcuts} % Enable shortcut commands for the abbreviations. Unlike the analogous -% command provided by \styfmt{glossaries}, this uses \cs{newcommand} +% command provided by \sty{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*{\ab}{\shortcut@gls}% + \newcommand*{\abp}{\shortcut@glspl}% \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*{\Ab}{\shortcut@Gls}% + \newcommand*{\Abp}{\shortcut@Glspl}% \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*{\AB}{\shortcut@GLS}% + \newcommand*{\ABP}{\shortcut@GLSpl}% \newcommand*{\AS}{\GLSxtrshort}% \newcommand*{\ASP}{\GLSxtrshortpl}% \newcommand*{\AL}{\GLSxtrlong}% \newcommand*{\ALP}{\GLSxtrlongpl}% \newcommand*{\AF}{\GLSxtrfull}% \newcommand*{\AFP}{\GLSxtrfullpl}% + \glsmfuaddmap{\ab}{\Ab}% + \glsmfublocker{\AB}% + \glsmfuaddmap{\abp}{\Abp}% + \glsmfublocker{\ABP}% + \glsmfuaddmap{\as}{\As}% + \glsmfublocker{\AS}% + \glsmfuaddmap{\asp}{\Asp}% + \glsmfublocker{\ASP}% + \glsmfuaddmap{\al}{\Al}% + \glsmfublocker{\AL}% + \glsmfuaddmap{\alp}{\Alp}% + \glsmfublocker{\ALP}% + \glsmfuaddmap{\af}{\Af}% + \glsmfublocker{\AF}% + \glsmfuaddmap{\afp}{\Afp}% + \glsmfublocker{\AFP}% % \end{macrocode} %\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}} % \begin{macrocode} @@ -1479,34 +1537,50 @@ Dickimaw Books\\ % %\begin{macro}{\GlsXtrDefineAcShortcuts} % Enable shortcut commands for the abbreviations, but uses the -% analogous commands provided by \styfmt{glossaries}. +% analogous commands provided by \sty{glossaries}. %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\GlsXtrDefineAcShortcuts}{% - \newcommand*{\ac}{\cgls}% - \newcommand*{\acp}{\cglspl}% + \newcommand*{\ac}{\shortcut@gls}% + \newcommand*{\acp}{\shortcut@glspl}% \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*{\Ac}{\shortcut@Gls}% + \newcommand*{\Acp}{\shortcut@Glspl}% \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*{\AC}{\shortcut@GLS}% + \newcommand*{\ACP}{\shortcut@GLSpl}% \newcommand*{\ACS}{\GLSxtrshort}% \newcommand*{\ACSP}{\GLSxtrshortpl}% \newcommand*{\ACL}{\GLSxtrlong}% \newcommand*{\ACLP}{\GLSxtrlongpl}% \newcommand*{\ACF}{\GLSxtrfull}% \newcommand*{\ACFP}{\GLSxtrfullpl}% + \glsmfuaddmap{\ac}{\Ac}% + \glsmfublocker{\AC}% + \glsmfuaddmap{\acp}{\Acp}% + \glsmfublocker{\ACP}% + \glsmfuaddmap{\acs}{\Acs}% + \glsmfublocker{\ACS}% + \glsmfuaddmap{\acsp}{\Acsp}% + \glsmfublocker{\ACSP}% + \glsmfuaddmap{\acl}{\Acl}% + \glsmfublocker{\ACL}% + \glsmfuaddmap{\aclp}{\Aclp}% + \glsmfublocker{\ACLP}% + \glsmfuaddmap{\acf}{\Acf}% + \glsmfublocker{\ACF}% + \glsmfuaddmap{\acfp}{\Acfp}% + \glsmfublocker{\ACFP}% % \end{macrocode} %\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}} % \begin{macrocode} @@ -1558,7 +1632,7 @@ Dickimaw Books\\ %\end{macro} % %\begin{option}{shortcuts} -%Provide \pkgopt{shortcuts} option. Unlike the \styfmt{glossaries} +%Provide \pkgopt{shortcuts} option. Unlike the \sty{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 @@ -1570,7 +1644,7 @@ Dickimaw Books\\ % \begin{macrocode} \define@choicekey{glossaries-extra.sty}{shortcuts}% [\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]% - {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{% + {acronyms,acro,abbreviations,abbr,other,all,true,ac,acother,abother,none,false}[true]{% \ifcase\@glsxtr@shortcutsnr\relax % acronyms \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue @@ -1623,6 +1697,24 @@ Dickimaw Books\\ \glsacrshortcutstrue \GlsXtrDefineAcShortcuts }% + \or % acother +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added shortcuts=acother} +% \begin{macrocode} + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \GlsXtrDefineAcShortcuts + \GlsXtrDefineOtherShortcuts + }% + \or % abother +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added shortcuts=abother} +% \begin{macrocode} + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \GlsXtrDefineAbbreviationShortcuts + \GlsXtrDefineOtherShortcuts + }% % \end{macrocode} %Leave none and false as last option. % \begin{macrocode} @@ -1641,7 +1733,7 @@ Dickimaw Books\\ %\end{macro} % %\sty{glossaries-accsupp} can't be loaded after -%\styfmt{glossaries-extra}. \sty{glossaries-accsupp} v4.29+ checks +%\sty{glossaries-extra}. \sty{glossaries-accsupp} v4.29+ checks %\cs{@glsxtr@doaccsupp} to determine if it's been loaded too late. % %\begin{option}{accsupp} @@ -1794,7 +1886,7 @@ Dickimaw Books\\ %\begin{macro}{\GlsXtrInternalLocationHyperlink} %\changes{1.29}{2018-04-09}{new} %\begin{definition} -%\cs{glsxtrinternallocationhyperlink}\marg{counter}\marg{prefix}\marg{location} +%\cs{GlsXtrInternalLocationHyperlink}\marg{counter}\marg{prefix}\marg{location} %\end{definition} %The first two arguments are always control sequences. % \begin{macrocode} @@ -1821,7 +1913,7 @@ Dickimaw Books\\ %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 +%Since \sty{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 @@ -1838,12 +1930,13 @@ Dickimaw Books\\ \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} +%\changes{1.30}{2018-04-25}{added check for \ctr{wrglossary} counter} % \begin{macrocode} \ifdefstring\@gls@counter{wrglossary}% {% \refstepcounter{wrglossary}% \label{wrglossary.\thewrglossary}% + \@@glsxtrwrglosscountermark{\thewrglossary}% }% {}% }% @@ -1879,12 +1972,35 @@ Dickimaw Books\\ % %\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{macro}{\@glsxtrwrglosscountermark} +%\changes{1.49}{2022-10-14}{new} +%Marks the place where wrglossary counter is incremented. +%Does nothing by default. +% \begin{macrocode} +\newcommand*{\@glsxtrwrglosscountermark}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrwrglosscountermark} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtrwrglosscountermark}[1]{} +\AtBeginDocument{\renewcommand*{\@@glsxtrwrglosscountermark}{\@glsxtrwrglosscountermark}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrwrglosscountermark} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrwrglosscountermark}[1]{\glsshowtargetfonttext{[#1]}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtr@doshowtarget} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} @@ -1892,6 +2008,24 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrundefdebug} +%\changes{1.49}{2022-10-14}{new} +%Don't do anything until after the document environment has begun. +% \begin{macrocode} +\newcommand*{\glsxtrundefdebug}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrundefdebug} +%\changes{1.49}{2022-10-14}{new} +%Use the same font as the targets. +% \begin{macrocode} +\newcommand*{\@glsxtrundefdebug}[1]{% + \if@gls@debug \glsshowtargetfonttext{[#1]}\fi +} +% \end{macrocode} +%\end{macro} +% %\begin{option}{debug} %\changes{1.21}{2017-11-03}{new} % Provide extra debug options. @@ -1903,20 +2037,26 @@ Dickimaw Books\\ \ifcase\@glsxtr@debugnr\relax % true \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{}% + \renewcommand*{\@glsxtrwrglosscountermark}[1]{}% \or % false \glsxtr@dooption{debug=false}% \renewcommand*{\@glsxtrwrglossmark}{}% - \let\@glsxtr@doshowtarget\@secondoftwo + \renewcommand*{\@glsxtrwrglosscountermark}[1]{}% + \let\@glsxtr@doshowtarget\@secondoftwo \or % showtargets \glsxtr@dooption{debug=showtargets}% - \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \or % showwrgloss \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \renewcommand*{\@glsxtrwrglosscountermark}{\glsxtrwrglosscountermark}% \or % all - \glsxtr@dooption{debug=showtargets,debug=showaccsupp}% + \glsxtr@dooption{debug=true,debug=showaccsupp}% + % debug=showwrgloss: \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% - \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \renewcommand*{\@glsxtrwrglosscountermark}{\glsxtrwrglosscountermark}% + % debug=showtargets: + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% \or % showaccsupp \glsxtr@dooption{debug=showaccsupp}% \fi @@ -2005,18 +2145,35 @@ Dickimaw Books\\ % \end{macrocode} %\end{option} % -% Pass all other options to \styfmt{glossaries}. +% Pass all other options to \sty{glossaries}. +%\begin{macro}{\glsxtr@processunknownoptions} +%\changes{1.49}{2022-10-14}{new} +% Need to compensate for the problem identified in +%\url{https://www.dickimaw-books.com/bugtracker.php?key=171} % \begin{macrocode} -\DeclareOptionX*{% - \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} +\newcommand*{\glsxtr@processunknownoptions}{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +\@ifpackageloaded{glossaries} +{% + \DeclareOptionX*{% + \edef\glsxtr@processunknownoptions{% + \noexpand\setupglossaries{\expandonce\CurrentOption}}} +} +{% + \DeclareOptionX*{% + \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} +} % \end{macrocode} % Process options. % \begin{macrocode} \ProcessOptionsX % \end{macrocode} -% Load \styfmt{glossaries} if not already loaded. +% Load \sty{glossaries} if not already loaded. % \begin{macrocode} \RequirePackage{glossaries} +\glsxtr@processunknownoptions % \end{macrocode} % Load the \sty{glossaries-accsupp} package if required. % \begin{macrocode} @@ -2031,6 +2188,183 @@ Dickimaw Books\\ \@glsxtr@defpostpunc % \end{macrocode} % +%\begin{macro}{\glsindexsetting} +%\changes{1.49}{2022-10-14}{new} +%This command was new to \sty{glossaries} v4.50 so may not be +%defined. Note that \pkgopt[only]{record} and +%\pkgopt[nameref]{record} implement \pkgopt[none]{sort}, which will +%change the default definition of \cs{glsindexingsetting}. +% \begin{macrocode} +\let\@glsxtr@org@indexingsetting\glsindexingsetting +\providecommand{\glsindexingsetting}{\ifglsxindy xindy\else makeindex\fi} +\ifx\@glsxtr@org@indexingsetting\glsindexingsetting + \renewcommand{\glsindexingsetting}{% + \@glsxtr@if@record@only{bib2gls}{\ifglsxindy xindy\else makeindex\fi}% + } +\else + \@glsxtr@if@record@only{\renewcommand{\glsindexingsetting}{bib2gls}}{}% +\fi +% \end{macrocode} +%\end{macro} +% +% +%The following commands are new to \sty{glossaries} v4.50, so +%provide them if an older version is present. +%\begin{macro}{\glssentencecase} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\providecommand{\glssentencecase}[1]{\makefirstuc{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslowercase} +%\changes{1.49}{2022-10-14}{new} +%This uses \cs{MakeTextLowercase} because if \cs{glslowercase} isn't +%defined then \sty{textcase} has been loaded and we might have an +%older kernel. +% \begin{macrocode} +\providecommand{\glslowercase}[1]{\MakeTextLowercase{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsuppercase} +%\changes{1.49}{2022-10-14}{new} +%Not using \cs{unexpanded} because ditto the above. +% \begin{macrocode} +\providecommand{\glsuppercase}[1]{\mfirstucMakeUppercase{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@Glsentryfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\providecommand{\@Glsentryfield}[2]{% + \glstexorpdfstring{\@Gls@entry@field{#1}{#2}}% + {\MFUsentencecase{\@gls@entry@field{#1}{#2}}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstexorpdfstring} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\ifdef\glstexorpdfstring +{} +{ + \ifdef\texorpdfstring + {\newcommand{\glstexorpdfstring}{\texorpdfstring}} + {\newcommand{\glstexorpdfstring}[2]{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@org@MakeUppercase} +%Save the original definition of \cs{MakeUppercase} in case it needs +%to be restored. +% \begin{macrocode} +\let\@glsxtr@org@MakeUppercase\MakeUppercase +% \end{macrocode} +%\end{macro} +% +%If \sty{mfirstuc} v2.08+ is installed, provide interface commands. +%The simplest method is to test the existence of +%\cs{MFUsentencecase}, which is provided by \sty{mfirstuc} v2.08+ +%but also by \sty{glossaries} v4.50+. So it may be defined because +%\sty{glossaries} v4.50+ is installed, in which case \cs{glsmfuexcl} +%etc are also defined, but it may be defined because \sty{mfirstuc} +%v2.08+ is installed but an older version of \sty{glossaries} may be +%present, in which case \cs{glsmfuexcl} etc won't be defined. +% \begin{macrocode} +\ExplSyntaxOn +\ifdef\MFUsentencecase +{% +% \end{macrocode} +% Automatically identify exclusions, blockers and mappings. +%\begin{macro}{\glsmfuexcl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \providecommand{\glsmfuexcl}[1]{\MFUexcl{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsmfublocker} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \providecommand{\glsmfublocker}[1]{\MFUblocker{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsmfuaddmap} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \providecommand{\glsmfuaddmap}[2]{\MFUaddmap{#1}{#2}} +% \end{macrocode} +%\end{macro} +%Don't alter \cs{MakeUppercase} +%\begin{macro}{\@glsxtr@saveMakeUppercase} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand{\@glsxtr@saveMakeUppercase}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@restoreMakeUppercase} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand{\@glsxtr@restoreMakeUppercase}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@assignMakeUppercase} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand{\@glsxtr@assignMakeUppercase}{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +{ +% \end{macrocode} +%Provide \cs{MFUsentencecase} for use where expandable contexts are +%required. +%\begin{macro}{\MFUsentencecase} +% \begin{macrocode} + \providecommand{\MFUsentencecase}[1]{\text_titlecase_first:n{#1}} +% \end{macrocode} +%\end{macro} +%Provide support for exclusions with \cs{MFUsentencecase}. +%\begin{macro}{\glsmfuexcl} +% \begin{macrocode} + \providecommand{\glsmfuexcl}[1]{ + \tl_if_in:NnF \l_text_case_exclude_arg_tl {#1} + { + \tl_put_right:Nn \l_text_case_exclude_arg_tl {#1} + } + } +% \end{macrocode} +%\end{macro} +%Just treat blockers and mappings as exclusions. +%\begin{macro}{\glsmfublocker} +% \begin{macrocode} + \providecommand{\glsmfublocker}[1]{\glsmfuexcl{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsmfuaddmap} +% \begin{macrocode} + \providecommand{\glsmfuaddmap}[2]{\glsmfuexcl{#1}\glsmfublocker{#2}} +% \end{macrocode} +%\end{macro} +%With old versions of \sty{mfirstuc}, save and restore +%\cs{MakeUppercase} in the heading hooks. +% \begin{macrocode} + \newcommand{\@glsxtr@saveMakeUppercase}{% + \let\@glsxtr@org@MakeUppercase\MakeUppercase + } + \newcommand{\@glsxtr@restoreMakeUppercase}{% + \let\MakeUppercase\@glsxtr@org@MakeUppercase + } + \newcommand{\@glsxtr@assignMakeUppercase}{% + \let\MakeUppercase\MakeTextUppercase + } +} +% \end{macrocode} +%Finished \LaTeX3 code. +% \begin{macrocode} +\ExplSyntaxOff +% \end{macrocode} +% %\begin{macro}{\glsdoshowtarget} %\changes{1.48}{2021-11-22}{new} %Added to \sty{glossaries} v4.50 so many not be defined. @@ -2042,23 +2376,30 @@ Dickimaw Books\\ % %\begin{macro}{\glsxtrshowtargetsymbolright} %\changes{1.48}{2021-11-22}{new} +%\changes{1.49}{2022-10-14}{added check for math mode} % \begin{macrocode} -\newcommand{\glsxtrshowtargetsymbolright}{{\tiny$\triangleleft$}}% +\newcommand{\glsxtrshowtargetsymbolright}{% + \ifmmode \mbox{\tiny$\triangleleft$}\else {\tiny$\triangleleft$}\fi +} % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrshowtargetsymbolleft} %\changes{1.48}{2021-11-22}{new} +%\changes{1.49}{2022-10-14}{added check for math mode} % \begin{macrocode} -\newcommand{\glsxtrshowtargetsymbolleft}{{\tiny$\triangleright$}}% +\newcommand{\glsxtrshowtargetsymbolleft}{% + \ifmmode \mbox{\tiny$\triangleright$}\else {\tiny$\triangleright$}\fi +} % \end{macrocode} %\end{macro} % %\begin{macro}{\glsshowtargetinner} %\changes{1.48}{2021-11-22}{new} +%\changes{1.49}{2022-10-14}{added check for math mode} %Only added to \sty{glossaries} in v4.50 so may not be defined. % \begin{macrocode} -\providecommand*{\glsshowtargetinner}[1]{{\glsshowtargetfont [#1]}} +\providecommand*{\glsshowtargetinner}[1]{\glsshowtargetfonttext{[#1]}} % \end{macrocode} %\end{macro} % @@ -2070,7 +2411,18 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\begin{macro}{\glsshowtargetinnercontentsymleft} +%\begin{macro}{\glsshowtargetfonttext} +%\changes{1.49}{2022-10-14}{new} +%Text-block command that checks for math-mode. +%Only added to \sty{glossaries} in v4.50 so may not be defined. +% \begin{macrocode} +\providecommand*{\glsshowtargetfonttext}[1]{% + \ifmmode \nfss@text{\glsshowtargetfont #1}\else {\glsshowtargetfont #1}\fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsshowtargetinnersymleft} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} \newcommand*{\glsshowtargetinnersymleft}[1]{% @@ -2078,7 +2430,7 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\begin{macro}{\glsshowtargetinnercontentsymright} +%\begin{macro}{\glsshowtargetinnersymright} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} \newcommand*{\glsshowtargetinnersymright}[1]{% @@ -2309,6 +2661,31 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@xp@gls@getcounterprefix} +%This command is provided by \sty{glossaries} v4.50 so may not be +%defined. Provide a similar command in case the new version hasn't +%been installed. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\providecommand*\@xp@gls@getcounterprefix[2]{% + \bgroup + \glswrglossdisableanchorcmds + \protected@edef\@do@gls@getcounterprefix{% + \noexpand\egroup + \noexpand\@gls@getcounterprefix{#1}{#2}% + }% + \@do@gls@getcounterprefix +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glswrglossdisableanchorcmds} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\providecommand{\glswrglossdisableanchorcmds}{\let\glstexorpdfstring\@secondoftwo} +% \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 @@ -2319,9 +2696,14 @@ Dickimaw Books\\ %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. +% +%The expansion should now be performed in +%\cs{@xp@gls@getcounterprefix}. Any commands that were using +%\cs{@gls@getcounterprefix} directly need to be use +%\cs{@xp@gls@getcounterprefix} instead. % \begin{macrocode} \renewcommand*\@gls@getcounterprefix[2]{% - \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}% + \def\@gls@thisloc{#1}\def\@gls@thisHloc{#2}% \ifx\@gls@thisloc\@gls@thisHloc \def\@glo@counterprefix{}% \else @@ -2376,11 +2758,12 @@ Dickimaw Books\\ % \begin{macrocode} \AtBeginDocument{% \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}% + \def\glsxtrundefdebug{\@glsxtrundefdebug}% \def\@glsxtrundeftag{\glsxtrundeftag}% } % \end{macrocode} % -%\section{Extra Utilities} +%\subsection{Extra Utilities} % %\begin{macro}{\GlsXtrIfUnusedOrUndefined} %\changes{1.34}{2018-07-29}{new} @@ -2399,7 +2782,7 @@ Dickimaw Books\\ %\end{macro} % %Starred form of \cs{ifglossaryexists} was only introduced to -%\styfmt{glossaries} v4.46 so provide it if it hasn't been defined. +%\sty{glossaries} v4.46 so provide it if it hasn't been defined. % \begin{macrocode} \ifdef\s@ifglossaryexists {} @@ -2438,7 +2821,7 @@ Dickimaw Books\\ % 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 +% \cs{glolist@\meta{type}}. If this hasn't been defined, the glossary % 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} @@ -2456,6 +2839,32 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\GlsXtrIfInGlossary} +%\begin{definition} +%\cs{GlsXtrIfInGlossary}\marg{label}\marg{type}\marg{true}\marg{false} +%\end{definition} +%\changes{1.49}{?}{new} +%Test if the given entry is in the given glossary list. This may not +%correspond to the \gloskey{type} key as the entry may have been +%copied to the list. Does \meta{false} and issues warning if the glossary doesn't +%exist. +% \begin{macrocode} +\newcommand*{\GlsXtrIfInGlossary}[4]{% + \ifcsdef{glolist@#2}% + {% + \protected@edef\@glsxtr@tmp{#1}% + \letcs\@glsxtr@tmplist{glolist@#2}% + \expandafter\DTLifinlist\expandafter{\@glsxtr@tmp}{\@glsxtr@tmplist}% + {#3}{#4}% + }% + {% + \glsxtrundefaction{Glossary type `#1' doesn't exist}{}% + #4% + }% +} +% \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. @@ -2557,6 +2966,9 @@ Dickimaw Books\\ % %\begin{macro}{\glsxtrfmt} %\changes{1.12}{2017-02-03}{new} +%\begin{definition} +%\cs{glsxtrfmt}\oarg{options}\marg{entry-label}\marg{text}\oarg{insert} +%\end{definition} %The post-link hook isn't done. This now has a starred form %that checks for a final optional argument. % \begin{macrocode} @@ -2628,6 +3040,37 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsxtrfmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{Glsxtrfmt}\oarg{options}\marg{entry-label}\marg{text}\oarg{insert} +%\end{definition} +%As \cs{glsxtrfmt} but applies a sentence-case change to +%\meta{text}. This is provided to allow a mapping with +%\sty{mfirstuc} v2.08+ in the event that an automated case-change is +%required. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrfmt}{\@ifstar\s@Glsxtrfmt\@Glsxtrfmt} +\glsmfuaddmap{\glsxtrfmt}{\Glsxtrfmt} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@Glsxtrfmt} +%\changes{1.49}{2022-10-14}{new} +%Unstarred form. +% \begin{macrocode} +\newcommand*{\@Glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\s@Glsxtrfmt} +%\changes{1.49}{2022-10-14}{new} +%Starred form. +% \begin{macrocode} +\newcommand*{\s@Glsxtrfmt}[3][]{% + \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}}% + {\@@glsxtrfmt{#1}{#2}{\glssentencecase{#3}}{}}% +} +% \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 @@ -2643,21 +3086,15 @@ Dickimaw Books\\ %\changes{1.12}{2017-02-03}{new} %No link or indexing. % \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\glsxtrentryfmt}[2]{% - \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% - } -} -{ - \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt} +\newcommand*{\glsxtrentryfmt}[2]{% + \glstexorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% } % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrpdfentryfmt} %\changes{1.42}{2020-02-03}{new} -%Use for the PDF bookmarks. +%Used for the PDF bookmarks. % \begin{macrocode} \newcommand*{\glsxtrpdfentryfmt}[2]{#2} % \end{macrocode} @@ -2692,6 +3129,27 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsxtrentryfmt} +%\changes{1.49}{2022-10-14}{new} +%Sentence-case version. +% \begin{macrocode} +\newcommand*{\Glsxtrentryfmt}[2]{% + \glstexorpdfstring + {\@glsxtrentryfmt{#1}{\glssentencecase{#2}}}% + {\Glsxtrpdfentryfmt{#1}{#2}}% +} +\glsmfuaddmap{\glsxtrentryfmt}{\Glsxtrentryfmt} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrpdfentryfmt} +%\changes{1.49}{2022-10-14}{new} +%Used for the PDF bookmarks. +% \begin{macrocode} +\newcommand*{\Glsxtrpdfentryfmt}[2]{\MFUsentencecase{#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. @@ -2807,7 +3265,7 @@ Dickimaw Books\\ %\end{macro} % %\begin{macro}{\@glsxtrforcsvfield} -%\changes{1.47}{2017-11-14}{new} +%\changes{1.47}{2021-11-04}{new} %Unstarred version. % \begin{macrocode} \newcommand*{\@glsxtrforcsvfield}[3]{% @@ -2822,7 +3280,7 @@ Dickimaw Books\\ %\end{macro} % %\begin{macro}{\s@glsxtrforcsvfield} -%\changes{1.47}{2017-11-14}{new} +%\changes{1.47}{2021-11-04}{new} %Starred version. % \begin{macrocode} \newcommand*{\s@glsxtrforcsvfield}[3]{% @@ -3158,41 +3616,29 @@ Dickimaw Books\\ %\changes{1.12}{2017-02-03}{new} %\changes{1.37}{2018-11-30}{fixed internal command and added check for %\cs{texorpdfstring}} +%\changes{1.49}{2022-10-14}{now using \cs{@Glsentryfield}} %Provide a user-level alternative to \cs{@Gls@entry@field}. +%Now uses \cs{MFUsentencecase} in PDF bookmarks. % \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}% - } +\newcommand*{\Glsxtrusefield}[2]{% + \@Glsentryfield{#1}{#2}% } +\glsmfuaddmap{\glsxtrusefield}{\Glsxtrusefield} % \end{macrocode} %\end{macro} % %\begin{macro}{\GLSxtrusefield} %\changes{1.37}{2018-11-30}{new} +%\changes{1.49}{2022-10-14}{added uppercase PDF bookmark alternative} %As above but convert to all caps. +%Note that with \sty{mfirstuc} v2.08+, \cs{mfirstucMakeUppercase} +%is expandable, so therefore \cs{glsuppercase} should also be +%expandable. % \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}}}% - } +\newcommand*{\GLSxtrusefield}[2]{% + \glsuppercase{\csuse{glo@\glsdetoklabel{#1}@#2}}% } +\glsmfublocker{\GLSxtrusefield} % \end{macrocode} %\end{macro} % @@ -3228,7 +3674,7 @@ Dickimaw Books\\ %\begin{macro}{\glsxtrapptocsvfield} %\changes{1.47}{2021-11-04}{new} % Similar to the above but will append value with a leading comma if -% the field is already defined. This is used by \gls{bib2gls}. +% the field is already defined. This is used by \app{bib2gls}. % There's no check if the entry has been defined. (Because of the % way that bib2gls's save-from-alias etc options are % implemented, the entry may not have yet been written to the glstex @@ -3264,8 +3710,9 @@ Dickimaw Books\\ %\begin{macro}{\GlsXtrLetField} %\changes{1.12}{2017-02-03}{new} %Uses \cs{cslet} instead. Third argument should be a macro. +%\changes{1.49}{2022-10-14}{corrected spelling} % \begin{macrocode} -\newrobustcmd*{\GlstrLetField}[3]{% +\newrobustcmd*{\GlsXtrLetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}% {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}% } @@ -3656,14 +4103,35 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\section{Modifications to Commands Provided by \styfmt{glossaries}} -% Some of the commands provided by \styfmt{glossaries} are modified +%\subsection{Modifications to Commands Provided by \sty{glossaries}} +% Some of the commands provided by \sty{glossaries} are modified % to take into account new options or to change default behaviour. % +%\begin{macro}{\@p@glossarysection} +%Phantom section only needs to be added for starred section +%commands. +%\changes{1.49}{2022-10-14}{moved \cs{phantomsection}} +% \begin{macrocode} +\renewcommand*{\@p@glossarysection}[2]{% + \glsclearpage + \ifdefempty\@@glossarysecstar + {% + \csname\@@glossarysec\endcsname{#2}% + }% + {% + \phantomsection + \@gls@toc{#1}{\@@glossarysec}% + \csname\@@glossarysec\endcsname*{#2}% + }% + \@@glossaryseclabel +} +% \end{macrocode} +%\end{macro} +% % The original \cs{@gls@entry@field} causes a problem for undefined % entries when used in section headings or captions. Since entries % must be defined with just the base package this isn't a -% significant issue, but it will cause a problem with \gls{bib2gls} +% significant issue, but it will cause a problem with \app{bib2gls} % where no entries are defined on the first \LaTeX\ call, so % redefine \cs{@gls@entry@field} to use \cs{csuse} instead of % \cs{csname}. @@ -3702,6 +4170,84 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@gls@noexpand@field} +%\changes{1.49}{2022-10-14}{added redefinition} +%Add check for encapinnerfmt, encapnocase and encapnocaseinnerfmt +% \begin{macrocode} +\renewcommand{\@@gls@noexpand@field}[3]{% + \glsifcategoryattributehasitem{\@glo@category}{encapnocaseinnerfmt}{#2}% + {% + \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\noexpand\glsxtrgenentrytextfmt + {\expandonce{#3}}}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapnocase}{#2}% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}% + {% + \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\noexpand\glsxtrgenentrytextfmt + {\expandonce{#3}}}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \csxdef{glo@#1@#2}{\noexpand\NoCaseChange{\expandonce{#3}}}% + }% + }% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}% + {% + \csxdef{glo@#1@#2}{\noexpand\glsxtrgenentrytextfmt{\expandonce{#3}}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \expandafter\global\expandafter\let\csname glo@#1@#2\endcsname#3% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@gls@expand@field} +%\changes{1.49}{2022-10-14}{added redefinition} +%Add check for encapinnerfmt, encapnocase and encapnocaseinnerfmt +% \begin{macrocode} +\renewcommand{\@@gls@expand@field}[3]{% + \glsifcategoryattributehasitem{\@glo@category}{encapnocaseinnerfmt}{#2}% + {% + \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange + {\noexpand\glsxtrgenentrytextfmt{#3}}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapnocase}{#2}% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}% + {% + \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange + {\noexpand\glsxtrgenentrytextfmt{#3}}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \protected@csxdef{glo@#1@#2}{\noexpand\NoCaseChange{#3}}% + }% + }% + {% + \glsifcategoryattributehasitem{\@glo@category}{encapinnerfmt}{#2}% + {% + \protected@csxdef{glo@#1@#2}{\noexpand\glsxtrgenentrytextfmt{#3}}% + \glsexclapplyinnerfmtfield{#1}{#2}% + }% + {% + \protected@csxdef{glo@#1@#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 @@ -3973,10 +4519,21 @@ Dickimaw Books\\ % %\begin{macro}{\glsxtrcopytoglossary} %Adds an entry label to another glossary list. First argument is -%entry label. Second argument is glossary label. +%entry label. Second argument is glossary label. The starred version +%globally adds the entry label. %\changes{1.12}{2017-02-03}{new} +%\changes{1.49}{2022-10-14}{added starred form} % \begin{macrocode} -\newcommand*{\glsxtrcopytoglossary}[2]{% +\newcommand*{\glsxtrcopytoglossary}{% + \@ifstar\s@glsxtrcopytoglossary\@glsxtrcopytoglossary +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrcopytoglossary} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrcopytoglossary}[2]{% \glsdoifexists{#1}% {% \ifcsdef{glolist@#2} @@ -3994,25 +4551,54 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\subsection{Existence Checks} +%\begin{macro}{\s@glsxtrcopytoglossary} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\s@glsxtrcopytoglossary}[2]{% + \glsdoifexists{#1}% + {% + \ifcsdef{glolist@#2} + {% + \protected@csxappto{glolist@#2}{#1,}% + }% + {% + \glsxtrundefaction{Glossary type `#2' doesn't exist}{}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\subsubsection{Existence Checks} %\begin{macro}{\glsdoifexists} % Modify \cs{glsdoifexists} to take account of the % \pkgopt{undefaction} setting. +%\changes{1.08}{2016-12-13}{now defines \cs{glslabel}} +%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} +%\changes{1.49}{2022-10-14}{added \cs{glsxtrundefdebug}} % \begin{macrocode} \renewcommand{\glsdoifexists}[2]{% - \ifglsentryexists{#1}{#2}% - {% + \ifglsentryexists{#1}{#2}{\glsxtr@doifexists{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@doifexists} +%Provide a robust command for the error/warning in case +%\cs{glsdoifexists} is expanded. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd{\glsxtr@doifexists}[1]{% % \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}} -%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} % \begin{macrocode} - \protected@edef\glslabel{\glsdetoklabel{#1}}% - \glsxtrundefaction{Glossary entry `\glslabel' - has not been defined}{You need to define a glossary entry before - you can reference it.}% - }% + \protected@edef\glslabel{\glsdetoklabel{#1}}% + \expandafter\glsxtrundefdebug\expandafter + {\expandafter\detokenize\expandafter{\glslabel}}% + \glsxtrundefaction{Glossary entry `\glslabel' + has not been defined}{You need to define a glossary entry before + you can reference it.}% } % \end{macrocode} %\end{macro} @@ -4022,9 +4608,19 @@ Dickimaw Books\\ % \pkgopt{undefaction} setting. % \begin{macrocode} \renewcommand{\glsdoifnoexists}[2]{% - \ifglsentryexists{#1}{% - \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' - has already been defined}{}}{#2}% + \ifglsentryexists{#1}{\glsxtr@doifnoexists{#1}}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@doifnoexists} +%Provide a robust command for the error/warning in case +%\cs{glsdoifnoexists} is expanded. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd{\glsxtr@doifnoexists}[1]{% + \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' + has already been defined}% } % \end{macrocode} %\end{macro} @@ -4032,7 +4628,7 @@ Dickimaw Books\\ %\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. +% \sty{glossaries} version 4.19, so check if it has been defined first. % \begin{macrocode} \ifdef\glsdoifexistsordo {% @@ -4092,8 +4688,8 @@ Dickimaw Books\\ %\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). +%original), the \gloskey{alias} key (from \sty{glossaries-extra} v1.12) +% and the \gloskey{seealso} key (from \sty{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). % @@ -4117,6 +4713,70 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrseelistsencap} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrseelistsencap}\marg{content} +%\end{definition} +%Encapsulates cross-reference list. +% \begin{macrocode} +\newcommand*{\glsxtrseelistsencap}[1]{\space #1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrseelistsdelim} +%\changes{1.49}{2022-10-14}{new} +%Delimiter in cross-reference list. +% \begin{macrocode} +\newcommand*{\glsxtrseelistsdelim}{, } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrseelists} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrseelists}\marg{label} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrseelists}[1]{% + \glsdoifexists{#1}% + {% + \def\@glsxtr@seelists{}% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% + \ifdefempty\@glo@see + {}% + {% + \protected@edef\@glsxtr@seelists{% + \noexpand\glsxtr@usesee\@glo@see\noexpand\@end@glsxtr@usesee + }% + }% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% + \ifdefempty\@glo@see + {}% + {% + \ifdefempty\@glsxtr@seelists{}% + {\appto\@glsxtr@seelists{\glsxtrseelistsdelim}}% + \protected@edef\@glsxtr@seelists{% + \noexpand\glsxtruseseealsoformat{\@glo@see}% + }% + }% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}% + \ifdefempty\@glo@see + {}% + {% + \ifdefempty\@glsxtr@seelists{}% + {\appto\@glsxtr@seelists{\glsxtrseelistsdelim}}% + \protected@edef\@glsxtr@seelists{% + \noexpand\glsxtruseseeformat{\noexpand\seename}{\@glo@see}% + }% + }% + \ifdefempty\@glsxtr@seelists{}% + {\glsxtrseelistsencap\@glsxtr@seelists}% + }% +} +% \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. @@ -4171,11 +4831,11 @@ Dickimaw Books\\ %\changes{1.37}{2018-11-30}{removed reference to \cs{glslabel}} %\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext} and %\cs{glsfmtname}} -%\styfmt{glossaries} originally defined \cs{glsseeitemformat} +%\sty{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} restored the original +%problem, \sty{glossaries-extra} restored the original %definition as it makes more sense to use the \gloskey{name} %in the cross-reference list. Unfortunately this doesn't take style %changes into account, so as from v1.42, this now uses @@ -4201,12 +4861,26 @@ Dickimaw Books\\ %use this command to show the hierarchy, if required. This now uses %\cs{glsfmttext} and \cs{glsfmtname} instead of \cs{glsaccessshort} %and \cs{glsaccessname} to allow for style formatting. +%\changes{1.49}{2022-10-14}{added \cs{expandafter}s} +%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}} % \begin{macrocode} \newcommand*{\glsxtrhiername}[1]{% + \glstexorpdfstring + {\@glsxtrhiername{#1}}% + {\glsentryname{#1}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtrhiername} +%Provide robust inner command. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\@glsxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% - {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {\expandafter\glsxtrhiername\expandafter + {\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% @@ -4222,18 +4896,33 @@ Dickimaw Books\\ %\cs{Glsxtrhiername}\marg{label} %\end{definition} %As above but displays the top-level name with an initial capital. +%\changes{1.49}{2022-10-14}{added \cs{expandafter}s} +%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}} % \begin{macrocode} \newcommand*{\Glsxtrhiername}[1]{% + \glstexorpdfstring + {\@Glsxtrhiername{#1}}% + {\MFUsentencecase{\glsentryname{#1}}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@Glsxtrhiername} +%\changes{1.49}{2022-10-14}{new} +%Provide robust inner command. +% \begin{macrocode} +\newrobustcmd*{\@Glsxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {% - \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \expandafter\Glsxtrhiername\expandafter + {\glscurrentfieldvalue}\glsxtrhiernamesep \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}% }% } +\glsmfuaddmap{\glsxtrhiername}{\Glsxtrhiername} % \end{macrocode} %\end{macro} % @@ -4247,16 +4936,31 @@ Dickimaw Books\\ %As above but converts the first letter of each name to a capital. %(Note that this isn't applying title case, just capitalising the %start of each hierarchical element.) +%\changes{1.49}{2022-10-14}{added \cs{expandafter}s} +%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}} % \begin{macrocode} \newcommand*{\GlsXtrhiername}[1]{% + \glstexorpdfstring + {\@GlsXtrhiername{#1}}% + {\glsentryname{#1}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@GlsXtrhiername} +%\changes{1.49}{2022-10-14}{new} +%Provide robust inner command. +% \begin{macrocode} +\newrobustcmd*{\@GlsXtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% - {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {\expandafter\GlsXtrhiername\expandafter + {\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}% }% } +\glsmfublocker{\GlsXtrhiername} % \end{macrocode} %\end{macro} % @@ -4268,18 +4972,33 @@ Dickimaw Books\\ %\cs{GLSxtrhiername}\marg{label} %\end{definition} %As above but displays the top-level name in all-caps. +%\changes{1.49}{2022-10-14}{added \cs{expandafter}s} +%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}} % \begin{macrocode} \newcommand*{\GLSxtrhiername}[1]{% + \glstexorpdfstring + {\@GLSxtrhiername{#1}}% + {\GLSxtrusefield{#1}{name}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@GLSxtrhiername} +%\changes{1.49}{2022-10-14}{new} +%Provide robust inner command. +% \begin{macrocode} +\newrobustcmd*{\@GLSxtrhiername}[1]{% \glsdoifexists{#1}% {% \glsxtrifhasfield{parent}{#1}% {% - \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \expandafter\GLSxtrhiername\expandafter + {\glscurrentfieldvalue}\glsxtrhiernamesep \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}% }% } +\glsmfublocker{\GLSxtrhiername} % \end{macrocode} %\end{macro} % @@ -4291,18 +5010,36 @@ Dickimaw Books\\ %\cs{GLSXTRhiername}\marg{label} %\end{definition} %As above but displays all names in all-caps. +%\changes{1.49}{2022-10-14}{added \cs{expandafter}s} +%\changes{1.49}{2022-10-14}{added \cs{glstexorpdfstring}} % \begin{macrocode} \newcommand*{\GLSXTRhiername}[1]{% - \glsdoifexists{#1}% - {% - \glsxtrifhasfield{parent}{#1}% - {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% - {} - \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% - }% + \glstexorpdfstring + {\@GLSXTRhiername{#1}}% + {\GLSxtrusefield{#1}{name}}% } % \end{macrocode} %\end{macro} +%\begin{macro}{\@GLSXTRhiername} +%\changes{1.49}{2022-10-14}{new} +%Provide robust inner command. +% \begin{macrocode} +\newrobustcmd*{\@GLSXTRhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\expandafter\GLSXTRhiername\expandafter + {\glscurrentfieldvalue}\glsxtrhiernamesep}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{removed unwanted eol} +% \begin{macrocode} + {}% + \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% + }% +} +\glsmfublocker{\GLSXTRhiername} +% \end{macrocode} +%\end{macro} % %\begin{macro}{\glsxtrhiernamesep} %\changes{1.37}{2018-11-30}{new} @@ -4404,6 +5141,61 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrtaggedlistsep} +%\changes{1.49}{2022-10-14}{new} +%Separator between the tag and the list in \cs{glsxtrtaggedlist} +% \begin{macrocode} +\newcommand{\glsxtrtaggedlistsep}{\space} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrtaggedlist} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrtaggedlist}\marg{singular tag}\marg{plural +%tag}\marg{label prefix}\marg{label list} +%\end{definition} +%Similar to the above but the tag is selected depending on how many +%items there are in the list. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtaggedlist}[4]{% + \begingroup + \protected@edef\@gls@taggedlist@labels{#4}% + \let\@gls@dolast\relax + \let\@gls@donext\relax + \let\@glsseeitem\@glsxtr@seefirstitem + \let\@glsseelastsep\glsseelastsep + \def\@gls@taggedlist@content{}% + \let\@gls@taggedlist@tag\relax + \@for\@gls@thislabel:=\@gls@taggedlist@labels\do{% + \ifx\@xfor@nextelement\@nnil + \ifx\@gls@dolast\relax + \else + \eappto\@gls@taggedlist@content{\expandonce\@gls@dolast}% + \fi + \else + \ifx\@gls@dolast\relax + \else + \eappto\@gls@taggedlist@content{\expandonce\@gls@donext}% + \fi + \fi + \protected@eappto\@gls@taggedlist@content{\noexpand\@glsseeitem + {#3\@gls@thislabel}}% + \let\@gls@dolast\@glsseelastsep + \let\@gls@donext\glsseesep + \let\@glsseeitem\@glsxtr@seeitem + \let\@glsseelastsep\glsseelastoxfordsep + \ifx\@gls@taggedlist@tag\relax + \def\@gls@taggedlist@tag{#1\glsxtrtaggedlistsep}% + \else + \def\@gls@taggedlist@tag{#2\glsxtrtaggedlistsep}% + \fi + }% + \@gls@taggedlist@tag\@gls@taggedlist@content + \endgroup +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtr@seeitem} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} @@ -4458,7 +5250,7 @@ Dickimaw Books\\ %\changes{1.16}{2017-06-15}{new} %\changes{1.42}{2020-02-03}{add check for \cs{alsoname}} %In case this command hasn't been defined. Languages packages -%actually provide \ics{alsoname} so use that if it's defined. +%actually provide \cs{alsoname} so use that if it's defined. % \begin{macrocode} \ifdef\alsoname {\providecommand{\seealsoname}{\alsoname}} @@ -4498,21 +5290,24 @@ Dickimaw Books\\ %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}% + \glsxtr@wrglossary@encap{#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" - ) + \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" + ) + }% }% }% } @@ -4575,6 +5370,7 @@ Dickimaw Books\\ {\csxdef{glo@\@glo@label @alias}{}}% {% \csxdef{glo@\@glo@label @alias}{\@glo@alias}% + \glsxtraliashook{\@glo@label}% }% } % \end{macrocode} @@ -4614,6 +5410,7 @@ Dickimaw Books\\ {% \protected@edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}% \@do@glssee + \glsxtraliashook{\@glo@label}% }% {}% }% @@ -4681,6 +5478,13 @@ Dickimaw Books\\ } % \end{macrocode} % +%\begin{macro}{\glsxtraliashook} +%\changes{1.49}{2022-10-14}{new} +%Provide a hook that's used when the alias field is provided. +% \begin{macrocode} +\newcommand*{\glsxtraliashook}[1]{} +% \end{macrocode} +%\end{macro} % % Add all unused cross-references at the end of the document. % \begin{macrocode} @@ -4696,14 +5500,22 @@ Dickimaw Books\\ {% \forglsentries[\@glo@type]{\@glo@label}% {% - \ifglsused{\@glo@label}% - {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}% + \ifglsused{\@glo@label}{\glsxtraddunusedxrefs{\@glo@label}}{}% }% }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtraddunusedxrefs} +%\changes{1.49}{2022-10-14}{new} +%Added user-level command in case user wants to redefine +%\cs{glsxtraddallcrossrefs} +% \begin{macrocode} +\newcommand*{\glsxtraddunusedxrefs}[1]{\expandafter\@glsxtr@addunusedxrefs\expandafter{#1}} +% \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.) @@ -4767,10 +5579,10 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\subsection{Document Definitions} +%\subsubsection{Document Definitions} % %\begin{macro}{\gls@begindocdefs} -%This command was only introduced to \styfmt{glossaries} v4.37, so +%This command was only introduced to \sty{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}. @@ -4835,6 +5647,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries \renewcommand{\makenoidxglossaries}{% + \def\glsindexingsetting{noidx}% \@domakeglossaries {% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off @@ -4892,11 +5705,38 @@ Dickimaw Books\\ {You may only use \string\makenoidxglossaries\ space with the record=off option}% }% + \let\gls@warn@noidx@incompatible\@gls@warn@noidx@incompatible }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\gls@warn@noidx@incompatible} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\gls@warn@noidx@incompatible}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@warn@noidx@incompatible} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@gls@warn@noidx@incompatible}[2]{% + #2\GlossariesExtraWarning{#1\space is incompatible with \string\makenoidxglossaries}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\gls@warn@noidxmakegloss@incompatible} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\gls@warn@noidxmakegloss@incompatible}[2]{% + \gls@warn@noidx@incompatible{#1}{#2}% + \gls@warn@makegloss@incompatible{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\gls@defdocnewglossaryentry} % Modify \cs{gls@defdocnewglossaryentry} so that it checks % the \pkgopt{docdef} value. @@ -5039,6 +5879,7 @@ Dickimaw Books\\ \def\glsxtr@keylist{##1}% \@Glsxtr } + \glsmfuaddmap{\glsxtr}{\Glsxtr} % \end{macrocode} %\end{macro} % @@ -5093,6 +5934,7 @@ Dickimaw Books\\ \def\glsxtr@keylist{##1}% \@Glsxtrpl } + \glsmfuaddmap{\glsxtrpl}{\Glsxtrpl} % \end{macrocode} %\end{macro} % @@ -5162,7 +6004,7 @@ Dickimaw Books\\ \@onlypreamble\GlsXtrEnableOnTheFly % \end{macrocode} % -%\subsection{Existing Glossary Style Modifications} +%\subsubsection{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 @@ -5175,7 +6017,18 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style}. +%\begin{macro}{\glsxtrpreglossarystyle} +%\changes{1.49}{2022-10-14}{new} +%A hook to initialise default definitions for style commands. +% \begin{macrocode} +\newcommand{\glsxtrpreglossarystyle}{% + \renewcommand*{\glssubgroupheading}[4]{\glsgroupheading{##4}}% +} +% \end{macrocode} +%\end{macro} +% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style} +% and reset \cs{glssubgroupheading} in case the style doesn't +% support it. %\begin{macro}{\setglossarystyle} % \begin{macrocode} \renewcommand*{\setglossarystyle}[1]{% @@ -5184,12 +6037,16 @@ Dickimaw Books\\ \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}% }% {% + \glsxtrpreglossarystyle \csname @glsstyle@#1\endcsname % \end{macrocode} % Only set the current style if it exists. % \begin{macrocode} \protected@edef\@glsxtr@current@style{#1}% }% +% \end{macrocode} +% Set this as the default, if a default hasn't been set. +% \begin{macrocode} \ifx\@glossary@default@style\relax \protected@edef\@glossary@default@style{#1}% \fi @@ -5197,7 +6054,7 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -% In case we have an old version of \styfmt{glossaries}: +% In case we have an old version of \sty{glossaries}: % \begin{macrocode} \ifdef\@glossary@default@style {} @@ -5435,7 +6292,7 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\subsection{Entry Formatting, Hyperlinks and Indexing} +%\subsubsection{Entry Formatting, Hyperlinks and Indexing} % %\begin{macro}{\glsentryfmt} % Change default entry format. Use the generic format for regular @@ -5480,13 +6337,471 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%Some formatting commands (such as highlighting or letter spacing) may +%require expandable content in the argument, so also provide a formatting +%command for use within \cs{glsgenentryfmt} for those instances. +% +%\begin{macro}{\glsxtrdefaultentrytextfmt} +%\changes{1.49}{2022-10-14}{new} +%This is the default command that \cs{glsxtrgenentrytextfmt} is initialised to +%within \cs{@gls@link}. +% \begin{macrocode} +\newcommand{\glsxtrdefaultentrytextfmt}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrattrentrytextfmt} +%\changes{1.49}{2022-10-14}{new} +%Provide a convenient command that applies the formatting according to +%the category attribute. This isn't used by default as this inner formatting +%should rarely be needed and increases complexity. +% \begin{macrocode} +\newcommand{\glsxtrattrentrytextfmt}[1]{% + \glshasattribute{\glslabel}{innertextformat}% + {% + \csuse{\glsgetattribute{\glslabel}{innertextformat}}{#1}% + }% + {#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgenentrytextfmt} +%\changes{1.49}{2022-10-14}{new} +%This command is a user-level command to allow it to be included in custom +%formats or styles but it should not be redefined at the user level +%as it's redefined within \cs{@gls@link} (similar to other style commands, such +%as \cs{glscapscase}. Redefine \cs{glsxtrdefaultentrytextfmt} to change +%the default definition for this command. +% \begin{macrocode} +\newcommand*{\glsxtrgenentrytextfmt}{\glsxtrdefaultentrytextfmt} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field} +%\end{definition} +%Provide a convenient way of applying a formatting command to the actual +%field contents. No check for existence. +% +%Note this command intentionally isn't robust, as it's possible that +%a user may want to redefine an abbreviation command to use +%\cs{MakeLowercase}, for example, to use smallcaps when +%abbreviations have been defined with the short version in capitals. +%Using \cs{newrobustcmd} will break that case. +% \begin{macrocode} +\newcommand*{\glsfmtfield}[4]{% + \expandafter\expandafter\expandafter + #2\expandafter\expandafter\expandafter + {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{Glsfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field} +%\end{definition} +%As above but convert first letter to uppercase. +%Note that if the formatting command can go outside of \cs{makefirstuc} +%then it can simply be applied around the appropriate command that expands +%to the field value. For example, +%\begin{verbatim} +%\emph{\Glsentrytext{label}} +%\end{verbatim} +%instead of +%\begin{verbatim} +%\Glsfmtfield{}{\emph}{sample}{text} +%\end{verbatim} +% +%Note this command intentionally isn't robust for the same reason as +%above. The expansion allows \cs{makefirstuc} to pick up any +%mappings or blockers before the content is passed to +%\cs{MFUsentencecase}. +% \begin{macrocode} +\newcommand*{\Glsfmtfield}[4]{% + \ifx#2\@firstofone + \expandafter\expandafter\expandafter + \glssentencecase\expandafter\expandafter\expandafter + {% + \csname glo@\glsdetoklabel{#3}@#4\endcsname #1% + }% + \else + \expandafter\expandafter\expandafter + \glssentencecase\expandafter\expandafter\expandafter + {% + \expandafter\expandafter\expandafter + #2\expandafter\expandafter\expandafter + {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}% + }% + \fi +} +\glsmfuaddmap{\glsfmtfield}{\Glsfmtfield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{GLSfmtfield}\marg{insert}\marg{cs}\marg{label}\marg{field} +%\end{definition} +%As above but convert all to uppercase. +%The expansion is in case we have an older kernel. +% \begin{macrocode} +\newcommand*{\GLSfmtfield}[4]{% + \ifx#2\@firstofone + \expandafter\expandafter\expandafter + \glsuppercase\expandafter\expandafter\expandafter + {% + \csname glo@\glsdetoklabel{#3}@#4\endcsname #1% + }% + \else + \expandafter\expandafter\expandafter + \glsuppercase\expandafter\expandafter\expandafter + {% + \expandafter\expandafter\expandafter + #2\expandafter\expandafter\expandafter + {\csname glo@\glsdetoklabel{#3}@#4\endcsname #1}% + }% + \fi +} +\glsmfublocker{\GLSfmtfield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtinsert} +%\changes{1.49}{2022-10-14}{new} +%Formats \cs{glsinsert}. +% \begin{macrocode} +\newcommand*{\glsfmtinsert}{% + \ifdefempty\glsinsert{}% + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsinsert}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtinsert} +%\changes{1.49}{2022-10-14}{new} +%As above but all caps. +% \begin{macrocode} +\newcommand*{\GLSfmtinsert}{% + \ifdefempty\glsinsert{}% + {% + \expandafter\glsuppercase\expandafter + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsinsert}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifapplyinnerfmtfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsifapplyinnerfmtfield}\marg{label}\marg{field}\marg{true}\marg{false} +%\end{definition} +%Does \meta{true} if \cs{glsgenentryfmt} should encapsulate the +%given field with the inner format otherwise does \meta{false}. +% \begin{macrocode} +\newcommand*{\glsifapplyinnerfmtfield}[4]{% + \ifcsundef{@glo@\glsdetoklabel{#1}@innerfmt@fields}% + {#3}% + {\xifinlistcs{#2}{@glo@\glsdetoklabel{#1}@innerfmt@fields}{#4}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsexclapplyinnerfmtfield} +%\changes{1.49}{2022-10-14}{new} +%Adds the field to the exclusion list. This typically means that the +%field value already contains the inner formatting. +% \begin{macrocode} +\newcommand*{\glsexclapplyinnerfmtfield}[2]{% + \listcseadd{@glo@\glsdetoklabel{#1}@innerfmt@fields}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsgenentryfmt} +%\changes{1.49}{2022-10-14}{added redefinition} +% Redefine to use \cs{glsxtrgenentrytextfmt} +% \begin{macrocode} +\renewcommand*{\glsgenentryfmt}{% + \ifdefempty\glscustomtext + {% + \glsifplural + {% +% \end{macrocode} +% Plural form +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% Don't adjust case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{plural}% + {% + \expandafter\glsaccessfmtplural\expandafter{\glsinsert}% + {\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\glsaccessplural{\glslabel}\glsfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{firstpl}% + {% + \expandafter\glsaccessfmtfirstplural\expandafter{\glsinsert}% + {\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\glsaccessfirstplural{\glslabel}\glsfmtinsert}% + }% + }% + {% +% \end{macrocode} +% Make first letter upper case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use. +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{plural}% + {% + \expandafter\Glsaccessfmtplural\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\Glsaccessplural{\glslabel}\glsfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{firstpl}% + {% + \expandafter\Glsaccessfmtfirstplural\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\Glsaccessfirstplural{\glslabel}\glsfmtinsert}% + }% + }% + {% +% \end{macrocode} +% Make all upper case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{plural}% + {% + \expandafter\GLSaccessfmtplural\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\GLSaccessplural{\glslabel}\GLSfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{firstpl}% + {% + \expandafter\GLSaccessfmtfirstplural\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\GLSaccessfirstplural{\glslabel}\GLSfmtinsert}% + }% + }% + }% + {% +% \end{macrocode} +% Singular form +% \begin{macrocode} + \glscapscase + {% +% \end{macrocode} +% Don't adjust case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{text}% + {% + \expandafter\glsaccessfmttext\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\glsaccesstext{\glslabel}\glsfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{first}% + {% + \expandafter\glsaccessfmtfirst\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\glsaccessfirst{\glslabel}\glsfmtinsert}% + }% + }% + {% +% \end{macrocode} +% Make first letter upper case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{text}% + {% + \expandafter\Glsaccessfmttext\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\Glsaccesstext{\glslabel}\glsfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{first}% + {% + \expandafter\Glsaccessfmtfirst\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\Glsaccessfirst{\glslabel}\glsfmtinsert}% + }% + }% + {% +% \end{macrocode} +% Make all upper case +% \begin{macrocode} + \ifglsused\glslabel + {% +% \end{macrocode} +% Subsequent use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{text}% + {% + \expandafter\GLSaccessfmttext\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\GLSaccesstext{\glslabel}\GLSfmtinsert}% + }% + {% +% \end{macrocode} +% First use +% \begin{macrocode} + \glsifapplyinnerfmtfield{\glslabel}{first}% + {% + \expandafter\GLSaccessfmtfirst\expandafter + {\glsinsert}{\glsxtrgenentrytextfmt}{\glslabel}% + }% + {\GLSaccessfirst{\glslabel}\GLSfmtinsert}% + }% + }% + }% + }% + {% +% \end{macrocode} +% Custom text provided in \cs{glsdisp}, in which case the formatting +% should already be applied. +% \begin{macrocode} + \glscustomtext + }% +} +% \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, +% commands in the \sty{glossaries} package, but it might be useful +% for the post-link 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}{\glsxtrifwasglslike} +%\changes{1.49}{2022-10-14}{new} +%For use in the post-link hook, this indicates whether or not +%the hook follows a \cs{gls}-like command. +% \begin{macrocode} +\newcommand*{\glsxtrifwasglslike}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifwasglslikeandfirstuse} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifwasglslikeandfirstuse}[2]{% + \glsxtrifwasglslike + {% + \glsxtrifwasfirstuse{#1}{#2}% + }{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifwassubsequentuse} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifwassubsequentuse}[2]{% + \glsxtrifwasglslike + {% + \glsxtrifwasfirstuse{#2}{#1}% + }{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifallcaps} +%\changes{1.49}{2022-10-14}{new} +%Shortcut. +% \begin{macrocode} +\newcommand*{\glsxtrifallcaps}[2]{\glscapscase{#2}{#1}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrcurrentfield} +%\changes{1.49}{2022-10-14}{new} +%Another placeholder to find out information about the calling +%command. This will be empty for the \cs{gls} and +%\cs{glsxtrfull} set of commands and will be the singular field otherwise. +% \begin{macrocode} +\newcommand*{\glsxtrcurrentfield}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@shortfieldname} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@shortfieldname}{short} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifwassubsequentorshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifwassubsequentorshort}[2]{% + \glsxtrifwasglslike + {% + \glsxtrifwasfirstuse{#2}{#1}% + }% + {\ifdefequal\glsxtrcurrentfield\glsxtr@shortfieldname{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% %\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 @@ -5514,6 +6829,10 @@ Dickimaw Books\\ %Save local setting. % \begin{macrocode} \@gls@save@glslocal +% \end{macrocode} +%Initialise preunset, prereset and postunset +% \begin{macrocode} + \glsinitreunsets \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper \def\glscustomtext{#4}% \@glsxtr@field@linkdefs @@ -5536,6 +6855,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@gls@\@gls@ \def\@gls@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@gls@{#1}{#2}% }% @@ -5548,6 +6868,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@glspl@\@glspl@ \def\@glspl@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@glspl@{#1}{#2}% }% @@ -5560,6 +6881,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@Gls@\@Gls@ \def\@Gls@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@Gls@{#1}{#2}% }% @@ -5572,6 +6894,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@Glspl@\@Glspl@ \def\@Glspl@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@Glspl@{#1}{#2}% }% @@ -5584,6 +6907,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@GLS@\@GLS@ \def\@GLS@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@GLS@{#1}{#2}% }% @@ -5597,6 +6921,7 @@ Dickimaw Books\\ % \begin{macrocode} \let\@glsxtr@org@GLSpl@\@GLSpl@ \def\@GLSpl@#1#2{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \@glsxtr@org@GLSpl@{#1}{#2}% }% @@ -5611,12 +6936,13 @@ Dickimaw Books\\ %argument. % \begin{macrocode} \renewcommand*{\@glsdisp}[3][]{% + \def\glsxtrcurrentfield{}% \@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\glscustomtext{\glsxtrgenentrytextfmt{#3}}% \def\glsinsert{}% \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}% \@gls@link[#1]{#2}{\@glo@text}% @@ -5627,11 +6953,12 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\begin{macro}{\@gls@@link@} +%\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][]{% + \def\glsxtrcurrentfield{}% \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexistsordo{#2}% {% @@ -5641,8 +6968,9 @@ Dickimaw Books\\ % Post-link hook commands need initialising. % \begin{macrocode} \def\glscustomtext{#3}% + \def\glsinsert{}% \@glsxtr@field@linkdefs - \@gls@link[#1]{#2}{#3}% + \@gls@link[#1]{#2}{\glsxtrgenentrytextfmt{#3}}% }% {% \glstextformat{#3}% @@ -5678,7 +7006,128 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -% Define a \gloskey[glslink]{wrgloss} key to determine whether to +%\begin{macro}{\setupglslink} +%\changes{1.49}{2022-10-14}{new} +%Shortcut command to set glslink options. +% \begin{macrocode} +\newcommand*{\setupglslink}[1]{\setkeys{glslink}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\setupglsadd} +%\changes{1.49}{2022-10-14}{new} +%Shortcut command to set glsadd options. +% \begin{macrocode} +\newcommand*{\setupglsadd}[1]{\setkeys{glsadd}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@do@glsprereset} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@gls@do@glsprereset}[1]{} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\define@choicekey{glslink}{prereset}% +[\@glsxtr@preresetval\@glsxtr@preresetnr]% +{none,local,global}[local]% +{% + \ifcase\@glsxtr@preresetnr + \let\@gls@do@glsprereset\@gobble + \or + \def\@gls@do@glsprereset{% + \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper + \let\glsxtrifwasfirstuse\@firstoftwo\glslocalreset}% + \or + \def\@gls@do@glsprereset{% + \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper + \let\glsxtrifwasfirstuse\@firstoftwo\glsreset}% + \fi +} +% \end{macrocode} +% +%\begin{macro}{\@gls@do@glspreunset} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@gls@do@glspreunset}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@glslink@hyper@update@hook} +%\changes{1.49}{2022-10-14}{new} +%This hook was only introduced to \sty{glossaries} v4.50, so if +%isn't defined, need to patch the hyper key. +% \begin{macrocode} +\ifdef\@gls@glslink@hyper@update@hook +{% + \renewcommand*{\@gls@glslink@hyper@update@hook}{% + \let\@gls@if@glslink@hyper@updated\@firstoftwo + } +} +{ + \newcommand*{\@gls@glslink@hyper@update@hook}{% + \let\@gls@if@glslink@hyper@updated\@firstoftwo + } + \renewcommand*{\KV@glslink@hyper}[1]{% + \XKV@plfalse\XKV@sttrue + \XKV@checkchoice[\XKV@resa ]{#1}{true,false}% + {\csname KV@glslink@hyper\XKV@resa\endcsname\@gls@glslink@hyper@update@hook}% + } +} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\define@choicekey{glslink}{preunset}% +[\@glsxtr@preunsetval\@glsxtr@preunsetnr]% +{none,local,global}[local]% +{% + \ifcase\@glsxtr@preunsetnr + \let\@gls@do@glspreunset\@gobble + \or + \def\@gls@do@glspreunset{% + \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo\glslocalunset}% + \or + \def\@gls@do@glspreunset{% + \let\@gls@link@postkeys@checkfirsthyper\do@gls@link@checkfirsthyper + \let\glsxtrifwasfirstuse\@secondoftwo\glsunset}% + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\define@choicekey{glslink}{postunset}% +[\@glsxtr@postunsetval\@glsxtr@postunsetnr]% +{none,local,global}[global]% +{% + \ifcase\@glsxtr@postunsetnr + \let\@gls@restore@glslocal\@gls@ignore@restore@glslocal + \or + \let\@gls@restore@glslocal\@gls@default@restore@glslocal + \KV@glslink@localtrue + \or + \let\@gls@restore@glslocal\@gls@default@restore@glslocal + \KV@glslink@localfalse + \fi +} +% \end{macrocode} +% +%\begin{macro}{\glsinitreunsets} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsinitreunsets}{% + \let\@gls@do@glspreunset\@gobble + \let\@gls@do@glsprereset\@gobble + \let\@gls@restore@glslocal\@gls@default@restore@glslocal + \@glsxtrbuffer@check@repeats +} +% \end{macrocode} +%\end{macro} +% +% Define \gloskey[glslink]{wrgloss} key to determine whether to % write the glossary information before or after the link text. % \begin{macrocode} \define@choicekey{glslink}{wrgloss}% @@ -5713,6 +7162,29 @@ Dickimaw Books\\ % %\end{macro} % +%\begin{macro}{\@glsxtr@current@textformat@csname} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@current@textformat@csname}{glstextformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@current@innertextformat@csname} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@current@innertextformat@csname}{glsxtrdefaultentrytextfmt} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrassignlinktextfmt} +%\changes{1.49}{2022-10-14}{new} +%Used to assign \cs{glstextformat} and \cs{glsxtrgenentrytextfmt} +%in the post-link hook for \qt{postfootnote} abbreviation styles. +% \begin{macrocode} +\newcommand*{\glsxtrassignlinktextfmt}{} +% \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. @@ -5721,6 +7193,24 @@ Dickimaw Books\\ \ifcsdef{#1} {% \letcs{\@glsxtr@local@textformat}{#1}% + \def\@glsxtr@current@textformat@csname{#1}% + }% + {% + \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@local@innertextformat} +%\changes{1.49}{2022-10-14}{new} +%Provide a key to locally change the inner text format. +% \begin{macrocode} +\define@key{glslink}{innertextformat}{% + \ifcsdef{#1} + {% + \letcs{\@glsxtr@local@innertextformat}{#1}% + \def\@glsxtr@current@innertextformat@csname{#1}% }% {% \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}% @@ -5832,13 +7322,31 @@ Dickimaw Books\\ % %\begin{macro}{\glslinkwrcontent} %\changes{1.48}{2021-11-22}{new} -%This may resolve \href{https://www.dickimaw-books.com/bugtracker.php?key=189}{issue \#189} -%but it may have unexpected consequences. This is currently provided -%as a trial. If it causes a problem then redefine without the -%grouping. If no issues are reported it will be added to the base -%package. +%\changes{1.49}{2022-10-14}{removed grouping} +%This was defined to add grouping to resolve \href{https://www.dickimaw-books.com/bugtracker.php?key=189}{issue \#189} +%but had unexpected consequences +%(\href{https://www.dickimaw-books.com/bugtracker.php?key=194}{issue +%\#194}) so the grouping has been removed and transferred to +%\cs{glsencapwrcontent}. % \begin{macrocode} -\providecommand*{\glslinkwrcontent}[1]{{#1}} +\providecommand*{\glslinkwrcontent}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslink@prefix@label} +%\changes{1.49}{2022-10-14}{new} +% Hyperlink using current prefix and label. +% \begin{macrocode} +\newcommand*{\@glslink@prefix@label}[1]{% + \@glslink{\glolinkprefix\glslabel}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@noglslink@prefix@label} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@noglslink@prefix@label}[1]{% + \glsdonohyperlink{\glolinkprefix\glslabel}{#1}} % \end{macrocode} %\end{macro} % @@ -5867,6 +7375,10 @@ Dickimaw Books\\ % \begin{macrocode} \@gls@save@glslocal % \end{macrocode} +%Initialise preunset, prereset and postunset +% \begin{macrocode} + \glsinitreunsets +% \end{macrocode} %Save current value of \cs{glolinkprefix}: % \begin{macrocode} \let\@glsxtr@org@glolinkprefix\glolinkprefix @@ -5874,6 +7386,12 @@ Dickimaw Books\\ %Initialise \cs{@glsxtr@local@textformat} % \begin{macrocode} \let\@glsxtr@local@textformat\relax + \def\@glsxtr@current@textformat@csname{glstextformat}% +% \end{macrocode} +%Initialise inner text format (1.49): +% \begin{macrocode} + \let\@glsxtr@local@innertextformat\glsxtrdefaultentrytextfmt + \def\@glsxtr@current@innertextformat@csname{glsxtrdefaultentrytextfmt}% % \end{macrocode} % Initialise thevalue and theHvalue (v1.19). % \begin{macrocode} @@ -5909,6 +7427,11 @@ Dickimaw Books\\ \do@glsdisablehyperinlist \do@gls@link@checkfirsthyper % \end{macrocode} +% Provide way of finding if hyper key has been explicitly set. +% \begin{macrocode} + \let\@gls@if@glslink@hyper@updated\@secondoftwo + \let\@gls@link@postkeys@checkfirsthyper\relax +% \end{macrocode} %User hook before options are set (new to v1.26): % \begin{macrocode} \glslinkpresetkeys @@ -5925,6 +7448,20 @@ Dickimaw Books\\ % \begin{macrocode} \glslinkpostsetkeys % \end{macrocode} +%Reset/unset if required: +% \begin{macrocode} + \@gls@do@glsprereset{#2}% + \@gls@do@glspreunset{#2}% +% \end{macrocode} +% If the hyper setting hasn't changed, and reset/unset option has +% been used, need to perform another check. +% \begin{macrocode} + \@gls@if@glslink@hyper@updated{}{\@gls@link@postkeys@checkfirsthyper}% +% \end{macrocode} +%Set inner text format (1.49): +% \begin{macrocode} + \let\glsxtrgenentrytextfmt\@glsxtr@local@innertextformat +% \end{macrocode} % Check \gloskey[glslink]{thevalue} and \gloskey[glslink]{theHvalue} % before saving (v1.19). % \begin{macrocode} @@ -5951,6 +7488,7 @@ Dickimaw Books\\ \ifcsdef{\@glsxtr@attrval}% {% \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}% + \let\@glsxtr@current@textformat@csname\@glsxtr@attrval }% {% \GlossariesExtraWarning{Unknown control sequence name @@ -5966,6 +7504,15 @@ Dickimaw Books\\ \let\@glsxtr@textformat\@glsxtr@local@textformat \fi % \end{macrocode} +%Setup formatting assignments for use in post-link hook. +% \begin{macrocode} + \edef\glsxtrassignlinktextfmt{% + \noexpand\def\noexpand\glslabel{\expandonce\glslabel}% + \noexpand\letcs\noexpand\glstextformat{\@glsxtr@current@textformat@csname}% + \noexpand\letcs\noexpand\glsxtrgenentrytextfmt + {\@glsxtr@current@innertextformat@csname}% + }% +% \end{macrocode} % Encapsulate link text and indexing. % \begin{macrocode} \glslinkwrcontent @@ -5974,22 +7521,22 @@ Dickimaw Books\\ % Do write if it should occur before the link text: % \begin{macrocode} \ifglsxtrinitwrglossbefore - \@do@wrglossary{#2}% + \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}% \fi % \end{macrocode} % Do the link text: % \begin{macrocode} \ifKV@glslink@hyper \ifglsxtr@hyperoutside - \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \@glslink@prefix@label{\@glsxtr@textformat{#3}}% \else - \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}% + \@glsxtr@textformat{\@glslink@prefix@label{#3}}% \fi \else \ifglsxtr@hyperoutside - \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \@noglslink@prefix@label{\@glsxtr@textformat{#3}}% \else - \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}% + \@glsxtr@textformat{\@noglslink@prefix@label{#3}}% \fi \fi % \end{macrocode} @@ -5997,7 +7544,7 @@ Dickimaw Books\\ % \begin{macrocode} \ifglsxtrinitwrglossbefore \else - \@do@wrglossary{#2}% + \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}% \fi }% % \end{macrocode} @@ -6091,7 +7638,7 @@ Dickimaw Books\\ %\changes{1.37}{2018-11-30}{ensure that \cs{glsadd} performs indexing} % \begin{macrocode} \KV@glslink@noindexfalse - \@@do@wrglossary{#2}% + \glsxtr@wrglossary@encap{#2}{\@@do@wrglossary{#2}}% }% \endgroup }% @@ -6111,14 +7658,17 @@ Dickimaw Books\\ %\end{macro} % %\begin{macro}{\@glsxtr@field@linkdefs} -% Default settings for \cs{@gls@field@link} +% Default settings for \cs{@gls@field@link}. %\changes{0.3}{2015-12-02}{new} +%\changes{1.49}{2022-10-14}{removed \cs{glsinsert}} +%Note that from v1.49, \cs{glsinsert} is set with +%\cs{glsxtrsaveinsert}. % \begin{macrocode} \newcommand*{\@glsxtr@field@linkdefs}{% + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty } % \end{macrocode} %\end{macro} @@ -6153,14 +7703,51 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrsaveinsert} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrsaveinsert}\marg{entry-label}\marg{insert} +%\end{definition} +%The insert argument isn't saved in \cs{glsinsert} for the +%\cs{glslike} commands, but provide a way to save it if it is +%required for the post-link hook. The default is to set +%\cs{glsinsert} to empty. This means that the insert won't appear in +%the post-link hook with commands like \cs{glsxtrfull} for the +%hyphen abbreviation styles. The entry label is provided in case the +%insert should only be saved for certain entries, such as those with +%a particular category. +% \begin{macrocode} +\newcommand*{\glsxtrsaveinsert}[2]{\def\glsinsert{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfullsaveinsert} +%\changes{1.49}{2022-10-14}{new} +%As above but specifically for commands like \cs{glsxtrfull} +% \begin{macrocode} +\newcommand*{\glsxtrfullsaveinsert}{\glsxtrsaveinsert} +% \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]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% - \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{text}% + {% + \@gls@field@font{\glsaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6173,9 +7760,24 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@GLStext@#1#2[#3]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}% - {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}% + {% + \glsifapplyinnerfmtfield{#2}{text}% + {% + \@gls@field@font{\GLSaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccesstext{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% } % \end{macrocode} %\end{macro} @@ -6188,9 +7790,19 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@Glstext@#1#2[#3]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}% - {\@gls@field@font{\Glsaccesstext{#2}#3}}% + {% + \glsifapplyinnerfmtfield{#2}{text}% + {% + \@gls@field@font{\Glsaccessfmttext{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccesstext{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6215,16 +7827,27 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@glsfirst@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]{#1}{#2}% - {\@gls@field@font{\glsaccessfirst{#2}#3}}% + {% + \glsifapplyinnerfmtfield{#2}{first}% + {% + \@gls@field@font{\glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6237,17 +7860,29 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@Glsfirst@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glscapscase\@secondofthree \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{first}% + {% + \@gls@field@font{\Glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6260,17 +7895,40 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@GLSfirst@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glscapscase\@thirdofthree \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}% + {#1}{#2}% + {% + \ifx\glscapscase\@thirdofthree + \glsifapplyinnerfmtfield{#2}{first}% + {% + \@gls@field@font{\GLSaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessfirst{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + \else + \glsifapplyinnerfmtfield{#2}{first}% + {% + \@gls@field@font{\glsaccessfmtfirst{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessfirst{#2}\glsxtrgenentrytextfmt{#3}}% + }% + \fi + }% } % \end{macrocode} %\end{macro} @@ -6285,9 +7943,22 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@glsplural@#1#2[#3]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}% - {\@gls@field@font{\glsaccessplural{#2}#3}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + [\let\glsifplural\@firstoftwo + \glsxtr@check@complexstyle{#2}{#3}% + ]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{plural}% + {% + \@gls@field@font{\glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6302,12 +7973,24 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@Glsplural@#1#2[#3]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{plural}% + {% + \@gls@field@font{\Glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6322,12 +8005,35 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@GLSplural@#1#2[#3]{% + \def\glsxtrcurrentfield{text}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}% + {#1}{#2}% + {% + \ifx\glscapscase\@thirdofthree + \glsifapplyinnerfmtfield{#2}{plural}% + {% + \@gls@field@font{\GLSaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessplural{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + \else + \glsifapplyinnerfmtfield{#2}{plural}% + {% + \@gls@field@font{\glsaccessfmtplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + \fi + }% } % \end{macrocode} %\end{macro} @@ -6340,17 +8046,29 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@glsfirstplural@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{firstpl}% + {% + \@gls@field@font{\glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6364,18 +8082,30 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@Glsfirstplural@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{firstpl}% + {% + \@gls@field@font{\Glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6389,19 +8119,41 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@GLSfirstplural@#1#2[#3]{% + \def\glsxtrcurrentfield{first}% \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} + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link [\let\glsxtrifwasfirstuse\@firstoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \glsxtrchecknohyperfirst{#2}% + \glsxtr@check@complexstyle{#2}{#3}% ]% - {#1}{#2}% - {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}% + {#1}{#2}% + {% + \ifx\glscapscase\@thirdofthree + \glsifapplyinnerfmtfield{#2}{firstpl}% + {% + \@gls@field@font{\GLSaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessfirstplural{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + \else + \glsifapplyinnerfmtfield{#2}{firstpl}% + {% + \@gls@field@font{\glsaccessfmtfirstplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessfirstplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + \fi + }% } % \end{macrocode} %\end{macro} @@ -6413,8 +8165,19 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@glsname@#1#2[#3]{% + \def\glsxtrcurrentfield{name}% \glsxtrassignfieldfont{#2}% - \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{name}% + {% + \@gls@field@font{\glsaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessname{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6427,10 +8190,20 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@Glsname@#1#2[#3]{% + \def\glsxtrcurrentfield{name}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]{#1}{#2}% - {\@gls@field@font{\Glsaccessname{#2}#3}}% + [\let\glscapscase\@secondofthree]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{name}% + {% + \@gls@field@font{\Glsaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessname{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6443,10 +8216,21 @@ Dickimaw Books\\ % The abbreviation format may also need setting. % \begin{macrocode} \def\@GLSname@#1#2[#3]{% + \def\glsxtrcurrentfield{name}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}% - {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{name}% + {% + \@gls@field@font{\GLSaccessfmtname{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessname{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6456,8 +8240,19 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set abbreviation and regular format} % \begin{macrocode} \def\@glsdesc@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% - \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{desc}% + {% + \@gls@field@font{\glsaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessdesc{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6469,10 +8264,20 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set abbreviation and regular format} % \begin{macrocode} \def\@Glsdesc@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]{#1}{#2}% - {\@gls@field@font{\Glsaccessdesc{#2}#3}}% + [\let\glscapscase\@secondofthree]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{desc}% + {% + \@gls@field@font{\Glsaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessdesc{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6484,9 +8289,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set abbreviation and regular format} % \begin{macrocode} \def\@GLSdesc@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{desc}% + {% + \@gls@field@font{\GLSaccessfmtdesc{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessdesc{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6498,11 +8315,22 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set abbreviation and regular format} % \begin{macrocode} \def\@glsdescplural@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo + [\let\glscapscase\@secondofthree \let\glsifplural\@firstoftwo - ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}% + ]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{descplural}% + {% + \@gls@field@font{\glsaccessfmtdescpl{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessdescplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6514,11 +8342,22 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set abbreviation and regular format} % \begin{macrocode} \def\@Glsdescplural@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo + [\let\glscapscase\@secondofthree \let\glsifplural\@firstoftwo - ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}% + ]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{descplural}% + {% + \@gls@field@font{\Glsaccessfmtdescpl{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessdescplural{#2}#3}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6529,14 +8368,25 @@ Dickimaw Books\\ %\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]{% +\def\@GLSdescplural@#1#2[#3]{% + \def\glsxtrcurrentfield{description}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@thirdoftwo + [\let\glscapscase\@thirdofthree \let\glsifplural\@firstoftwo ]% - {#1}{#2}% - {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{descplural}% + {% + \@gls@field@font{\GLSaccessfmtdescplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccessdescplural{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6546,8 +8396,19 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@glssymbol@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% - \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbol}% + {% + \@gls@field@font{\glsaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccesssymbol{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6559,10 +8420,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glssymbol@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbol}% + {% + \@gls@field@font{\Glsaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccesssymbol{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6574,9 +8446,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSsymbol@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbol}% + {% + \@gls@field@font{\GLSaccessfmtsymbol{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccesssymbol{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6588,11 +8472,22 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@glssymbolplural@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo + [\let\glscapscase\@secondofthree \let\glsifplural\@firstoftwo - ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}% + ]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbolplural}% + {% + \@gls@field@font{\glsaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccesssymbolplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6604,11 +8499,22 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glssymbolplural@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo + [\let\glscapscase\@secondofthree \let\glsifplural\@firstoftwo - ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}% + ]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbolplural}% + {% + \@gls@field@font{\Glsaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccesssymbolplural{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6619,14 +8525,48 @@ Dickimaw Books\\ %\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]{% +\def\@GLSsymbolplural@#1#2[#3]{% + \def\glsxtrcurrentfield{symbol}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@thirdoftwo + [\let\glscapscase\@thirdofthree \let\glsifplural\@firstoftwo ]% - {#1}{#2}% - {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{symbolplural}% + {% + \@gls@field@font{\GLSaccessfmtsymbolplural{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\GLSaccesssymbolplural{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuseri@} +% User 1 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuseri@#1#2[#3]{% + \def\glsxtrcurrentfield{user1}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useri}% + {% + \@gls@field@font{\glsaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6637,10 +8577,20 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuseri@#1#2[#3]{% + \def\glsxtrcurrentfield{user1}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]{#1}{#2}% - {\@gls@field@font{\Glsentryuseri{#2}#3}}% + [\let\glscapscase\@secondofthree]{#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useri}% + {% + \@gls@field@font{\Glsaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6651,9 +8601,48 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuseri@#1#2[#3]{% + \def\glsxtrcurrentfield{user1}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useri}% + {% + \@gls@field@font{\GLSaccessfmtuseri{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuseri{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuseri{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuserii@} +% User 2 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuserii@#1#2[#3]{% + \def\glsxtrcurrentfield{user2}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userii}% + {% + \@gls@field@font{\glsaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6664,10 +8653,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuserii@#1#2[#3]{% + \def\glsxtrcurrentfield{user2}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userii}% + {% + \@gls@field@font{\Glsaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6678,9 +8678,48 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuserii@#1#2[#3]{% + \def\glsxtrcurrentfield{user2}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userii}% + {% + \@gls@field@font{\GLSaccessfmtuserii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuserii{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuserii{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuseriii@} +% User 3 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuseriii@#1#2[#3]{% + \def\glsxtrcurrentfield{user3}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriii}% + {% + \@gls@field@font{\glsaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6691,10 +8730,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuseriii@#1#2[#3]{% + \def\glsxtrcurrentfield{user3}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriii}% + {% + \@gls@field@font{\Glsaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6705,9 +8755,48 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuseriii@#1#2[#3]{% + \def\glsxtrcurrentfield{user3}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriii}% + {% + \@gls@field@font{\GLSaccessfmtuseriii{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuseriii{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuseriii{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuseriv@} +% User 4 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuseriv@#1#2[#3]{% + \def\glsxtrcurrentfield{user4}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriv}% + {% + \@gls@field@font{\glsaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuseriv{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6718,10 +8807,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuseriv@#1#2[#3]{% + \def\glsxtrcurrentfield{user4}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriv}% + {% + \@gls@field@font{\Glsaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessuseriv{#2}#3}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6732,10 +8832,48 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuseriv@#1#2[#3]{% + \def\glsxtrcurrentfield{user4}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}% - {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{useriv}% + {% + \@gls@field@font{\GLSaccessfmtuseriv{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuseriv{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuseriv{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuserv@} +% User 5 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuserv@#1#2[#3]{% + \def\glsxtrcurrentfield{user5}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userv}% + {% + \@gls@field@font{\glsaccessfmtuserv{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuserv{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6746,10 +8884,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuserv@#1#2[#3]{% + \def\glsxtrcurrentfield{user5}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userv}% + {% + \@gls@field@font{\Glsfmtfield{#3}{\glsxtrgenentrytextfmt}{#2}{userv}}% + }% + {% + \@gls@field@font{\Glsentryuserv{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6760,9 +8909,48 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuserv@#1#2[#3]{% + \def\glsxtrcurrentfield{user5}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{userv}% + {% + \@gls@field@font{\GLSaccessfmtuserv{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuserv{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuserv{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsuservi@} +% User 6 field. +%\changes{1.49}{2022-10-14}{added redefinition} +% \begin{macrocode} +\def\@glsuservi@#1#2[#3]{% + \def\glsxtrcurrentfield{user6}% + \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{uservi}% + {% + \@gls@field@font{\glsaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6773,10 +8961,21 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@Glsuservi@#1#2[#3]{% + \def\glsxtrcurrentfield{user6}% \glsxtrassignfieldfont{#2}% + \glsxtrsaveinsert{#2}{#3}% \@gls@field@link - [\let\glscapscase\@secondoftwo]% - {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}% + [\let\glscapscase\@secondofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{uservi}% + {% + \@gls@field@font{\Glsaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \@gls@field@font{\Glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}% + }% + }% } % \end{macrocode} %\end{macro} @@ -6787,9 +8986,25 @@ Dickimaw Books\\ %\changes{1.04}{2016-05-02}{set regular format} % \begin{macrocode} \def\@GLSuservi@#1#2[#3]{% + \def\glsxtrcurrentfield{user6}% \glsxtrassignfieldfont{#2}% - \@gls@field@link[\let\glscapscase\@thirdoftwo]% - {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}% + \glsxtrsaveinsert{#2}{#3}% + \@gls@field@link[\let\glscapscase\@thirdofthree]% + {#1}{#2}% + {% + \glsifapplyinnerfmtfield{#2}{uservi}% + {% + \@gls@field@font{\GLSaccessfmtuservi{#3}{\glsxtrgenentrytextfmt}{#2}}% + }% + {% + \ifx\glscapscase\@thirdofthree + \@gls@field@font{\GLSaccessuservi{#2}% + \glsuppercase{\glsxtrgenentrytextfmt{#3}}}% + \else + \@gls@field@font{\glsaccessuservi{#2}\glsxtrgenentrytextfmt{#3}}% + \fi + }% + }% } % \end{macrocode} %\end{macro} @@ -6819,15 +9034,19 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%The following acr commands don't support innertextformat. +% %\begin{macro}{\@acrshort} %\changes{0.3}{2015-12-02}{added redefinition} % No case change. % \begin{macrocode} \def\@acrshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\acrshort\glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree @@ -6847,10 +9066,12 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree @@ -6870,16 +9091,18 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% - \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}% + \glsuppercase{\acronymfont{\glsaccessshort{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -6893,10 +9116,12 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree @@ -6916,10 +9141,12 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree @@ -6939,16 +9166,18 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% - \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}% + \glsuppercase{\acronymfont{\glsaccessshortpl{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -6962,10 +9191,12 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\acrlong\glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree @@ -6985,10 +9216,12 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree @@ -7008,16 +9241,18 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% - \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}% + \glsuppercase{\acronymfont{\glsaccesslong{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -7031,10 +9266,12 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree @@ -7054,10 +9291,12 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree @@ -7077,16 +9316,18 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree \let\glsinsert\@empty \def\glscustomtext{% - \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}% + \glsuppercase{\acronymfont{\glsaccesslongpl{#2}}#3}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -7106,6 +9347,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@acrfull#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\acrfull\glsxtrfull \acrfullfmt{#1}{#2}{#3}% } @@ -7116,6 +9358,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@Acrfull#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull \Acrfullfmt{#1}{#2}{#3}% } @@ -7126,6 +9369,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@ACRfull#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull \ACRfullfmt{#1}{#2}{#3}% } @@ -7136,6 +9380,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@acrfullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl \acrfullplfmt{#1}{#2}{#3}% } @@ -7146,6 +9391,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@Acrfullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl \Acrfullplfmt{#1}{#2}{#3}% } @@ -7156,6 +9402,7 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added redefinition} % \begin{macrocode} \def\@ACRfullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl \ACRfullplfmt{#1}{#2}{#3}% } @@ -7177,10 +9424,11 @@ Dickimaw Books\\ \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}}% + \newcommand*{#4}[1]{\@Glsentryfield{##1}{#1}}% % \end{macrocode} -% Now for the commands with links. First the version with no case -% change (same as before): +% Now for the commands with links. These currently don't support the +% inner text format. +% First the version with no case change: % \begin{macrocode} \ifcsdef{@gls@user@#1@}% {% @@ -7197,7 +9445,10 @@ Dickimaw Books\\ {\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}% + \def\glsxtrcurrentfield{#1}% + \glsxtrassignfieldfont{##2}% + \glsxtrsaveinsert{##2}{##3}% + \@gls@field@link{##1}{##2}{\@gls@field@font{#3{##2}##3}}% }% \newrobustcmd*{#5}{% \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}% @@ -7221,8 +9472,11 @@ Dickimaw Books\\ {\csuse{@Gls@user@#1@}{##1}{##2}}% {\csuse{@Gls@user@#1@}{##1}{##2}[]}}% \csdef{@Gls@user@#1@}##1##2[##3]{% + \def\glsxtrcurrentfield{#1}% + \glsxtrassignfieldfont{##2}% + \glsxtrsaveinsert{##2}{##3}% \@gls@field@link[\let\glscapscase\@secondofthree]% - {##1}{##2}{#4{##2}##3}% + {##1}{##2}{\@gls@field@font{#4{##2}##3}}% }% \newrobustcmd*{#6}{% \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}% @@ -7245,12 +9499,21 @@ Dickimaw Books\\ {\csuse{@GLS@user@#1@}{##1}{##2}}% {\csuse{@GLS@user@#1@}{##1}{##2}[]}}% \csdef{@GLS@user@#1@}##1##2[##3]{% + \def\glsxtrcurrentfield{#1}% + \glsxtrassignfieldfont{##2}% + \glsxtrsaveinsert{##2}{##3}% \@gls@field@link[\let\glscapscase\@thirdofthree]% - {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}% + {##1}{##2}{\@gls@field@font{\glsuppercase{#3{##2}##3}}}% }% \newrobustcmd*{#7}{% \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}% }% +% \end{macrocode} +%Add mappings. +% \begin{macrocode} + \glsmfuaddmap{#3}{#4}% + \glsmfuaddmap{#5}{#6}% + \glsmfublocker{#7}% }% {% \PackageError{glossaries-extra}{Key `#1' already exists}{}% @@ -7260,13 +9523,22 @@ Dickimaw Books\\ %\end{macro} % %\begin{macro}{\@gls@link@nocheckfirsthyper} -% Old versions of \styfmt{glossaries} don't define +% Old versions of \sty{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@postkeys@checkfirsthyper} +%\changes{1.49}{2022-10-14}{new} +%Need another check after preunset and postunset options have been +%applied. +% \begin{macrocode} +\newcommand*{\@gls@link@postkeys@checkfirsthyper}{} +% \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. @@ -7291,17 +9563,21 @@ Dickimaw Books\\ {\let\glsxtrifwasfirstuse\@secondoftwo} {\let\glsxtrifwasfirstuse\@firstoftwo}% % \end{macrocode} +%Similarly for \cs{glsxtrifwasglslike} +% \begin{macrocode} + \let\glsxtrifwasglslike\@firstoftwo +% \end{macrocode} % Store the category label for convenience. %\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} % \begin{macrocode} \protected@edef\glscategorylabel{\glscategory{\glslabel}}% - \ifglsused{\glslabel}% + \glsxtrifwasfirstuse {% - \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}% + \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}% {\KV@glslink@hyperfalse}{}% }% {% - \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}% + \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}% {\KV@glslink@hyperfalse}{}% }% \glslinkcheckfirsthyperhook @@ -7310,7 +9586,7 @@ Dickimaw Books\\ %\end{macro} % %\begin{macro}{\do@glsdisablehyperinlist} -% This command was introduced in \styfmt{glossaries} v4.19. If it +% This command was introduced in \sty{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} @@ -7353,6 +9629,25 @@ Dickimaw Books\\ \else \let\@gls@do@glsunset\glsunset \fi + \let\ifKV@glslink@local\if@org@KV@glslink@local +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@default@restore@glslocal} +%\changes{1.49}{2022-10-14}{new} +%Save default definition of \cs{@gls@restore@glslocal} +% \begin{macrocode} +\let\@gls@default@restore@glslocal\@gls@restore@glslocal +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@ignore@restore@glslocal} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@gls@ignore@restore@glslocal}{% + \let\@gls@do@glsunset\@gobble + \let\ifKV@glslink@local\if@org@KV@glslink@local } % \end{macrocode} %\end{macro} @@ -7365,8 +9660,19 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@gls@default@glslink@opts} +%\changes{1.49}{2022-10-14}{new} +%The noindex setting needs to be initialised, so it's now always set +%to false first before applying the default options. Otherwise, if +%noindex is explicitly set in a command like \cs{gls} then it won't +%get reset if the default option list doesn't set it. +% \begin{macrocode} +\newcommand*{\@gls@default@glslink@opts}{} +% \end{macrocode} +%\end{macro} +% %If \cs{@gls@setdefault@glslink@opts} has been defined -%(\styfmt{glossaries} v4.20) use it to set the default keys in +%(\sty{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} @@ -7375,6 +9681,7 @@ Dickimaw Books\\ { \renewcommand*{\@gls@setdefault@glslink@opts}{% \KV@glslink@noindexfalse + \expandafter\setupglslink\expandafter{\@gls@default@glslink@opts}% \@glsxtrsetaliasnoindex } } @@ -7385,6 +9692,7 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\@gls@setdefault@glslink@opts}{% \KV@glslink@noindexfalse + \expandafter\setupglslink\expandafter{\@gls@default@glslink@opts}% \@glsxtrsetaliasnoindex } \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts} @@ -7442,7 +9750,7 @@ Dickimaw Books\\ % \begin{macrocode} \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}% \glsxtr@saveentrycounter - \@@do@wrglossary{\glsxtralias{\glslabel}}% + \glsxtr@wrglossary@encap{\glsxtralias{\glslabel}}{\@@do@wrglossary{\glsxtralias{\glslabel}}}% \endgroup \fi } @@ -7474,10 +9782,23 @@ Dickimaw Books\\ % Set the default options for \cs{glslink} etc. % \begin{macrocode} \newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{% - \renewcommand*{\@gls@setdefault@glslink@opts}{% - \setkeys{glslink}{#1}% - \@glsxtrsetaliasnoindex - }% + \renewcommand*{\@gls@default@glslink@opts}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrAppToDefaultGlsOpts} +% \begin{macrocode} +\newcommand*{\GlsXtrAppToDefaultGlsOpts}[1]{% + \appto\@gls@default@glslink@opts{,#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrPreToDefaultGlsOpts} +% \begin{macrocode} +\newcommand*{\GlsXtrPreToDefaultGlsOpts}[1]{% + \preto\@gls@default@glslink@opts{#1,}% } % \end{macrocode} %\end{macro} @@ -7491,6 +9812,80 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtr@wrglossary@encap} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtr@@wrglossary@encap}\marg{label}\marg{whatsit} +%\end{definition} +%Encapsulate indexing whatsit and increment indexed count. +%See also \cs{glsxtrdowrglossaryhook} +% \begin{macrocode} +\newcommand*{\glsxtr@wrglossary@encap}[2]{\glsencapwrcontent{#2\@glsxtr@inc@indexcount{#1}}} +% \end{macrocode} +%\end{macro} +% +% Keep track of how many times an entry has been indexed. This doesn't test if +% the entry has been defined to allow for the first \LaTeX\ run before calling +% \app{bib2gls}. +%\begin{macro}{\@glsxtr@inc@indexcount} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@inc@indexcount}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@indexed} + {% + \csxdef{glo@\glsdetoklabel{#1}@indexed}{% + \expandafter\number\expandafter\numexpr\csname glo@\glsdetoklabel{#1}@indexed\endcsname+1}% + }% + {% + \csgdef{glo@\glsdetoklabel{#1}@indexed}{1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsentryindexcount} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsentryindexcount}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@indexed} + {\csuse{glo@\glsdetoklabel{#1}@indexed}}% + {0}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifindexed} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsifindexed}[3]{% + \ifcsdef{glo@\glsdetoklabel{#1}@indexed}% + {\expandafter\ifnum\csname glo@\glsdetoklabel{#1}@indexed\endcsname>0 #2\else#3\fi}% + {#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaddallunindexed} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsaddallunindexed}[1][\@glo@types]{% + \forallglsentries[#1]{\@glo@entry}% + {% + \glsifindexed{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsencapwrcontent} +%\changes{1.49}{2022-10-14}{new} +%This command was added to \sty{glossaries} v4.50 so may not be +%defined. +% \begin{macrocode} +\providecommand*{\glsencapwrcontent}[1]{{#1}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glswriteentry} % Redefine to test for \catattr{indexonlyfirst} category attribute. %\changes{1.44}{2020-03-23}{replaced \cs{ifglsused} with \cs{GlsXtrIfUnusedOrUndefined}} @@ -7521,7 +9916,7 @@ Dickimaw Books\\ % %\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. +% \cs{index} at the same time if required and add user hook. % \begin{macrocode} \appto\@@do@@wrglossary{\@glsxtr@do@@wrindex \glsxtrdowrglossaryhook{\@gls@label}% @@ -7563,7 +9958,10 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\@gls@alt@hyp@opt}[1]{% \let\glslinkvar\@firstofthree - \let\@gls@hyp@opt@cs#1\relax +% \end{macrocode} +%\changes{1.49}{2022-10-14}{changed \cs{let} to \cs{def} for \cs{@gls@hyp@opt@cs}} +% \begin{macrocode} + \def\@gls@hyp@opt@cs{#1}% \@ifstar{\s@gls@hyp@opt}% {\@ifnextchar+% {\@firstoftwo{\p@gls@hyp@opt}}% @@ -7627,7 +10025,7 @@ Dickimaw Books\\ {}% {% % \end{macrocode} -%Let \gls{bib2gls} know the modifier. +%Let \app{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]{}}% @@ -7637,6 +10035,32 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\GlsXtrSetPlusModifier} +% Allow user to override the plus modifier. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrSetPlusModifier}[1]{% + \renewcommand*{\p@gls@hyp@opt}[1][]{% + \let\glslinkvar\@thirdofthree + \@gls@hyp@opt@cs[#1,##1]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrSetStarModifier} +% Allow user to override the star modifier. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrSetStarModifier}[1]{% + \renewcommand*{\s@gls@hyp@opt}[1][]{% + \let\glslinkvar\@secondofthree + \@gls@hyp@opt@cs[#1,##1]% + } +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtr@org@dohyperlink} %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} @@ -7646,7 +10070,7 @@ Dickimaw Books\\ % %\begin{macro}{\glsnavhyperlink} %\changes{1.21}{2017-11-03}{patched} -%Since \ics{glsnavhyperlink} uses \cs{@glslink}, it's necessary to +%Since \cs{glsnavhyperlink} uses \cs{@glslink}, it's necessary to %patch it uses \cs{glsdohyperlink} instead of \cs{glsxtrdohyperlink}. %The simplest way to achieve this is to locally let %\cs{glsxtrdohyperlink} to \cs{glsdohyperlink}. @@ -7741,8 +10165,8 @@ Dickimaw Books\\ % 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 +% \cs{glsdohyperlink} so that it temporarily makes \cs{gls} behave +% like \cs{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} @@ -7814,7 +10238,7 @@ Dickimaw Books\\ %\begin{macro}{\glsxtrhyperlink} %\changes{1.19}{2017-09-09}{new} -%Allows integration with the base \styfmt{glossaries} package's +%Allows integration with the base \sty{glossaries} package's %\pkgopt[showtargets]{debug} option. % \begin{macrocode} \newcommand{\glsxtrhyperlink}[2]{% @@ -7849,7 +10273,7 @@ Dickimaw Books\\ %\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}. +% Redefine in case we have an old version of \sty{glossaries}. %This now uses \cs{def} rather than \cs{let} to allow for %redefinitions of \cs{glsdonohyperlink}. % \begin{macrocode} @@ -7877,8 +10301,8 @@ Dickimaw Books\\ %\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 +% This command was only introduced in \sty{glossaries} v4.20, so it may +% not be defined (therefore use \cs{def}). For older \sty{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 @@ -8021,7 +10445,7 @@ Dickimaw Books\\ \def\@GLSxtr@p@short@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% - \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}% + \glsuppercase{\glsabbrvfont{\glsentryshort{#2}}#3}% }% } % \end{macrocode} @@ -8057,7 +10481,7 @@ Dickimaw Books\\ \def\@GLSxtr@p@shortpl@#1#2[#3]{% {% \glssetabbrvfmt{\glscategory{#2}}% - \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}% + \glsuppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}% }% } % \end{macrocode} @@ -8081,7 +10505,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@long@#1#2[#3]{% - {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}} + {\glsuppercase{\glslongfont{\glsentrylong{#2}}#3}}} % \end{macrocode} %\end{macro} % @@ -8103,7 +10527,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@longpl@#1#2[#3]{% - {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}} + {\glsuppercase{\glslongfont{\glsentrylongpl{#2}}#3}}} % \end{macrocode} %\end{macro} % @@ -8125,7 +10549,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@acrshort@#1#2[#3]{% - {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}} + {\glsuppercase{\acronymfont{\glsentryshort{#2}}#3}}} % \end{macrocode} %\end{macro} % @@ -8147,7 +10571,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@acrshortpl@#1#2[#3]{% - {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}} + {\glsuppercase{\acronymfont{\glsentryshortpl{#2}}#3}}} % \end{macrocode} %\end{macro} % @@ -8169,7 +10593,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@acrlong@#1#2[#3]{% - {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}} + {\glsuppercase{\glsentrylong{#2}#3}}} % \end{macrocode} %\end{macro} % @@ -8191,7 +10615,7 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{new} % \begin{macrocode} \def\@GLSxtr@p@acrlongpl@#1#2[#3]{% - {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}} + {\glsuppercase{\glsentrylongpl{#2}#3}}} % \end{macrocode} %\end{macro} % @@ -8306,13 +10730,29 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrifintoc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glsxtrifintoc}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifheaduc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifheaduc}[3]{% + \glsxtrifintoc{#3}{\glsifattribute{#1}{headuc}{true}{#2}{#3}}% +} +% \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}% + \glsxtrifheaduc{#1}% {% - \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}% + \glsuppercase{\@gls@entry@field{#1}{#2}}% }% {% \@gls@entry@field{#1}{#2}% @@ -8325,42 +10765,16 @@ Dickimaw Books\\ %\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 +\newcommand{\glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glstexorpdfstring {% \protect\glsxtrifinmark {% \ifcsdef{glsxtrhead#1}% {% - {\protect\csuse{glsxtrhead#1}}% + {\protect\csuse{glsxtrhead#1}{#2}}% }% {% \glsxtr@headentry@p{#2}{#1}% @@ -8370,7 +10784,10 @@ Dickimaw Books\\ \@glsxtrp{#1}{#2}% }% }% - } + {% + \protect\@gls@entry@field{#2}{#1}% + }% + }% } % \end{macrocode} %\end{macro} @@ -8391,47 +10808,24 @@ Dickimaw Books\\ % %\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}). +%As above but use first letter upper case. % \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 +\newcommand{\Glsxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glstexorpdfstring {% \protect\glsxtrifinmark {% \ifcsdef{Glsxtrhead#1}% {% - {\protect\csuse{Glsxtrhead#1}}% + {\protect\csuse{Glsxtrhead#1}{#2}}% }% {% +% \end{macrocode} +% \cs{@Gls@entry@field} is robust as from \sty{glossaries} v4.50, +% but continue to use \cs{protect} in case an older version is installed. +% \begin{macrocode} \protect\@Gls@entry@field{#2}{#1}% }% }% @@ -8439,49 +10833,25 @@ Dickimaw Books\\ \@Glsxtrp{#1}{#2}% }% }% - } + {% + \MFUsentencecase{\@gls@entry@field{#2}{#1}}% + }% + }% } +\glsmfuaddmap{\glsxtrp}{\Glsxtrp} % \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}). +%As above but all upper case. The bookmarks use +%\cs{glsuppercase}, which is expandable as from +%\sty{mfirstuc} v2.08+. % \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 +\newcommand{\GLSxtrp}[2]{% + \protect\NoCaseChange + {% + \protect\glstexorpdfstring {% \protect\glsxtrifinmark {% @@ -8490,7 +10860,7 @@ Dickimaw Books\\ {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}% }% {% - \protect\mfirstucMakeUppercase + \protect\glsuppercase {% \protect\@gls@entry@field{#2}{#1}% }% @@ -8500,23 +10870,27 @@ Dickimaw Books\\ \@GLSxtrp{#1}{#2}% }% }% - } + {% + \protect\GLSxtrusefield{#2}{#1}% + }% + }% } +\glsmfublocker{\GLSxtrp} % \end{macrocode} %\end{macro} % % -%\subsection{Entry Counting} +%\subsubsection{Entry Counting} % -% The (use) entry counting mechanism from \styfmt{glossaries} is adjusted +% The (use) entry counting mechanism from \sty{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 +% attribute for given categories and redefine \cs{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}. +%\sectionref{sec:linkcount}. % % First adjust definitions of the unset and reset commands to % provide a hook, but changing the flag can cause problems in @@ -8569,8 +10943,12 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\@GlsXtrStartUnsetBuffering}{% \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer - \def\@glsxtr@unset@buffer{}% + \GlsXtrClearUnsetBuffer \let\@glsunset\@glsxtrbuffer@unset + \let\org@glsxtrbuffer@check@repeats\@glsxtrbuffer@check@repeats + \renewcommand*{\@glsxtrbuffer@check@repeats}{% + \@@glsxtrbuffer@check@repeats + }% } % \end{macrocode} %\end{macro} @@ -8581,8 +10959,12 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\s@GlsXtrStartUnsetBuffering}{% \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer - \def\@glsxtr@unset@buffer{}% + \GlsXtrClearUnsetBuffer \let\@glsunset\@glsxtrbuffer@nodup@unset + \let\org@glsxtrbuffer@check@repeats\@glsxtrbuffer@check@repeats + \renewcommand*{\@glsxtrbuffer@check@repeats}{% + \@@glsxtrbuffer@check@repeats + }% } % \end{macrocode} %\end{macro} @@ -8613,6 +10995,79 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@glsxtrbuffer@check@repeats} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtrbuffer@check@repeats}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrbuffer@check@repeats} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtrbuffer@check@repeats}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrbuffer@check@repeats@notused} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@@glsxtrbuffer@check@repeats@notused}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@glsxtrbuffer@do@check@repeat} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\@@glsxtrbuffer@do@check@repeat}{% + \expandafter\ifinlist\expandafter{\glslabel}{\@glsxtr@unset@buffer}% + {\@glslocalunset{\glslabel}}% + {\GlsXtrIfUnusedOrUndefined\glslabel + {\listxadd\@@glsxtrbuffer@check@repeats@notused{\glslabel}}{}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrUnsetBufferEnableRepeatLocal} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrUnsetBufferEnableRepeatLocal}{% + \def\@@glsxtrbuffer@check@repeats{\@@glsxtrbuffer@do@check@repeat}% + \def\@@glsxtrbuffer@check@repeats@notused{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrUnsetBufferDisableRepeatLocal} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrUnsetBufferDisableRepeatLocal}{% + \def\@@glsxtrbuffer@check@repeats{}% + \def\@@glsxtrbuffer@check@repeats@notused{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrResetLocalBuffer} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrResetLocalBuffer}{% + \forlistloop\@glslocalreset\@@glsxtrbuffer@check@repeats@notused + \GlsXtrClearUnsetBuffer +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrClearUnsetBuffer} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrClearUnsetBuffer}{% + \def\@@glsxtrbuffer@check@repeats@notused{}% + \def\@glsxtr@unset@buffer{}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrStopUnsetBuffering} %\changes{1.30}{2018-04-25}{new} % \begin{macrocode} @@ -8630,6 +11085,7 @@ Dickimaw Books\\ \let\@glsunset\@glsxtr@unset \forlistloop\@glsunset\@glsxtr@unset@buffer \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer + \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats } % \end{macrocode} %\end{macro} @@ -8641,6 +11097,7 @@ Dickimaw Books\\ \newcommand*{\s@GlsXtrStopUnsetBuffering}{% \forlistloop\@glslocalunset\@glsxtr@unset@buffer \let\@glsunset\@glsxtr@unset + \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats } % \end{macrocode} %\end{macro} @@ -8652,6 +11109,7 @@ Dickimaw Books\\ \newcommand*{\GlsXtrDiscardUnsetBuffering}{% \let\@glsunset\@glsxtr@unset \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer + \let\@glsxtrbuffer@check@repeats\org@glsxtrbuffer@check@repeats } % \end{macrocode} %\end{macro} @@ -8801,6 +11259,17 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\ifglsresetcurrcount} +%\changes{1.49}{2022-10-14}{new} +%Determine whether or not to reset the entry counter when the first +%use flag is reset. This conditional will already be defined with +%\sty{glossaries} v4.50+. +% \begin{macrocode} +\ifdef\glsresetcurrcountfalse{}{\newif\ifglsresetcurrcount} +\glsresetcurrcountfalse +% \end{macrocode} +%\end{macro} +% % Redefine the entry counting commands to take into account the %\catattr{entrycount} attribute. %\begin{macro}{\glsenableentrycount} @@ -8850,12 +11319,16 @@ Dickimaw Books\\ \let\@glsxtr@entrycount@org@reset\glsxtrpostreset \renewcommand*{\glsxtrpostreset}[1]{% \@glsxtr@entrycount@org@reset{##1}% - \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}% + \ifglsresetcurrcount + \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}% + \fi }% \let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset \renewcommand*{\glsxtrpostlocalreset}[1]{% \@glsxtr@entrycount@org@localreset{##1}% - \csdef{glo@\glsdetoklabel{##1}@currcount}{0}% + \ifglsresetcurrcount + \csdef{glo@\glsdetoklabel{##1}@currcount}{0}% + \fi }% % \end{macrocode} % Modifications to take into account the attributes that govern @@ -8887,6 +11360,21 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@@newglossaryentry@defcounters} +%\changes{1.49}{2022-10-14}{new} +%Allow for docdef=restricted. +% \begin{macrocode} +\renewcommand*{\@@newglossaryentry@defcounters}{% + \csdef{glo@\@glo@label @currcount}{0}% + \ifnum\@glsxtr@docdefval=2\relax + \ifcsdef{glo@\@glo@label @prevcount}{}{\csdef{glo@\@glo@label @prevcount}{0}}% + \else + \csdef{glo@\@glo@label @prevcount}{0}% + \fi +} +% \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 @@ -9059,11 +11547,12 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -% Add all upper case versions not provided by \styfmt{glossaries}. +% Add all upper case versions not provided by \sty{glossaries}. %\begin{macro}{\cGLS} %\changes{0.5}{2015-12-07}{new} % \begin{macrocode} \newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS} +\glsmfublocker{\cGLS} % \end{macrocode} %\end{macro} %\begin{macro}{\@cGLS} @@ -9090,7 +11579,7 @@ Dickimaw Books\\ % text. % \begin{macrocode} \newcommand*{\cGLSformat}[2]{% - \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}% + \expandafter\glsuppercase\expandafter{\cglsformat{#1}{#2}}% } % \end{macrocode} %\end{macro} @@ -9099,6 +11588,7 @@ Dickimaw Books\\ %\changes{0.5}{2015-12-07}{new} % \begin{macrocode} \newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl} +\glsmfublocker{\cGLSpl} % \end{macrocode} %\end{macro} %\begin{macro}{\@cGLSpl} @@ -9125,7 +11615,7 @@ Dickimaw Books\\ % text. % \begin{macrocode} \newcommand*{\cGLSplformat}[2]{% - \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}% + \expandafter\glsuppercase\expandafter{\cglsplformat{#1}{#2}}% } % \end{macrocode} %\end{macro} @@ -9394,11 +11884,12 @@ Dickimaw Books\\ {% % \end{macrocode} %\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} +%\changes{1.49}{2022-10-14}{added \cs{ifglsresetcurrcount}} % \begin{macrocode} \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% \ifcsundef{\@glsxtr@csname}% {}% - {\csgdef{\@glsxtr@csname}{0}}% + {\ifglsresetcurrcount\csgdef{\@glsxtr@csname}{0}\fi}% }% {}% }% @@ -9409,11 +11900,12 @@ Dickimaw Books\\ {% % \end{macrocode} %\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} +%\changes{1.49}{2022-10-14}{added \cs{ifglsresetcurrcount}} % \begin{macrocode} \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% \ifcsundef{\@glsxtr@csname}% {}% - {\csdef{\@glsxtr@csname}{0}}% + {\ifglsresetcurrcount\csdef{\@glsxtr@csname}{0}\fi}% }% {}% }% @@ -9564,13 +12056,13 @@ Dickimaw Books\\ %\end{macro} % % -%\subsection{Acronym Modifications} +%\subsubsection{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, +% \sty{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 +% The original \sty{glossaries} acronym code can be restored % with \cs{RestoreAcronyms}, but adjust \cs{SetGenericNewAcronym} % so that \cs{newacronym} adds the category. % @@ -9628,14 +12120,14 @@ Dickimaw Books\\ \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}% \renewcommand*{\ACRfullfmt}[3]{% \glslink[##1]{##2}{% - \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}% + \glsuppercase{\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}}}}% + \glsuppercase{\genplacrfullformat{##2}{##3}}}}% \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}% \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}% \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}% @@ -9674,7 +12166,7 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%Need to provide a replacement for \ics{forallacronyms} since +%Need to provide a replacement for \cs{forallacronyms} since %\cs{@glsacronymlists} isn't available. % %\begin{macro}{\@glsxtr@abbrlists} @@ -9785,7 +12277,7 @@ Dickimaw Books\\ % \end{macrocode} % %\begin{macro}{\RestoreAcronyms} -% Restore acronyms to \styfmt{glossaries} interface. +% Restore acronyms to \sty{glossaries} interface. % \begin{macrocode} \newcommand*{\RestoreAcronyms}{% % \end{macrocode} @@ -9849,15 +12341,30 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\subsection{Indexing and Displaying Glossaries} +%\begin{macro}{\glsabspace} +%\changes{1.49}{2022-10-14}{new} +% Similar to \cs{glsacspace} but includes inner formatting. +% \begin{macrocode} +\newrobustcmd*{\glsabspace}[1]{% + \settowidth{\dimen@}{(\glsfirstabbrvfont{\glsentryshort{#1}})}% + \ifdim\dimen@<\glsacspacemax + \glsxtrgenentrytextfmt{~}% + \else + \glsxtrgenentrytextfmt{ }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\subsubsection{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 +% base \sty{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}. +%\app{makeindex}\slash\app{xindy}. %\begin{macro}{\@glsxtr@reg@glosslist} %\changes{1.0}{2016-01-24}{new} % \begin{macrocode} @@ -9900,6 +12407,14 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@gls@automake@types} +%\changes{1.49}{2022-10-14}{new} +%Added to \sty{glossaries} v4.50 so may not be defined. +% \begin{macrocode} +\providecommand{\@gls@automake@types}{\@glo@types} +% \end{macrocode} +%\end{macro} +% % Redefine \cs{makeglossaries} to take an optional argument. % This should be empty for the usual behaviour (all glossaries % need processing with an indexing application) or a comma-separated @@ -9911,6 +12426,15 @@ Dickimaw Books\\ %\changes{1.42}{2020-02-03}{added \cs{@domakeglossaries}} % \begin{macrocode} \renewcommand*{\makeglossaries}[1][]{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \edef\glsindexingsetting{bib2gls-\ifglsxindy xindy\else makeindex\fi}% + \else + \ifglsxindy + \def\glsindexingsetting{xindy}% + \else + \def\glsindexingsetting{makeindex}% + \fi + \fi \@domakeglossaries {% \@glsxtr@if@record@only @@ -9939,13 +12463,20 @@ Dickimaw Books\\ {You may only use the hybrid \string\makeglossaries[...]\space with record=off option}% \else + \appto\glsindexingsetting{-noidx}% % \end{macrocode} %\cs{@gls@@automake@immediate} was introduced to \sty{glossaries} %v4.42 so it may not be defined. %\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} % \begin{macrocode} - \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% \protected@edef\@glsxtr@reg@glosslist{#1}% +% \end{macrocode} +% \cs{@gls@@automake@immediate} uses \cs{@gls@automake@types} +% as from v4.50. Older versions use \cs{@glo@types} which will +% include the noidx glossaries. +% \begin{macrocode} + \let\@gls@automake@types\@glsxtr@reg@glosslist + \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% \ifundef{\glswrite}{\newwrite\glswrite}{}% \protected@write\@auxout{}{\string\providecommand \string\@glsorder[1]{}} @@ -10136,17 +12667,41 @@ Dickimaw Books\\ \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% \fi }% +% \end{macrocode} +% Prohibit the use of \cs{glsxtrnoidxgroups}. +% \begin{macrocode} + \prohibit@glsxtrnoidxgroups +% \end{macrocode} +% Activate warnings for incompatible options. +% \begin{macrocode} + \let\gls@warn@makegloss@incompatible\@gls@warn@makegloss@incompatible }% }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\gls@warn@makegloss@incompatible} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\gls@warn@makegloss@incompatible}[2]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@warn@makegloss@incompatible} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@gls@warn@makegloss@incompatible}[2]{% + #2\GlossariesExtraWarning{#1\space is incompatible with \string\makeglossaries}% +} +% \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. % -%Earlier versions of \styfmt{glossaries-extra} simply saved the +%Earlier versions of \sty{glossaries-extra} simply saved the %original version of \cs{@printglossary} with \cs{let} %\cs{@glsxtr@orgprintglossary}. This was later changed to actually %defining \cs{@glsxtr@orgprintglossary} to something similar with @@ -10192,7 +12747,7 @@ Dickimaw Books\\ \ifx\@glossary@default@style\relax \GlossariesWarning{No default glossary style provided \MessageBreak for the glossary `\@glo@type'. \MessageBreak - Using deprecated fallback. \MessageBreak + Using fallback. \MessageBreak To fix this set the style with \MessageBreak \string\setglossarystyle\space or use the \MessageBreak style key=value option}% @@ -10259,7 +12814,7 @@ Dickimaw Books\\ % %\begin{macro}{\@glsxtr@nopostpunc} %Provide a command that works like \cs{nopostdesc} but only -%switches of the punctuation without suppressing the post-description +%switches off the punctuation without suppressing the post-description %hook. %\changes{1.22}{2017-11-08}{new} % \begin{macrocode} @@ -10368,6 +12923,20 @@ Dickimaw Books\\ } % \end{macrocode} % +%\changes{1.49}{2022-10-14}{added \texttt{preamble} key for \texttt{printgloss}} +% \begin{macrocode} +\define@key{printgloss}{preamble}{% + \renewcommand{\glossarypreamble}{#1}% +} +% \end{macrocode} +% +%\changes{1.49}{2022-10-14}{added \texttt{postamble} key for \texttt{printgloss}} +% \begin{macrocode} +\define@key{printgloss}{postamble}{% + \renewcommand{\glossarypostamble}{#1}% +} +% \end{macrocode} +% %\begin{macro}{\glsxtrsetglossarylabel} %\changes{1.39}{2019-03-22}{new} %Set the label for subsequent glossaries. If the label is @@ -10394,6 +12963,8 @@ Dickimaw Books\\ % \begin{macrocode} \define@key{printgloss}{leveloffset}{% \@glsxtr@assign@leveloffset#1\relax + \gls@warn@noidxmakegloss@incompatible{option `leveloffset'} + {\@glsxtr@leveloffset=0\relax}% } % \end{macrocode} % @@ -10432,10 +13003,27 @@ Dickimaw Books\\ % %\changes{1.44}{2020-03-23}{added groups key} % \begin{macrocode} -\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{} +\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{% + \ifglsxtr@printgloss@groups + \else + \gls@warn@noidxmakegloss@incompatible{option `groups'}% + {\glsxtr@printgloss@groupstrue}% + \fi +} \glsxtr@printgloss@groupstrue % \end{macrocode} % +%\changes{1.49}{2022-10-14}{added flatten key} +% \begin{macrocode} +\define@boolkey{printgloss}[glsxtrprintgloss]{flatten}[true]{% + \ifglsxtrprintglossflatten + \gls@warn@noidxmakegloss@incompatible{option `flatten'}% + {\glsxtrprintglossflattenfalse}% + \fi +} +\glsxtrprintglossflattenfalse +% \end{macrocode} +% %\begin{macro}{\glsdohypertarget} %\changes{1.20}{2017-09-11}{added redefinition} %Redefine to insert \cs{@glsxtrhypernameprefix} before the target @@ -10662,6 +13250,44 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrnoidxgroups} +%\changes{1.49}{2022-10-14}{new} +%Provide the ability to switch from unsrt to noidx code, but only +%for record=off. +% \begin{macrocode} +\newcommand*{\glsxtrnoidxgroups}{% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {% + \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle + \let\glsxtr@org@getgrouptitle\@gls@getgrouptitle + }% + {\PackageError{glossaries-extra}{Can't use + \string\glsxtrunsrtgrouptonoidx\space with record=\@glsxtr@record@setting} + {\string\glsxtrunsrtgrouptonoidx\space is only available with record=off}}% + \global\let\prohibit@glsxtrnoidxgroups\@glsxtrnoidxgroups@nomakegloss +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrnoidxgroups@nomakegloss} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\@glsxtrnoidxgroups@nomakegloss}{% + \PackageError{glossaries-extra}{Can't use + \string\glsxtrunsrtgrouptonoidx\space with \string\makeglossaries}{} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\prohibit@glsxtrnoidxgroups} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\prohibit@glsxtrnoidxgroups}{% + \global\let\glsxtrnoidxgroups\@glsxtrnoidxgroups@nomakegloss +} +% \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 @@ -10669,10 +13295,10 @@ Dickimaw Books\\ %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}}% + \protected@edef\@glsxtr@titlecsname{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlecsname + \ifcsdef{\@glsxtr@titlecsname} + {\letcs{#2}{\@glsxtr@titlecsname}}% {\glsxtr@org@getgrouptitle{#1}{#2}}% } \let\@gls@getgrouptitle\glsxtrgetgrouptitle @@ -11267,12 +13893,16 @@ Dickimaw Books\\ %enforces a .glstex extension to avoid conflict. % \begin{macrocode} \newcommand*{\glsxtrresourcefile}[2][]{% + \@glsxtr@if@record@only + {\renewcommand{\glsindexingsetting}{bib2gls}}% + {\edef\glsindexingsetting{bib2gls-\ifglsxindy xindy\else makeindex\fi}}% % \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 + \glsxtr@save@mfu \ifdefempty\GlsXtrDefaultResourceOptions {% \protected@write\@auxout{\glsxtrresourceinit}% @@ -11367,6 +13997,40 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrMFUsave} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrMFUsave}{% + \ifdef\MFUsave + {% + \AtBeginDocument{\MFUsave}% + }% + {% + \GlossariesExtraWarning{mfirstuc.sty too old, + \string\glsxtrMFUsave\space has no effect. You need to upgrade + to mfirstuc v2.08}% + }% + \let\glsxtrMFUsave\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@save@mfu} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\ifdef\MFUsave +{ + \newcommand*{\glsxtr@save@mfu}{% + \glsxtrMFUsave + \let\glsxtr@save@mfu\relax + } +} +{ + \newcommand*{\glsxtr@save@mfu}{} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtr@fields} %\changes{1.11}{2017-01-19}{new} % \begin{macrocode} @@ -11457,19 +14121,20 @@ Dickimaw Books\\ \protected@write\@auxout{}{\string\glsxtr@pluralsuffixes {\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}% {\glsxtrabbrvpluralsuffix}}% - \ifdef\inputencodingname - {% - \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}% - }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{encoding test replaced \cs{ifdef} with +%\cs{ifdefvoid} and reversed args} +% \begin{macrocode} + \ifdefvoid\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.) +%Assume UTF-8. +%\changes{1.49}{2022-10-14}{removed test for \sty{fontspec}} % \begin{macrocode} - \@ifpackageloaded{fontspec}% - {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}% - {}% + \protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}% + }% + {% + \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}% }% \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}% % \end{macrocode} @@ -11497,7 +14162,7 @@ Dickimaw Books\\ % \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}. +%\cs{makeglossaries} with \pkgopt{automake}. % \begin{macrocode} \ifx\@gls@doautomake\@gls@doautomake@err \let\@gls@doautomake\relax @@ -11522,14 +14187,22 @@ Dickimaw Books\\ % %\begin{macro}{\@glsxtr@do@automake@err} %\changes{1.14}{2017-04-18}{new} +%\sty{glossaries} v4.50+ now provides \cs{@gls@do@automake@err} so +%use that if defined. % \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.% - }% +\ifdef{\@gls@do@automake@err} +{ + \let\@gls@doautomake@err\@gls@do@automake@err +} +{ + \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} @@ -11557,10 +14230,19 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\glsxtr@counterrecord}[3]{% \glsxtrfieldlistgadd{#1}{record.#2}{#3}% + \glsxtrAddCounterRecordHook{#1}{#2}{#3}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrAddCounterRecordHook} +%\changes{1.49}{2022-10-14}{new} +%User hook. +% \begin{macrocode} +\newcommand{\glsxtrAddCounterRecordHook}[3]{} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtr@counterrecordhook} %\changes{1.12}{2017-02-03}{new} %Hook used by \cs{@glsxtr@dorecord}. @@ -11585,7 +14267,7 @@ Dickimaw Books\\ %\changes{1.12}{2017-02-03}{new} % \begin{macrocode} \newcommand*{\@glsxtr@docounterrecord}[1]{% - \protected@write\@auxout{}{\string\glsxtr@counterrecord + \@bibgls@write@aux{}{\string\glsxtr@counterrecord {\@gls@label}{#1}{\csuse{the#1}}}% } % \end{macrocode} @@ -11606,8 +14288,8 @@ Dickimaw Books\\ \newcommand*{\glsxtrglossentry}[1]{% \glsxtrtitleorpdforheading {\@glsxtrglossentry{#1}}% - {\glsentryname{#1}}% - {\glsxtrheadname{#1}}% + {\GlsXtrStandaloneEntryPdfName{#1}}% + {\GlsXtrStandaloneEntryHeadName{#1}}% } % \end{macrocode} %\end{macro} @@ -11634,8 +14316,26 @@ Dickimaw Books\\ \endgroup }% }% - {\glsentryname{#1}}% - {\glsxtrheadname{#1}}% + {\GlsXtrStandaloneEntryPdfName{#1}}% + {\GlsXtrStandaloneEntryHeadName{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryHeadName} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryHeadName}[1]{% + \glsxtrheadname{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryPdfName} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryPdfName}[1]{% + \glsentryname{#1}% } % \end{macrocode} %\end{macro} @@ -11682,31 +14382,49 @@ Dickimaw Books\\ \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}}% - }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{use default header if first argument empty} +% \begin{macrocode} + \glsxtrtitleorpdforheading + {\@glsxtrglossentryother{#2}{#3}{\GlsXtrStandaloneEntryHeadOther{#3}{#2}}}% + {\GlsXtrStandaloneEntryPdfOther{#2}{#3}}% + {\GlsXtrStandaloneEntryHeadOther{#3}{#2}}% }% {% \glsxtrtitleorpdforheading {\@glsxtrglossentryother{#2}{#3}{#1}}% - {\@gls@entry@field{#2}{#3}}% + {\GlsXtrStandaloneEntryPdfOther{#2}{#3}}% {#1}% }% } % \end{macrocode} %\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryHeadOther} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryHeadOther}[2]{% + \ifcsdef{glsxtrhead#2}% + {\csuse{glsxtrhead#2}{#1}}% + {\@gls@entry@field{\NoCaseChange{#1}}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrStandaloneEntryPdfOther} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlsXtrStandaloneEntryPdfOther}[2]{% + \@gls@entry@field{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtrglossentryother} %\changes{1.22}{2017-11-08}{new} +%\begin{definition} +%\cs{\@glsxtrglossentryother}\marg{entry-label}\marg{field}\marg{header} +%\end{definition} %As \cs{@glsxtrglossentry} but uses a different field. % \begin{macrocode} \newrobustcmd*{\@glsxtrglossentryother}[3]{% @@ -11723,11 +14441,14 @@ Dickimaw Books\\ \ifglshasparent{#1}% {\GlsXtrStandaloneSubEntryItem{#1}}% {\glsentryitem{#1}}% - \GlsXtrStandaloneEntryOther{#1}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{bug fix: corrected arguments to \cs{GlsXtrStandaloneEntryOther}} +% \begin{macrocode} + \GlsXtrStandaloneEntryOther{#1}{#2}% \endgroup }% }% - {\@gls@entry@field{#1}{#2}}% + {\GlsXtrStandaloneEntryPdfOther{#1}{#2}}% {#3}% } % \end{macrocode} @@ -11814,50 +14535,47 @@ Dickimaw Books\\ }% {% % \end{macrocode} -%\changes{1.16}{2017-06-15}{corrected misspelt command} +% Setup local commands. % \begin{macrocode} - \key@ifundefined{glossentry}{group}% - {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% - {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% - \def\@gls@currentlettergroup{}% + \@glsxtr@unsrt@gloss@init % \end{macrocode} %A loop within the tabular-like styles can cause problems, so -%move the loop outside. +%move the loop outside. The entire glossary will be saved in +%\cs{@glsxtr@doglossary}, which will be built up in the loop. % \begin{macrocode} \def\@glsxtr@doglossary{% \begin{theglossary}% \glossaryheader \glsresetentrylist }% +% \end{macrocode} +% Iterate over all entries in the current glossary and add the relevant commands to +% \cs{@glsxtr@doglossary}. +% \begin{macrocode} \expandafter\@for\expandafter\glscurrententrylabel\expandafter :\expandafter=\csname glolist@\@glo@type\endcsname\do{% \ifdefempty{\glscurrententrylabel} {}% {% % \end{macrocode} -%Provide a hook (for example to measure width). +%Initialise hooks % \begin{macrocode} - \let\glsxtr@process\@firstofone - \let\printunsrtglossaryskipentry - \@glsxtr@printunsrtglossaryskipentry - \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% + \@gls@xtr@initprocess % \end{macrocode} -%Don't check group for child entries. +%Process this entry (unless it has been skipped). % \begin{macrocode} \glsxtr@process {% \ifglsxtr@printgloss@groups % \end{macrocode} -% This still uses \cs{ifglshasparent} to determine whether or not to -% check for a change in the letter group. (It doesn't take the level -% offset into account because \app{bib2gls} only saves the group -% information for parentless entries.) +% Check if the group heading should be added and, if so, add it. +% \cs{@glsxtr@groupheading} will be empty if no group heading. % \begin{macrocode} - \ifglshasparent{\glscurrententrylabel}{}% + \glsxtraddgroup\glscurrententrylabel {% - \@glsxtr@checkgroup\glscurrententrylabel - \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter - {\@glsxtr@groupheading}% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% }% \fi % \end{macrocode} @@ -11877,6 +14595,89 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@glsxtr@unsrt@gloss@init} +%\changes{1.49}{2022-10-14}{new} +%Initialise hooks needed at the start. +% \begin{macrocode} +\newcommand*{\@glsxtr@unsrt@gloss@init}{% +% \end{macrocode} +%Determine how to obtain the group information. +%\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}% +% \end{macrocode} +%Initialise current group information. +% \begin{macrocode} + \def\@gls@currentlettergroup{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{save hierarchical level information} +%Need to keep track of the current group hierarchical level +% \begin{macrocode} + \def\@gls@currentlettergroup@level{-1}% +% \end{macrocode} +%and the current entry hierarchical level. +% \begin{macrocode} + \def\glscurrententrylevel{-1}% +% \end{macrocode} +% Initialise the root entry. This will be the most recent entry that +% doesn't have a parent. +% \begin{macrocode} + \def\glscurrentrootentry{}% +% \end{macrocode} +% Initialise the top-level entry. This will be the most recent entry that +% had level=0 (after adjustment). +% \begin{macrocode} + \def\glscurrenttoplevelentry{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@xtr@initprocess} +%\changes{1.49}{2022-10-14}{new} +%Initialise hooks needed for each iteration of the process loop. +% \begin{macrocode} +\newcommand*{\@gls@xtr@initprocess}{% +% \end{macrocode} +%Save the current hierarchical level (adjusted). +% \begin{macrocode} + \ifglsxtrprintglossflatten + \edef\glscurrententrylevel{\number\@glsxtr@leveloffset}% + \else + \edef\glscurrententrylevel{% + \number\numexpr\csname glo@\glscurrententrylabel @level\endcsname + + \@glsxtr@leveloffset}% + \fi +% \end{macrocode} +%If this level 0, update \cs{glscurrenttoplevelentry} +% \begin{macrocode} + \ifnum\glscurrententrylevel=0\relax + \let\glscurrenttoplevelentry\glscurrententrylabel + \fi +% \end{macrocode} +%If this entry doesn't have a parent, update \cs{glscurrentrootentry} +% \begin{macrocode} + \ifglsxtrprintglossflatten + \let\glscurrentrootentry\glscurrententrylabel + \else + \ifglshasparent{\glscurrententrylabel}{}% + {\let\glscurrentrootentry\glscurrententrylabel}% + \fi +% \end{macrocode} +%Initialise to do the current entry. +% \begin{macrocode} + \let\glsxtr@process\@firstofone +% \end{macrocode} +%Provide a way to skip the current entry. This will redefine +%\cs{glsxtr@process} to ignore its argument. +% \begin{macrocode} + \let\printunsrtglossaryskipentry\@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\printunsrtinnerglossary} %\changes{1.44}{2020-03-23}{new} %Similar to \cs{printunsrtglossary} but doesn't add the section @@ -11916,7 +14717,7 @@ Dickimaw Books\\ \ifx\@glossary@default@style\relax \GlossariesWarning{No default glossary style provided \MessageBreak for the glossary `\@glo@type'. \MessageBreak - Using deprecated fallback. \MessageBreak + Using fallback. \MessageBreak To fix this set the style with \MessageBreak \string\setglossarystyle\space or use the \MessageBreak style key=value option}% @@ -11989,43 +14790,42 @@ Dickimaw Books\\ \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% }% {% - \key@ifundefined{glossentry}{group}% - {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% - {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% - \def\@gls@currentlettergroup{}% +% \end{macrocode} +% Setup local commands. +% \begin{macrocode} + \@glsxtr@unsrt@gloss@init % \end{macrocode} %No header or reset. % \begin{macrocode} \def\@glsxtr@doglossary{}% +% \end{macrocode} +% Iterate over all entries in the current glossary and add the relevant commands to +% \cs{@glsxtr@doglossary}. +% \begin{macrocode} \expandafter\@for\expandafter\glscurrententrylabel\expandafter :\expandafter=\csname glolist@\@glo@type\endcsname\do{% \ifdefempty{\glscurrententrylabel} {}% {% % \end{macrocode} -%Provide a hook (for example to measure width). +%Initialise hooks % \begin{macrocode} - \let\glsxtr@process\@firstofone - \let\printunsrtglossaryskipentry - \@glsxtr@printunsrtglossaryskipentry - \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% + \@gls@xtr@initprocess % \end{macrocode} -%Don't check group for child entries. +%Process this entry (unless it has been skipped). % \begin{macrocode} \glsxtr@process {% \ifglsxtr@printgloss@groups % \end{macrocode} -% This still uses \cs{ifglshasparent} to determine whether or not to -% check for a change in the letter group. (It doesn't take the level -% offset into account because \app{bib2gls} only saves the group -% information for parentless entries.) +% Check if the group heading should be added and, if so, add it. +% \cs{@glsxtr@groupheading} will be empty if no group heading. % \begin{macrocode} - \ifglshasparent{\glscurrententrylabel}{}% + \glsxtraddgroup\glscurrententrylabel {% - \@glsxtr@checkgroup\glscurrententrylabel - \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter - {\@glsxtr@groupheading}% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% }% \fi % \end{macrocode} @@ -12046,6 +14846,24 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtraddgroup} +%\changes{1.49}{2022-10-14}{new} +%Now that \app{bib2gls} v3.0+ has the ability to store group labels +%for sub-levels, provide a way to allow for this. This checks if the entry has +%a parent, which was used originally, unless the flatten option has been used. +%\app{bib2gls} will redefine this in the .glstex file if the +%group-level setting is used. +% \begin{macrocode} +\newcommand*{\glsxtraddgroup}[2]{% + \ifglsxtrprintglossflatten + #2% + \else + \ifglshasparent{#1}{}{#2}% + \fi +} +% \end{macrocode} +%\end{macro} +% % %\begin{macro}{\printunsrtglossaryentryprocesshook} %\changes{1.21}{2017-11-03}{new} @@ -12064,7 +14882,7 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% % \end{macrocode} %\end{macro} % -%\begin{macro}{\printunsrtglossaryentryprocesshook} +%\begin{macro}{\@glsxtr@printunsrtglossaryskipentry} %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newcommand*{\@glsxtr@printunsrtglossaryskipentry}{% @@ -12152,11 +14970,18 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}% }% \renewcommand*{\glossarysection}[2][]{}% - \appto\glossarypostamble{\glspar\medskip\glspar}% + \appto\glossarypostamble{\printunsrtglossaryunitpostskip}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\printunsrtglossaryunitpostskip} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\printunsrtglossaryunitpostskip}{\glspar\medskip\glspar} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\print@noop@unsrtglossaryunit} %\changes{1.12}{2017-02-03}{new} % \begin{macrocode} @@ -12212,7 +15037,8 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% %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. +%be empty if no heading is required. The current hierarchical level +%must have first been saved to \cs{glscurrententrylevel}. % \begin{macrocode} \newcommand*{\@glsxtr@checkgroup}[1]{% \def\@glsxtr@groupheading{}% @@ -12228,20 +15054,56 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% \protected@edef\@glo@thislettergrp{% \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}% }% - \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% +% \end{macrocode} +%Need to keep track of the current group for the current level. +% \begin{macrocode} + \ifcsundef{@gls@currentlettergroup\romannumeral\glscurrententrylevel}% + {\csdef{@gls@currentlettergroup\romannumeral\glscurrententrylevel}{}}{}% +% \end{macrocode} +%Has the group label changed for the current level? +% \begin{macrocode} + \ifcsequal{@glo@thislettergrp}{@gls@currentlettergroup\romannumeral\glscurrententrylevel}% {}% {% - \ifdefempty{\@gls@currentlettergroup}{}% - {\def\@glsxtr@groupheading{\glsgroupskip}}% - \protected@eappto\@glsxtr@groupheading{% - \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% + \ifdefempty\@glo@thislettergrp + {}% + {% + \ifnum\glscurrententrylevel>0\relax + \protected@eappto\@glsxtr@groupheading{% + \noexpand\glssubgroupheading + {\@gls@currentlettergroup@level}{\glscurrententrylevel}% + {\csuse{glo@\glsdetoklabel{#1}@parent}}% + {\expandonce\@glo@thislettergrp}% + }% + \else + \ifdefempty{\@gls@currentlettergroup}{}% + {% + \def\@glsxtr@groupheading{\glsgroupskip}% + }% + \protected@eappto\@glsxtr@groupheading{% + \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% + }% + \fi + \let\@gls@currentlettergroup@level\glscurrententrylevel + \cslet{@gls@currentlettergroup\romannumeral\glscurrententrylevel}\@glo@thislettergrp }% }% - \let\@gls@currentlettergroup\@glo@thislettergrp } % \end{macrocode} %\end{macro} % +%\begin{macro}{\glssubgroupheading} +%\begin{definition} +%\cs{glssubgroupheading}\marg{previous level}\marg{level}\marg{parent}\marg{group label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +%Default definition uses the same format as the top-level heading. +%Note that this won't include the group skip. +% \begin{macrocode} +\newcommand*{\glssubgroupheading}[4]{\glsgroupheading{#4}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrLocationField} %\changes{1.37}{2018-11-30}{new} %Stores the internal name of the location field. @@ -12254,7 +15116,7 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% %\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. +%field and flatten option. % \begin{macrocode} \newcommand{\@glsxtr@noidx@do}[1]{% \ifglsentryexists{#1}% @@ -12265,7 +15127,11 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% % Use level number to determine whether or not this entry has a % parent. % \begin{macrocode} - \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax + \ifglsxtrprintglossflatten + \gls@level=\@glsxtr@leveloffset\relax + \else + \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax + \fi \ifnum\gls@level>0 \let\@glsxtr@ifischild\@firstoftwo \else @@ -12281,16 +15147,27 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% {% \ifdefvoid{\@gls@location}% {% - \ifdefvoid{\@gls@loclist}% - {% - \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}% - }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{check if location field has been changed} +%If \cs{GlsXtrLocationField} has been changed then don't fallback on +%\gloskey{loclist}. +% \begin{macrocode} + \ifdefstring{\GlsXtrLocationField}{location}% {% - \expandafter\subglossentry\expandafter{\number\gls@level}{#1}% + \ifdefvoid{\@gls@loclist}% {% - \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}% + }% + {% + \expandafter\subglossentry\expandafter{\number\gls@level}{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% }% }% + {% + \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}% + }% }% {% \expandafter\subglossentry\expandafter @@ -12303,16 +15180,27 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% % \begin{macrocode} \ifdefvoid{\@gls@location}% {% - \ifdefvoid{\@gls@loclist} - {% - \glossentry{#1}{}% - }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{check if location field has been changed} +%If \cs{GlsXtrLocationField} has been changed then don't fallback on +%\gloskey{loclist}. +% \begin{macrocode} + \ifdefstring{\GlsXtrLocationField}{location}% {% - \glossentry{#1}% + \ifdefvoid{\@gls@loclist} {% - \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + \glossentry{#1}{}% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% }% }% + {% + \glossentry{#1}{}% + }% }% {% \glossentry{#1}% @@ -12344,6 +15232,15 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% %help make it unique, but it might feasibly contain %\gloskey[glslink]{thevalue} where the value might contain commands.) % +%\begin{macro}{\glsxtrdoidentify} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrdoidentify}[1]{% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off{}{#1}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtr@providenewgls} %\changes{1.37}{2018-11-30}{new} % \begin{macrocode} @@ -12357,11 +15254,12 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% %\begin{macro}{\glsxtridentifyglslike} %\changes{1.37}{2018-11-30}{new} %Identify the command given in the second argument for the benefit -%of \gls{bib2gls}. +%of \app{bib2gls} and also identify command as a blocker for +%\cs{makefirstuc}. % \begin{macrocode} \newcommand{\glsxtridentifyglslike}[2]{% - \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off - {}% + \glsmfublocker{#2}% + \glsxtrdoidentify {% \@glsxtr@providenewgls \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}% @@ -12370,10 +15268,137 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\@glsxtr@providenewglsfamily} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@providenewglsfamily}{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslikefamily}[8]{}}% + \let\@glsxtr@providenewglsfamily\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtridentifyglsfamily} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtridentifyglsfamily}\marg{options}\marg{prefix}\marg{gls}\marg{glspl}\marg{Gls}\marg{Glspl}\marg{GLS}\marg{GLSpl} +%\end{definition} +%Identify the family of commands for the benefit +%of \app{bib2gls} and also establishes a sentence-case mapping. +% \begin{macrocode} +\newcommand{\glsxtridentifyglsfamily}[8]{% + \glsmfuaddmap{#3}{#5}% + \glsmfuaddmap{#4}{#6}% + \glsmfublocker{#7}% + \glsmfublocker{#8}% + \glsxtrdoidentify + {% + \@glsxtr@providenewglsfamily + \protected@write\@auxout{}{\string\@glsxtr@newglslikefamily{\detokenize{#1}}{\detokenize{#2}}{\detokenize{#3}}{\detokenize{#4}}{\detokenize{#5}}{\detokenize{#6}}{\detokenize{#7}}{\detokenize{#8}}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@providenewglslink} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@providenewglslink}{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslink}[2]{}}% + \let\@glsxtr@providenewglslink\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtridentifyglslink} +%\changes{1.49}{2022-10-14}{new} +%Identify the command given in the second argument for the benefit +%of \app{bib2gls} and identify the command as a blocker for +%\cs{makefirstuc}. +% \begin{macrocode} +\newcommand{\glsxtridentifyglslink}[2]{% + \glsmfublocker{#2}% + \glsxtrdoidentify + {% + \@glsxtr@providenewglslink + \protected@write\@auxout{}{\string\@glsxtr@newglslink{#1}{\string#2}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrnewglslink} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{@glsxtrnewglslink}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs +%name} +%\end{definition} +% \begin{macrocode} +\newcommand*{\@glsxtrnewglslink}[4]{% + \ifdef{#3}% + {% + \PackageError{glossaries-extra}{Command \string#3\space already +defined}{}% + }% + {% +% \end{macrocode} +%Write information to the aux file for bib2gls. +% \begin{macrocode} + \glsxtridentifyglslink{#2}{#3}% + \ifcsdef{@#4link@#2}% + {% + \advance\@glsxtrnewgls@inner by \@ne + \def\@glsxtrnewgls@innercsname{@#4link\number\@glsxtrnewgls@inner @#2}% + }% + {\def\@glsxtrnewgls@innercsname{@#4link@#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][]{% + \csname #4\endcsname{##1}{#2##2}% + }% + }% + {% + \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{% + \csname #4\endcsname{#1,##1}{#2##2}% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewglslink} +%\begin{definition} +%\cs{glsxtrnewglslink}\oarg{options}\marg{prefix}\marg{cs} +%\end{definition} +%The first argument prepends to the options and the second argument is the prefix. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewglslink}[3][]{% + \@glsxtrnewglslink{#1}{#2}{#3}{@gls@@link}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrnewglsdisp} +%\begin{definition} +%\cs{glsxtrnewglsdisp}\oarg{options}\marg{prefix}\marg{cs} +%\end{definition} +%The first argument prepends to the options and the second argument is the prefix. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrnewglsdisp}[3][]{% + \@glsxtrnewglslink{#1}{#2}{#3}{@glsdisp}% +} +% \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 +%\cs{@glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs %name} %\end{definition} % @@ -12437,6 +15462,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\glsxtrnewglslike}[6][]{% + \glsxtridentifyglsfamily{#1}{#2}{#3}{#4}{#5}{#6}{}{}% \@glsxtrnewgls{#1}{#2}{#3}{gls}% \@glsxtrnewgls{#1}{#2}{#4}{glspl}% \@glsxtrnewgls{#1}{#2}{#5}{Gls}% @@ -12452,6 +15478,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\glsxtrnewGLSlike}[4][]{% + \glsxtridentifyglsfamily{#1}{#2}{}{}{}{}{#3}{#4}% \@glsxtrnewgls{#1}{#2}{#3}{GLS}% \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}% } @@ -12473,6 +15500,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\glsxtrnewrglslike}[6][]{% + \glsxtridentifyglsfamily{#1}{#2}{#3}{#4}{#5}{#6}{}{}% \@glsxtrnewgls{#1}{#2}{#3}{rgls}% \@glsxtrnewgls{#1}{#2}{#4}{rglspl}% \@glsxtrnewgls{#1}{#2}{#5}{rGls}% @@ -12486,6 +15514,7 @@ defined}{}% %As \cs{glsxtrnewGLSlike} but for \cs{rGLS} etc. % \begin{macrocode} \newrobustcmd*{\glsxtrnewrGLSlike}[4][]{% + \glsxtridentifyglsfamily{#1}{#2}{}{}{}{}{#3}{#4}% \@glsxtrnewgls{#1}{#2}{#3}{rGLS}% \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}% } @@ -12553,6 +15582,12 @@ defined}{}% \renewcommand*{\Glspl}{\rGlspl}% \renewcommand*{\GLS}{\rGLS}% \renewcommand*{\GLSpl}{\rGLSpl}% + \renewcommand{\shortcut@gls}{\rgls}% + \renewcommand{\shortcut@glspl}{\rglspl}% + \renewcommand{\shortcut@Gls}{\rGls}% + \renewcommand{\shortcut@Glspl}{\rGlspl}% + \renewcommand{\shortcut@GLS}{\rGLS}% + \renewcommand{\shortcut@GLSpl}{\rGLSpl}% } % \end{macrocode} %\end{macro} @@ -12622,6 +15657,10 @@ defined}{}% %Save local setting. % \begin{macrocode} \@gls@save@glslocal +% \end{macrocode} +%Initialise preunset, prereset and postunset +% \begin{macrocode} + \glsinitreunsets \glsxtrinitwrgloss \glslinkpresetkeys \setkeys{glslink}{#1}% @@ -12637,12 +15676,12 @@ defined}{}% \glslinkwrcontent {% \ifglsxtrinitwrglossbefore - \@do@wrglossary{#2}% + \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}% \fi #3% \ifglsxtrinitwrglossbefore \else - \@do@wrglossary{#2}% + \glsxtr@wrglossary@encap{#2}{\@do@wrglossary{#2}}% \fi }% \@gls@restore@glslocal @@ -12723,6 +15762,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls} +\glsmfuaddmap{\rgls}{\rGls} % \end{macrocode} %\end{macro} %\begin{macro}{\@rGls} @@ -12752,6 +15792,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl} +\glsmfuaddmap{\rglspl}{\rGlspl} % \end{macrocode} %\end{macro} %\begin{macro}{\@rGlspl} @@ -12782,6 +15823,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS} +\glsmfublocker{\rGLS}% % \end{macrocode} %\end{macro} %\begin{macro}{\@rGLS} @@ -12812,6 +15854,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl} +\glsmfublocker{\rGLSpl}% % \end{macrocode} %\end{macro} %\begin{macro}{\@rGLSpl} @@ -12886,7 +15929,7 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newcommand*{\rGLSformat}[2]{% - \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}% + \expandafter\glsuppercase\expandafter{\rglsformat{#1}{#2}}% } % \end{macrocode} %\end{macro} @@ -12895,12 +15938,12 @@ defined}{}% %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} \newcommand*{\rGLSplformat}[2]{% - \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}% + \expandafter\glsuppercase\expandafter{\rglsplformat{#1}{#2}}% } % \end{macrocode} %\end{macro} % -%\section{Link Counting} +%\subsection{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 @@ -13033,16 +16076,20 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\section{Integration with glossaries-accsupp} +%\subsection{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 +% \sty{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. +% or not \sty{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}} +% +%To allow for formatting commands that need to go inside all other commands +%(such as the commands provided by \sty{soul}), also add version +% of each command that takes a text-block command as an argument. % \begin{macrocode} \@ifpackageloaded{glossaries-accsupp} { @@ -13063,6 +16110,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtname} +%\begin{definition} +%\cs{glsaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtname}[3]{% + \glsnameaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{name}% + }% + {#3}% + } +% \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. @@ -13078,6 +16141,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtname} +%\begin{definition} +%\cs{Glsaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtname}[3]{% + \glsnameaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{name}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessname} % Display the \gloskey{name} value (no link and no check for existence) % converted to upper case. @@ -13086,13 +16165,29 @@ defined}{}% \newcommand*{\GLSaccessname}[1]{% \glsnameaccessdisplay {% - \mfirstucMakeUppercase{\glsentryname{#1}}% + \glsuppercase{\glsentryname{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtname} +%\begin{definition} +%\cs{GLSaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtname}[3]{% + \glsnameaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{name}% + }% + {#3}% + } +% \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} @@ -13107,6 +16202,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmttext} +%\begin{definition} +%\cs{glsaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmttext}[3]{% + \glstextaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{text}% + }% + {#3}% + } +% \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. @@ -13122,6 +16233,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmttext} +%\begin{definition} +%\cs{Glsaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmttext}[3]{% + \glstextaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{text}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccesstext} % Display the \gloskey{text} value (no link and no check for existence) % converted to upper case. @@ -13130,13 +16257,29 @@ defined}{}% \newcommand*{\GLSaccesstext}[1]{% \glstextaccessdisplay {% - \mfirstucMakeUppercase{\glsentrytext{#1}}% + \glsuppercase{\glsentrytext{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmttext} +%\begin{definition} +%\cs{GLSaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmttext}[3]{% + \glstextaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{text}% + }% + {#3}% + } +% \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} @@ -13151,6 +16294,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtplural} +%\begin{definition} +%\cs{glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtplural}[3]{% + \glspluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{plural}% + }% + {#3}% + } +% \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. @@ -13166,6 +16325,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtplural} +%\begin{definition} +%\cs{Glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtplural}[3]{% + \glspluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{plural}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessplural} % Display the \gloskey{plural} value (no link and no check for existence) % converted to upper case. @@ -13174,13 +16349,29 @@ defined}{}% \newcommand*{\GLSaccessplural}[1]{% \glspluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentryplural{#1}}% + \glsuppercase{\glsentryplural{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtplural} +%\begin{definition} +%\cs{GLSaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtplural}[3]{% + \glspluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{plural}% + }% + {#3}% + } +% \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} @@ -13195,6 +16386,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtfirst} +%\begin{definition} +%\cs{glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtfirst}[3]{% + \glsfirstaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{first}% + }% + {#3}% + } +% \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. @@ -13210,6 +16417,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtfirst} +%\begin{definition} +%\cs{Glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtfirst}[3]{% + \glsfirstaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{first}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessfirst} % Display the \gloskey{first} value (no link and no check for existence) % converted to upper case. @@ -13218,13 +16441,29 @@ defined}{}% \newcommand*{\GLSaccessfirst}[1]{% \glsfirstaccessdisplay {% - \mfirstucMakeUppercase{\glsentryfirst{#1}}% + \glsuppercase{\glsentryfirst{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtfirst} +%\begin{definition} +%\cs{GLSaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtfirst}[3]{% + \glsfirstaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{first}% + }% + {#3}% + } +% \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} @@ -13239,6 +16478,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtfirstplural} +%\begin{definition} +%\cs{glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtfirstplural}[3]{% + \glsfirstpluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{firstpl}% + }% + {#3}% + } +% \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. @@ -13254,6 +16509,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtfirstplural} +%\begin{definition} +%\cs{Glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtfirstplural}[3]{% + \glsfirstpluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{firstpl}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessfirstplural} % Display the \gloskey{firstplural} value (no link and no check for existence) % converted to upper case. @@ -13262,13 +16533,29 @@ defined}{}% \newcommand*{\GLSaccessfirstplural}[1]{% \glsfirstpluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentryfirstplural{#1}}% + \glsuppercase{\glsentryfirstplural{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtfirstplural} +%\begin{definition} +%\cs{GLSaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtfirstplural}[3]{% + \glsfirstpluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{firstpl}% + }% + {#3}% + } +% \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} @@ -13283,6 +16570,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtsymbol} +%\begin{definition} +%\cs{glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtsymbol}[3]{% + \glssymbolaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{symbol}% + }% + {#3}% + } +% \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. @@ -13298,6 +16601,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtsymbol} +%\begin{definition} +%\cs{Glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtsymbol}[3]{% + \glssymbolaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{symbol}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccesssymbol} % Display the \gloskey{symbol} value (no link and no check for existence) % converted to upper case. @@ -13306,13 +16625,29 @@ defined}{}% \newcommand*{\GLSaccesssymbol}[1]{% \glssymbolaccessdisplay {% - \mfirstucMakeUppercase{\glsentrysymbol{#1}}% + \glsuppercase{\glsentrysymbol{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtsymbol} +%\begin{definition} +%\cs{GLSaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtsymbol}[3]{% + \glssymbolaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{symbol}% + }% + {#3}% + } +% \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} @@ -13327,6 +16662,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtsymbolplural} +%\begin{definition} +%\cs{glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtsymbolplural}[3]{% + \glssymbolpluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{symbolplural}% + }% + {#3}% + } +% \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. @@ -13342,6 +16693,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtsymbolplural} +%\begin{definition} +%\cs{Glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtsymbolplural}[3]{% + \glssymbolpluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{symbolplural}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccesssymbolplural} % Display the \gloskey{symbolplural} value (no link and no check for existence) % converted to upper case. @@ -13350,13 +16717,29 @@ defined}{}% \newcommand*{\GLSaccesssymbolplural}[1]{% \glssymbolpluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}% + \glsuppercase{\glsentrysymbolplural{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtsymbolplural} +%\begin{definition} +%\cs{GLSaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtsymbolplural}[3]{% + \glssymbolpluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{symbolplural}% + }% + {#3}% + } +% \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} @@ -13371,6 +16754,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtdesc} +%\begin{definition} +%\cs{glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtdesc}[3]{% + \glsdescaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{desc}% + }% + {#3}% + } +% \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. @@ -13386,6 +16785,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtdesc} +%\begin{definition} +%\cs{Glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtdesc}[3]{% + \glsdescaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{desc}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessdesc} % Display the \gloskey{desc} value (no link and no check for existence) % converted to upper case. @@ -13394,13 +16809,29 @@ defined}{}% \newcommand*{\GLSaccessdesc}[1]{% \glsdescriptionaccessdisplay {% - \mfirstucMakeUppercase{\glsentrydesc{#1}}% + \glsuppercase{\glsentrydesc{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtdesc} +%\begin{definition} +%\cs{GLSaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtdesc}[3]{% + \glsdescaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{desc}% + }% + {#3}% + } +% \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} @@ -13415,6 +16846,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtdescplural} +%\begin{definition} +%\cs{glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtdescplural}[3]{% + \glsdescpluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{descplural}% + }% + {#3}% + } +% \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. @@ -13430,6 +16877,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtdescplural} +%\begin{definition} +%\cs{Glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtdescplural}[3]{% + \glsdescpluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{descplural}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessdescplural} % Display the \gloskey{descplural} value (no link and no check for existence) % converted to upper case. @@ -13438,13 +16901,29 @@ defined}{}% \newcommand*{\GLSaccessdescplural}[1]{% \glsdescriptionpluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentrydescplural{#1}}% + \glsuppercase{\glsentrydescplural{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtdescplural} +%\begin{definition} +%\cs{GLSaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtdescplural}[3]{% + \glsdescpluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{descplural}% + }% + {#3}% + } +% \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} @@ -13459,6 +16938,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtshort} +%\begin{definition} +%\cs{glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtshort}[3]{% + \glsshortaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{short}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsaccessshort} % Display the short form with first letter converted to uppercase % (no link and no check for existence). @@ -13474,6 +16969,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtshort} +%\begin{definition} +%\cs{Glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtshort}[3]{% + \glsshortaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{short}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessshort} % Display the \gloskey{short} value (no link and no check for existence) % converted to upper case. @@ -13482,13 +16993,29 @@ defined}{}% \newcommand*{\GLSaccessshort}[1]{% \glsshortaccessdisplay {% - \mfirstucMakeUppercase{\glsentryshort{#1}}% + \glsuppercase{\glsentryshort{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtshort} +%\begin{definition} +%\cs{GLSaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtshort}[3]{% + \glsshortaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{short}% + }% + {#3}% + } +% \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} @@ -13503,6 +17030,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtshortpl} +%\begin{definition} +%\cs{glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtshortpl}[3]{% + \glsshortpluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{shortpl}% + }% + {#3}% + } +% \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). @@ -13518,6 +17061,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtshortpl} +%\begin{definition} +%\cs{Glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtshortpl}[3]{% + \glsshortpluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{shortpl}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccessshortpl} % Display the \gloskey{shortplural} value (no link and no check for existence) % converted to upper case. @@ -13526,13 +17085,29 @@ defined}{}% \newcommand*{\GLSaccessshortpl}[1]{% \glsshortpluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentryshortpl{#1}}% + \glsuppercase{\glsentryshortpl{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtshortpl} +%\begin{definition} +%\cs{GLSaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtshortpl}[3]{% + \glsshortpluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{shortpl}% + }% + {#3}% + } +% \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} @@ -13543,17 +17118,48 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtlong} +%\begin{definition} +%\cs{glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtlong}[3]{% + \glslongaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{long}% + }% + {#3}% + } +% \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}{\Glsaccessfmtlong} +%\begin{definition} +%\cs{Glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtlong}[3]{% + \glslongaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{long}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccesslong} % Display the \gloskey{long} value (no link and no check for existence) % converted to upper case. @@ -13562,13 +17168,29 @@ defined}{}% \newcommand*{\GLSaccesslong}[1]{% \glslongaccessdisplay {% - \mfirstucMakeUppercase{\glsentrylong{#1}}% + \glsuppercase{\glsentrylong{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSaccessfmtlong} +%\begin{definition} +%\cs{GLSaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtlong}[3]{% + \glslongaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{long}% + }% + {#3}% + } +% \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} @@ -13579,6 +17201,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtlongpl} +%\begin{definition} +%\cs{glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtlongpl}[3]{% + \glslongpluralaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{longpl}% + }% + {#3}% + } +% \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} @@ -13590,6 +17228,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtlongpl} +%\begin{definition} +%\cs{Glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtlongpl}[3]{% + \glslongpluralaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{longpl}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GLSaccesslongpl} % Display the \gloskey{longplural} value (no link and no check for existence) % converted to upper case. @@ -13598,14 +17252,880 @@ defined}{}% \newcommand*{\GLSaccesslongpl}[1]{% \glslongpluralaccessdisplay {% - \mfirstucMakeUppercase{\glsentrylongpl{#1}}% + \glsuppercase{\glsentrylongpl{#1}}% }% {#1}% } % \end{macrocode} %\end{macro} % -% Keys for accessibility support. +%\begin{macro}{\GLSaccessfmtlongpl} +%\begin{definition} +%\cs{GLSaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtlongpl}[3]{% + \glslongpluralaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{longpl}% + }% + {#3}% + } +% \end{macrocode} +%\end{macro} +% +%The user accessibility fields were added to +%\sty{glossaries-accsupp} v4.45 so these may not be defined. +% +%USER1 +%\begin{macro}{\glsaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\glsaccessuseri}[1]{% + \glsuseriaccessdisplay + {% + \glsentryuseri{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuseri}[1]{% + \glsentryuseri{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseri} +%\begin{definition} +%\cs{glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\glsaccessfmtuseri}[3]{% + \glsuseriaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{useri}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuseri}[3]{% + \glsfmtfield{#1}{#2}{#3}{useri}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\Glsaccessuseri}[1]{% + \glsuseriaccessdisplay + {% + \Glsentryuseri{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuseri}[1]{% + \Glsentryuseri{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseri} +%\begin{definition} +%\cs{Glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\Glsaccessfmtuseri}[3]{% + \glsuseriaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{useri}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuseri}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useri}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\GLSaccessuseri}[1]{% + \glsuseriaccessdisplay + {% + \glsuppercase{\glsentryuseri{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuseri}[1]{% + \glsuppercase{\glsentryuseri{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseri} +%\begin{definition} +%\cs{GLSaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriaccessdisplay + { + \newcommand*{\GLSaccessfmtuseri}[3]{% + \glsuseriaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{useri}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuseri}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useri}% + } + } +% \end{macrocode} +%\end{macro} +% +%USER2 +%\begin{macro}{\glsaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\glsaccessuserii}[1]{% + \glsuseriiaccessdisplay + {% + \glsentryuserii{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuserii}[1]{% + \glsentryuserii{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuserii} +%\begin{definition} +%\cs{glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\glsaccessfmtuserii}[3]{% + \glsuseriiaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{userii}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuserii}[3]{% + \glsfmtfield{#1}{#2}{#3}{userii}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\Glsaccessuserii}[1]{% + \glsuseriiaccessdisplay + {% + \Glsentryuserii{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuserii}[1]{% + \Glsentryuserii{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuserii} +%\begin{definition} +%\cs{Glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\Glsaccessfmtuserii}[3]{% + \glsuseriiaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{userii}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuserii}[3]{% + \Glsfmtfield{#1}{#2}{#3}{userii}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\GLSaccessuserii}[1]{% + \glsuseriiaccessdisplay + {% + \glsuppercase{\glsentryuserii{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuserii}[1]{% + \glsuppercase{\glsentryuserii{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuserii} +%\begin{definition} +%\cs{GLSaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiaccessdisplay + { + \newcommand*{\GLSaccessfmtuserii}[3]{% + \glsuseriiaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{userii}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuserii}[3]{% + \GLSfmtfield{#1}{#2}{#3}{userii}% + } + } +% \end{macrocode} +%\end{macro} +% +%USER3 +%\begin{macro}{\glsaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\glsaccessuseriii}[1]{% + \glsuseriiiaccessdisplay + {% + \glsentryuseriii{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuseriii}[1]{% + \glsentryuseriii{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseriii} +%\begin{definition} +%\cs{glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\glsaccessfmtuseriii}[3]{% + \glsuseriiiaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{useriii}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuseriii}[3]{% + \glsfmtfield{#1}{#2}{#3}{useriii}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\Glsaccessuseriii}[1]{% + \glsuseriiiaccessdisplay + {% + \Glsentryuseriii{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuseriii}[1]{% + \Glsentryuseriii{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseriii} +%\begin{definition} +%\cs{Glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\Glsaccessfmtuseriii}[3]{% + \glsuseriiiaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{useriii}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuseriii}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useriii}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\GLSaccessuseriii}[1]{% + \glsuseriiiaccessdisplay + {% + \glsuppercase{\glsentryuseriii{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuseriii}[1]{% + \glsuppercase{\glsentryuseriii{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseriii} +%\begin{definition} +%\cs{GLSaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuseriiiaccessdisplay + { + \newcommand*{\GLSaccessfmtuseriii}[3]{% + \glsuseriiiaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{useriii}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuseriii}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useriii}% + } + } +% \end{macrocode} +%\end{macro} +% +%USER4 +%\begin{macro}{\glsaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\glsaccessuseriv}[1]{% + \glsuserivaccessdisplay + {% + \glsentryuseriv{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuseriv}[1]{% + \glsentryuseriv{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseriv} +%\begin{definition} +%\cs{glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\glsaccessfmtuseriv}[3]{% + \glsuserivaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{useriv}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuseriv}[3]{% + \glsfmtfield{#1}{#2}{#3}{useriv}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\Glsaccessuseriv}[1]{% + \glsuserivaccessdisplay + {% + \Glsentryuseriv{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuseriv}[1]{% + \Glsentryuseriv{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseriv} +%\begin{definition} +%\cs{Glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\Glsaccessfmtuseriv}[3]{% + \glsuserivaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{useriv}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuseriv}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useriv}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\GLSaccessuseriv}[1]{% + \glsuserivaccessdisplay + {% + \glsuppercase{\glsentryuseriv{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuseriv}[1]{% + \glsuppercase{\glsentryuseriv{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseriv} +%\begin{definition} +%\cs{GLSaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserivaccessdisplay + { + \newcommand*{\GLSaccessfmtuseriv}[3]{% + \glsuserivaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{useriv}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuseriv}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useriv}% + } + } +% \end{macrocode} +%\end{macro} +% +%USER5 +%\begin{macro}{\glsaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\glsaccessuserv}[1]{% + \glsuservaccessdisplay + {% + \glsentryuserv{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuserv}[1]{% + \glsentryuserv{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuserv} +%\begin{definition} +%\cs{glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\glsaccessfmtuserv}[3]{% + \glsuservaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{userv}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuserv}[3]{% + \glsfmtfield{#1}{#2}{#3}{userv}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\Glsaccessuserv}[1]{% + \glsuservaccessdisplay + {% + \Glsentryuserv{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuserv}[1]{% + \Glsentryuserv{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuserv} +%\begin{definition} +%\cs{Glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\Glsaccessfmtuserv}[3]{% + \glsuservaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{userv}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuserv}[3]{% + \Glsfmtfield{#1}{#2}{#3}{userv}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\GLSaccessuserv}[1]{% + \glsuservaccessdisplay + {% + \glsuppercase{\glsentryuserv{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuserv}[1]{% + \glsuppercase{\glsentryuserv{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuserv} +%\begin{definition} +%\cs{GLSaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuservaccessdisplay + { + \newcommand*{\GLSaccessfmtuserv}[3]{% + \glsuservaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{userv}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuserv}[3]{% + \GLSfmtfield{#1}{#2}{#3}{userv}% + } + } +% \end{macrocode} +%\end{macro} +% +%USER6 +%\begin{macro}{\glsaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\glsaccessuservi}[1]{% + \glsuserviaccessdisplay + {% + \glsentryuservi{#1}% + }% + {#1}% + } + } + { + \newcommand*{\glsaccessuservi}[1]{% + \glsentryuservi{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuservi} +%\begin{definition} +%\cs{glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\glsaccessfmtuservi}[3]{% + \glsuserviaccessdisplay + {% + \glsfmtfield{#1}{#2}{#3}{uservi}% + }% + {#3}% + } + } + { + \newcommand*{\glsaccessfmtuservi}[3]{% + \glsfmtfield{#1}{#2}{#3}{uservi}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\Glsaccessuservi}[1]{% + \glsuserviaccessdisplay + {% + \Glsentryuservi{#1}% + }% + {#1}% + } + } + { + \newcommand*{\Glsaccessuservi}[1]{% + \Glsentryuservi{#1}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuservi} +%\begin{definition} +%\cs{Glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\Glsaccessfmtuservi}[3]{% + \glsuserviaccessdisplay + {% + \Glsfmtfield{#1}{#2}{#3}{uservi}% + }% + {#3}% + } + } + { + \newcommand*{\Glsaccessfmtuservi}[3]{% + \Glsfmtfield{#1}{#2}{#3}{uservi}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence) +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\GLSaccessuservi}[1]{% + \glsuserviaccessdisplay + {% + \glsuppercase{\glsentryuservi{#1}}% + }% + {#1}% + } + } + { + \newcommand*{\GLSaccessuservi}[1]{% + \glsuppercase{\glsentryuservi{#1}}% + } + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuservi} +%\begin{definition} +%\cs{GLSaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \ifdef\glsuserviaccessdisplay + { + \newcommand*{\GLSaccessfmtuservi}[3]{% + \glsuserviaccessdisplay + {% + \GLSfmtfield{#1}{#2}{#3}{uservi}% + }% + {#3}% + } + } + { + \newcommand*{\GLSaccessfmtuservi}[3]{% + \GLSfmtfield{#1}{#2}{#3}{uservi}% + } + } +% \end{macrocode} +%\end{macro} +% +% Keys for accessibility support while pre-parsing in +% \cs{newabbreviation}. % \begin{macrocode} \define@key{glsxtrabbrv}{access}{% \def\@gls@nameaccess{#1}% @@ -13654,8 +18174,9 @@ defined}{}% } % \end{macrocode} % +%\changes{1.49}{2022-10-14}{corrected name of longpluralaccess field} % \begin{macrocode} - \define@key{glsxtrabbrv}{shortlonglaccess}{% + \define@key{glsxtrabbrv}{longpluralaccess}{% \def\@gls@longaccesspl{#1}% } % \end{macrocode} @@ -13682,19 +18203,19 @@ defined}{}% %\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}% + \newcommand*{\@gls@ifaccessattribute@set}[3]{% + \glsifcategoryattribute{\glscategorylabel}{access#1}{true}% + {#2}% {% - \glsifcategoryattribute{\glscategorylabel}{#1}{true}% - {#2}% + \glsifcategoryattribute{\glscategorylabel}{access#1}{false}% {#3}% + {% + \glsifcategoryattribute{\glscategorylabel}{#1}{true}% + {#2}% + {#3}% + }% }% - }% -} + } % \end{macrocode} %\end{macro} % @@ -13707,18 +18228,22 @@ defined}{}% % %\begin{macro}{\glsdefaultshortaccess} %\changes{1.42}{2020-02-03}{new} +%\changes{1.49}{2022-10-14}{reverted to original definition} %\begin{definition} %\cs{glsdefaultshortaccess}\marg{long}\marg{short} %\end{definition} -%This command was only introduced to \sty{glossaries-accsupp} 1.42 -%so it may not be defined. +%This command was only introduced to \sty{glossaries-accsupp} 4.45 +%so it may not be defined. This was defined to do \verb|#1 (#2)| but +%the original definition is more appropriate, so has been reverted +%back to the definition provided by \sty{glossaries-accsupp}. % \begin{macrocode} - \def\glsdefaultshortaccess#1#2{#1 (#2)} + \providecommand*{\glsdefaultshortaccess}[2]{#1} % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrassignactualsetup} %\changes{1.42}{2020-02-03}{new} +%\changes{1.49}{2022-10-14}{added \cs{glstextup}} % \begin{macrocode} \newcommand{\glsxtrassignactualsetup}{% \let\@\empty @@ -13731,43 +18256,25 @@ defined}{}% \let\textrm\@firstofone \let\textsf\@firstofone \let\texttt\@firstofone + \let\glstextup\@firstofone } % \end{macrocode} %\end{macro} % %\begin{macro}{\@gls@assign@actual} %\changes{1.42}{2020-02-03}{new} +%\changes{1.49}{2022-10-14}{removed use of \cs{pdfstringdef}} % \begin{macrocode} - \ifdef\pdfstringdef - { - \newcommand{\@gls@assign@actual}{% - \begingroup - \glsxtrassignactualsetup - \pdfstringdef\@gls@actualshort{\glsxtrorgshort}% - \pdfstringdef\@gls@actuallong{\glsxtrorglong}% - \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}% - \pdfstringdef\@gls@actuallongpl{\@gls@longpl}% - \protected@edef\@gls@tmp{\endgroup - \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}% - \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}% - \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}% - \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}% - }% - \@gls@tmp - } - } - { - \newcommand{\@gls@assign@actual}{% - \begingroup - \glsxtrassignactualsetup - \protected@edef\@gls@tmp{\endgroup - \def\noexpand\@gls@actualshort{\glsxtrorgshort}% - \def\noexpand\@gls@actuallong{\glsxtrorglong}% - \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% - \def\noexpand\@gls@actuallongpl{\@gls@longpl}% - }% - \@gls@tmp - } + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\glsxtrorgshort}% + \def\noexpand\@gls@actuallong{\glsxtrorglong}% + \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% + \def\noexpand\@gls@actuallongpl{\@gls@longpl}% + }% + \@gls@tmp } % \end{macrocode} %\end{macro} @@ -14022,6 +18529,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtname} +%\begin{definition} +%\cs{glsaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtname}[3]{% + \glsfmtfield{#1}{#2}{#3}{name}% + } +% \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. @@ -14030,13 +18549,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtname} +%\begin{definition} +%\cs{Glsaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtname}[3]{% + \Glsfmtfield{#1}{#2}{#3}{name}% + } +% \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}}} + \protect\glsuppercase{\glsentryname{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtname} +%\begin{definition} +%\cs{GLSaccessfmtname}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtname}[3]{% + \GLSfmtfield{#1}{#2}{#3}{name}% + } % \end{macrocode} %\end{macro} % @@ -14047,6 +18590,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmttext} +%\begin{definition} +%\cs{glsaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmttext}[3]{% + \glsfmtfield{#1}{#2}{#3}{text}% + } +% \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. @@ -14055,13 +18610,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmttext} +%\begin{definition} +%\cs{Glsaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmttext}[3]{% + \Glsfmtfield{#1}{#2}{#3}{text}% + } +% \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}}} + \protect\glsuppercase{\glsentrytext{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmttext} +%\begin{definition} +%\cs{GLSaccessfmttext}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmttext}[3]{% + \GLSfmtfield{#1}{#2}{#3}{text}% + } % \end{macrocode} %\end{macro} % @@ -14072,6 +18651,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtplural} +%\begin{definition} +%\cs{glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtplural}[3]{% + \glsfmtfield{#1}{#2}{#3}{plural}% + } +% \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. @@ -14080,13 +18671,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtplural} +%\begin{definition} +%\cs{Glsaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtplural}[3]{% + \Glsfmtfield{#1}{#2}{#3}{plural}% + } +% \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}}} + \protect\glsuppercase{\glsentryplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtplural} +%\begin{definition} +%\cs{GLSaccessfmtplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtplural}[3]{% + \GLSfmtfield{#1}{#2}{#3}{plural}% + } % \end{macrocode} %\end{macro} % @@ -14097,6 +18712,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtfirst} +%\begin{definition} +%\cs{glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtfirst}[3]{% + \glsfmtfield{#1}{#2}{#3}{first}% + } +% \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. @@ -14105,13 +18732,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtfirst} +%\begin{definition} +%\cs{Glsaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtfirst}[3]{% + \Glsfmtfield{#1}{#2}{#3}{first}% + } +% \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}}} + \protect\glsuppercase{\glsentryfirst{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtfirst} +%\begin{definition} +%\cs{GLSaccessfmtfirst}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtfirst}[3]{% + \GLSfmtfield{#1}{#2}{#3}{first}% + } % \end{macrocode} %\end{macro} % @@ -14122,6 +18773,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtfirstplural} +%\begin{definition} +%\cs{glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtfirstplural}[3]{% + \glsfmtfield{#1}{#2}{#3}{firstpl}% + } +% \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. @@ -14130,13 +18793,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtfirstplural} +%\begin{definition} +%\cs{Glsaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtfirstplural}[3]{% + \Glsfmtfield{#1}{#2}{#3}{firstpl}% + } +% \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}}} + \protect\glsuppercase{\glsentryfirstplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtfirstplural} +%\begin{definition} +%\cs{GLSaccessfmtfirstplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtfirstplural}[3]{% + \GLSfmtfield{#1}{#2}{#3}{firstpl}% + } % \end{macrocode} %\end{macro} % @@ -14147,6 +18834,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtsymbol} +%\begin{definition} +%\cs{glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtsymbol}[3]{% + \glsfmtfield{#1}{#2}{#3}{symbol}% + } +% \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. @@ -14155,13 +18854,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtsymbol} +%\begin{definition} +%\cs{Glsaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtsymbol}[3]{% + \Glsfmtfield{#1}{#2}{#3}{symbol}% + } +% \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}}} + \protect\glsuppercase{\glsentrysymbol{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtsymbol} +%\begin{definition} +%\cs{GLSaccessfmtsymbol}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtsymbol}[3]{% + \GLSfmtfield{#1}{#2}{#3}{symbol}% + } % \end{macrocode} %\end{macro} % @@ -14172,6 +18895,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtsymbolplural} +%\begin{definition} +%\cs{glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtsymbolplural}[3]{% + \glsfmtfield{#1}{#2}{#3}{symbolplural}% + } +% \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. @@ -14180,13 +18915,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtsymbolplural} +%\begin{definition} +%\cs{Glsaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtsymbolplural}[3]{% + \Glsfmtfield{#1}{#2}{#3}{symbolplural}% + } +% \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}}} + \protect\glsuppercase{\glsentrysymbolplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtsymbolplural} +%\begin{definition} +%\cs{GLSaccessfmtsymbolplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtsymbolplural}[3]{% + \GLSfmtfield{#1}{#2}{#3}{symbolplural}% + } % \end{macrocode} %\end{macro} % @@ -14197,6 +18956,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtdesc} +%\begin{definition} +%\cs{glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtdesc}[3]{% + \glsfmtfield{#1}{#2}{#3}{desc}% + } +% \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. @@ -14205,13 +18976,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtdesc} +%\begin{definition} +%\cs{Glsaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtdesc}[3]{% + \Glsfmtfield{#1}{#2}{#3}{desc}% + } +% \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}}} + \protect\glsuppercase{\glsentrydesc{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtdesc} +%\begin{definition} +%\cs{GLSaccessfmtdesc}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtdesc}[3]{% + \GLSfmtfield{#1}{#2}{#3}{desc}% + } % \end{macrocode} %\end{macro} % @@ -14222,6 +19017,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtdescplural} +%\begin{definition} +%\cs{glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtdescplural}[3]{% + \glsfmtfield{#1}{#2}{#3}{descplural}% + } +% \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. @@ -14230,13 +19037,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtdescplural} +%\begin{definition} +%\cs{Glsaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtdescplural}[3]{% + \Glsfmtfield{#1}{#2}{#3}{descplural}% + } +% \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}}} + \protect\glsuppercase{\glsentrydescplural{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtdescplural} +%\begin{definition} +%\cs{GLSaccessfmtdescplural}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtdescplural}[3]{% + \GLSfmtfield{#1}{#2}{#3}{descplural}% + } % \end{macrocode} %\end{macro} % @@ -14247,6 +19078,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtshort} +%\begin{definition} +%\cs{glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtshort}[3]{% + \glsfmtfield{#1}{#2}{#3}{short}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsaccessshort} % Display the short form with first letter converted to uppercase % (no link and no check for existence). @@ -14255,13 +19098,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtshort} +%\begin{definition} +%\cs{Glsaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtshort}[3]{% + \Glsfmtfield{#1}{#2}{#3}{short}% + } +% \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}}} + \protect\glsuppercase{\glsentryshort{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtshort} +%\begin{definition} +%\cs{GLSaccessfmtshort}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtshort}[3]{% + \GLSfmtfield{#1}{#2}{#3}{short}% + } % \end{macrocode} %\end{macro} % @@ -14272,6 +19139,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtshortpl} +%\begin{definition} +%\cs{glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtshortpl}[3]{% + \glsfmtfield{#1}{#2}{#3}{shortpl}% + } +% \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). @@ -14280,13 +19159,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtshortpl} +%\begin{definition} +%\cs{Glsaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtshortpl}[3]{% + \Glsfmtfield{#1}{#2}{#3}{shortpl}% + } +% \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}}} + \protect\glsuppercase{\glsentryshortpl{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtshortpl} +%\begin{definition} +%\cs{GLSaccessfmtshortpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtshortpl}[3]{% + \GLSfmtfield{#1}{#2}{#3}{shortpl}% + } % \end{macrocode} %\end{macro} % @@ -14297,6 +19200,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtlong} +%\begin{definition} +%\cs{glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtlong}[3]{% + \glsfmtfield{#1}{#2}{#3}{long}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsaccesslong} % Display the long form (no link and no check for existence). % \begin{macrocode} @@ -14304,13 +19219,37 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtlong} +%\begin{definition} +%\cs{Glsaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtlong}[3]{% + \Glsfmtfield{#1}{#2}{#3}{long}% + } +% \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}}} + \protect\glsuppercase{\glsentrylong{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtlong} +%\begin{definition} +%\cs{GLSaccessfmtlong}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtlong}[3]{% + \GLSfmtfield{#1}{#2}{#3}{long}% + } % \end{macrocode} %\end{macro} % @@ -14321,6 +19260,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsaccessfmtlongpl} +%\begin{definition} +%\cs{glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtlongpl}[3]{% + \glsfmtfield{#1}{#2}{#3}{longpl}% + } +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsaccesslongpl} % Display the long plural form (no link and no check for existence). % \begin{macrocode} @@ -14328,13 +19279,421 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\Glsaccessfmtlongpl} +%\begin{definition} +%\cs{Glsaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtlongpl}[3]{% + \Glsfmtfield{#1}{#2}{#3}{longpl}% + } +% \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}}} + \protect\glsuppercase{\glsentrylongpl{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtlongpl} +%\begin{definition} +%\cs{GLSaccessfmtlongpl}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtlongpl}[3]{% + \GLSfmtfield{#1}{#2}{#3}{longpl}% + } +% \end{macrocode} +%\end{macro} +% +%USER1 +%\begin{macro}{\glsaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuseri}[1]{\glsentryuseri{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseri} +%\begin{definition} +%\cs{glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuseri}[3]{% + \glsfmtfield{#1}{#2}{#3}{useri}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuseri}[1]{\Glsentryuseri{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseri} +%\begin{definition} +%\cs{Glsaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuseri}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useri}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseri} +% Display the \gloskey{user1} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuseri}[1]{% + \protect\glsuppercase{\glsentryuseri{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseri} +%\begin{definition} +%\cs{GLSaccessfmtuseri}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuseri}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useri}% + } +% \end{macrocode} +%\end{macro} +% +%USER2 +%\begin{macro}{\glsaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuserii}[1]{\glsentryuserii{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuserii} +%\begin{definition} +%\cs{glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuserii}[3]{% + \glsfmtfield{#1}{#2}{#3}{userii}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuserii}[1]{\Glsentryuserii{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuserii} +%\begin{definition} +%\cs{Glsaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuserii}[3]{% + \Glsfmtfield{#1}{#2}{#3}{userii}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuserii} +% Display the \gloskey{user2} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuserii}[1]{% + \protect\glsuppercase{\glsentryuserii{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuserii} +%\begin{definition} +%\cs{GLSaccessfmtuserii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuserii}[3]{% + \GLSfmtfield{#1}{#2}{#3}{userii}% + } +% \end{macrocode} +%\end{macro} +% +%USER3 +%\begin{macro}{\glsaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuseriii}[1]{\glsentryuseriii{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseriii} +%\begin{definition} +%\cs{glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuseriii}[3]{% + \glsfmtfield{#1}{#2}{#3}{useriii}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuseriii}[1]{\Glsentryuseriii{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseriii} +%\begin{definition} +%\cs{Glsaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuseriii}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useriii}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseriii} +% Display the \gloskey{user3} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuseriii}[1]{% + \protect\glsuppercase{\glsentryuseriii{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseriii} +%\begin{definition} +%\cs{GLSaccessfmtuseriii}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuseriii}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useriii}% + } +% \end{macrocode} +%\end{macro} +% +%USER4 +%\begin{macro}{\glsaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuseriv}[1]{\glsentryuseriv{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuseriv} +%\begin{definition} +%\cs{glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuseriv}[3]{% + \glsfmtfield{#1}{#2}{#3}{useriv}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuseriv}[1]{\Glsentryuseriv{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuseriv} +%\begin{definition} +%\cs{Glsaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuseriv}[3]{% + \Glsfmtfield{#1}{#2}{#3}{useriv}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuseriv} +% Display the \gloskey{user4} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuseriv}[1]{% + \protect\glsuppercase{\glsentryuseriv{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuseriv} +%\begin{definition} +%\cs{GLSaccessfmtuseriv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuseriv}[3]{% + \GLSfmtfield{#1}{#2}{#3}{useriv}% + } +% \end{macrocode} +%\end{macro} +% +%USER5 +%\begin{macro}{\glsaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuserv}[1]{\glsentryuserv{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuserv} +%\begin{definition} +%\cs{glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuserv}[3]{% + \glsfmtfield{#1}{#2}{#3}{userv}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuserv}[1]{\Glsentryuserv{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuserv} +%\begin{definition} +%\cs{Glsaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuserv}[3]{% + \Glsfmtfield{#1}{#2}{#3}{userv}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuserv} +% Display the \gloskey{user5} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuserv}[1]{% + \protect\glsuppercase{\glsentryuserv{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuserv} +%\begin{definition} +%\cs{GLSaccessfmtuserv}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuserv}[3]{% + \GLSfmtfield{#1}{#2}{#3}{userv}% + } +% \end{macrocode} +%\end{macro} +% +%USER6 +%\begin{macro}{\glsaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessuservi}[1]{\glsentryuservi{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsaccessfmtuservi} +%\begin{definition} +%\cs{glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsaccessfmtuservi}[3]{% + \glsfmtfield{#1}{#2}{#3}{uservi}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence) +% with the first letter converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessuservi}[1]{\Glsentryuservi{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsaccessfmtuservi} +%\begin{definition} +%\cs{Glsaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\Glsaccessfmtuservi}[3]{% + \Glsfmtfield{#1}{#2}{#3}{uservi}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessuservi} +% Display the \gloskey{user6} value (no link and no check for existence). +% converted to upper case. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessuservi}[1]{% + \protect\glsuppercase{\glsentryuservi{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSaccessfmtuservi} +%\begin{definition} +%\cs{GLSaccessfmtuservi}\marg{insert}\marg{cs}\marg{label} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\GLSaccessfmtuservi}[3]{% + \GLSfmtfield{#1}{#2}{#3}{uservi}% + } % \end{macrocode} %\end{macro} % @@ -14391,8 +19750,87 @@ defined}{}% } % \end{macrocode} %\end{macro} -% -%\section{Categories} +%Identify sentence-case mappings: +% \begin{macrocode} +\glsmfuaddmap{\glsaccessname}{\Glsaccessname} +\glsmfuaddmap{\glsaccessfmtname}{\Glsaccessfmtname} +\glsmfublocker{\GLSaccessname} +\glsmfublocker{\GLSaccessfmtname} +\glsmfuaddmap{\glsaccesstext}{\Glsaccesstext} +\glsmfuaddmap{\glsaccessfmttext}{\Glsaccessfmttext} +\glsmfublocker{\GLSaccesstext} +\glsmfublocker{\GLSaccessfmttext} +\glsmfuaddmap{\glsaccessplural}{\Glsaccessplural} +\glsmfuaddmap{\glsaccessfmtplural}{\Glsaccessfmtplural} +\glsmfublocker{\GLSaccessplural} +\glsmfublocker{\GLSaccessfmtplural} +\glsmfuaddmap{\glsaccessfirst}{\Glsaccessfirst} +\glsmfuaddmap{\glsaccessfmtfirst}{\Glsaccessfmtfirst} +\glsmfublocker{\GLSaccessfirst} +\glsmfublocker{\GLSaccessfmtfirst} +\glsmfuaddmap{\glsaccessfirstplural}{\Glsaccessfirstplural} +\glsmfuaddmap{\glsaccessfmtfirstplural}{\Glsaccessfmtfirstplural} +\glsmfublocker{\GLSaccessfirstplural} +\glsmfublocker{\GLSaccessfmtfirstplural} +\glsmfuaddmap{\glsaccesssymbol}{\Glsaccesssymbol} +\glsmfuaddmap{\glsaccessfmtsymbol}{\Glsaccessfmtsymbol} +\glsmfublocker{\GLSaccesssymbol} +\glsmfublocker{\GLSaccessfmtsymbol} +\glsmfuaddmap{\glsaccesssymbolplural}{\Glsaccesssymbolplural} +\glsmfuaddmap{\glsaccessfmtsymbolplural}{\Glsaccessfmtsymbolplural} +\glsmfublocker{\GLSaccesssymbolplural} +\glsmfublocker{\GLSaccessfmtsymbolplural} +\glsmfuaddmap{\glsaccessdesc}{\Glsaccessdesc} +\glsmfuaddmap{\glsaccessfmtdesc}{\Glsaccessfmtdesc} +\glsmfublocker{\GLSaccessdesc} +\glsmfublocker{\GLSaccessfmtdesc} +\glsmfuaddmap{\glsaccessdescplural}{\Glsaccessdescplural} +\glsmfuaddmap{\glsaccessfmtdescplural}{\Glsaccessfmtdescplural} +\glsmfublocker{\GLSaccessdescplural} +\glsmfublocker{\GLSaccessfmtdescplural} +\glsmfuaddmap{\glsaccessshort}{\Glsaccessshort} +\glsmfuaddmap{\glsaccessfmtshort}{\Glsaccessfmtshort} +\glsmfublocker{\GLSaccessshort} +\glsmfublocker{\GLSaccessfmtshort} +\glsmfuaddmap{\glsaccessshortpl}{\Glsaccessshortpl} +\glsmfuaddmap{\glsaccessfmtshortpl}{\Glsaccessfmtshortpl} +\glsmfublocker{\GLSaccessshortpl} +\glsmfublocker{\GLSaccessfmtshortpl} +\glsmfuaddmap{\glsaccesslong}{\Glsaccesslong} +\glsmfuaddmap{\glsaccessfmtlong}{\Glsaccessfmtlong} +\glsmfublocker{\GLSaccesslong} +\glsmfublocker{\GLSaccessfmtlong} +\glsmfuaddmap{\glsaccesslongpl}{\Glsaccesslongpl} +\glsmfuaddmap{\glsaccessfmtlongpl}{\Glsaccessfmtlongpl} +\glsmfublocker{\GLSaccesslongpl} +\glsmfublocker{\GLSaccessfmtlongpl} +\glsmfuaddmap{\glsaccessuseri}{\Glsaccessuseri} +\glsmfuaddmap{\glsaccessfmtuseri}{\Glsaccessfmtuseri} +\glsmfublocker{\GLSaccessuseri} +\glsmfublocker{\GLSaccessfmtuseri} +\glsmfuaddmap{\glsaccessuserii}{\Glsaccessuserii} +\glsmfuaddmap{\glsaccessfmtuserii}{\Glsaccessfmtuserii} +\glsmfublocker{\GLSaccessuserii} +\glsmfublocker{\GLSaccessfmtuserii} +\glsmfuaddmap{\glsaccessuseriii}{\Glsaccessuseriii} +\glsmfuaddmap{\glsaccessfmtuseriii}{\Glsaccessfmtuseriii} +\glsmfublocker{\GLSaccessuseriii} +\glsmfublocker{\GLSaccessfmtuseriii} +\glsmfuaddmap{\glsaccessuseriv}{\Glsaccessuseriv} +\glsmfuaddmap{\glsaccessfmtuseriv}{\Glsaccessfmtuseriv} +\glsmfublocker{\GLSaccessuseriv} +\glsmfublocker{\GLSaccessfmtuseriv} +\glsmfuaddmap{\glsaccessuserv}{\Glsaccessuserv} +\glsmfuaddmap{\glsaccessfmtuserv}{\Glsaccessfmtuserv} +\glsmfublocker{\GLSaccessuserv} +\glsmfublocker{\GLSaccessfmtuserv} +\glsmfuaddmap{\glsaccessuservi}{\Glsaccessuservi} +\glsmfuaddmap{\glsaccessfmtuservi}{\Glsaccessfmtuservi} +\glsmfublocker{\GLSaccessuservi} +\glsmfublocker{\GLSaccessfmtuservi} +% \end{macrocode} +% +%\subsection{Categories} %\begin{macro}{\glscategory} % Add a new storage key that can be used to indicate a category. The % default category is \category{general}. @@ -14460,6 +19898,22 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glssetcategoryattributes} +%\begin{definition} +%\cs{glssetcategoryattributes}\marg{category}\marg{attribute list}\marg{value} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% Similar to above, but globally apply to each attribute in the list +% to the given category. +% \begin{macrocode} +\newcommand*{\glssetcategoryattributes}[3]{% + \@for\@gls@thisattrlabel:=#2\do{% + \csgdef{@glsxtr@categoryattr@@#1@\@gls@thisattrlabel}{#3}% + }% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsgetcategoryattribute} %\begin{definition} %\cs{glsgetcategoryattribute}\marg{category}\marg{attribute-label} @@ -14575,6 +20029,69 @@ defined}{}% % \end{macrocode} %\end{macro} % +%Provide expandable test to determine if attribute is set to true. +%\begin{macro}{\@glsxtr@truevalue} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@truevalue}{true} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifcategoryattributetrue} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsifcategoryattributetrue}\marg{category-label}\marg{attribute}\marg{true}\marg{false} +%\end{definition} +%Does \meta{false} if the entry hasn't been defined. +% \begin{macrocode} +\newcommand*{\glsifcategoryattributetrue}[4]{% + \ifcsequal{@glsxtr@categoryattr@@#1@#2}% + {@glsxtr@truevalue}% + {#3}{#4}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifattributetrue} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsifattributetrue}\marg{label}\marg{attribute}\marg{true}\marg{false} +%\end{definition} +%Does \meta{false} if the entry hasn't been defined. +% \begin{macrocode} +\newcommand*{\glsifattributetrue}[4]{% + \ifcsundef{glo@\glsdetoklabel{#1}@category}% + {#4} + {\ifcsequal + {@glsxtr@categoryattr@@\csname glo@\glsdetoklabel{#1}@category\endcsname @#2}% + {@glsxtr@truevalue}% + {#3}{#4}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsifcategoryattributehasitem} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsifcategoryattributehasitem}\marg{category}\marg{attribute-label}\marg{item}\marg{true +%part}\marg{false part} +%\end{definition} +% True if category has the attribute (whose value is a +% comma-separated list) contains the given item. The \meta{item} is expanded. +% \begin{macrocode} +\newrobustcmd{\glsifcategoryattributehasitem}[5]{% + \ifcsundef{@glsxtr@categoryattr@@#1@#2}% + {#5}% + {% + \protected@edef\gls@tmp{% + \noexpand\DTLifinlist{#3}{\csuse{@glsxtr@categoryattr@@#1@#2}}}% + \gls@tmp{#4}{#5}% + }% +} +% \end{macrocode} +%\end{macro} +% % Set attributes for the default \category{general} category: % \begin{macrocode} \glssetcategoryattribute{general}{regular}{true} @@ -15006,7 +20523,7 @@ defined}{}% % Hide the label from the upper-casing command. % \begin{macrocode} \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% - \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% + \@glsxtr@glossnamefont{\glsuppercase{\glo@name}}% }% {#1}% }% @@ -15067,12 +20584,12 @@ defined}{}% % Hide the label from the upper-casing command. % \begin{macrocode} \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% - \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% + \@glsxtr@glossnamefont{\glsuppercase{\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 +% This little trick is used by \sty{glossaries} to allow the user to +% redefine \cs{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}% @@ -15171,7 +20688,7 @@ defined}{}% %\end{macro} % % Provide a convenient way to also index the entries using the -% standard \ics{index} mechanism. This may use different actual, +% standard \cs{index} mechanism. This may use different actual, % encap and escape characters to those used for the glossaries. % %\begin{macro}{\glsxtrpostnamehook} @@ -15303,7 +20820,7 @@ defined}{}% {% \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}% \@glsxtr@accessdisplay - {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}% + {\@glsxtr@glossnamefont{\glsuppercase{\glo@name}}}% {#1}% }% {% @@ -15317,7 +20834,7 @@ defined}{}% % \end{macrocode} % Do post-name hook. % \begin{macrocode} - \glsxtrpostnamehook{#1}% + \glsxtrpostnamehook{#1}% }% } % \end{macrocode} @@ -15333,7 +20850,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%If overriding is enabled, the \ics{glshypernumber} command will have to +%If overriding is enabled, the \cs{glshypernumber} command will have to %be redefined in the index to use \cs{hyperpage} instead. %\begin{macro}{\GlsXtrEnableIndexFormatOverride} % \begin{macrocode} @@ -15606,25 +21123,25 @@ defined}{}% %\end{macro} % % Set if defined. (For example, if \sty{doc} package has been -% loaded.) Actual character \ics{actualchar}: +% loaded.) Actual character \cs{actualchar}: % \begin{macrocode} \ifdef\actualchar {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}} {} % \end{macrocode} -% Quote character \ics{quotechar}: +% Quote character \cs{quotechar}: % \begin{macrocode} \ifdef\quotechar {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}} {} % \end{macrocode} -% Level character \ics{levelchar}: +% Level character \cs{levelchar}: % \begin{macrocode} \ifdef\levelchar {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}} {} % \end{macrocode} -% Encap character \ics{encapchar}: +% Encap character \cs{encapchar}: % \begin{macrocode} \ifdef\encapchar {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}} @@ -15683,20 +21200,14 @@ defined}{}% % entry definitions. %\changes{0.5.2}{2015-12-08}{added} % \begin{macrocode} -\ifdef\texorpdfstring -{ - \renewcommand*{\glossentrysymbol}[1]{% - \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% - } -} -{ - \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}} +\renewcommand*{\glossentrysymbol}[1]{% + \glstexorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% } % \end{macrocode} %\end{macro} % %\begin{macro}{\glsentrypdfsymbol} -%\changes{1.4.2}{??}{new} +%\changes{1.42}{2020-02-13}{new} %May be redefined to a field that expands to a value that's more %suitable for PDF bookmarks. % \begin{macrocode} @@ -15705,7 +21216,7 @@ defined}{}% %\end{macro} % %\begin{macro}{\@glossentrysymbol} -%\changes{1.4.2}{??}{new} +%\changes{1.42}{2020-02-13}{new} %There are no case-changing attributes as it's less usual for %symbols. %\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} @@ -15859,7 +21370,7 @@ defined}{}% %\end{macro} % %\begin{macro}{\@glsxtr@activate@initialtagging} -% Used in \cs{printglossary} but at least v4.19 of \styfmt{glossaries} +% Used in \cs{printglossary} but at least v4.19 of \sty{glossaries} % required. %\changes{0.5.2}{2015-12-08}{new} % \begin{macrocode} @@ -15887,7 +21398,7 @@ defined}{}% %\end{macro} % %\begin{macro}{\@gls@preglossaryhook} -% This macro was introduced in \styfmt{glossaries} version 4.19, so it +% This macro was introduced in \sty{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 @@ -15949,6 +21460,8 @@ defined}{}% %\end{macro} % %\begin{macro}{\glsxtrpostdescterm} +%This is redundant as it doesn't match any common categories. +%\cs{newterm} sets the category to index. % \begin{macrocode} \newcommand*{\glsxtrpostdescterm}{} % \end{macrocode} @@ -16042,6 +21555,48 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glspretopostlink} +%\changes{1.49}{2022-10-14}{new} +%Similar to the above but prepend. +% \begin{macrocode} +\newcommand*{\glspretopostlink}[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\glspretopostlink}{}}% + {% + \ifcsundef{glsxtrpostlink#1} + {\csdef{glsxtrpostlink#1}{#2}}% + {\cspreto{glsxtrpostlink#1}{#2}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsapptopostlink} +%\changes{1.49}{2022-10-14}{new} +%Similar to the above but append. +% \begin{macrocode} +\newcommand*{\glsapptopostlink}[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\glspretopostlink}{}}% + {% + \ifcsundef{glsxtrpostlink#1} + {\csdef{glsxtrpostlink#1}{#2}}% + {\csappto{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. @@ -16072,9 +21627,11 @@ defined}{}% % 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}} +%\changes{1.49}{2022-10-14}{added inner formatting} % \begin{macrocode} \newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{% - \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}% + \glsxtrifwasfirstuse{\glsxtrgenentrytextfmt{ }% + \glsxtrparen{\glsaccessfmtdesc{}{\glsxtrgenentrytextfmt}{\glslabel}}}{}% } % \end{macrocode} %\end{macro} @@ -16085,12 +21642,14 @@ defined}{}% % 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}} +%\changes{1.49}{2022-10-14}{added inner formatting} % \begin{macrocode} \newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{% \glsxtrifwasfirstuse {% \ifglshassymbol{\glslabel}% - {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}% + {\glsxtrgenentrytextfmt{ }% + \glsxtrparen{\glsaccessfmtsymbol{}{\glsxtrgenentrytextfmt}{\glslabel}}}% {}% }% {}% @@ -16108,12 +21667,13 @@ defined}{}% \newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{% \glsxtrifwasfirstuse {% - \space\glsxtrparen + \glsxtrgenentrytextfmt{ }\glsxtrparen {% \ifglshassymbol{\glslabel}% - {\glsaccesssymbol{\glslabel}, }% + {\glsaccessfmtsymbol{}{\glsxtrgenentrytextfmt}{\glslabel}% + \expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtrpostlinkSymbolDescSep}}% {}% - \glsaccessdesc{\glslabel}% + \glsaccessfmtdesc{}{\glsxtrgenentrytextfmt}{\glslabel}% }% }% {}% @@ -16121,6 +21681,23 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrpostlinkSymbolDescSep} +%\changes{1.49}{2022-10-14}{new} +% Separator used in the above +% \begin{macrocode} +\newcommand*{\glsxtrpostlinkSymbolDescSep}{, } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrdiscardperiodretainfirstuse} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrdiscardperiodretainfirstuse}[3]{% + \glsxtrifwassubsequentorshort{\glsxtrifperiod{#2}{#3}}{#3}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrdiscardperiod} % Discard following period (if present) if the % \catattr{discardperiod} attribute is true. If a period is @@ -16133,26 +21710,8 @@ defined}{}% %\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}{retainfirstuseperiod}{true}% + {\glsxtrdiscardperiodretainfirstuse{#1}{#2}{#3}}% {% \glsifattribute{#1}{discardperiod}{true}% {% @@ -16206,7 +21765,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{macro}{\glsxtrifpunc} +%\begin{macro}{\glsxtrifnextpunc} %\begin{definition} %\cs{glsxtrifnextpunc}\marg{true part}\marg{false part} %\end{definition} @@ -16271,14 +21830,15 @@ defined}{}% %\end{macro} % %\begin{macro}{\glsxtrdopostpunc} +%\changes{1.49}{2022-10-14}{made robust} %\begin{definition} %\cs{glsxtrdopostpunc}\marg{code} %\end{definition} -% If this is followed be a punctuation character, do \meta{code} +% If this is followed by a punctuation character, do \meta{code} % after the character otherwise do \meta{code} before whatever comes % next. % \begin{macrocode} -\newcommand{\glsxtrdopostpunc}[1]{% +\newrobustcmd{\glsxtrdopostpunc}[1]{% \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}% } % \end{macrocode} @@ -16290,9 +21850,9 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\section{Abbreviations} +%\subsection{Abbreviations} % -%The \qt{acronym} code from \styfmt{glossaries} is misnamed as it's more +%The \qt{acronym} code from \sty{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, @@ -16306,16 +21866,20 @@ defined}{}% \protected@edef\glscategorylabel{#1}% } % \end{macrocode} +%\changes{1.49}{2022-10-14}{split shortplural and longplural into separate +%family} +% The shortplural and longplural are parsed separately, so are now +% in another key family. % Save the short plural form. This may be needed before the entry is % defined. % \begin{macrocode} -\define@key{glsxtrabbrv}{shortplural}{% +\define@key{glsxtrabbrvpl}{shortplural}{% \def\@gls@shortpl{#1}% } % \end{macrocode} % Similarly for the long plural form. % \begin{macrocode} -\define@key{glsxtrabbrv}{longplural}{% +\define@key{glsxtrabbrvpl}{longplural}{% \def\@gls@longpl{#1}% } % \end{macrocode} @@ -16375,14 +21939,20 @@ defined}{}% %\begin{macro}{\glsxtrwordsep} %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} -\newcommand*{\glsxtrwordsep}{\space} +\newcommand*{\glsxtrwordsep}{\glsxtrgenentrytextfmt{ }} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrwordsephyphen} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\glsxtrwordsephyphen}{\glsxtrgenentrytextfmt{-}} % \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} +\newcommand*{\glsxtrword}[1]{\glsxtrgenentrytextfmt{#1}} % \end{macrocode} %\end{macro} %\begin{macro}{\@glsxtr@markwordseps} @@ -16440,9 +22010,13 @@ defined}{}% \def\glsxtrorgshort{#3}% \def\glsxtrorglong{#4}% % \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glsxtrorgkeylist}} +% \begin{macrocode} + \def\glsxtrorgkeylist{#1}% +% \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). +%Provide extra settings for hooks. Make sure to append a comma if +%this hook is changed. % \begin{macrocode} \def\ExtraCustomAbbreviationFields{}% % \end{macrocode} @@ -16459,7 +22033,11 @@ defined}{}% % \end{macrocode} % Ignore the shortplural and longplural keys. % \begin{macrocode} - \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% + \setkeys*{glsxtrabbrv}{#1}% +% \end{macrocode} +% Save remaining keys, just in case any hook also uses \cs{setkeys} +% \begin{macrocode} + \let\@glsxtrabbrv@rmkeys\XKV@rm % \end{macrocode} % Set the abbreviation style. % \begin{macrocode} @@ -16482,31 +22060,37 @@ defined}{}% }% % \end{macrocode} % Set the default long plural +%\changes{1.49}{2022-10-14}{bug fix: markwords doesn't include plural suffix} % \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} +% Mark this entry as having a description with formatting. +% \begin{macrocode} + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% }% {}% % \end{macrocode} % Has the \catattr{markshortwords} attribute been set? (Not % compatible with \catattr{insertdots}.) % \begin{macrocode} + \let\@glsxtr@if@markshortwords\@secondoftwo \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}% {% - \@glsxtr@markwordseps\@gls@short{#3}% +% \end{macrocode} +% Don't mark words until the default plural has been obtained. +% \begin{macrocode} + \let\@glsxtr@if@markshortwords\@firstoftwo + \def\@gls@short{#3}% }% {% % \end{macrocode} @@ -16541,11 +22125,17 @@ defined}{}% {% \let\@gls@shortpl\@gls@short }% - {% + {% \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short \abbrvpluralsuffix}% }% }% + \@glsxtr@if@markshortwords + {% + \expandafter\@glsxtr@markwordseps\expandafter\@gls@short + \expandafter{\@gls@short}% + }% + {}% % \end{macrocode} % Update \cs{glsshorttok}: % \begin{macrocode} @@ -16557,29 +22147,52 @@ defined}{}% % \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). +% Save the default short plural. % \begin{macrocode} - \setkeys*{glsxtrabbrv}[category]{#1}% + \let\@gls@default@shortpl\@gls@shortpl + \let\XKV@rm\@glsxtrabbrv@rmkeys + \setrmkeys*{glsxtrabbrvpl}% % \end{macrocode} -% Save in case required. +% Update \cs{glskeylisttok} so that it only has the remaining keys. % \begin{macrocode} - \let\@gls@org@longpl\@gls@longpl - \let\@gls@org@shortpl\@gls@shortpl + \expandafter\glskeylisttok\expandafter{\XKV@rm}% % \end{macrocode} -% Has the plural been explicitly set? +% Save in case required. % \begin{macrocode} - \ifx\@gls@default@longpl\@gls@longpl - \else + \let\@gls@org@longpl\@gls@longpl + \let\@gls@org@shortpl\@gls@shortpl % \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 + \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% + {% + \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter + {\@gls@longpl}% + }% + {}% +% \end{macrocode} +% Has the \catattr{markshortwords} attribute been set? +% \begin{macrocode} + \@glsxtr@if@markshortwords + {% + \expandafter\@glsxtr@markwordseps\expandafter\@gls@shortpl + \expandafter{\@gls@shortpl}% + }% + {% +% \end{macrocode} +% Has the \catattr{insertdots} attribute been set? +% \begin{macrocode} + \ifx\@gls@default@shortpl\@gls@shortpl + \else + \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% + {% + \expandafter\@glsxtr@insertdots\expandafter\@gls@shortpl + \expandafter{\@gls@shortpl}% + \appto\@gls@shortpl{\@}% + }% + {}% + \fi + }% % \end{macrocode} % Set the plural token registers so the values can be accessed by % the abbreviation styles. @@ -16601,8 +22214,8 @@ defined}{}% \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% {% - type=\glsxtrabbrvtype,% - category=abbreviation,% + type={\glsxtrabbrvtype},% + category={\glscategorylabel},% short={\the\glsshorttok},% shortplural={\the\glsshortpltok},% long={\the\glslongtok},% @@ -16610,13 +22223,13 @@ defined}{}% name={\the\glsshorttok},% \CustomAbbreviationFields,% % \end{macrocode} -% Hook may override abbreviation style default settings (this hook -% must end with a comma if set). +% Hook may override abbreviation style default settings. % \begin{macrocode} \ExtraCustomAbbreviationFields % \end{macrocode} % Any explicit fields set in the optional argument override all -% other settings. +% other settings, except for the ones that have already been +% processed. % \begin{macrocode} \the\glskeylisttok }% @@ -16626,6 +22239,16 @@ defined}{}% % Obtain the type and add it to the list of abbreviations. % \begin{macrocode} \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}% +% \end{macrocode} +% Exclude name, first, firstpl, text and plural fields from inner +% fmt as they include formatting commands. The description may also +% need adding, depending on the style. +% \begin{macrocode} + \glsexclapplyinnerfmtfield{\the\glslabeltok}{first}% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{firstpl}% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{text}% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{plural}% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{name}% \GlsXtrPostNewAbbreviation } % \end{macrocode} @@ -16663,55 +22286,150 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} %For the parenthetical styles. % \begin{macrocode} -\newcommand*{\glsxtrparen}[1]{(#1)} +\newcommand*{\glsxtrparen}[1]{% + \glsxtrgenentrytextfmt{(}#1\glsxtrgenentrytextfmt{)}} % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrfullformat} % Full format without case change. +%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt} % \begin{macrocode} \newcommand*{\glsxtrfullformat}[2]{% - \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% + \ifglsxtrinsertinside + \glsfirstlongfont{\glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}% } % \end{macrocode} %\end{macro} % %\begin{macro}{\Glsxtrfullformat} % Full format with case change. +%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt} % \begin{macrocode} \newcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% + \ifglsxtrinsertinside + \glsfirstlongfont{\Glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}% } +\glsmfuaddmap{\glsxtrfullformat}{\Glsxtrfullformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrfullformat} +% Full format with all caps. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrfullformat}[2]{% + \ifglsxtrinsertinside + \glsfirstlongfont{\GLSaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}}% +} +\glsmfublocker{\GLSxtrfullformat} % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrfullplformat} % Plural full format without case change. +%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt} % \begin{macrocode} \newcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% + \ifglsxtrinsertinside + \glsfirstlongfont{\glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}% } % \end{macrocode} %\end{macro} % %\begin{macro}{\Glsxtrfullplformat} % Plural full format with case change. +%\changes{1.49}{2022-10-14}{added check for insert inside and inner fmt} % \begin{macrocode} \newcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% + \ifglsxtrinsertinside + \glsfirstlongfont{\Glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}% } +\glsmfuaddmap{\glsxtrfullplformat}{\Glsxtrfullplformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrfullplformat} +% Full format with all caps. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrfullplformat}[2]{% + \ifglsxtrinsertinside + \glsfirstlongfont{\GLSaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsfirstlongfont{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont + {\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}}% +} +\glsmfublocker{\GLSxtrfullplformat} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtr@fullformat@fallback} +% Fallback for custom styles that don't implement all caps version. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtr@fullformat@fallback}[2]{% + \glsuppercase{\glsxtrfullformat{##1}{##2}}% +}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtr@fullplformat@fallback} +% Fallback for custom styles that don't implement all caps version. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtr@fullplformat@fallback}[2]{% + \glsuppercase{\glsxtrfullplformat{##1}{##2}}% +}% +% \end{macrocode} +%\end{macro} +% +% %\begin{macro}{\glsxtrfullsep} % Separator used by full format is a space by default. The argument % is the entry's label. +%\changes{1.49}{2022-10-14}{added inner fmt} % \begin{macrocode} -\newcommand*{\glsxtrfullsep}[1]{\space} +\newcommand*{\glsxtrfullsep}[1]{\glsxtrgenentrytextfmt{ }} % \end{macrocode} %\end{macro} % @@ -16732,6 +22450,14 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrinlinefullformat} +% Full format with all caps. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrfullplformat} % Plural full format without case change. % \begin{macrocode} @@ -16746,10 +22472,20 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrinlinefullplformat} +% Full format with all caps. +%\changes{1.49}{2022-10-14}{new} +% \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 +% Since these commands are 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. +% If expandable sentence case is required, use \cs{MFUsentencecase} +% on the non-case-change version. %\begin{macro}{\glsentryfull} % \begin{macrocode} \renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}} @@ -16759,6 +22495,7 @@ defined}{}% %\begin{macro}{\Glsentryfull} % \begin{macrocode} \renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}} +\glsmfuaddmap{\glsentryfull}{\Glsentryfull} % \end{macrocode} %\end{macro} % @@ -16771,6 +22508,7 @@ defined}{}% %\begin{macro}{\Glsentryfullpl} % \begin{macrocode} \renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}} +\glsmfuaddmap{\glsentryfullpl}{\Glsentryfullpl} % \end{macrocode} %\end{macro} % @@ -16782,6 +22520,28 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsfirstinnerfmtabbrvfont} +%\changes{1.49}{2022-10-14}{new} +%Include inner formatting command. +% \begin{macrocode} +\newrobustcmd*{\glsfirstinnerfmtabbrvfont}[1]{% + \glsfirstabbrvfont{\glsxtrgenentrytextfmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstxpabbrvfont} +%\changes{1.49}{2022-10-14}{new} +%Expand to appropriate formatting command. +% \begin{macrocode} +\newcommand*{\glsfirstxpabbrvfont}[2]{% + \glsifcategoryattributetrue{#2}{markshortwords}% + {\protect\glsfirstabbrvfont{#1}}% + {\glsfirstinnerfmtabbrvfont{#1}}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfirstabbrvdefaultfont} % Font changing command used for the abbreviation on first use or in % the full format. @@ -16801,6 +22561,28 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsinnerfmtabbrvfont} +%\changes{1.49}{2022-10-14}{new} +%Include inner formatting command. +% \begin{macrocode} +\newrobustcmd*{\glsinnerfmtabbrvfont}[1]{% + \glsabbrvfont{\glsxtrgenentrytextfmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxpabbrvfont} +%\changes{1.49}{2022-10-14}{new} +%Expand to appropriate formatting command. +% \begin{macrocode} +\newcommand*{\glsxpabbrvfont}[2]{% + \glsifcategoryattributetrue{#2}{markshortwords}% + {\protect\glsabbrvfont{#1}}% + {\glsinnerfmtabbrvfont{#1}}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsabbrvdefaultfont} %\changes{0.3}{2015-12-02}{renamed from \cs{abbrvdefaultfont}} % \begin{macrocode} @@ -16817,6 +22599,28 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsinnerfmtlongfont} +%\changes{1.49}{2022-10-14}{new} +%Include inner formatting command. +% \begin{macrocode} +\newrobustcmd*{\glsinnerfmtlongfont}[1]{% + \glslongfont{\glsxtrgenentrytextfmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxplongfont} +%\changes{1.49}{2022-10-14}{new} +%Expand to appropriate formatting command. +% \begin{macrocode} +\newcommand*{\glsxplongfont}[2]{% + \glsifcategoryattributetrue{#2}{markwords}% + {\protect\glslongfont{#1}}% + {\glsinnerfmtlongfont{#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} @@ -16834,6 +22638,28 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsfirstinnerfmtlongfont} +%\changes{1.49}{2022-10-14}{new} +%Include inner formatting command. +% \begin{macrocode} +\newrobustcmd*{\glsfirstinnerfmtlongfont}[1]{% + \glsfirstlongfont{\glsxtrgenentrytextfmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfirstxplongfont} +%\changes{1.49}{2022-10-14}{new} +%Expand to appropriate formatting command. +% \begin{macrocode} +\newcommand*{\glsfirstxplongfont}[2]{% + \glsifcategoryattributetrue{#2}{markwords}% + {\protect\glsfirstlongfont{#1}}% + {\glsfirstinnerfmtlongfont{#1}}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfirstlongdefaultfont} %\changes{0.5}{2015-12-07}{new} % \begin{macrocode} @@ -16857,6 +22683,20 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrrevert} +%\changes{1.49}{2022-10-14}{new} +% Provide a way to counteract the abbreviation font. +% \begin{macrocode} +\newcommand*{\glsxtrrevert}[1]{\glsxtrdefaultrevert{#1}}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrdefaultrevert} +%\changes{1.49}{2022-10-14}{new} +%The default simply does its argument. +% \begin{macrocode} +\newcommand*{\glsxtrdefaultrevert}[1]{#1}% +% \end{macrocode} +%\end{macro} %\begin{macro}{\glsxtrfull} % Full form (no case-change). % \begin{macrocode} @@ -16871,6 +22711,7 @@ defined}{}% % Low-level macro: % \begin{macrocode} \def\@glsxtr@full#1#2[#3]{% + \def\glsxtrcurrentfield{}% % \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 @@ -16882,9 +22723,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} \def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}% % \end{macrocode} % What should \cs{glsxtrifwasfirstuse} be set to here? Where the inline @@ -16918,19 +22763,25 @@ defined}{}% \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}% {\@Glsxtr@full{#1}{#2}[]}% } +\glsmfuaddmap{\glsxtrfull}{\Glsxtrfull} % \end{macrocode} %\end{macro} %\begin{macro}{\@Glsxtr@full} % Low-level macro: % \begin{macrocode} \def\@Glsxtr@full#1#2[#3]{% + \def\glsxtrcurrentfield{}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} \def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% @@ -16954,19 +22805,25 @@ defined}{}% % Low-level macro: % \begin{macrocode} \def\@GLSxtr@full#1#2[#3]{% + \def\glsxtrcurrentfield{}% \glsdoifexists{#2}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree - \let\glsinsert\@empty - \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}% + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} + \def\glscustomtext{\GLSxtrinlinefullformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook } +\glsmfublocker{\GLSxtrfull} % \end{macrocode} %\end{macro} % @@ -16984,6 +22841,7 @@ defined}{}% % Low-level macro: % \begin{macrocode} \def\@glsxtr@fullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% % \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 @@ -16995,9 +22853,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} \def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% @@ -17015,12 +22877,14 @@ defined}{}% \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}% {\@Glsxtr@fullpl{#1}{#2}[]}% } +\glsmfuaddmap{\glsxtrfullpl}{\Glsxtrfullpl} % \end{macrocode} %\end{macro} %\begin{macro}{\@Glsxtr@fullpl} % Low-level macro: % \begin{macrocode} \def\@Glsxtr@fullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% % \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 @@ -17032,9 +22896,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} \def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% @@ -17052,12 +22920,14 @@ defined}{}% \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}% {\@GLSxtr@fullpl{#1}{#2}[]}% } +\glsmfublocker{\GLSxtrfullpl} % \end{macrocode} %\end{macro} %\begin{macro}{\@GLSxtr@fullpl} % Low-level macro: % \begin{macrocode} \def\@GLSxtr@fullpl#1#2[#3]{% + \def\glsxtrcurrentfield{}% % \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 @@ -17068,11 +22938,15 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree - \let\glsinsert\@empty + \glsxtrfullsaveinsert{#2}{#3}% +% \end{macrocode} +% The innertextformat support should be provided within the inline command. +% \begin{macrocode} \def\glscustomtext{% - \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}% + \GLSxtrinlinefullplformat{#2}{#3}}% \glsxtrsetupfulldefs \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17096,6 +22970,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@glsxtrshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17110,13 +22985,13 @@ defined}{}% % \begin{macrocode} \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \glsxtrshortformat{#2}{#3}{\glsabbrvfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17128,6 +23003,7 @@ defined}{}% %\begin{macro}{\Glsxtrshort} % \begin{macrocode} \newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort} +\glsmfuaddmap{\glsxtrshort}{\Glsxtrshort} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17139,6 +23015,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@Glsxtrshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17150,13 +23027,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \Glsxtrshortformat{#2}{#3}{\glsabbrvfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17168,6 +23045,7 @@ defined}{}% %\begin{macro}{\GLSxtrshort} % \begin{macrocode} \newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort} +\glsmfublocker{\GLSxtrshort} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17179,6 +23057,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@GLSxtrshort#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17190,16 +23069,12 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \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 - }% - }% + \glsxtrsaveinsert{#2}{#3}% + \def\glscustomtext{\GLSxtrshortformat{#2}{#3}{\glsabbrvfont}}% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% \glspostlinkhook @@ -17207,6 +23082,18 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrsetlongfirstuse} +% Assigns \cs{glsxtrifwasfirstuse} for the long commands. +%The argument is the entry label. This now makes commands such as +%\cs{glsxtrlong} simulate first use. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glsxtrsetlongfirstuse}[1]{% + \let\glsxtrifwasfirstuse\@firstoftwo +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrlong} % \begin{macrocode} \newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong} @@ -17221,6 +23108,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@glsxtrlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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 @@ -17231,13 +23119,13 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \glsxtrlongformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17249,6 +23137,7 @@ defined}{}% %\begin{macro}{\Glsxtrlong} % \begin{macrocode} \newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong} +\glsmfuaddmap{\glsxtrlong}{\Glsxtrlong} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17260,23 +23149,25 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@Glsxtrlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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}} +%\changes{1.49}{2022-10-14}{now simulates first use} % \begin{macrocode} \@glsxtr@record{#1}{#2}{glslink}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \Glsxtrlongformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17288,6 +23179,7 @@ defined}{}% %\begin{macro}{\GLSxtrlong} % \begin{macrocode} \newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong} +\glsmfublocker{\GLSxtrlong} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17299,6 +23191,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@GLSxtrlong#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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 @@ -17309,15 +23202,13 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@secondoftwo \let\glscapscase\@thirdofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \mfirstucMakeUppercase - {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi - }% + \GLSxtrlongformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17342,6 +23233,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@glsxtrshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17353,13 +23245,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \glsxtrshortplformat{#2}{#3}{\glsabbrvfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17372,6 +23264,7 @@ defined}{}% %\changes{0.3}{2015-12-02}{new} % \begin{macrocode} \newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl} +\glsmfuaddmap{\glsxtrshortpl}{\Glsxtrshortpl} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17383,6 +23276,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@Glsxtrshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17394,13 +23288,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \Glsxtrshortplformat{#2}{#3}{\glsabbrvfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17413,6 +23307,7 @@ defined}{}% %\changes{0.3}{2015-12-02}{new} % \begin{macrocode} \newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl} +\glsmfublocker{\GLSxtrshortpl} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17424,6 +23319,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@GLSxtrshortpl#1#2[#3]{% + \def\glsxtrcurrentfield{short}% % \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 @@ -17435,15 +23331,13 @@ defined}{}% {% \glssetabbrvfmt{\glscategory{#2}}% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \let\glsxtrifwasglslike\@secondoftwo \let\glsxtrifwasfirstuse\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree - \let\glsinsert\@empty + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \mfirstucMakeUppercase - {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi - }% + \GLSxtrshortplformat{#2}{#3}{\glsabbrvfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17468,6 +23362,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@glsxtrlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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 @@ -17478,13 +23373,13 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@firstofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \glsxtrlongplformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17497,6 +23392,7 @@ defined}{}% %\changes{0.3}{2015-12-02}{new} % \begin{macrocode} \newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl} +\glsmfuaddmap{\glsxtrlongpl}{\Glsxtrlongpl} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17508,6 +23404,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@Glsxtrlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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 @@ -17518,13 +23415,13 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@secondofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi + \Glsxtrlongplformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17537,6 +23434,7 @@ defined}{}% %\changes{0.3}{2015-12-02}{new} % \begin{macrocode} \newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl} +\glsmfublocker{\GLSxtrlongpl} % \end{macrocode} % Define the un-starred form. Need to determine if there is % a final optional argument @@ -17548,6 +23446,7 @@ defined}{}% % Read in the final optional argument: % \begin{macrocode} \def\@GLSxtrlongpl#1#2[#3]{% + \def\glsxtrcurrentfield{long}% % \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 @@ -17558,15 +23457,13 @@ defined}{}% \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper - \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsxtrifwasglslike\@secondoftwo \let\glsifplural\@firstoftwo \let\glscapscase\@thirdofthree - \let\glsinsert\@empty + \glsxtrsetlongfirstuse{#2}% + \glsxtrsaveinsert{#2}{#3}% \def\glscustomtext{% - \mfirstucMakeUppercase - {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}% - \ifglsxtrinsertinside\else#3\fi - }% + \GLSxtrlongplformat{#2}{#3}{\glslongfont}% }% \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% }% @@ -17609,6 +23506,10 @@ defined}{}% %\begin{macro}{\glsxtrgenabbrvfmt} % Similar to \cs{glsgenacfmt}, but for abbreviations. %\changes{1.17}{2017-08-09}{added check for \cs{ifglsxtrinsertinside}} +% The expansion is to ensure that \cs{glsinsert} is expanded before being +% passed to \cs{glsfmtfield} etc in the event that an inner command +% is being used (which typically signifies a complex formatting command +% such as those provided by \sty{soul}). % \begin{macrocode} \newcommand*{\glsxtrgenabbrvfmt}{% \ifdefempty\glscustomtext @@ -17628,20 +23529,22 @@ defined}{}% % \end{macrocode} % Subsequent plural form, don't adjust case: % \begin{macrocode} - \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + \expandafter\glsxtrsubsequentplfmt\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % Subsequent plural form, make first letter upper case: % \begin{macrocode} - \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + \expandafter\Glsxtrsubsequentplfmt\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % Subsequent plural form, all caps: % \begin{macrocode} - \mfirstucMakeUppercase - {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}% + \expandafter\GLSxtrsubsequentplfmt\expandafter\glslabel + \expandafter{\glsinsert}% }% }% {% @@ -17653,20 +23556,22 @@ defined}{}% % \end{macrocode} % Subsequent singular form, don't adjust case: % \begin{macrocode} - \glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + \expandafter\glsxtrsubsequentfmt\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % Subsequent singular form, make first letter upper case: % \begin{macrocode} - \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + \expandafter\Glsxtrsubsequentfmt\expandafter + \glslabel\expandafter{\glsinsert}% }% {% % \end{macrocode} % Subsequent singular form, all caps: % \begin{macrocode} - \mfirstucMakeUppercase - {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}% + \expandafter\GLSxtrsubsequentfmt\expandafter + \glslabel\expandafter{\glsinsert}% }% }% }% @@ -17684,20 +23589,22 @@ defined}{}% % \end{macrocode} % First use plural form, don't adjust case: % \begin{macrocode} - \glsxtrfullplformat{\glslabel}{\glsinsert}% + \expandafter\glsxtrfullplformat\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % First use plural form, make first letter upper case: % \begin{macrocode} - \Glsxtrfullplformat{\glslabel}{\glsinsert}% + \expandafter\Glsxtrfullplformat\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % First use plural form, all caps: % \begin{macrocode} - \mfirstucMakeUppercase - {\glsxtrfullplformat{\glslabel}{\glsinsert}}% + \expandafter\GLSxtrfullplformat\expandafter\glslabel + \expandafter{\glsinsert}% }% }% {% @@ -17709,27 +23616,31 @@ defined}{}% % \end{macrocode} % First use singular form, don't adjust case: % \begin{macrocode} - \glsxtrfullformat{\glslabel}{\glsinsert}% + \expandafter\glsxtrfullformat\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % First use singular form, make first letter upper case: % \begin{macrocode} - \Glsxtrfullformat{\glslabel}{\glsinsert}% + \expandafter\Glsxtrfullformat\expandafter\glslabel + \expandafter{\glsinsert}% }% {% % \end{macrocode} % First use singular form, all caps: % \begin{macrocode} - \mfirstucMakeUppercase - {\glsxtrfullformat{\glslabel}{\glsinsert}}% + \expandafter\GLSxtrfullformat\expandafter\glslabel + \expandafter{\glsinsert}% }% }% }% }% {% % \end{macrocode} -% User supplied text. +% Custom text provided in \cs{glsdisp}. (The insert is most likely +% to be empty at this point.) Any inner formatting can be supplied with the custom +% text. % \begin{macrocode} \glscustomtext }% @@ -17742,8 +23653,22 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% - \ifglsxtrinsertinside \else#2\fi + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}% + \else + \glsabbrvfont{\glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% } \let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt % \end{macrocode} @@ -17754,8 +23679,22 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% - \ifglsxtrinsertinside \else#2\fi + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + \glsabbrvfont{\glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% } \let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt % \end{macrocode} @@ -17766,10 +23705,25 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\Glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% - \ifglsxtrinsertinside \else#2\fi + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\Glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}% + \else + \glsabbrvfont{\Glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\Glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% } \let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt +\glsmfuaddmap{\glsxtrsubsequentfmt}{\Glsxtrsubsequentfmt} % \end{macrocode} %\end{macro} % @@ -17778,14 +23732,87 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% - \ifglsxtrinsertinside \else#2\fi + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\Glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + \glsabbrvfont{\Glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\Glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% } \let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt +\glsmfuaddmap{\glsxtrsubsequentplfmt}{\Glsxtrsubsequentplfmt} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrsubsequentfmt} +% Subsequent use format (singular, all caps). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrsubsequentfmt}[2]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\GLSaccessshort{#1}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + \glsabbrvfont{\GLSaccessshort{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\GLSaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +} +\glsmfublocker{\GLSxtrsubsequentfmt} +\let\GLSxtrdefaultsubsequentfmt\GLSxtrsubsequentfmt % \end{macrocode} %\end{macro} % -%\subsection{Abbreviation Styles Setup} +%\begin{macro}{\GLSxtrsubsequentplfmt} +% Subsequent use format (plural, all caps). +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrsubsequentplfmt}[2]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\GLSaccessshortpl{#1}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + \glsabbrvfont{\GLSaccessshortpl{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + \glsabbrvfont{\GLSaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + \glsabbrvfont{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsuppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +} +\glsmfublocker{\GLSxtrsubsequentplfmt} +\let\GLSxtrdefaultsubsequentplfmt\GLSxtrsubsequentplfmt +% \end{macrocode} +%\end{macro} +% +%\subsubsection{Abbreviation Styles Setup} % %\begin{macro}{\setabbreviationstyle} % \begin{macrocode} @@ -17850,6 +23877,122 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrsetcomplexstyle} +%\changes{1.49}{2022-10-14}{new} +%Identify an entry as having a complex abbreviation style that +%doesn't work with \cs{GLSfirst} etc. The argument is the entry +%label. The second argument should be numeric: 1 (all caps doesn't +%work), 2 (all caps and insert don't work), 3 (insert doesn't work). +% \begin{macrocode} +\newcommand*{\glsxtrsetcomplexstyle}[2]{% + \csdef{@glsxtr@has@complexstyle@#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@do@ifcomplexstyle@allcaps} +%\changes{1.49}{2022-10-14}{new} +%Do second argument if entry identified by first argument has a +%problem with all caps. Does nothing otherwise. +% \begin{macrocode} +\newcommand*{\glsxtr@do@ifcomplexstyle@allcaps}[2]{% + \ifcsdef{@glsxtr@has@complexstyle@#1}% + {% + \ifnum\csuse{@glsxtr@has@complexstyle@#1}<1 + \else + \ifnum\csuse{@glsxtr@has@complexstyle@#1}<3 + #2% + \fi + \fi + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@do@ifcomplexstyle@insert} +%\changes{1.49}{2022-10-14}{new} +%Do second argument if entry identified by first argument has a +%problem with the insert argument. Does nothing otherwise. +% \begin{macrocode} +\newcommand*{\glsxtr@do@ifcomplexstyle@insert}[2]{% + \ifcsdef{@glsxtr@has@complexstyle@#1}% + {% + \ifnum\csuse{@glsxtr@has@complexstyle@#1}<2 + \else + #2% + \fi + }% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlossariesAbbrStyleTooComplexWarning} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GlossariesAbbrStyleTooComplexWarning}[2]{% + \GlossariesExtraWarning{Abbreviation style used by `#1' too complex #2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@check@complexstyle} +%\changes{1.49}{2022-10-14}{new} +%The first argument is the label the second is the insert. +% \begin{macrocode} +\newcommand*{\glsxtr@check@complexstyle}[2]{% + \ifx\glscapscase\@thirdofthree + \glsxtr@do@ifcomplexstyle@allcaps{#1}% + {% + \glsxtrifwasfirstuse + {% + \glsifplural + {% + \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSfirstplural. + Use \string\GLSpl{#1} or \string\GLSxtrfullpl{#1} instead. + Switching off all-caps% + }% + }% + {% + \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSfirst. + Use \string\GLS{#1} or \string\GLSxtrfull{#1} instead. + Switching off all-caps% + }% + }% + }% + {% + \glsifplural + {% + \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLSplural. + Use \string\GLSpl{#1} or \string\GLSxtrshortpl{#1} instead. + Switching off all-caps% + }% + }% + {% + \GlossariesAbbrStyleTooComplexWarning{#1}{for \string\GLStext. + Use \string\GLS{#1} or \string\GLSxtrshort{#1} instead. + Switching off all-caps% + }% + }% + }% + \let\glscapscase\@firstofthree + }% + \fi + \ifstrempty{#2}{}% + {% + \glsxtr@do@ifcomplexstyle@insert{#1}% + {% + \GlossariesAbbrStyleTooComplexWarning{#1}% + {to support insert argument with commands like \string\glsfirst\space or + \string\glstext. Unexpected results may occur. Use commands + like \string\gls\space or \string\glsxtrshort\space instead}% + }% + }% +} +% \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 @@ -17877,8 +24020,16 @@ defined}{}% % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat}% \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% + \renewcommand*{\GLSxtrinlinefullplformat}{\GLSxtrfullplformat}% +% \end{macrocode} +%In the event that some custom styles predate the introduction of +%the all caps versions, provide default definitions: +% \begin{macrocode} + \renewcommand*{\GLSxtrfullformat}{\GLSxtr@fullformat@fallback}% + \renewcommand*{\GLSxtrfullplformat}{\GLSxtr@fullplformat@fallback}% % \end{macrocode} % Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this. % \begin{macrocode} @@ -17886,6 +24037,8 @@ defined}{}% \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt + \let\GLSxtrsubsequentfmt\GLSxtrdefaultsubsequentfmt + \let\GLSxtrsubsequentplfmt\GLSxtrdefaultsubsequentplfmt #3}% }% } @@ -17914,8 +24067,26 @@ defined}{}% % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\GLSxtrinlinefullformat}{\GLSxtrfullformat}% \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% + \renewcommand*{\GLSxtrinlinefullplformat}{\GLSxtrfullplformat}% +% \end{macrocode} +%In the event that some custom styles predate the introduction of +%the all caps versions, provide default definitions: +% \begin{macrocode} + \renewcommand*{\GLSxtrfullformat}{\GLSxtr@fullformat@fallback}% + \renewcommand*{\GLSxtrfullplformat}{\GLSxtr@fullplformat@fallback}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{reset subsequent fmts} +% Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this. +% \begin{macrocode} + \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt + \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt + \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt + \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt + \let\GLSxtrsubsequentfmt\GLSxtrdefaultsubsequentfmt + \let\GLSxtrsubsequentplfmt\GLSxtrdefaultsubsequentplfmt #3}% }% } @@ -17991,19 +24162,26 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\subsection{Predefined Styles (Default Font)} +%\subsubsection{Predefined Styles} % 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 +% \cs{glsfirst}. In order for the sentence case 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. % +%v1.49 has introduced innertextformat for formatting commands that +%need access to the actual text (which is normally too deeply +%embedded). The styles have been modified to allow for this. The all +%caps versions also now need to be implemented within the styles as +%again the text is now to deeply embedded for the case change to +%otherwise work. +% %\begin{macro}{\ifglsxtrinsertinside} %\changes{1.02}{2016-04-25}{new} % Switch to determine if the insert text should be inside or outside @@ -18013,16 +24191,6723 @@ defined}{}% \glsxtrinsertinsidefalse % \end{macrocode} %\end{macro} +%The abbreviation styles are now defined in the file +%\texttt{glossaries-extra-abbrstyles.def}, which needs to be input +%here: +% \begin{macrocode} +\input{glossaries-extra-abbrstyles.def} +% \end{macrocode} +% +%\subsection{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 +% \cs{MakeUppercase} (which is used by the default headings style) +% and they need to be expandable for PDF bookmarks. The +% \sty{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 \sty{glossaries} automatically loads \sty{textcase} +% unless \sty{mfirstuc} 2.08+ is detected, 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}. (With newer +% versions of \sty{mfirstuc}, exclusions are used to protect labels). +% +% 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. This only needs to be +% done with old versions of \sty{mfirstuc}. +% +%\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]{% + \let\glsxtrifintoc\@firstoftwo + \glsxtrmarkhook + \@glsxtrinmark + \@glsxtr@org@@starttoc{#1}% + \@glsxtrnotinmark + \glsxtrrestoremarkhook + \let\glsxtrifintoc\@secondoftwo +} +% \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} +\newcommand*{\glsxtrtitleorpdforheading}[3]{% + \glsxtrifinmark{#3}{\glstexorpdfstring{#1}{#2}}} +% \end{macrocode} +%\end{macro} +% +%\changes{1.49}{2022-10-14}{add gettitlestring patch for \cs{glsxtrtitleorpdforheading}} +%This will require \verb|\GetTitleStringSetup{expand}| to work. +% \begin{macrocode} +\ifdef\GetTitleStringDisableCommands +{\GetTitleStringDisableCommands{\let\glsxtrtitleorpdforheading\@thirdofthree + \let\glsxtrifinmark\@firstoftwo}} +{} +% \end{macrocode} +% +%\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} + \@glsxtr@saveMakeUppercase + \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@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@GLSxtrtitletext\GLSxtrtitletext + \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural + \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@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 + \let\@glsxtr@org@GLSxtrtitlefull\GLSxtrtitlefull + \let\@glsxtr@org@GLSxtrtitlefullpl\GLSxtrtitlefullpl +% \end{macrocode} +% New definitions +% \begin{macrocode} + \let\glsxtrifinmark\@firstoftwo + \@glsxtr@assignMakeUppercase + \let\glsxtrtitleorpdforheading\@thirdofthree + \let\glsxtrtitleshort\glsxtrheadshort + \let\glsxtrtitleshortpl\glsxtrheadshortpl + \let\Glsxtrtitleshort\Glsxtrheadshort + \let\Glsxtrtitleshortpl\Glsxtrheadshortpl + \let\GLSxtrtitleshort\GLSxtrheadshort + \let\GLSxtrtitleshortpl\GLSxtrheadshortpl + \let\glsxtrtitlename\glsxtrheadname + \let\Glsxtrtitlename\Glsxtrheadname + \let\GLSxtrtitlename\GLSxtrheadname + \let\glsxtrtitletext\glsxtrheadtext + \let\Glsxtrtitletext\Glsxtrheadtext + \let\GLSxtrtitletext\GLSxtrheadtext + \let\glsxtrtitleplural\glsxtrheadplural + \let\Glsxtrtitleplural\Glsxtrheadplural + \let\GLSxtrtitleplural\GLSxtrheadplural + \let\glsxtrtitlefirst\glsxtrheadfirst + \let\Glsxtrtitlefirst\Glsxtrheadfirst + \let\GLSxtrtitlefirst\GLSxtrheadfirst + \let\glsxtrtitlefirstplural\glsxtrheadfirstplural + \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 + \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 + \@glsxtr@restoreMakeUppercase + \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\GLSxtrtitleshort\@glsxtr@org@GLSxtrtitleshort + \let\GLSxtrtitleshortpl\@glsxtr@org@GLSxtrtitleshortpl + \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename + \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename + \let\GLSxtrtitlename\@glsxtr@org@GLSxtrtitlename + \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext + \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext + \let\GLSxtrtitletext\@glsxtr@org@GLSxtrtitletext + \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural + \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural + \let\GLSxtrtitleplural\@glsxtr@org@GLSxtrtitleplural + \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst + \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst + \let\GLSxtrtitlefirst\@glsxtr@org@GLSxtrtitlefirst + \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural + \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 + \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}{\glsxtrtitleopts} +%\changes{1.49}{2022-10-14}{new} +%Make it possible to change the default options within the title +%(but not the page header or table of contents). +% \begin{macrocode} +\newcommand*{\glsxtrtitleopts}{noindex,hyper=false} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@title@field} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtr@title@field}\marg{cs}\marg{label} +%\end{definition} +%Used by all the \cs{glsxtrtitle\meta{field}} commands for +%consistency. +% \begin{macrocode} +\newcommand*{\glsxtr@title@field}[2]{% + \expandafter#1\expandafter[\glsxtrtitleopts]{#2}[]% +} +% \end{macrocode} +%\end{macro} +% +%\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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleshort}[1]{% + \glsxtr@title@field\glsxtrshort{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrshort} to +%\cs{glsxtrshortpl}} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleshortpl}[1]{% + \glsxtr@title@field\glsxtrshortpl{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleshort}[1]{% + \glsxtr@title@field\Glsxtrshort{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadshort} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadshort}[1]{% + \protect\NoCaseChange + {% + \GLSxtrshort[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitleshort} +%\changes{1.42}{2020-02-03}{new} +% Command to display short form of abbreviation in section title +% in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleshort}[1]{% + \glsxtr@title@field\GLSxtrshort{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadshortpl} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadshortpl}[1]{% + \protect\NoCaseChange + {% + \GLSxtrshortpl[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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleshortpl}[1]{% + \glsxtr@title@field\Glsxtrshortpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitleshortpl} +%\changes{1.42}{2020-02-03}{new} +% Command to display plural short form of abbreviation in section title +% in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleshortpl}[1]{% + \glsxtr@title@field\GLSxtrshortpl{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlename}[1]{% + \glsxtr@title@field\glsname{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter changed to upper case. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlename}[1]{% + \glsxtr@title@field\Glsname{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadname} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadname}[1]{% + \protect\NoCaseChange + {% + \GLSname[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlename} +% Command to display \gloskey{name} value in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlename}[1]{% + \glsxtr@title@field\GLSname{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitletext}[1]{% + \glsxtr@title@field\glstext{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitletext}[1]{% + \glsxtr@title@field\Glstext{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadtext} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadtext}[1]{% + \protect\NoCaseChange + {% + \GLStext[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitletext} +% Command to display \gloskey{text} value in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitletext}[1]{% + \glsxtr@title@field\GLStext{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitleplural}[1]{% + \glsxtr@title@field\glsplural{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitleplural}[1]{% + \glsxtr@title@field\Glsplural{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadplural} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadplural}[1]{% + \protect\NoCaseChange + {% + \GLSplural[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitleplural} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{plural} value in section title +% in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleplural}[1]{% + \glsxtr@title@field\GLSplural{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefirst}[1]{% + \glsxtr@title@field\glsfirst{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefirst}[1]{% + \glsxtr@title@field\Glsfirst{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadfirst} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadfirst}[1]{% + \protect\NoCaseChange + {% + \GLSfirst[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlefirst} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{first} value in section title +% in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefirst}[1]{% + \glsxtr@title@field\GLSfirst{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefirstplural}[1]{% + \glsxtr@title@field\glsfirstplural{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter changed to upper case. +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{% + \glsxtr@title@field\Glsfirstplural{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadfirstplural} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadfirstplural}[1]{% + \protect\NoCaseChange + {% + \GLSfirstplural[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlefirstplural} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{first} value in section title +% in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% + \glsxtr@title@field\GLSfirstplural{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlelong}[1]{% + \glsxtr@title@field\glsxtrlong{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\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]{% + \glsxtr@title@field\glsxtrlongpl{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlelong}[1]{% + \glsxtr@title@field\Glsxtrlong{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlelong} +% Command to display long form of abbreviation in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlelong}[1]{% + \glsxtr@title@field\GLSxtrlong{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadlong} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadlong}[1]{% + \protect\NoCaseChange + {% + \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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlelongpl}[1]{% + \glsxtr@title@field\Glsxtrlongpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlelongpl} +% Command to display plural long form of abbreviation in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlelongpl}[1]{% + \glsxtr@title@field\GLSxtrlongpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadlongpl} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadlongpl}[1]{% + \protect\NoCaseChange + {% + \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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefull}[1]{% + \glsxtr@title@field\glsxtrfull{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrtitlefullpl}[1]{% + \glsxtr@title@field\glsxtrfullpl{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefull}[1]{% + \glsxtr@title@field\Glsxtrfull{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadfull} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadfull}[1]{% + \protect\NoCaseChange + {% + \GLSxtrfull[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlefull} +% Command to display full form of abbreviation in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefull}[1]{% + \glsxtr@title@field\GLSxtrfull{#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 + {% + \glsxtrifheaduc{#1}% + {% + \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 +% with the first letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newrobustcmd*{\Glsxtrtitlefullpl}[1]{% + \glsxtr@title@field\Glsxtrfullpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrheadfullpl} +%\changes{1.49}{2022-10-14}{new} +%There's no need to check for the headuc attribute. +% \begin{macrocode} +\newcommand*{\GLSxtrheadfullpl}[1]{% + \protect\NoCaseChange + {% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrtitlefullpl} +% Command to display plural full form of abbreviation in section title +% in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefullpl}[1]{% + \glsxtr@title@field\GLSxtrfullpl{#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} +\newcommand*{\glsfmtshort}[1]{% + \glstexorpdfstring + {\glsxtrtitleshort{#1}}% + {\glsentryshort{#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} +\newcommand*{\glsfmtshortpl}[1]{% + \glstexorpdfstring + {\glsxtrtitleshortpl{#1}}% + {\glsentryshortpl{#1}}% +} +% \end{macrocode} +%\end{macro} +% Use the expandable \cs{MFUsentencecase} in the PDF bookmark. +%\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}} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtshort}[1]{% + \glstexorpdfstring + {\Glsxtrtitleshort{#1}}% + {\MFUsentencecase{\glsentryshort{#1}}}% +} +\glsmfuaddmap{\glsfmtshort}{\Glsfmtshort} +% \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}} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtshortpl}[1]{% + \glstexorpdfstring + {\Glsxtrtitleshortpl{#1}}% + {\MFUsentencecase{\glsentryshortpl{#1}}}% +} +\glsmfuaddmap{\glsfmtshortpl}{\Glsfmtshortpl} +% \end{macrocode} +%\end{macro} +% +% Similarly for all-caps. +%\begin{macro}{\GLSfmtshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtshort}[1]{% + \glstexorpdfstring + {\GLSxtrtitleshort{#1}}% + {\GLSxtrusefield{#1}{short}}% +} +\glsmfublocker{\GLSfmtshort} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtshortpl}[1]{% + \glstexorpdfstring + {\GLSxtrtitleshortpl{#1}}% + {\GLSxtrusefield{#1}{shortpl}}% +} +\glsmfublocker{\GLSfmtshortpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtname} +%As above but for the \gloskey{name} value. +%\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} +\newcommand*{\glsfmtname}[1]{% + \glstexorpdfstring + {\glsxtrtitlename{#1}}% + {\glsentryname{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtname} +%First letter converted to upper case. +%\changes{1.21}{2017-11-03}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtname}[1]{% + \glstexorpdfstring + {\Glsxtrtitlename{#1}}% + {\MFUsentencecase{\glsentryname{#1}}}% +} +\glsmfuaddmap{\glsfmtname}{\Glsfmtname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtname} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtname}[1]{% + \glstexorpdfstring + {\GLSxtrtitlename{#1}}% + {\GLSxtrusefield{#1}{name}}% +} +\glsmfublocker{\GLSfmtname} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\glsfmttext} +%As above but for the \gloskey{text} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsfmttext}[1]{% + \glstexorpdfstring + {\glsxtrtitletext{#1}}% + {\glsentrytext{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmttext} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmttext}[1]{% + \glstexorpdfstring + {\Glsxtrtitletext{#1}}% + {\MFUsentencecase{\glsentrytext{#1}}}% +} +\glsmfuaddmap{\glsfmttext}{\Glsfmttext} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmttext} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmttext}[1]{% + \glstexorpdfstring + {\GLSxtrtitletext{#1}}% + {\GLSxtrusefield{#1}{text}}% +} +\glsmfublocker{\GLSfmttext} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtplural} +%As above but for the \gloskey{plural} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsfmtplural}[1]{% + \glstexorpdfstring + {\glsxtrtitleplural{#1}}% + {\glsentryplural{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtplural} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtplural}[1]{% + \glstexorpdfstring + {\Glsxtrtitleplural{#1}}% + {\MFUsentencecase{\glsentryplural{#1}}}% +} +\glsmfuaddmap{\glsfmtplural}{\Glsfmtplural} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtplural} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtplural}[1]{% + \glstexorpdfstring + {\GLSxtrtitleplural{#1}}% + {\GLSxtrusefield{#1}{plural}}% +} +\glsmfublocker{\GLSfmtplural} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfirst} +%As above but for the \gloskey{first} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsfmtfirst}[1]{% + \glstexorpdfstring + {\glsxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfirst} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtfirst}[1]{% + \glstexorpdfstring + {\Glsxtrtitlefirst{#1}}% + {\MFUsentencecase{\glsentryfirst{#1}}}% +} +\glsmfuaddmap{\glsfmtfirst}{\Glsfmtfirst} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtfirst} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtfirst}[1]{% + \glstexorpdfstring + {\GLSxtrtitlefirst{#1}}% + {\GLSxtrusefield{#1}{first}}% +} +\glsmfublocker{\GLSfmtfirst} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfirstpl} +%As above but for the \gloskey{firstplural} value. +%\changes{0.5}{2015-12-07}{new} +% \begin{macrocode} +\newcommand*{\glsfmtfirstpl}[1]{% + \glstexorpdfstring + {\glsxtrtitlefirstplural{#1}}% + {\GLSxtrusefield{#1}{firstpl}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfirstpl} +%First letter converted to upper case. +%\changes{0.5}{2015-12-07}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtfirstpl}[1]{% + \glstexorpdfstring + {\Glsxtrtitlefirstplural{#1}}% + {\MFUsentencecase{\glsentryfirstplural{#1}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtfirstpl} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtfirstpl}[1]{% + \glstexorpdfstring + {\GLSxtrtitlefirstplural{#1}}% + {\GLSxtrusefield{#1}{firstpl}}% +} +\glsmfublocker{\GLSfmtfirstpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtlong} +%As above but for the \gloskey{long} value. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsfmtlong}[1]{% + \glstexorpdfstring + {\glsxtrtitlelong{#1}}% + {\glsentrylong{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtlong} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtlong}[1]{% + \glstexorpdfstring + {\Glsxtrtitlelong{#1}}% + {\MFUsentencecase{\glsentrylong{#1}}}% +} +\glsmfuaddmap{\glsfmtlong}{\Glsfmtlong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtlong} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtlong}[1]{% + \glstexorpdfstring + {\GLSxtrtitlelong{#1}}% + {\GLSxtrusefield{#1}{long}}% +} +\glsmfublocker{\GLSfmtlong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtlongpl} +%As above but for the \gloskey{longplural} value. +%\changes{1.02}{2016-04-25}{new} +% \begin{macrocode} +\newcommand*{\glsfmtlongpl}[1]{% + \glstexorpdfstring + {\glsxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtlongpl} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtlongpl}[1]{% + \glstexorpdfstring + {\Glsxtrtitlelongpl{#1}}% + {\MFUsentencecase{\glsentrylongpl{#1}}}% +} +\glsmfuaddmap{\glsfmtlongpl}{\Glsfmtlongpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtlongpl} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\GLSfmtlongpl}[1]{% + \glstexorpdfstring + {\GLSxtrtitlelongpl{#1}}% + {\GLSxtrusefield{#1}{longpl}}% +} +\glsmfublocker{\GLSfmtlongpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glspdffmtfull} +%\changes{1.42}{2020-02-03}{new} +%Can't use \cs{glsxtrinlinefullformat} in PDF bookmarks as it's not +%fully expandable. This command is for the PDF part of +%\cs{texorpdfstring} for the full form. +% \begin{macrocode} +\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glspdffmtfullpl} +%\changes{1.42}{2020-02-03}{new} +%Likewise for plural. +% \begin{macrocode} +\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfmtfull} +%In-line full format. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} +% \begin{macrocode} +\newcommand*{\glsfmtfull}[1]{% + \glstexorpdfstring + {\glsxtrtitlefull{#1}}% + {\glspdffmtfull{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfull} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtfull}[1]{% + \glstexorpdfstring + {\Glsxtrtitlefull{#1}}% + {\MFUsentencecase{\glspdffmtfull{#1}{}}}% +} +\glsmfuaddmap{\glsfmtfull}{\Glsfmtfull} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtfull} +%All upper case. This explicitly uses \cs{text\_uppercase:n} in case +%an old version of \sty{glossaries} or \sty{mfirstuc} is present. +%\changes{1.42}{2020-02-03}{new} +%\changes{1.49}{2022-10-14}{add upper case bookmark} +% \begin{macrocode} +\ExplSyntaxOn +\newcommand*{\GLSfmtfull}[1]{% + \glstexorpdfstring + {\GLSxtrtitlefull{#1}}% + {\text_uppercase:n{\glspdffmtfull{#1}}}% +} +\ExplSyntaxOff +\glsmfublocker{\GLSfmtfull} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsfmtfullpl} +%In-line full plural format. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} +% \begin{macrocode} +\newcommand*{\glsfmtfullpl}[1]{% + \glstexorpdfstring + {\glsxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsfmtfullpl} +%First letter converted to upper case. +%\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} +%\changes{1.49}{2022-10-14}{added \cs{MFUsentencecase}} +% \begin{macrocode} +\newcommand*{\Glsfmtfullpl}[1]{% + \glstexorpdfstring + {\Glsxtrtitlefullpl{#1}}% + {\MFUsentencecase{\glspdffmtfullpl{#1}{}}}% +} +\glsmfuaddmap{\glsfmtfullpl}{\Glsfmtfullpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSfmtfullpl} +%All upper case. This explicitly uses \cs{text\_uppercase:n} in case +%an old version of \sty{glossaries} or \sty{mfirstuc} is present. +%\changes{1.42}{2020-02-03}{new} +%\changes{1.49}{2022-10-14}{add upper case bookmark} +% \begin{macrocode} +\ExplSyntaxOn +\newcommand*{\GLSfmtfullpl}[1]{% + \glstexorpdfstring + {\GLSxtrtitlefullpl{#1}}% + {\text_uppercase:n{\glspdffmtfullpl{#1}{}}}% +} +\ExplSyntaxOff +\glsmfublocker{\GLSfmtfullpl} +% \end{macrocode} +%\end{macro} +% +%\subsection{Prefixes} +%Provide support for \sty{glossaries-prefix}. +% +%\begin{macro}{\pglsprefix} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{pglsprefix}\marg{entry-label}\marg{prefix-field} +%\end{definition} +%A shortcut way of inserting the prefix and separator if they are +%required. If this needs to be redefined, use \cs{ifglsfieldvoid} +%for an expandable test. +% \begin{macrocode} +\newcommand{\pglsprefix}[2]{% + \ifcsempty{glo@\glsdetoklabel{#1}@#2}{}% + {\csuse{glo@\glsdetoklabel{#1}@#2}\glsprefixsep}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsprefix} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{Pglsprefix}\marg{entry-label}\marg{prefix-field} +%\end{definition} +%Similar to \cs{pglsprefix} but sentence case. The conditional is +%omitted as it will have to already be checked. +% \begin{macrocode} +\newcommand{\Pglsprefix}[2]{% + \Glsxtrusefield{#1}{#2}\glsprefixsep +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSprefix} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{PGLSprefix}\marg{entry-label}\marg{prefix-field} +%\end{definition} +%As \cs{pglsprefix} but all caps. +% \begin{macrocode} +\newcommand{\PGLSprefix}[2]{% + \ifcsempty{glo@\glsdetoklabel{#1}@#2}{}% + {\glsuppercase{\csuse{glo@\glsdetoklabel{#1}@#2}\glsprefixsep}}% +} +% \end{macrocode} +%\end{macro} +% +%Abbreviations. Short form uses prefix and prefixplural fields. +%\begin{macro}{\pglsxtrshort} +%\changes{1.49}{2022-10-14}{new} +%No case-change. +% \begin{macrocode} +\newrobustcmd*{\pglsxtrshort}{\@gls@hyp@opt\ns@pglsxtrshort} +\newcommand*{\ns@pglsxtrshort}[2][]{% + \new@ifnextchar[{\@pglsxtrshort{#1}{#2}}{\@pglsxtrshort{#1}{#2}[]}% +} +\def\@pglsxtrshort#1#2[#3]{% + \pglsprefix{#2}{prefix}% + \@glsxtrshort{#1}{#2}[#3]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrshort} +%\changes{1.49}{2022-10-14}{new} +%Sentence case. +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrshort}{\@gls@hyp@opt\ns@Pglsxtrshort} +\newcommand*{\ns@Pglsxtrshort}[2][]{% + \new@ifnextchar[{\@Pglsxtrshort{#1}{#2}}{\@Pglsxtrshort{#1}{#2}[]}% +} +\def\@Pglsxtrshort#1#2[#3]{% + \ifglshasprefix{#2}% + {% + \Pglsprefix{#2}{prefix}% + \@glsxtrshort{#1}{#2}[#3]% + }% + {\@Glsxtrshort{#1}{#2}[#3]}% +} +\glsmfuaddmap{\pglsxtrshort}{\Pglsxtrshort} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSxtrshort} +%\changes{1.49}{2022-10-14}{new} +%All-caps is also fairly simple. +% \begin{macrocode} +\newrobustcmd*{\PGLSxtrshort}{\@gls@hyp@opt\ns@PGLSxtrshort} +\newcommand*{\ns@PGLSxtrshort}[2][]{% + \new@ifnextchar[{\@PGLSxtrshort{#1}{#2}}{\@PGLSxtrshort{#1}{#2}[]}% +} +\def\@PGLSxtrshort#1#2[#3]{% + \PGLSprefix{#2}{prefix}% + \@GLSxtrshort{#1}{#2}[#3]% +} +\glsmfublocker{\PGLSxtrshort} +% \end{macrocode} +%\end{macro} +% +%Short plural. +%\begin{macro}{\pglsxtrshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\pglsxtrshortpl}{\@gls@hyp@opt\ns@pglsxtrshortpl} +\newcommand*{\ns@pglsxtrshortpl}[2][]{% + \new@ifnextchar[{\@pglsxtrshortpl{#1}{#2}}{\@pglsxtrshortpl{#1}{#2}[]}% +} +\def\@pglsxtrshortpl#1#2[#3]{% + \pglsprefix{#2}{prefixplural}% + \@glsxtrshortpl{#1}{#2}[#3]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrshortpl}{\@gls@hyp@opt\ns@Pglsxtrshortpl} +\newcommand*{\ns@Pglsxtrshortpl}[2][]{% + \new@ifnextchar[{\@Pglsxtrshortpl{#1}{#2}}{\@Pglsxtrshortpl{#1}{#2}[]}% +} +\def\@Pglsxtrshortpl#1#2[#3]{% + \ifglshasprefixplural{#2}% + {% + \Pglsprefix{#2}{prefixplural}% + \@glsxtrshortpl{#1}{#2}[#3]% + }% + {\@Glsxtrshortpl{#1}{#2}[#3]}% +} +\glsmfuaddmap{\pglsxtrshortpl}{\Pglsxtrshortpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSxtrshortpl} +%\changes{1.49}{2022-10-14}{new} +%All-caps is also fairly simple. +% \begin{macrocode} +\newrobustcmd*{\PGLSxtrshortpl}{\@gls@hyp@opt\ns@PGLSxtrshortpl} +\newcommand*{\ns@PGLSxtrshortpl}[2][]{% + \new@ifnextchar[{\@PGLSxtrshortpl{#1}{#2}}{\@PGLSxtrshortpl{#1}{#2}[]}% +} +\def\@PGLSxtrshortpl#1#2[#3]{% + \PGLSprefix{#2}{prefixplural}% + \@GLSxtrshortpl{#1}{#2}[#3]% +} +\glsmfublocker{\PGLSxtrshortpl} +% \end{macrocode} +%\end{macro} +% +%Long form uses prefixfirst and prefixfirstplural fields. +%\begin{macro}{\pglsxtrlong} +%\changes{1.49}{2022-10-14}{new} +%No case-change. +% \begin{macrocode} +\newrobustcmd*{\pglsxtrlong}{\@gls@hyp@opt\ns@pglsxtrlong} +\newcommand*{\ns@pglsxtrlong}[2][]{% + \new@ifnextchar[{\@pglsxtrlong{#1}{#2}}{\@pglsxtrlong{#1}{#2}[]}% +} +\def\@pglsxtrlong#1#2[#3]{% + \pglsprefix{#2}{prefixfirst}% + \@glsxtrlong{#1}{#2}[#3]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrlong} +%\changes{1.49}{2022-10-14}{new} +%Sentence case. +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrlong}{\@gls@hyp@opt\ns@Pglsxtrlong} +\newcommand*{\ns@Pglsxtrlong}[2][]{% + \new@ifnextchar[{\@Pglsxtrlong{#1}{#2}}{\@Pglsxtrlong{#1}{#2}[]}% +} +\def\@Pglsxtrlong#1#2[#3]{% + \ifglshasprefixfirst{#2}% + {% + \Pglsprefix{#2}{prefixfirst}% + \@glsxtrlong{#1}{#2}[#3]% + }% + {\@Glsxtrlong{#1}{#2}[#3]}% +} +\glsmfuaddmap{\pglsxtrlong}{\Pglsxtrlong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSxtrlong} +%\changes{1.49}{2022-10-14}{new} +%All-caps is also fairly simple. +% \begin{macrocode} +\newrobustcmd*{\PGLSxtrlong}{\@gls@hyp@opt\ns@PGLSxtrlong} +\newcommand*{\ns@PGLSxtrlong}[2][]{% + \new@ifnextchar[{\@PGLSxtrlong{#1}{#2}}{\@PGLSxtrlong{#1}{#2}[]}% +} +\def\@PGLSxtrlong#1#2[#3]{% + \PGLSprefix{#2}{prefixfirst}% + \@GLSxtrlong{#1}{#2}[#3]% +} +\glsmfublocker{\PGLSxtrlong} +% \end{macrocode} +%\end{macro} +% +%Long plural. +%\begin{macro}{\pglsxtrlongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\pglsxtrlongpl}{\@gls@hyp@opt\ns@pglsxtrlongpl} +\newcommand*{\ns@pglsxtrlongpl}[2][]{% + \new@ifnextchar[{\@pglsxtrlongpl{#1}{#2}}{\@pglsxtrlongpl{#1}{#2}[]}% +} +\def\@pglsxtrlongpl#1#2[#3]{% + \pglsprefix{#2}{prefixfirstplural}% + \@glsxtrlongpl{#1}{#2}[#3]% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrlongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrlongpl}{\@gls@hyp@opt\ns@Pglsxtrlongpl} +\newcommand*{\ns@Pglsxtrlongpl}[2][]{% + \new@ifnextchar[{\@Pglsxtrlongpl{#1}{#2}}{\@Pglsxtrlongpl{#1}{#2}[]}% +} +\def\@Pglsxtrlongpl#1#2[#3]{% + \ifglshasprefixfirstplural{#2}% + {% + \Pglsprefix{#2}{prefixfirstplural}% + \@glsxtrlongpl{#1}{#2}[#3]% + }% + {\@Glsxtrlongpl{#1}{#2}[#3]}% +} +\glsmfuaddmap{\pglsxtrlongpl}{\Pglsxtrlongpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSxtrlongpl} +%\changes{1.49}{2022-10-14}{new} +%All-caps is also fairly simple. +% \begin{macrocode} +\newrobustcmd*{\PGLSxtrlongpl}{\@gls@hyp@opt\ns@PGLSxtrlongpl} +\newcommand*{\ns@PGLSxtrlongpl}[2][]{% + \new@ifnextchar[{\@PGLSxtrlongpl{#1}{#2}}{\@PGLSxtrlongpl{#1}{#2}[]}% +} +\def\@PGLSxtrlongpl#1#2[#3]{% + \PGLSprefix{#2}{prefixfirstplural}% + \@GLSxtrlongpl{#1}{#2}[#3]% +} +\glsmfublocker{\PGLSxtrlongpl} +% \end{macrocode} +%\end{macro} +% +%Title commands (analogous to \cs{glsfmtshort} etc). +%\begin{macro}{\pglsfmtshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\pglsfmtshort}[1]{% + \pglsprefix{#1}{prefix}% + \glsfmtshort{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsfmtshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\Pglsfmtshort}[1]{% + \glstexorpdfstring + {\Pglsxtrtitleshort{#1}}% + {\MFUsentencecase{% + \pglsprefix{#1}{prefix}% + \glsentryshort{#1}}% + }% +} +\glsmfuaddmap{\pglsfmtshort}{\Pglsfmtshort} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrtitleshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrtitleshort}[1]{% + \glsxtr@title@field\Pglsxtrshort{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSfmtshort} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\PGLSfmtshort}[1]{% + \PGLSprefix{#1}{prefix}% + \GLSfmtshort{#1}% +} +\glsmfublocker{\PGLSfmtshort} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\pglsfmtshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\pglsfmtshortpl}[1]{% + \pglsprefix{#1}{prefixplural}% + \glsfmtshortpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsfmtshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\Pglsfmtshortpl}[1]{% + \glstexorpdfstring + {\Pglsxtrtitleshortpl{#1}}% + {\MFUsentencecase + {% + \pglsprefix{#1}{prefixplural}% + \glsentryshortpl{#1}% + }% + }% +} +\glsmfuaddmap{\pglsfmtshortpl}{\Pglsfmtshortpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrtitleshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrtitleshortpl}[1]{% + \glsxtr@title@field\Pglsxtrshortpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSfmtshortpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\PGLSfmtshortpl}[1]{% + \PGLSprefix{#1}{prefixplural}% + \GLSfmtshortpl{#1}% +} +\glsmfublocker{\PGLSfmtshortpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\pglsfmtlong} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\pglsfmtlong}[1]{% + \pglsprefix{#1}{prefixfirst}% + \glsfmtlong{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsfmtlong} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\Pglsfmtlong}[1]{% + \glstexorpdfstring + {\Pglsxtrtitlelong{#1}}% + {\MFUsentencecase{% + \pglsprefix{#1}{prefixfirst}% + \glsentrylong{#1}}% + }% +} +\glsmfuaddmap{\pglsfmtlong}{\Pglsfmtlong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrtitlelong} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrtitlelong}[1]{% + \glsxtr@title@field\Pglsxtrlong{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSfmtlong} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\PGLSfmtlong}[1]{% + \PGLSprefix{#1}{prefixfirst}% + \GLSfmtlong{#1}% +} +\glsmfublocker{\PGLSfmtlong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\pglsfmtlongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\pglsfmtlongpl}[1]{% + \pglsprefix{#1}{prefixfirstplural}% + \glsfmtlongpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsfmtlongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\Pglsfmtlongpl}[1]{% + \glstexorpdfstring + {\Pglsxtrtitlelongpl{#1}}% + {\MFUsentencecase + {% + \pglsprefix{#1}{prefixfirstplural}% + \glsentrylongpl{#1}% + }% + }% +} +\glsmfuaddmap{\pglsfmtlongpl}{\Pglsfmtlongpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Pglsxtrtitlelongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\Pglsxtrtitlelongpl}[1]{% + \glsxtr@title@field\Pglsxtrlongpl{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\PGLSfmtlongpl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\PGLSfmtlongpl}[1]{% + \PGLSprefix{#1}{prefixfirstplural}% + \GLSfmtlongpl{#1}% +} +\glsmfublocker{\PGLSfmtlongpl} +% \end{macrocode} +%\end{macro} +% +%\subsection{Multi (Combined/Compound) Entries} +%(I'd rather call these combined or compound entries but \cs{cgls} is +%already taken.) +% +%New to version 1.48, the commands here provide a way of referencing +%multiple entries as a single unit. For example, biological +%organisms are often referred to by their genus and species, such as +%\emph{Clostridium botulinum} and \emph{Clostridium perfringens} +%(where the genus is Clostridium). The genus is often abbreviated +%after first use, regardless of which species in the genus is being +%referenced. For example, \qt{\emph{Clostridium botulinum} and +%\emph{C. perfringens}}. This can't be supported by any abbreviation +%styles unless the genus and species names are defined separately. +%For example: +%\begin{verbatim} +%\setabbreviationstyle{long-only-short-only} +%\newabbreviation{clostridium}{C.}{Clostridium} +%\newglossaryentry{botulinum}{name={botulinum},description={}} +%\newglossaryentry{perfringens}{name={perfringens},description={}} +%\end{verbatim} +%This means that the entries then need to be referenced using a +%rather cumbersome method: +%\begin{verbatim} +%\gls{clostridium} \gls{botulinum} and \gls{clostridum} +%\gls{perfringens} +%\end{verbatim} +%This section provides a command that will provide a way of defining +%a label that represents a combination of entries (which must all be +%first defined). For example: +%\begin{verbatim} +%\multiglossaryentry{cbot}{clostridium,botulinum} +%\end{verbatim} +%This label can then be referenced using \cs{mgls}, which internally +%uses \cs{gls} for each component. The last component in the list is +%considered the \qt{main} component (not to be confused with the +%main glossary). If this isn't the case, the label of the main +%component should be added in the optional argument before the label +%list. Note that the multi-label (\texttt{cbot} in this case) can't be +%referenced using commands like \cs{gls}. +% +%First define the general set of options that should be applied to +%all multi-entries. These can be set with: +%\begin{macro}{\multiglossaryentrysetup} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@gls@combined@indexmain} +%\changes{1.48}{2021-11-22}{new} +%Numeric value: 0=false (don't index main component), 1=true (always +%index main component), 2=first (only index main component on first +%use). Default: 1 (true); +% \begin{macrocode} +\newcommand*{\@gls@combined@indexmain}{1} +\define@choicekey{glsxtrcombined}{indexmain}% + [\@gls@combined@indexmain@val\@gls@combined@indexmain] + {false,true,first}[true]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@gls@combined@indexothers} +%\changes{1.48}{2021-11-22}{new} +%Numeric value: 0=false (don't index other components), 1=true (always +%index other components), 2=first (only index other components on first +%use). Default: 2 (first); +% \begin{macrocode} +\newcommand*{\@gls@combined@indexothers}{2} +\define@choicekey{glsxtrcombined}{indexothers}% + [\@gls@combined@indexothers@val\@gls@combined@indexothers] + {false,true,first}[true]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@gls@combined@hyper} +%\changes{1.48}{2021-11-22}{new} +%Numeric value: 0=none (\cs{mgls} doesn't create a hyperlink), +% 1=allmain (all content hyperlinks to the main component), +% 2=mainonly (only the main component has a hyperlink), +% 3=individual (each component has a hyperlink to their own target). +% Default: 3. +% \begin{macrocode} +\newcommand*{\@gls@combined@hyper}{3} +\define@choicekey{glsxtrcombined}{hyper}% + [\@gls@combined@hyper@val\@gls@combined@hyper] + {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@encapmain} +%\changes{1.48}{2021-11-22}{new} +%Location encap value for main component (corresponding to format key in \cs{gls}). +% \begin{macrocode} +\newcommand*{\@gls@combined@encapmain}{glsnumberformat} +\define@key{glsxtrcombined}{encapmain}{% + \renewcommand*{\@gls@combined@encapmain}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@encapothers} +%\changes{1.48}{2021-11-22}{new} +%Location encap value for other components (corresponding to format key in \cs{gls}). +% \begin{macrocode} +\newcommand*{\@gls@combined@encapothers}{glsnumberformat} +\define@key{glsxtrcombined}{encapothers}{% + \renewcommand*{\@gls@combined@encapothers}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@textformat} +%\changes{1.48}{2021-11-22}{new} +%Encapsulate entire content with the command identified by the given +%control sequence name. +% \begin{macrocode} +\newcommand*{\@gls@combined@textformat}{@firstofone} +\define@key{glsxtrcombined}{textformat}{% + \renewcommand*{\@gls@combined@textformat}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@category} +%\changes{1.48}{2021-11-22}{new} +%Assign a category to the combined set. +% \begin{macrocode} +\newcommand*{\@gls@combined@category}{} +\define@key{glsxtrcombined}{category}{% + \renewcommand*{\@gls@combined@category}{#1}% +} +% \end{macrocode} +%Pre-options family: +% \begin{macrocode} +\define@key{glsxtrcombinedpreopts}{category}{% + \renewcommand*{\@gls@combined@category}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@mglsopts} +%\changes{1.48}{2021-11-22}{new} +%Default options to pass to \cs{mgls}. +% \begin{macrocode} +\newcommand*{\@gls@combined@mglsopts}{} +\define@key{glsxtrcombined}{mglsopts}{% + \renewcommand*{\@gls@combined@mglsopts}{#1}% +} +\define@key{glsxtrcombinedpreopts}{mglsopts}{% + \@gls@combined@mglsopts@do + {% + \renewcommand*{\@gls@combined@mglsopts}{#1}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@mglsopts@do} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@gls@combined@mglsopts@do}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mgls@disable@mglsopts} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mgls@disable@mglsopts}{% + \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mgls@enable@mglsopts} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mgls@enable@mglsopts}{% + \let\@gls@combined@mglsopts@do\@firstofone +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@mglsopts@do} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@gls@combined@mglsopts@do@not}[1]{% + \PackageError{glossaries-extra}{`mglsopts' key not permitted inside + `setup' value}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@firstprefix} +%\changes{1.48}{2021-11-22}{new} +%Prefix for multi-entry first use. +% \begin{macrocode} +\newcommand*{\@gls@combined@firstprefix}{} +\define@key{glsxtrcombined}{firstprefix}{% + \renewcommand*{\@gls@combined@firstprefix}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@usedprefix} +%\changes{1.48}{2021-11-22}{new} +%Prefix for multi-entry subsequent first use. +% \begin{macrocode} +\newcommand*{\@gls@combined@usedprefix}{} +\define@key{glsxtrcombined}{usedprefix}{% + \renewcommand*{\@gls@combined@usedprefix}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@firstsuffix} +%\changes{1.48}{2021-11-22}{new} +%Suffix for multi-entry first use. +% \begin{macrocode} +\newcommand*{\@gls@combined@firstsuffix}{} +\define@key{glsxtrcombined}{firstsuffix}{% + \renewcommand*{\@gls@combined@firstsuffix}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@usedsuffix} +%\changes{1.48}{2021-11-22}{new} +%Suffix for multi-entry subsequent first use. +% \begin{macrocode} +\newcommand*{\@gls@combined@usedsuffix}{} +\define@key{glsxtrcombined}{usedsuffix}{% + \renewcommand*{\@gls@combined@usedsuffix}{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@firstskipmain} +%\changes{1.48}{2021-11-22}{new} +%Skip the main element on first use (multi-entry first use not +%element first use). +% \begin{macrocode} +\define@boolkey{glsxtrcombined}{firstskipmain}[true]{} +\KV@glsxtrcombined@firstskipmainfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@firstskipothers} +%\changes{1.48}{2021-11-22}{new} +%Skip the other elements on first use (multi-entry first use not +%element first use). +% \begin{macrocode} +\define@boolkey{glsxtrcombined}{firstskipothers}[true]{} +\KV@glsxtrcombined@firstskipothersfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@usedskipmain} +%\changes{1.48}{2021-11-22}{new} +%Skip the main element on subsequent use (multi-entry subsequent use not +%element subsequent use). +% \begin{macrocode} +\define@boolkey{glsxtrcombined}{usedskipmain}[true]{} +\KV@glsxtrcombined@usedskipmainfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@usedskipothers} +%\changes{1.48}{2021-11-22}{new} +%Skip the other elements on subsequent use (multi-entry subsequent use not +%element subsequent use). +% \begin{macrocode} +\define@boolkey{glsxtrcombined}{usedskipothers}[true]{} +\KV@glsxtrcombined@usedskipothersfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@postlinks} +%\changes{1.48}{2021-11-22}{new} +%Determine whether or not to use the individual element post-link hooks. +% \begin{macrocode} +\newcommand*{\@gls@combined@postlinks@nr}{0} +\define@choicekey{glsxtrcombined}{postlinks}% + [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr] + {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@mpostlink} +%\changes{1.48}{2021-11-22}{new} +%Determine whether or not to use the multi-entry post-link hook. +% \begin{macrocode} +\newcommand*{\@gls@combined@mpostlink@nr}{1} +\define@choicekey{glsxtrcombined}{mpostlink}% + [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr] + {false,true,firstonly,usedonly}[true]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@combined@mpostlinkelement} +%\changes{1.48}{2021-11-22}{new} +%Determine which element to use for the post-link hook. +% \begin{macrocode} +\newcommand*{\@gls@combined@mpostlinkelement@nr}{0} +\define@choicekey{glsxtrcombined}{mpostlinkelement}% + [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr] + {last,main,custom}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrifmulti} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmultimain} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmultilist} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmultitotalelements} +%\changes{1.48}{2021-11-22}{new} +%Total number of elements. +% \begin{macrocode} +\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmultimainindex} +%\changes{1.48}{2021-11-22}{new} +%Index of main element (starting from 1). If the main element is the +%last element in the list then this should equal the total number of +%elements. +% \begin{macrocode} +\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmultilastotherindex} +%\changes{1.48}{2021-11-22}{new} +%Index of the last non-main element. +% \begin{macrocode} +\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifmultiglossaryentryglobal} +%\changes{1.48}{2021-11-22}{new} +%Make definitions global. +% \begin{macrocode} +\newif\ifmultiglossaryentryglobal +\multiglossaryentryglobalfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglselementindex} +%\changes{1.48}{2021-11-22}{new} +% Count register to keep track of the current element index. +% \begin{macrocode} +\newcount\mglselementindex +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\multiglossaryentry} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{multiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label +%list} +%\end{definition} +%Defines the label \meta{multi-label} that can be used in \cs{mgls}. +% \begin{macrocode} +\newrobustcmd{\multiglossaryentry}[1][]{% + \def\@gls@combined@current@opts{#1}% + \ifnum\@glsxtr@docdefval=1\relax + \let\@multi@glossentry@donext\@defmultiglossaryentry + \else + \let\@multi@glossentry@donext\@multiglossaryentry + \fi + \@multi@glossentry@donext +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@multiglossaryentry} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@multiglossaryentry}[1]{% + \def\@gls@combined@current@label{#1}% + \@multi@glossaryentry +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@multi@glossaryentry} +%\changes{1.48}{2021-11-22}{new} +% Check for existence. +% \begin{macrocode} +\newcommand*{\@multi@glossaryentry}[2][]{% + \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% + {\PackageError{glossaries-extra}% + {Multi-entry label `\@gls@combined@current@label' already defined}% + {}% + }% + {% + \@multi@glossary@entry{#1}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@defmultiglossaryentry} +%\changes{1.48}{2021-11-22}{new} +%Used if document definitions are on. +% \begin{macrocode} +\newcommand*{\@defmultiglossaryentry}[1]{% + \def\@gls@combined@current@label{#1}% + \@def@multi@glossaryentry +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@def@multi@glossaryentry} +%\changes{1.48}{2021-11-22}{new} +%Used if document definitions are on. +% \begin{macrocode} +\newcommand*{\@def@multi@glossaryentry}[2][]{% + \let\@def@multi@glossaryentry@do\@multi@glossary@entry + \ifundef\@glsxtr@docdefs@multilist + {% + \gdef\@glsxtr@docdefs@multilist{}% + \listxadd + {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% + }% + {% + \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}% + {% + \PackageError{glossaries-extra}% + {Multi-entry label `\@gls@combined@current@label' already defined}% + {}% + \let\@def@multi@glossaryentry@do\@gobbletwo + }% + {% + \listxadd + {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% + }% + }% + \@def@multi@glossaryentry@do{#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@multi@glossary@doifexists} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\providemultiglossaryentry} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{providemultiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label +%list} +%\end{definition} +%Defines a multi-entry unless it has already been defined. +% \begin{macrocode} +\newrobustcmd{\providemultiglossaryentry}[2][]{% + \def\@gls@combined@current@opts{#1}% + \def\@gls@combined@current@label{#2}% + \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% + {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}% + {% + \ifnum\@glsxtr@docdefval=1\relax + \def\@multi@glossentry@donext{\@def@multi@glossaryentry}% + \else + \def\@multi@glossentry@donext{\@multi@glossaryentry}% + \fi + }% + \@multi@glossentry@donext +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@provide@multi@glossaryentry@noop} +%\changes{1.48}{2021-11-22}{new} +% Do nothing. +% \begin{macrocode} +\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@multi@glossaryentry@list} +%\changes{1.48}{2021-11-22}{new} +% List of all defined multi-entry sets. +% \begin{macrocode} +\newcommand*{\@multi@glossaryentry@list}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@multi@glossary@entry} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@multi@glossary@entry}[2]{% + \protected@edef\@gls@combined@current@main{#1}% +% \end{macrocode} +% Fully expand list. +% \begin{macrocode} + \protected@edef\@gls@combined@currentlist{#2}% +% \end{macrocode} +% Count items in list, check they are all defined, and find last item at the same time. +% \begin{macrocode} + \mglselementindex=0\relax + \@for\@gls@tmp:=\@gls@combined@currentlist\do{% + \advance\mglselementindex by 1\relax + \@multi@glossary@doifexists{\@gls@tmp}{}% + \let\@gls@combined@finalitem\@gls@tmp + \ifdefvoid\@gls@combined@current@main + {}% + {% + \ifx\@gls@combined@current@main\@gls@tmp + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@current@main + \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}% + {\the\mglselementindex}% + \else + \cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@current@main + \csedef{@gls@combined@\@gls@combined@current@label @mainindex}% + {\the\mglselementindex}% + \fi + \else + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\mglselementindex}% + \else + \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\mglselementindex}% + \fi + \fi + }% + }% + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@\@gls@combined@current@label @total}% + {\the\mglselementindex}% + \else + \csedef{@gls@combined@\@gls@combined@current@label @total}% + {\the\mglselementindex}% + \fi + \ifnum\mglselementindex<2\relax + \PackageError{glossaries-extra}{At least 2 labels required in + multi-entry element list (\number\mglselementindex\space found)}{}% + \else + \ifdefvoid\@gls@combined@current@main + {}% + {% +% \end{macrocode} +% If \cs{@gls@combined@\meta{label}@main} hasn't been set then it +% wasn't included in the list. +% \begin{macrocode} + \ifcsundef{@gls@combined@\@gls@combined@current@label @main}% + {\PackageError{glossaries-extra}% + {Main element `\@gls@combined@current@main' not found in list}% + {The final element `\@gls@combined@finalitem' will be used instead} +% \end{macrocode} +% Set to empty so that the default (final element) is used instead. +% \begin{macrocode} + \let\@gls@combined@current@main\@empty + }% + {}% + }% + \ifdefvoid\@gls@combined@current@main + {% +% \end{macrocode} +% Set main to final element. +% \begin{macrocode} + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@finalitem + \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% + {@gls@combined@\@gls@combined@current@label @total}% + \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\numexpr\mglselementindex-1 }% + \else + \cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@finalitem + \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% + {@gls@combined@\@gls@combined@current@label @total}% + \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\numexpr\mglselementindex-1 }% + \fi + }% + {}% + \ifmultiglossaryentryglobal +% \end{macrocode} +% Globally define element list. +% \begin{macrocode} + \global\cslet{@gls@combined@\@gls@combined@current@label @list}% + \@gls@combined@currentlist +% \end{macrocode} +% Globally define options. +% \begin{macrocode} + \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}% + {\@gls@combined@current@opts}% +% \end{macrocode} +% Global conditional definition. +% \begin{macrocode} + \expandafter\@ifdefinable + \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname + {\expandafter\global\expandafter + \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}% + \expandafter\global + \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname + \else +% \end{macrocode} +% Locally define element list. +% \begin{macrocode} + \cslet{@gls@combined@\@gls@combined@current@label @list}% + \@gls@combined@currentlist +% \end{macrocode} +% Locally define options. +% \begin{macrocode} + \protected@csedef{@gls@combined@\@gls@combined@current@label @options}% + {\@gls@combined@current@opts}% +% \end{macrocode} +% Local conditional definition. +% \begin{macrocode} + \newboolean{@gls@combined@\@gls@combined@current@label @flag}% + \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname + \fi + \fi + \writemultiglossentry + {\@gls@combined@current@opts}{\@gls@combined@current@label}% + {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}% +% \end{macrocode} +%Append label to list. +% \begin{macrocode} + \ifmultiglossaryentryglobal + \ifdefempty\@multi@glossaryentry@list + {\let\@multi@glossaryentry@list\@gls@combined@current@label}% + {% + \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% + }% + \else + \ifdefempty\@multi@glossaryentry@list + {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}% + {% + \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@multientry} +%\begin{definition} +%\cs{@glsxtr@multientry}\marg{options}\marg{multilabel}\marg{main}\marg{list} +%\end{definition} +%Information for aux file. Useful for \app{bib2gls} and also for +%\pkgopt{docdef}. +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@multientry}[4]{% + \ifnum\@glsxtr@docdefval=1\relax + \bgroup + \def\@gls@combined@current@opts{#1}% + \def\@gls@combined@current@label{#2}% + \let\@multi@glossary@doifexists\@secondoftwo + \let\writemultiglossentry\@gobblefour + \multiglossaryentryglobaltrue + \@multi@glossary@entry{#3}{#4}% + \egroup + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\writemultiglossentry} +%\changes{1.48}{2021-11-22}{new} +%This can be redefined to do nothing if the information isn't +%required. +% \begin{macrocode} +\newcommand*{\writemultiglossentry}[4]{% + \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifmglsused} +%\changes{1.48}{2021-11-22}{new} +% Determines whether or not the multi-entry set has been referenced +% by commands like \cs{mgls} or \cs{mglsname}. +% \begin{macrocode} +\newcommand*{\ifmglsused}[3]{% + \ifbool{@gls@combined@#1@flag}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsunset} +%\changes{1.48}{2021-11-22}{new} +%Unset the flag. +% \begin{macrocode} +\newcommand*{\mglsunset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglsunset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mglsunset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mglsunset}[1]{% + \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsreset} +%\changes{1.48}{2021-11-22}{new} +%Unset the flag. +% \begin{macrocode} +\newcommand*{\mglsreset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglsreset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mglsreset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mglsreset}[1]{% + \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslocalunset} +%\changes{1.48}{2021-11-22}{new} +%Unset the flag. +% \begin{macrocode} +\newcommand*{\mglslocalunset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglslocalunset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mglslocalunset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mglslocalunset}[1]{% + \csname @gls@combined@#1@flagtrue\endcsname +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslocalreset} +%\changes{1.48}{2021-11-22}{new} +%Unset the flag. +% \begin{macrocode} +\newcommand*{\mglslocalreset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglslocalreset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mglslocalreset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mglslocalreset}[1]{% + \csname @gls@combined@#1@flagfalse\endcsname +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsunsetall} +%\changes{1.48}{2021-11-22}{new} +%Unset all. +% \begin{macrocode} +\newcommand*{\mglsunsetall}{% + \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsresetall} +%\changes{1.48}{2021-11-22}{new} +%Reset all. +% \begin{macrocode} +\newcommand*{\mglsresetall}{% + \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsSetMain} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsSetName}\marg{multi-label}\marg{new main} +%\end{definition} +%Allow the main label to be changed (local). +% \begin{macrocode} +\newrobustcmd{\mglsSetMain}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \protected@edef\@gls@combined@current@main{#2}% + \letcs\@gls@combined@currentlist{@gls@combined@#1@list}% +% \end{macrocode} +% Check that the given label is in the list of elements and update +% main and last other element index. +% \begin{macrocode} + \mglselementindex=0\relax + \count@=0\relax + \@for\@gls@tmp:=\@gls@combined@currentlist\do{% + \advance\mglselementindex by 1\relax + \ifx\@gls@combined@current@main\@gls@tmp + \count@=\mglselementindex\relax + \let\@gls@combined@finalitem\@gls@tmp + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main + \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \else + \cslet{@gls@combined@#1@main}\@gls@combined@current@main + \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \fi + \else + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% + \else + \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% + \fi + \fi + }% + \ifnum\count@=0\relax + \PackageError{glossaries-extra}{Label `#2' is not in `#1' set + (\@gls@combined@currentlist)}{}% +% \end{macrocode} +% Default to final item. +% \begin{macrocode} + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem + \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \csxdef{@gls@combined@#1@lastotherindex}{% + \number\numexpr\mglselementindex-1 }% + \else + \cslet{@gls@combined@#1@main}\@gls@combined@finalitem + \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \csedef{@gls@combined@#1@lastotherindex}{% + \number\numexpr\mglselementindex-1 }% + \fi + \fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsSetOptions} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsSetOptions}\marg{multi-label}\marg{new options} +%\end{definition} +%Allow the options to be changed (local). No expansion is applied. +% \begin{macrocode} +\newrobustcmd{\mglsSetOptions}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \csdef{@gls@combined@#1@options}{#2}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsAddOptions} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsAddOptions}\marg{multi-label}\marg{extra options} +%\end{definition} +%Allow the options to be changed (local). No expansion is applied. +% \begin{macrocode} +\newrobustcmd{\mglsAddOptions}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \ifcsempty{@gls@combined@#1@options}% + {\csdef{@gls@combined@#1@options}{#2}}% + {\csappto{@gls@combined@#1@options}{,#2}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%Options for \cs{mgls}: +%\begin{macro}{\@mgls@all} +%\changes{1.48}{2021-11-22}{new} +%Options to apply to all elements. +% \begin{macrocode} +\newcommand*{\@mgls@all}{} +\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@main} +%\changes{1.48}{2021-11-22}{new} +%Options to apply to the main element only. +% \begin{macrocode} +\newcommand*{\@mgls@main}{} +\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@others} +%\changes{1.48}{2021-11-22}{new} +%Options to apply to the other (no main) elements. +% \begin{macrocode} +\newcommand*{\@mgls@others}{} +\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@setup} +%\changes{1.48}{2021-11-22}{new} +%Options to apply to \cs{multiglossaryentrysetup}. +% \begin{macrocode} +\newcommand*{\@mgls@setup}{} +\define@key{mgls}{setup}{% + \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@setup@do} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@setup@do}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@setup@do@not} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@setup@do@not}[1]{% + \PackageError{glossaries-extra}{`setup' key not permitted inside + `mglsopts' value}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mgls@disable@setup} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mgls@disable@setup}{% + \let\@mgls@setup@do\@mgls@setup@do@not +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mgls@enable@setup} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mgls@enable@setup}{% + \let\@mgls@setup@do\@firstofone +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@unsetaction} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand\@mgls@unsetaction{0} +\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]% + {global,local,none}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifKV@mgls@presetlocal} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\define@boolkey{mgls}{presetlocal}[true]{} +\KV@mgls@presetlocalfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@hyper} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@hyper}{} +\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]% +{% + \renewcommand*{\@mgls@hyper}{hyper=#1}% + \ifnum\@mgls@hyper@nr=1\relax + \let\@mgls@hyperlink\@secondoftwo + \else + \let\@mgls@hyperlink\@@mgls@hyperlink + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@mgls@hyperlink} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@@mgls@hyperlink}[2]{% + \ifx\@glslink\glsdonohyperlink + #2% + \else + \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@hyperlink} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\let\@mgls@hyperlink\@@mgls@hyperlink +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsforelements} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsforelements}\marg{multi-label}\marg{cs}\marg{body} +%\end{definition} +% \begin{macrocode} +\newcommand*{\mglsforelements}[3]{% + \expandafter\@for\expandafter#2\expandafter:\expandafter + =\csname @gls@combined@#1@list\endcsname\do{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsforotherelements} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsforotherelements}\marg{multi-label}\marg{cs}\marg{body} +%\end{definition} +% \begin{macrocode} +\newcommand*{\mglsforotherelements}[3]{% + \expandafter\@for\expandafter#2\expandafter:\expandafter + =\csname @gls@combined@#1@list\endcsname\do + {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsunsetothers} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsunsetothers}[1]{% + \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslocalunsetothers} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglslocalunsetothers}[1]{% + \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglselementreset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglselementreset}[1]{% + \ifKV@mgls@presetlocal + \glslocalreset{#1}% + \else + \glsreset{#1}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglselementunset} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglselementunset}[1]{% + \ifKV@mgls@presetlocal + \glslocalunset{#1}% + \else + \glsunset{#1}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@resetall} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@resetall}{} +\define@choicekey{mgls}{resetall}% +[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetall@nr\relax + \renewcommand*{\@mgls@resetall}{}% + \or + \renewcommand*{\@mgls@resetall}{% + \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}% + \renewcommand*{\@mgls@unsetall}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@resetmain} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@resetmain}{} +\define@choicekey{mgls}{resetmain} +[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetmain@nr\relax + \renewcommand*{\@mgls@resetmain}{}% + \or + \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}% + \renewcommand*{\@mgls@unsetmain}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@resetothers} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@resetothers}{} +\define@choicekey{mgls}{resetothers} +[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetothers@nr\relax + \renewcommand*{\@mgls@resetothers}{}% + \or + \renewcommand*{\@mgls@resetothers}{% + \@for\@gls@resetlabel:=\mglscurrentlist\do{% + \ifx\@gls@resetlabel\mglscurrentmainlabel + \else + \mglselementreset\@gls@resetlabel + \fi + }% + }% + \renewcommand*{\@mgls@unsetothers}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@unsetall} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@unsetall}{} +\define@choicekey{mgls}{unsetall}% +[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetall@nr\relax + \renewcommand*{\@mgls@unsetall}{}% + \or + \renewcommand*{\@mgls@unsetall}{% + \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}% + \renewcommand*{\@mgls@resetall}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@unsetmain} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@unsetmain}{} +\define@choicekey{mgls}{unsetmain} +[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetmain@nr\relax + \renewcommand*{\@mgls@unsetmain}{}% + \or + \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}% + \renewcommand*{\@mgls@resetmain}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@unsetothers} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@unsetothers}{} +\define@choicekey{mgls}{unsetothers} +[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetothers@nr\relax + \renewcommand*{\@mgls@unsetothers}{}% + \or + \renewcommand*{\@mgls@unsetothers}{% + \@for\@gls@unsetlabel:=\mglscurrentlist\do{% + \ifx\@gls@unsetlabel\mglscurrentmainlabel + \else + \mglselementunset\@gls@unsetlabel + \fi + }% + }% + \renewcommand*{\@mgls@resetothers}{}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@setup@docurrent} +%\changes{1.48}{2021-11-22}{new} +%Set up the commands to determine whether or not to do the current +%element. +% \begin{macrocode} +\newcommand{\glsxtr@setup@docurrent}{% +% \end{macrocode} +% \cs{mglscurrentlabel} expands to the label of the current element. +% Should this element be skipped? +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel +% \end{macrocode} +% Main element. Should it be skipped? +% \begin{macrocode} + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipmain + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipmain + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + \else +% \end{macrocode} +% Other element. Should it be skipped? +% \begin{macrocode} + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipothers + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipothers + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@mgls@checklastelement} +%\changes{1.48}{2021-11-22}{new} +% If the last element is skipped, \cs{mglsiflast} needs +% adjusting. +% The first argument should be either "first" or "used". +% The second argument is the multi-element label. +% \begin{macrocode} +\newcommand*{\glsxtr@mgls@checklastelement}[2]{% + \ifbool{KV@glsxtrcombined@#1skipmain}% + {% + \ifbool{KV@glsxtrcombined@#1skipothers}% + {% +% \end{macrocode} +% This condition has already been checked for. +% \begin{macrocode} + }% + {% +% \end{macrocode} +% Main skipped. The last item will be the last other element. +% \begin{macrocode} + \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo + \fi + }% + }% + {% +% \end{macrocode} +% Main not skipped. +% \begin{macrocode} + \ifbool{KV@glsxtrcombined@#1skipothers}% + {% +% \end{macrocode} +% Others skipped. The main element is the only item. +% \begin{macrocode} + \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo + \fi + }% + {% +% \end{macrocode} +% None skipped. This isn't the last element. +% \begin{macrocode} + \let\mglsiflast\@secondoftwo + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrmglsWarnAllSkipped} +%\changes{1.48}{2021-11-22}{new} +%Warning if all elements are skipped. The first argument is the +%warning message, the second argument is the inserted content (final +%optional argument), the third command is the encapsulation command +%(which may be a hyperlink). +% \begin{macrocode} +\newcommand{\glsxtrmglsWarnAllSkipped}[3]{% + \GlossariesExtraWarning{#1}% + #3{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@mgls@applyopts} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\glsxtr@mgls@applyopts}[1]{% + \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}% + \@mgls@dooptions +% \end{macrocode} +% Append any unknown options to all. +% \begin{macrocode} + \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}% +% \end{macrocode} +% If setup key has been used, check for pre-option keys: +% \begin{macrocode} + \ifdefvoid\@mgls@setup + {}% + {% + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}% + \mgls@disable@mglsopts + \@mgls@dooptions + \mgls@enable@mglsopts +% \end{macrocode} +% Save remaining setup options. +% \begin{macrocode} + \ifx\@mgls@setupoptions\@empty + \let\@mgls@setupoptions\XKV@rm + \else + \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% + \fi + }% +% \end{macrocode} +% Apply gls unset/reset options. +% \begin{macrocode} + \@mgls@resetall + \@mgls@unsetall + \@mgls@resetmain + \@mgls@unsetmain + \@mgls@resetothers + \@mgls@unsetothers +% \end{macrocode} +% Disable. +% \begin{macrocode} + \let\@mgls@resetall\@empty + \let\@mgls@resetmain\@empty + \let\@mgls@resetothers\@empty + \let\@mgls@unsetall\@empty + \let\@mgls@unsetmain\@empty + \let\@mgls@unsetothers\@empty +% \end{macrocode} +% First use flags. +% \begin{macrocode} + \ifmglsused\mglscurrentmultilabel + {\let\mglsisfirstuse\@secondoftwo}% + {\let\mglsisfirstuse\@firstoftwo}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@firstofthree} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\providecommand{\@firstofthree}[3]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@secondofthree} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\providecommand{\@secondofthree}[3]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@thirdofthree} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\providecommand{\@thirdofthree}[3]{#3} +% \end{macrocode} +%\end{macro} +% +%The main internal command for referencing multi-entries: +%\begin{macro}{\glsxtr@mgls@inner} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{glsxtr@mgls@inner}\marg{options}\marg{label}\marg{insert}\marg{first +%cs}\marg{not first cs}\marg{main first cs}\marg{main other cs} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtr@mgls@inner}[7]{% + \let\mglslastmainlabel\@empty + \let\mglsiflastmainwasfirstuse\@firstoftwo + \let\mglsiflastmainwasplural\@secondoftwo + \let\mglsiflastmaincapscase\@firstofthree + \let\mglsiflastmainskipped\@firstoftwo + \bgroup + \ifcsundef{@gls@combined@#2@main}% + {% + \glsxtrundefaction{Multi entry `#2' hasn't been defined}% + {You need to define `#2' with \string\multiglossaryentry}% + \gdef\@mgls@post@hookdefs{% + \protected@edef\mglslastmultilabel{#2}% + \let\mglswasfirstuse\@firstoftwo + \let\mglslastcategory\@empty + \let\mglsiflastelementskipped\@firstoftwo + \let\mglsiflastelementwasfirstuse\@firstoftwo + \let\mglsiflastelementwasplural\@secondoftwo + \let\mglsiflastelementcapscase\@firstofthree + \let\mglslastelementlabel\@empty + \let\mgls@do@postlinkhook\relax + }% + }% + {% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{initialise hooks} +% Initialise hooks in case component entries haven't been defined +% (which may happen with \app{bib2gls}). +% \begin{macrocode} + \let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree +% \end{macrocode} +% Save information for hooks. +% \begin{macrocode} + \protected@edef\mglscurrentmultilabel{#2}% + \letcs\mglscurrentmainlabel{@gls@combined@#2@main}% + \letcs\mglscurrentlist{@gls@combined@#2@list}% + \letcs\mglscurrentoptions{@gls@combined@#2@options}% +% \end{macrocode} +% Initialise (may be changed if \texttt{multiunset} is present): +% \begin{macrocode} + \ifmglsused\mglscurrentmultilabel + {\let\mglsisfirstuse\@secondoftwo}% + {\let\mglsisfirstuse\@firstoftwo}% +% \end{macrocode} +% Only obtain pre-option keys: +% \begin{macrocode} + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}% + \@mgls@dooptions +% \end{macrocode} +% Save remaining setup options. +% \begin{macrocode} + \let\@mgls@setupoptions\XKV@rm +% \end{macrocode} +% Apply \cs{mgls} options. +% \begin{macrocode} + \mgls@disable@setup + \ifdefvoid\@gls@combined@mglsopts + {}% + {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}% + \mgls@enable@setup +% \end{macrocode} +% Apply options provided in \verb|#1|. +% \begin{macrocode} + \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}% +% \end{macrocode} +% Check for attribute settings. +% \begin{macrocode} + \ifx\@gls@combined@category\empty +% \end{macrocode} +% No category +% \begin{macrocode} + \else +% \end{macrocode} +% Attribute options: +% \begin{macrocode} + \glshascategoryattribute{\@gls@combined@category}{multioptions}% + {% + \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category + @multioptions}% +% \end{macrocode} +% Only obtain pre-option keys: +% \begin{macrocode} + \let\@gls@combined@mglsopts\@empty + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}% + \@mgls@dooptions +% \end{macrocode} +% Append remaining options: +% \begin{macrocode} + \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% + \ifx\@gls@combined@mglsopts\@empty + \else +% \end{macrocode} +% mgls options found: +% \begin{macrocode} + \let\@mgls@setup\@empty + \mgls@disable@setup + \glsxtr@mgls@applyopts\@gls@combined@mglsopts + \mgls@enable@setup + \fi + }% + {}% + \fi +% \end{macrocode} +% Apply setup options. +% \begin{macrocode} + \edef\@mgls@dooptions{% + \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}% + \@mgls@dooptions +% \end{macrocode} +% Provide local user-level access to category: +% \begin{macrocode} + \let\mglscurrentcategory\@gls@combined@category +% \end{macrocode} +% Should the entire content be a hyperlink? +% \begin{macrocode} + \ifnum\@gls@combined@hyper=1\relax + \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}% + \else + \def\@mgls@combinedlink{\@firstofone}% + \fi +% \end{macrocode} +% Entire content encapsulator. +% \begin{macrocode} + \def\@gls@combined@encapsulator##1{% + \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}% +% \end{macrocode} +% Initialise. +% \begin{macrocode} + \let\@mgls@do@current@element\@firstofone +% \end{macrocode} +% Check if all elements are being skipped. +% \begin{macrocode} + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipmain + \ifKV@glsxtrcombined@firstskipothers +% \end{macrocode} +% Just do the warning and insert. This will ignore the loop. +% \begin{macrocode} + \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator + \def\@gls@combined@encapsulator##1{% + \glsxtrmglsWarnAllSkipped{All elements skipped for + first use of multi-entry `#2'}{#3}% + {\@gls@org@combined@encapsulator}% + }% + \let\@mgls@do@current@element\@gobble + \fi + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipmain + \ifKV@glsxtrcombined@usedskipothers +% \end{macrocode} +% Just do the warning and insert. This will ignore the loop. +% \begin{macrocode} + \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator + \def\@gls@combined@encapsulator##1{% + \glsxtrmglsWarnAllSkipped{All elements skipped for + subsequent use of multi-entry `#2'}{#3}% + {\@gls@org@combined@encapsulator}% + }% + \let\@mgls@do@current@element\@gobble + \fi + \fi + }% +% \end{macrocode} +% Determine prefix and suffix. +% \begin{macrocode} + \mglsisfirstuse + {% + \let\mglscurrentprefix\@gls@combined@firstprefix + \let\mglscurrentsuffix\@gls@combined@firstsuffix + }% + {% + \let\mglscurrentprefix\@gls@combined@usedprefix + \let\mglscurrentsuffix\@gls@combined@usedsuffix + }% +% \end{macrocode} +%Set up post-link hook used after current scope. +% \begin{macrocode} + \xdef\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}% + \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}% + }% + \ifx\@mgls@do@current@element\@gobble + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementskipped\@firstoftwo + \let\mglslastelementlabel\@empty + \let\mglsiflastelementwasfirstuse\@firstoftwo + \let\mglsiflastelementwasplural\@secondoftwo + \let\mglsiflastelementcapscase\@firstofthree + }% + \fi + \mglsisfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}% +% \end{macrocode} +% Determine if the multi-entry post-link hook should be applied. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlink@nr\relax +% \end{macrocode} +% \texttt{mpostlink=false}. +% \begin{macrocode} + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or +% \end{macrocode} +% \texttt{mpostlink=true}. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or +% \end{macrocode} +% \texttt{mpostlink=firstonly}. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or +% \end{macrocode} +% \texttt{mpostlink=usedonly}. +% \begin{macrocode} + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \fi + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}% +% \end{macrocode} +% Determine if the multi-entry post-link hook should be applied. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlink@nr\relax +% \end{macrocode} +% \texttt{mpostlink=false}. +% \begin{macrocode} + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or +% \end{macrocode} +% \texttt{mpostlink=true}. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or +% \end{macrocode} +% \texttt{mpostlink=firstonly}. +% \begin{macrocode} + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or +% \end{macrocode} +% \texttt{mpostlink=usedonly}. +% \begin{macrocode} + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \fi + }% +% \end{macrocode} +% Save current post-link hook. +% \begin{macrocode} + \let\mgls@org@postlinkhook\glspostlinkhook +% \end{macrocode} +% Prefix. +% \begin{macrocode} + \mglsprefix +% \end{macrocode} +% Initialise last element label (for \cs{mglssuffix}). +% \begin{macrocode} + \let\mglslastelementlabel\@empty + \@gls@combined@encapsulator + {% +% \end{macrocode} +% Save previous label. +% \begin{macrocode} + \def\@mgls@previouslabel{}% + \mglselementindex=0\relax + \@for\mglscurrentlabel:=\mglscurrentlist\do{% + \advance\mglselementindex by 1\relax + \glsxtr@setup@docurrent +% \end{macrocode} +% Is this the last element? +% \begin{macrocode} + \ifx\@xfor@nextelement\@nnil + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo +% \end{macrocode} +% Are any elements being skipped? +% \begin{macrocode} + \mglsisfirstuse + {% + \glsxtr@mgls@checklastelement{first}{#2}% + }% + {% + \glsxtr@mgls@checklastelement{used}{#2}% + }% + \fi +% \end{macrocode} +% Should the element post-link hook be used? +% \begin{macrocode} + \ifcase\@gls@combined@postlinks@nr\relax +% \end{macrocode} +% \texttt{postlinks=none} +% \begin{macrocode} + \let\glspostlinkhook\relax + \or +% \end{macrocode} +% \texttt{postlinks=all} +% \begin{macrocode} + \let\glspostlinkhook\mgls@org@postlinkhook + \or +% \end{macrocode} +% \texttt{postlinks=notlast} +% \begin{macrocode} + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \or +% \end{macrocode} +% \texttt{postlinks=mainnotlast} +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \else + \let\glspostlinkhook\relax + \fi + \or +% \end{macrocode} +% \texttt{postlinks=mainonly} +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\mgls@org@postlinkhook + \else + \let\glspostlinkhook\relax + \fi + \or +% \end{macrocode} +% \texttt{postlinks=othernotlast} +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\relax + \else + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \fi + \or +% \end{macrocode} +% \texttt{postlinks=otheronly} +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\relax + \else + \let\glspostlinkhook\mgls@org@postlinkhook + \fi + \fi +% \end{macrocode} +% Save the last element for the multi-entry post-link hook. +% \begin{macrocode} + \mglsiflast + {% + \xappto\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastelementlabel + {\expandonce\mglscurrentlabel}}% + }% + {}% +% \end{macrocode} +% Do current element: +% \begin{macrocode} + \@mgls@do@current@element + {% +% \end{macrocode} +% Pre element hook. +% \begin{macrocode} + \mglselementprehook +% \end{macrocode} +% Is this the first use of the current element? +% \begin{macrocode} + \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}% + {\let\@mgls@current@iffirstuse\@firstoftwo}% + {\let\@mgls@current@iffirstuse\@secondoftwo}% + \ifx\mglscurrentlabel\mglscurrentmainlabel +% \end{macrocode} +% Main element. +% Location encap option: +% \begin{macrocode} + \edef\@mgls@current@options{format=\@gls@combined@encapmain}% +% \end{macrocode} +%Indexing option: +% \begin{macrocode} + \ifcase\@gls@combined@indexmain + \appto\@mgls@current@options{,noindex}% + \or + \appto\@mgls@current@options{,noindex=false}% + \or + \@mgls@current@iffirstuse + {\appto\@mgls@current@options{,noindex=false}}% + {\appto\@mgls@current@options{,noindex}}% + \fi +% \end{macrocode} +% Hyperlink option: +% \begin{macrocode} + \ifcase\@gls@combined@hyper\relax + \appto\@mgls@current@options{,hyper=false}% none + \or + \appto\@mgls@current@options{,hyper=false}% allmain + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% individual + \or + \appto\@mgls@current@options{,hyper=false}% otheronly + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notmainfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst + }% + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst + }% + \fi +% \end{macrocode} +%Append all and then main: +% \begin{macrocode} + \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}% + \else +% \end{macrocode} +% Other element. +% Location encap option: +% \begin{macrocode} + \edef\@mgls@current@options{format=\@gls@combined@encapothers}% +% \end{macrocode} +% Indexing option: +% \begin{macrocode} + \ifcase\@gls@combined@indexothers\relax + \appto\@mgls@current@options{,noindex}% + \or + \appto\@mgls@current@options{,noindex=false}% + \or + \@mgls@current@iffirstuse + {\appto\@mgls@current@options{,noindex=false}}% + {\appto\@mgls@current@options{,noindex}}% + \fi +% \end{macrocode} +% Hyperlink option: +% \begin{macrocode} + \ifcase\@gls@combined@hyper\relax + \appto\@mgls@current@options{,hyper=false}% none + \or + \appto\@mgls@current@options{,hyper=false}% allmain + \or + \appto\@mgls@current@options{,hyper=false}% mainonly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% individual + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% nototherfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst + }% + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst + }% + \fi +% \end{macrocode} +%Append all and then others: +% \begin{macrocode} + \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}% + \fi +% \end{macrocode} +% Is this the first element? +% \begin{macrocode} + \ifx\@mgls@previouslabel\empty + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\@mgls@cs#6\relax + \else + \let\@mgls@cs#4\relax + \fi + \else +% \end{macrocode} +% Not the first element so add separator. +% \begin{macrocode} + \@mgls@previous@iffirstuse + {% + \@mgls@current@iffirstuse + {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% + {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}% + }% + {% + \@mgls@current@iffirstuse + {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% + {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}% + }% + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\@mgls@cs#7\relax + \else + \let\@mgls@cs#5\relax + \fi + \fi +% \end{macrocode} +% Is this the last element? +% \begin{macrocode} + \mglsiflast + {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}% + {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}% +% \end{macrocode} +% Is this the main element? If so, save information for post-link +% hook. +% \begin{macrocode} + \ifx\mglscurrentlabel\mglscurrentmainlabel + \xappto\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastmainlabel + {\expandonce\mglscurrentmainlabel}% + }% + \glsxtrifwasfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}% + }% + \glsifplural + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}% + }% + \glscapscase + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@firstofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@secondofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@thirdofthree + }% + }% + \fi + \let\@mgls@previouslabel\mglscurrentlabel + \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse + }% +% \end{macrocode} +% Post element hook. +% \begin{macrocode} + \mglselementposthook + }% + \ifx\mglslastmainlabel\@empty + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}% + \else + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}% + \fi +% \end{macrocode} +% Encapsulator may introduce grouping so check here. +% \begin{macrocode} + \ifx\@mgls@do@current@element\@gobble + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}% + \else + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}% + \fi + \glsxtrifwasfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}% + }% + \glsifplural + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}% + }% + \glscapscase + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@firstofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@secondofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@thirdofthree + }% + }% + }% +% \end{macrocode} +% Suffix needs post-link hook commands. +% \begin{macrocode} + \@mgls@post@hookdefs + \mglssuffix +% \end{macrocode} +%Unset multi-entry first use flag after current scope. +% \begin{macrocode} + \ifcase\@mgls@unsetaction\relax + \xappto\@mgls@post@hookdefs{% + \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}% + \or + \xappto\@mgls@post@hookdefs{% + \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}% + \fi + }% + \glsxtrmglswrite{#2}% + \egroup + \@mgls@post@hookdefs + \mgls@do@postlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglscustompostlinkhook} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglscustompostlinkhook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslastelementpostlinkhook} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglslastelementpostlinkhook}{% + \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse + \let\glsifplural\mglsiflastelementwasplural + \let\glscapscase\mglsiflastelementcapscase + \let\glslabel\mglslastelementlabel + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslastmainpostlinkhook} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglslastmainpostlinkhook}{% + \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse + \let\glsifplural\mglsiflastmainwasplural + \let\glscapscase\mglsiflastmaincapscase + \let\glslabel\mglslastmainlabel + \glspostlinkhook +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsdefcategoryprefix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsdefcategoryprefix}[2]{% + \csdef{mglsprefix@#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglshascategoryprefix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglshascategoryprefix}[3]{% + \ifcsdef{mglsprefix@#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsusecategoryprefix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsusecategoryprefix}[1]{% + \csuse{mglsprefix@#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsprefix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsprefix}{% + \ifdefempty\mglscurrentcategory + {\mglscurrentprefix}% + {% + \mglshascategoryprefix{\mglscurrentcategory}% + {\mglsusecategoryprefix{\mglscurrentcategory}}% + {\mglscurrentprefix}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsdefcategorysuffix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsdefcategorysuffix}[2]{% + \csdef{mglssuffix@#1}{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglshascategorysuffix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglshascategorysuffix}[3]{% + \ifcsdef{mglssuffix@#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsusecategorysuffix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglsusecategorysuffix}[1]{% + \csuse{mglssuffix@#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglssuffix} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglssuffix}{% + \ifdefempty\mglscurrentcategory + {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% + {% + \mglshascategorysuffix{\mglscurrentcategory}% + {\mglsusecategorysuffix{\mglscurrentcategory}}% + {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglselementprehook} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglselementprehook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglselementposthook} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mglselementposthook}{} +% \end{macrocode} +%\end{macro} +% +%Separators. +%\begin{macro}{\glscombinedsep} +%\changes{1.48}{2021-11-22}{new} +%Separator between two elements that have been marked as used. +%This takes the two element labels as arguments. +% \begin{macrocode} +\newcommand*{\glscombinedsep}[2]{% + \glshasattribute{#1}{combinedsep}% + {\glsgetattribute{#1}{combinedsep}}% + { }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glscombinedfirstsepfirst} +%\changes{1.48}{2021-11-22}{new} +%Separator following and preceding a first use. +% \begin{macrocode} +\newcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{#1}{combinedfirstsepfirst}% + {\glsgetattribute{#1}{combinedfirstsepfirst}}% + {\glscombinedsep{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glscombinedfirstsep} +%\changes{1.48}{2021-11-22}{new} +%Separator following a first use. +% \begin{macrocode} +\newcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{#1}{combinedfirstsep}% + {\glsgetattribute{#1}{combinedfirstsep}}% + {\glscombinedsep{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glscombinedsepfirst} +%\changes{1.48}{2021-11-22}{new} +%Separator preceding a first use. +% \begin{macrocode} +\newcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{#1}{combinedsepfirst}% + {\glsgetattribute{#1}{combinedsepfirst}}% + {\glscombinedsep{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssetcombinedsepabbrvnbsp} +%\changes{1.48}{2021-11-22}{new} +%Provide shortcut for using non-breakable space following an +%abbreviation that has already been used. +%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}} +% \begin{macrocode} +\newcommand*{\glssetcombinedsepabbrvnbsp}{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {\ifglshasshort{##1}{~}{ }}% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {\ifglshasshort{##1}{~}{ }}% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + { }% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + { }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssetcombinedsepabbrvnone} +%\changes{1.48}{2021-11-22}{new} +%Provide shortcut for using nothing if either on next use are +%abbreviations (otherwise use space). +%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}} +% \begin{macrocode} +\newcommand*{\glssetcombinedsepabbrvnone}{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {\ifglshasshort{##1}{}{\ifglshasshort{##2}{}{ }}}% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {\ifglshasshort{##1}{}{ }}% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + {\ifglshasshort{##2}{}{ }}% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + { }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glssetcombinedsepnarrow} +%\changes{1.48}{2021-11-22}{new} +%\changes{1.49}{2022-10-14}{corrected spelling of \cs{ifglshasshort}} +%Measures both. +% \begin{macrocode} +\newcommand*{\glssetcombinedsepnarrow}[2]{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {% + \ifglshasshort{##1}% + {\settowidth{\dimen@}{\glsentryshort{##1}}}% + {\settowidth{\dimen@}{\glsentrytext{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifglshasshort{##2}% + {\settowidth{\dimen@}{\glsentryshort{##2}}}% + {\settowidth{\dimen@}{\glsentrytext{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {% + \ifglshasshort{##1}% + {\settowidth{\dimen@}{\glsentryshort{##1}}}% + {\settowidth{\dimen@}{\glsentrytext{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhaslong{##2}% + {\settowidth{\dimen@}{\glsentrylong{##2}}}% + {\settowidth{\dimen@}{\glsentryfirst{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + {% + \ifhaslong{##1}% + {\settowidth{\dimen@}{\glsentrylong{##1}}}% + {\settowidth{\dimen@}{\glsentryfirst{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifglshasshort{##2}% + {\settowidth{\dimen@}{\glsentryshort{##2}}}% + {\settowidth{\dimen@}{\glsentrytext{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + {% + \ifhaslong{##1}% + {\settowidth{\dimen@}{\glsentrylong{##1}}}% + {\settowidth{\dimen@}{\glsentryfirst{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhaslong{##2}% + {\settowidth{\dimen@}{\glsentrylong{##2}}}% + {\settowidth{\dimen@}{\glsentryfirst{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@mglswrite} +%\changes{1.48}{2021-11-22}{new} +%Write information to the aux file for \app{bib2gls} to pick up, but +%only need to do it once per label since it only indicates which multi-entry +%has been referenced without any additional information. +% \begin{macrocode} +\newcommand{\glsxtrmglswrite}[1]{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off + \else + \protected@edef\@glsxtr@mglslabel{#1}% + \ifdef\@glsxtr@mglsreflist + {% + \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}% + {\@glsxtr@mglsreflist}{}% + {% + \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}% + \if@mgls@writeseparaterefs + \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% + \fi + }% + }% + {% + \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel + \if@mgls@writeseparaterefs + \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% + \else + \AtEndDocument{\immediate\protected@write\@auxout{}% + {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}% + \fi + \@mgls@disable@writeseparateref@cond + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@mglsrefs} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@mglsrefs}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\if@mgls@writeseparaterefs} +%\changes{1.48}{2021-11-22}{new} +%If this conditional is changed, it must be done before the first +%instance of any \cs{mgls}-like command. +% \begin{macrocode} +\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsWriteSeparateRefsTrue} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsWriteSeparateRefsFalse} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@mgls@disable@writeseparateref@cond} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@mgls@disable@writeseparateref@cond}{% + \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}% + {Too late to use \string\mglsWriteSeparateRefsTrue}% + {\string\mglsWriteSeparateRefsTrue\space can only be used before + the first instance of any \string\mgls-like command}}% + \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}% + {Too late to use \string\mglsWriteSeparateRefsFalse}% + {\string\mglsWriteSeparateRefsFalse\space can only be used before + the first instance of any \string\mgls-like command}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@newmgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand{\glsxtr@newmgls}[5]{% + \edef\@glsxr@newmgls@do{% + \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}% + {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}% + \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{% + \noexpand\new@ifnextchar[% + {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}% + {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}% + }% + \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{% + \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}% + \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}% + {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}% + }% + }% + \@glsxr@newmgls@do + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off + \else +% \end{macrocode} +% Provide a way for \app{bib2gls} to recognise the command (this will +% make it easier to add extra commands without having to modify +% \app{bib2gls}). +% \begin{macrocode} + \ifdef\@glsxtr@mglslikelist + {\xappto\@glsxtr@mglslikelist{,#1}}% + {% + \gdef\@glsxtr@mglslikelist{#1}% + \AtEndDocument{\immediate\protected@write\@auxout{}% + {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}% + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@mglslike} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@mglslike}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrMglsOrGls} +%\begin{definition} +%\cs{GlsXtrMglsOrGls}\marg{mgls cs}\marg{gls cs}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%\changes{1.48}{2021-11-22}{new} +%\changes{1.49}{2022-10-14}{removed spurious \cs{PLUS}} +% \begin{macrocode} +\newcommand*{\GlsXtrMglsOrGls}[2]{% + \def\@glsxtr@mgls@or@gls@mcs{#1}% + \def\@glsxtr@mgls@or@gls@gcs{#2}% + \@ifstar{\s@GlsXtrMglsOrGls}% + {% + \@ifnextchar+{\@firstoftwo{\p@GlsXtrMglsOrGls}}% + {% + \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\alt@GlsXtrMglsOrGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\alt@GlsXtrMglsOrGls}{ + \expandafter\@ifnextchar\@gls@alt@hyp@opt@char + {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrMglsOrGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrMglsOrGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\s@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\p@GlsXtrMglsOrGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\p@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@alt@GlsXtrMglsOrGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}% + {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mgls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mgls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{gls} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{glspl} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Only use \cs{glspl} for the main element, otherwise use \cs{gls}. +% \begin{macrocode} +\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mgls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mgls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{Gls} for first element and \cs{gls} for others. +% \begin{macrocode} +\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}% +\glsmfuaddmap{\mgls}{\Mgls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{Glspl} for first element and \cs{glspl} for others. +% \begin{macrocode} +\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}% +\glsmfuaddmap{\mglspl}{\Mglspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Upper case the first element, no case change for others. +%Use plural for the main element only. +% \begin{macrocode} +\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}% +\glsmfuaddmap{\mglsmainpl}{\Mglsmainpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{Gls} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}% +\glsmfublocker{\MGls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGlspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGlspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{Glspl} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}% +\glsmfublocker{\MGlspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGlsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGlsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Start all elements with upper case. Only use plural for main +%element. +% \begin{macrocode} +\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}% +\glsmfublocker{\MGlsmainpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGLS} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGLS}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{GLS} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}% +\glsmfublocker{\MGLS} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGLSpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGLSpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{GLSpl} for all elements. +% \begin{macrocode} +\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}% +\glsmfublocker{\MGLSpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGLSmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGLSmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Upper case all elements. Only use plural for main element. +% \begin{macrocode} +\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}% +\glsmfublocker{\MGLSmainpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glslongortext@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glslongortext#1#2[#3]{% + \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsshortortext@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glsshortortext#1#2[#3]{% + \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsfullorfirst@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glsfullorfirst#1#2[#3]{% + \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glslongortext@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Glslongortext#1#2[#3]{% + \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsshortortext@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Glsshortortext#1#2[#3]{% + \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsfullorfirst@} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Glsfullorfirst#1#2[#3]{% + \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsshort} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsshort}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use short or text for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mglsshort}% +{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglslong} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglslong}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use long or text for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mglslong}% +{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsfull} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsfull}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use full or first for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mglsfull}% +{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglsshort} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglsshort}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use short or text for all elements with initial cap on first element. +% \begin{macrocode} +\glsxtr@newmgls{Mglsshort}% +{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}% +\glsmfuaddmap{\mglsshort}{\Mglsshort} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglslong} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglslong}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use long or text for all elements with initial cap on first +% element. +% \begin{macrocode} +\glsxtr@newmgls{Mglslong}% +{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}% +\glsmfuaddmap{\mglslong}{\Mglslong} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglsfull} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglsfull}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use full or first for all elements with initial cap on first +% element. +% \begin{macrocode} +\glsxtr@newmgls{Mglsfull}% +{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}% +\glsmfuaddmap{\mglsfull}{\Mglsfull} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsname} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsname}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use name for all elements. +% \begin{macrocode} +\glsxtr@newmgls{mglsname}% + {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglsname} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglsname}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use name for all elements with initial cap on first +% element. +% \begin{macrocode} +\glsxtr@newmgls{Mglsname}% + {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}% +\glsmfuaddmap{\mglsname}{\Mglsname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGlsname} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGlsname}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use name for all elements with initial cap on all +% elements. +% \begin{macrocode} +\glsxtr@newmgls{MGlsname}% + {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}% +\glsmfublocker{\MGlsname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glssymbolorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glssymbolorgls#1#2[#3]{% + \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glssymbolorGls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glssymbolorGls#1#2[#3]{% + \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglssymbol} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglssymbol}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{glssymbol} if the \gloskey{symbol} key is set otherwise +% use \cs{gls}. +% \begin{macrocode} +\glsxtr@newmgls{mglssymbol}% + {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglssymbol} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglssymbol}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% As above but initial the first element if it's not a symbol. +% \begin{macrocode} +\glsxtr@newmgls{Mglssymbol}% + {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}% +\glsmfuaddmap{\mglssymbol}{\Mglssymbol} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGlssymbol} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGlssymbol}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% As above but initial each element if it's not a symbol. +% \begin{macrocode} +\glsxtr@newmgls{MGlssymbol}% + {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}% +\glsmfublocker{\MGlssymbol} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsfield} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand{\mglsfield}{useri} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsfieldorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@glsfieldorgls#1#2[#3]{% + \glsxtrifhasfield{\mglsfield}{#2}% + {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}% + {\@gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Glsfieldorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Glsfieldorgls#1#2[#3]{% + \glsxtrifhasfield{\mglsfield}{#2}% + {\@glsdisp[#1]{#2}{% + \expandafter\glssentencecase\expandafter{\glscurrentfieldvalue#3}}}% + {\@Gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mglsusefield} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mglsusefield}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use the field given by \cs{mglsfield}. +% \begin{macrocode} +\glsxtr@newmgls{mglsusefield}% + {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mglsusefield} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mglsusefield}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% As above but use initial cap for first element only. +% \begin{macrocode} +\glsxtr@newmgls{Mglsusefield}% + {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}% +\glsmfuaddmap{\mglsusefield}{\Mglsusefield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MGlsusefield} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MGlsusefield}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% As above but use initial cap for all elements. +% \begin{macrocode} +\glsxtr@newmgls{MGlsusefield}% + {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}% +\glsmfublocker{\MGlsusefield} +% \end{macrocode} +%\end{macro} +% +% Use commands provided by \sty{glossaries-prefix} if it has been +% loaded. +%\begin{macro}{\mpglsWarning} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\newcommand*{\mpglsWarning}{% + \GlossariesExtraWarning{glossaries-prefix.sty is required for + \string\mpgls\space family of commands}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@pglsorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@pglsorgls#1#2[#3]{% + \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@pglsorglspl} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@pglsorglspl#1#2[#3]{% + \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Pglsorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Pglsorgls#1#2[#3]{% + \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@pglsorglspl} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@pglsorglspl#1#2[#3]{% + \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Pglsorglspl} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@Pglsorglspl#1#2[#3]{% + \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@PGLSorgls} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@PGLSorgls#1#2[#3]{% + \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@PGLSorglspl} +%\changes{1.48}{2021-11-22}{new} +% \begin{macrocode} +\def\@PGLSorglspl#1#2[#3]{% + \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mpgls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mpgls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{pgls} for the first element and \cs{gls} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mpglspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mpglspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{pglspl} for the first element and \cs{glspl} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mpglsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{mpglsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Only use plural for main element and only use prefixing command for +%first element. +% \begin{macrocode} +\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mpgls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mpgls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{Pgls} for the first element and \cs{gls} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}% +\glsmfuaddmap{\mpgls}{\Mpgls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mpglspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mpglspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{Pglspl} for the first element and \cs{glspl} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}% +\glsmfuaddmap{\mpglspl}{\Mpglspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Mpglsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{Mpglsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Only use plural for main element and only use first letter +%uppercase prefixing command for first element. +% \begin{macrocode} +\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}% +\glsmfuaddmap{\mpglsmainpl}{\Mpglsmainpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGls} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGls}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Use \cs{Pgls} for the first element and \cs{Gls} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}% +\glsmfublocker{\MPGls} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGlspl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGlspl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{Pglspl} for the first element and \cs{Glspl} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}% +\glsmfublocker{\MPGlspl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGlsmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGlsmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Only use plural for main element and first letter uppercase all +%elements. +% \begin{macrocode} +\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}% +\glsmfublocker{\MPGlsmainpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGLS} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGLS}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{PGLS} for the first element and \cs{GLS} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}% +\glsmfublocker{\MPGLS} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGLSpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGLSpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% Use \cs{PGLSpl} for the first element and \cs{GLSpl} for the remainder. +% \begin{macrocode} +\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}% +\glsmfublocker{\MPGLSpl} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\MPGLSmainpl} +%\changes{1.48}{2021-11-22}{new} +%\begin{definition} +%\cs{MPGLSmainpl}\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +%Only use plural for main element and uppercase all elements. +% \begin{macrocode} +\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}% +\glsmfublocker{\MPGLSmainpl} +% \end{macrocode} +%\end{macro} +% +%Not currently implementing any other variations. +% +%\subsection{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 \cs{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} +% The style needs to be set at the end to ensure that +% \cs{setglossarystyle} has been redefined and extra style commands +% have been defined. +% 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-abbrstyles.def> +% \end{macrocode} +%\fi +%\section{Predefined Abbreviation Styles (glossaries-extra-abbrstyles.def)} +%\changes{1.49}{??}{added glossaries-extra-abbrstyles.def} +% \begin{macrocode} +\ProvidesFile{glossaries-extra-abbrstyles.def}[2022/06/16 v1.48b (NLCT)] +% \end{macrocode} +%This file contains the predefined abbreviation styles. +%Some helper commands first. % %\begin{macro}{\glsxtrlongshortname} %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrlongshortname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} % +%Provide convenient wrappers for common formats. +%\begin{macro}{\glsxtrlongformat} +%\begin{definition} +%\cs{glsxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongformat}[3]{% +% \end{macrocode} +%Don't add inner formatting if markwords attribute set as the inner formatting +%is implemented within \cs{glsxtrword} and \cs{glsxtrwordsep}. +% \begin{macrocode} + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccesslong{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\glsaccesslong{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongplformat} +%\begin{definition} +%\cs{glsxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongplformat}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccesslongpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\glsaccesslongpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongformat} +%\begin{definition} +%\cs{Glsxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrlongformat}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccesslong{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\Glsaccesslong{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\Glsaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongplformat} +%\begin{definition} +%\cs{Glsxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrlongplformat}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccesslongpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\Glsaccesslongpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\Glsaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongformat} +%\begin{definition} +%\cs{GLSxtrlongformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrlongformat}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccesslong{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\GLSaccesslong{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\GLSaccessfmtlong{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongplformat} +%\begin{definition} +%\cs{GLSxtrlongplformat}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrlongplformat}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccesslongpl{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\GLSaccesslongpl{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\GLSaccessfmtlongpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongformatgrp} +%\begin{definition} +%\cs{glsxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\glsxtrlongformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccesslong{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\glsaccesslong{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongplformatgrp} +%\begin{definition} +%\cs{glsxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\glsxtrlongplformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccesslongpl{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\glsaccesslongpl{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongformatgrp} +%\begin{definition} +%\cs{Glsxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\Glsxtrlongformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccesslong{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\Glsaccesslong{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongplformatgrp} +%\begin{definition} +%\cs{Glsxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\Glsxtrlongplformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccesslongpl{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\Glsaccesslongpl{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongformatgrp} +%\begin{definition} +%\cs{GLSxtrlongformatgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\GLSxtrlongformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccesslong{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + #3{\GLSaccesslong{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% + {% + #3{\GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongplformatgrp} +%\begin{definition} +%\cs{GLSxtrlongformatplgrp}\marg{label}\marg{insert}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\GLSxtrlongplformatgrp}[3]{% + \glsifattribute{#1}{markwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccesslongpl{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + #3{\GLSaccesslongpl{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% + {% + #3{\GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortformat} +%\begin{definition} +%\cs{glsxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortplformat} +%\begin{definition} +%\cs{glsxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortplformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortformat} +%\begin{definition} +%\cs{Glsxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrshortformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccessshort{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\Glsaccessshort{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\Glsaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortplformat} +%\begin{definition} +%\cs{Glsxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrshortplformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccessshortpl{#1}\glsxtrgenentrytextfmt{#2}}% + \else + #3{\Glsaccessshortpl{#1}}\glsxtrgenentrytextfmt{#2}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\Glsaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \glsxtrgenentrytextfmt{#2}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortformat} +%\begin{definition} +%\cs{GLSxtrshortformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrshortformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccessshort{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\GLSaccessshort{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\GLSaccessfmtshort{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortplformat} +%\begin{definition} +%\cs{GLSxtrshortplformat}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrshortplformat}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccessshortpl{#1}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\GLSaccessshortpl{#1}}\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + \ifglsxtrinsertinside + #3{\GLSaccessfmtshortpl{#2}{\glsxtrgenentrytextfmt}{#1}}% + \else + #3{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortformatgrp} +%\begin{definition} +%\cs{glsxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\glsxtrshortformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccessshort{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\glsaccessshort{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortplformatgrp} +%\begin{definition} +%\cs{glsxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\glsxtrshortplformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\glsaccessshortpl{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\glsaccessshortpl{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortformatgrp} +%\begin{definition} +%\cs{Glsxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\Glsxtrshortformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccessshort{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\Glsaccessshort{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortplformatgrp} +%\begin{definition} +%\cs{Glsxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\Glsxtrshortplformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\Glsaccessshortpl{#1}{\glsxtrgenentrytextfmt{#2}}}% + \else + #3{\Glsaccessshortpl{#1}}{\glsxtrgenentrytextfmt{#2}}% + \fi + }% + {% + #3{\Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {#3{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortformatgrp} +%\begin{definition} +%\cs{GLSxtrshortformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\GLSxtrshortformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccessshort{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + #3{\GLSaccessshort{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% + {% + #3{\GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortplformatgrp} +%\begin{definition} +%\cs{GLSxtrshortplformatgrp}\marg{label}\marg{insert}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +%Add grouping around insert. +% \begin{macrocode} +\newcommand*{\GLSxtrshortplformatgrp}[3]{% + \glsifattribute{#1}{markshortwords}{true}% + {% + \ifglsxtrinsertinside + #3{\GLSaccessshortpl{#1}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + #3{\GLSaccessshortpl{#1}}{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% + {% + #3{\GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{#1}}% + \ifglsxtrinsertinside + {\mfirstucMakeUppercase{#3{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + }% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongshortformat} +%\begin{definition} +%\cs{glsxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortformat}[4]{% + \glsxtrlongformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrshortformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrlongshortplformat} +%\begin{definition} +%\cs{glsxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlongshortplformat}[4]{% + \glsxtrlongplformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrshortplformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongshortformat} +%\begin{definition} +%\cs{Glsxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrlongshortformat}[4]{% + \Glsxtrlongformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrshortformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrlongshortplformat} +%\begin{definition} +%\cs{Glsxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrlongshortplformat}[4]{% + \Glsxtrlongplformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrshortplformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongshortformat} +%\begin{definition} +%\cs{GLSxtrlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrlongshortformat}[4]{% + \GLSxtrlongformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\GLSxtrshortformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlongshortplformat} +%\begin{definition} +%\cs{GLSxtrlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrlongshortplformat}[4]{% + \GLSxtrlongplformat{#1}{#2}{#3}% + \glsxtrfullsep{#1}% + \glsxtrparen{\GLSxtrshortplformat{#1}{}{#4}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortlongformat} +%\begin{definition} +%\cs{glsxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlongformat}[4]{% + \glsxtrshortformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrlongformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshortlongplformat} +%\begin{definition} +%\cs{glsxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshortlongplformat}[4]{% + \glsxtrshortplformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrlongplformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortlongformat} +%\begin{definition} +%\cs{Glsxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrshortlongformat}[4]{% + \Glsxtrshortformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrlongformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrshortlongplformat} +%\begin{definition} +%\cs{Glsxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrshortlongplformat}[4]{% + \Glsxtrshortplformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\glsxtrlongplformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortlongformat} +%\begin{definition} +%\cs{GLSxtrshortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrshortlongformat}[4]{% + \GLSxtrshortformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\GLSxtrlongformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshortlongplformat} +%\begin{definition} +%\cs{GLSxtrshortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrshortlongplformat}[4]{% + \GLSxtrshortplformat{#1}{#2}{#4}% + \glsxtrfullsep{#1}% + \glsxtrparen{\GLSxtrlongplformat{#1}{}{#3}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfootnotelongformat} +%\begin{definition} +%\cs{glsxtrfootnotelongformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfootnotelongformat}[2]{% + \glsxtrlongformat{#1}{}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfootnotelongplformat} +%\begin{definition} +%\cs{glsxtrfootnotelongplformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfootnotelongplformat}[2]{% + \glsxtrlongplformat{#1}{}{#2}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostfootnotelongformat} +%\begin{definition} +%\cs{glsxtrpostfootnotelongformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostfootnotelongformat}{% + \glsxtrfootnotelongformat +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostusershortformat} +%\begin{definition} +%\cs{glsxtruserpostshortformat}\marg{label}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostusershortformat}[2]{% + \glsxtrifallcaps + {\GLSxtrusershortformat{#1}{#2}}% + {\glsxtrusershortformat{#1}{#2}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusershortformat} +%\begin{definition} +%\cs{glsxtrusershortformat}\marg{label}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrusershortformat}[2]{% + \glsxtruserparen{\glsxtrshortformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusershortplformat} +%\begin{definition} +%\cs{glsxtrusershortplformat}\marg{label}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrusershortplformat}[2]{% + \glsxtruserparen{\glsxtrshortplformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrusershortformat} +%\begin{definition} +%\cs{GLSxtrusershortformat}\marg{label}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrusershortformat}[2]{% + \GLSxtruserparen{\GLSxtrshortformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrusershortplformat} +%\begin{definition} +%\cs{GLSxtrusershortplformat}\marg{label}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrusershortplformat}[2]{% + \GLSxtruserparen{\GLSxtrshortplformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrpostuserlongformat} +%\begin{definition} +%\cs{glsxtruserpostlongformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrpostuserlongformat}[2]{% + \glsxtrifallcaps + {\GLSxtruserlongformat{#1}{#2}}% + {\glsxtruserlongformat{#1}{#2}}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserlongformat} +%\begin{definition} +%\cs{glsxtruserlongformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtruserlongformat}[2]{% + \glsxtruserparen{\glsxtrlongformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtruserlongformat} +%\begin{definition} +%\cs{GLSxtruserlongformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtruserlongformat}[2]{% + \GLSxtruserparen{\GLSxtrlongformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserlongplformat} +%\begin{definition} +%\cs{glsxtruserlongplformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtruserlongplformat}[2]{% + \glsxtruserparen{\glsxtrlongplformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtruserlongplformat} +%\begin{definition} +%\cs{GLSxtruserlongplformat}\marg{label}\marg{longfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtruserlongplformat}[2]{% + \GLSxtruserparen{\GLSxtrlongplformat{#1}{}{#2}}{#1}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserlongshortformat} +%\begin{definition} +%\cs{glsxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtruserlongshortformat}[4]{% + \glsxtrlongformat{#1}{#2}{#3}% + \glsxtrusershortformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserlongshortplformat} +%\begin{definition} +%\cs{glsxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtruserlongshortplformat}[4]{% + \glsxtrlongplformat{#1}{#2}{#3}% + \glsxtrusershortplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtruserlongshortformat} +%\begin{definition} +%\cs{Glsxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtruserlongshortformat}[4]{% + \Glsxtrlongformat{#1}{#2}{#3}% + \glsxtrusershortformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtruserlongshortplformat} +%\begin{definition} +%\cs{Glsxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtruserlongshortplformat}[4]{% + \Glsxtrlongplformat{#1}{#2}{#3}% + \glsxtrusershortplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtruserlongshortformat} +%\begin{definition} +%\cs{GLSxtruserlongshortformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtruserlongshortformat}[4]{% + \GLSxtrlongformat{#1}{#2}{#3}% + \GLSxtrusershortformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtruserlongshortplformat} +%\begin{definition} +%\cs{GLSxtruserlongshortplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtruserlongshortplformat}[4]{% + \GLSxtrlongplformat{#1}{#2}{#3}% + \GLSxtrusershortplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusershortlongformat} +%\begin{definition} +%\cs{glsxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrusershortlongformat}[4]{% + \glsxtrshortformat{#1}{#2}{#3}% + \glsxtruserlongformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrusershortlongplformat} +%\begin{definition} +%\cs{glsxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrusershortlongplformat}[4]{% + \glsxtrshortplformat{#1}{#2}{#3}% + \glsxtruserlongplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrusershortlongformat} +%\begin{definition} +%\cs{Glsxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrusershortlongformat}[4]{% + \Glsxtrshortformat{#1}{#2}{#3}% + \glsxtruserlongformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Glsxtrusershortlongplformat} +%\begin{definition} +%\cs{Glsxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\Glsxtrusershortlongplformat}[4]{% + \Glsxtrshortplformat{#1}{#2}{#3}% + \glsxtruserlongplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrusershortlongformat} +%\begin{definition} +%\cs{GLSxtrusershortlongformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrusershortlongformat}[4]{% + \GLSxtrshortformat{#1}{#2}{#3}% + \GLSxtruserlongformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrusershortlongplformat} +%\begin{definition} +%\cs{GLSxtrusershortlongplformat}\marg{label}\marg{insert}\marg{longfmtcs}\marg{shortfmtcs} +%\end{definition} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\GLSxtrusershortlongplformat}[4]{% + \GLSxtrshortplformat{#1}{#2}{#3}% + \GLSxtruserlongplformat{#1}{#4}% +}% +% \end{macrocode} +%\end{macro} +% +%\subsection{Predefined Styles (Default Font)} %\changes{1.17}{2017-08-09}{removed some inconsistencies in the abbreviation %styles} %\begin{abbrvstyle}{long-short} @@ -18039,24 +30924,25 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} - plural={\protect\glsabbrvfont{\the\glsshortpltok}},% - text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% 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}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -18074,30 +30960,34 @@ defined}{}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*{\glsxtrrevert}[1]{\glsxtrdefaultrevert{##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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -18121,8 +31011,9 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\glsxtrlongshortdescname}{% - \protect\glslongfont{\the\glslongtok} - \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}% + \glsxplongfont{\the\glslongtok}{\glscategorylabel}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}% } % \end{macrocode} %\end{macro} @@ -18143,27 +31034,28 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% - first={\protect\glsfirstlongfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% % \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}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% % \end{macrocode} %\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont}} % \begin{macrocode} - plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \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}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -18181,7 +31073,7 @@ defined}{}% %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrshortlongname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} @@ -18202,18 +31094,18 @@ defined}{}% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} - text={\protect\glsabbrvfont{\the\glsshorttok}},% - plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. @@ -18241,26 +31133,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -18269,7 +31163,7 @@ defined}{}% %\begin{macro}{\glsxtrshortlongdescsort} %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} -\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok} +\newcommand*{\glsxtrshortlongdescsort}{\expandonce\glsxtrorgshort} % \end{macrocode} %\end{macro} % @@ -18277,8 +31171,9 @@ defined}{}% %\changes{1.17}{2017-08-09}{new} % \begin{macrocode} \newcommand*{\glsxtrshortlongdescname}{% - \protect\glsabbrvfont{\the\glsshorttok} - \glsxtrparen{\protect\glslongfont{\the\glslongtok}}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}% } % \end{macrocode} %\end{macro} @@ -18299,27 +31194,28 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, - first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% % \end{macrocode} %\changes{1.07}{2016-08-15}{added text key} % \begin{macrocode} - text={\protect\glsabbrvfont{\the\glsshorttok}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% % \end{macrocode} %\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont} in plural %key} % \begin{macrocode} - plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \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}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -18364,11 +31260,38 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrpostabbrvfootnote} +%\changes{1.49}{??}{new} +%Used by post-footnote style to include formatting. +% \begin{macrocode} +\newrobustcmd*{\glsxtrpostabbrvfootnote}[2]{% + \glsxtrabbrvfootnote{#1}% + {#2\glsxtrpostfootnotelongformat{#1}{\glsfirstlongfootnotefont}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xpglsxtrpostabbrvfootnote} +%\changes{1.49}{??}{new} +%Perform all the appropriate expansions to ensure \cs{glslabel} and +%\cs{glsxtrassignlinktextfmt} are expanded +% as they may be lost by the time the footnote occurs. +% \begin{macrocode} +\newcommand*{\xpglsxtrpostabbrvfootnote}{% + \expandafter\expandafter\expandafter + \glsxtrpostabbrvfootnote + \expandafter\expandafter\expandafter + {\expandafter\glslabel\expandafter}\expandafter + {\glsxtrassignlinktextfmt}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrfootnotename} %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrfootnotename}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} @@ -18381,7 +31304,10 @@ defined}{}% % \end{macrocode} % Set accessibility attributes if enabled. (Add % \catattr{firstshortaccess} since long form is hidden in a -% footnote on first use.) +% footnote on first use.) The inner formatting isn't be applied to +% the footnote text because the innertextformat key value may have +% gone out of scope by that the time the footnote text is processed. +% (Neither is the outer formatting applied.) % \begin{macrocode} \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel % \end{macrocode} @@ -18395,18 +31321,18 @@ defined}{}% %\changes{1.07}{2016-08-15}{changed first forms to use %\cs{glsfirstlongfootnotefont}} % \begin{macrocode} - first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} - text={\protect\glsabbrvfont{\the\glsshorttok}},% - plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -18436,52 +31362,62 @@ defined}{}% % as a footnote. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% % \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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -18497,9 +31433,9 @@ defined}{}% %\changes{1.42}{2020-02-03}{new} % \begin{macrocode} \newcommand*{\glsxtrfootnotedescname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% + \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}% } % \end{macrocode} %\end{macro} @@ -18527,14 +31463,14 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvfont{\the\glsshorttok}},% - plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -18585,14 +31521,14 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} - text={\protect\glsabbrvfont{\the\glsshorttok}},% - plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Make this category insert a footnote after the link if this was % the first use, and @@ -18601,16 +31537,25 @@ defined}{}% % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse +% \end{macrocode} +%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}} +% The footnote needs to be suppressed in the inline form. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} +% \begin{macrocode} + \glsxtrifwasglslikeandfirstuse {% % \end{macrocode} -% Needs the specific font command here as the style may have been -% lost by the time the footnote occurs. +% Ensure \cs{glslabel} and \cs{glsxtrassignlinktextfmt} are expanded +% as they may be lost by the time the footnote occurs. % \begin{macrocode} - \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% - {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% - }% - {}% + \glsxtrdopostpunc{\expandafter\expandafter\expandafter + \glsxtrpostabbrvfootnote + \expandafter\expandafter\expandafter + {\expandafter\glslabel\expandafter}\expandafter + {\glsxtrassignlinktextfmt}}% + }{}% }% \glshasattribute{\the\glslabeltok}{regular}% {% @@ -18618,14 +31563,6 @@ defined}{}% }% {}% }% -% \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} @@ -18642,20 +31579,22 @@ defined}{}% % deferred. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% % \end{macrocode} % The first use full form and the inline full form use the short @@ -18664,24 +31603,28 @@ defined}{}% %\cs{glsfirstlongfootnotefont}} % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -18710,30 +31653,37 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} - text={\protect\glsabbrvfont{\the\glsshorttok}},% - plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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} +%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}} +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% % \end{macrocode} -% Needs the specific font command here as the style may have been -% lost by the time the footnote occurs. +% Ensure \cs{glslabel} and \cs{glsxtrassignlinktextfmt} are expanded +% as they may be lost by the time the footnote occurs. % \begin{macrocode} - \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% - {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + \glsxtrdopostpunc{\expandafter\expandafter\expandafter + \glsxtrpostabbrvfootnote + \expandafter\expandafter\expandafter + {\expandafter\glslabel\expandafter}\expandafter + {\glsxtrassignlinktextfmt}}% }% {}% }% @@ -18743,14 +31693,6 @@ defined}{}% }% {}% }% -% \end{macrocode} -%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}} -% The footnote needs to be suppressed in the inline form, so -% \cs{glsxtrfull} must set the first use switch off. -% \begin{macrocode} - \renewcommand*{\glsxtrsetupfulldefs}{% - \let\glsxtrifwasfirstuse\@secondoftwo - }% }% {% \GlsXtrUseAbbrStyleFmts{postfootnote}% @@ -18769,7 +31711,7 @@ defined}{}% %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrshortnolongname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} @@ -18794,10 +31736,10 @@ defined}{}% \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}}, + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -18818,48 +31760,50 @@ defined}{}% %\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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstabbrvfont{\glsaccessshort{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -18907,9 +31851,9 @@ defined}{}% %manual} % \begin{macrocode} \newcommand*{\glsxtrshortdescname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% + \protect\glsxtrparen{\glsxplongfont{\the\glslongtok}{\glscategorylabel}}% } % \end{macrocode} %\end{macro} @@ -18935,10 +31879,10 @@ defined}{}% \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}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% @@ -18957,44 +31901,50 @@ defined}{}% % 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -19046,28 +31996,28 @@ defined}{}% % 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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstlongfont{\glsaccesslong{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% } % \end{macrocode} @@ -19101,7 +32051,7 @@ defined}{}% %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrlongnoshortdescname}{% - \protect\glslongfont{\the\glslongtok}% + \glsxplongfont{\the\glslongtok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} @@ -19118,10 +32068,10 @@ defined}{}% \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}}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -19141,64 +32091,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongfont}{\glsfirstabbrvfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongfont}% }% } % \end{macrocode} @@ -19239,7 +32197,7 @@ defined}{}% %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} \newcommand*{\glsxtrlongnoshortname}{% - \protect\glsabbrvfont{\the\glsshorttok}% + \glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% } % \end{macrocode} %\end{macro} @@ -19263,10 +32221,10 @@ defined}{}% \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}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -19344,13 +32302,34 @@ defined}{}% %\begin{macro}{\glsxtrscsuffix} %\changes{0.5}{2015-12-07}{new} %\changes{1.42}{2020-02-03}{added \cs{protect}} -%\cs{protect} needs to come inside \cs{\glsxtrscsuffix} to avoid +%\cs{protect} needs to come inside \cs{glsxtrscsuffix} to avoid %interfering with all caps. % \begin{macrocode} \newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}} % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrscrevert} +%\changes{1.49}{??}{new} +%Cancel smallcaps. +% \begin{macrocode} +\newcommand*{\glsxtrscrevert}[1]{\glstextup{#1}}% +% \end{macrocode} +%\end{macro} +% +%v1.49: the following now use commands like +%\cs{glsfirstinnerfmtabbrvfont} instead of +%\cs{glsfirstabbrvscfont} etc. This makes it easier to apply the inner +%formatting. The scoping added in v1.48 with \cs{glslinkwrcontent} +%should prevent formatting leakage in the event of nested commands. +%The only problem will be if commands like \cs{glsentryfirst} are +%used, but those aren't designed for consistent formatting. It will +%also make it easier to locally redefine \cs{glsfirstinnerfmtabbrvfont} +%to strip the formatting if those commands are used (rather than +%having to define all the possible abbreviation style formatting +%commands). Since these new commands are robust they don't need +%protecting. +% %\begin{abbrvstyle}{long-short-sc} %\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} @@ -19366,16 +32345,17 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -19391,6 +32371,7 @@ defined}{}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##1}}% % \end{macrocode} % Use the default long fonts. % \begin{macrocode} @@ -19401,25 +32382,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -19439,20 +32423,21 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \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}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -19486,18 +32471,19 @@ defined}{}% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -19515,31 +32501,34 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -19560,19 +32549,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -19603,10 +32593,10 @@ defined}{}% \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}}, + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -19621,56 +32611,59 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% % \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}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -19699,10 +32692,10 @@ defined}{}% \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}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% @@ -19716,49 +32709,56 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -19784,28 +32784,28 @@ defined}{}% % 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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -19822,10 +32822,10 @@ defined}{}% \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}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -19841,69 +32841,78 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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 + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -19919,7 +32928,7 @@ defined}{}% %\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}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-noshort-sc-desc}% {% @@ -19935,69 +32944,78 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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 + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvscfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -20027,14 +33045,14 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -20059,57 +33077,68 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% % \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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -20137,14 +33166,14 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -20183,25 +33212,24 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +% The footnote needs to be suppressed in the inline form. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% -% \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}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -20211,13 +33239,6 @@ defined}{}% }% {}% }% -% \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} @@ -20229,49 +33250,56 @@ defined}{}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscrevert{##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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvscfont}% }% % \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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvscfont}% }% } % \end{macrocode} @@ -20299,25 +33327,24 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% - text={\protect\glsabbrvscfont{\the\glsshorttok}},% - plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +% The footnote needs to be suppressed in the inline form. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% -% \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}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -20327,13 +33354,6 @@ defined}{}% }% {}% }% -% \end{macrocode} -% The footnote needs to be suppressed in the inline form, so -% \cs{glsxtrfull} must set the first use switch off. -% \begin{macrocode} - \renewcommand*{\glsxtrsetupfulldefs}{% - \let\glsxtrifwasfirstuse\@secondoftwo - }% }% {% \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}% @@ -20379,6 +33399,12 @@ defined}{}% \newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix} % \end{macrocode} %\end{macro} +%\begin{macro}{\glsxtrsmrevert} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsmrevert}[1]{\textlarger{#1}} +% \end{macrocode} +%\end{macro} % %\begin{abbrvstyle}{long-short-sm} %\changes{0.5}{2015-12-07}{new} @@ -20396,16 +33422,17 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -20420,6 +33447,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% % \end{macrocode} % Use the default long fonts. % \begin{macrocode} @@ -20430,25 +33458,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -20469,19 +33500,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -20516,18 +33548,19 @@ defined}{}% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -20542,6 +33575,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -20549,26 +33583,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -20590,19 +33626,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -20634,10 +33671,10 @@ defined}{}% \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}}, + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -20649,6 +33686,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -20656,51 +33694,53 @@ defined}{}% % 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% % \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}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -20730,10 +33770,10 @@ defined}{}% \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}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% @@ -20744,6 +33784,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -20751,44 +33792,50 @@ defined}{}% % 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -20814,28 +33861,28 @@ defined}{}% % 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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -20846,7 +33893,7 @@ defined}{}% %\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}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-noshort-sm}% {% @@ -20860,10 +33907,10 @@ defined}{}% \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}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -20876,6 +33923,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -20883,64 +33931,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -20957,7 +34013,7 @@ defined}{}% %\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}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-noshort-sm-desc}% {% @@ -20970,6 +34026,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -20977,64 +34034,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvsmfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -21064,14 +34129,14 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -21093,6 +34158,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% % \end{macrocode} @@ -21100,52 +34166,62 @@ defined}{}% % as a footnote. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% % \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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -21173,14 +34249,14 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -21219,25 +34295,24 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +% The footnote needs to be suppressed in the inline form. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% -% \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}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -21247,13 +34322,6 @@ defined}{}% }% {}% }% -% \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} @@ -21262,6 +34330,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsmrevert{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% % \end{macrocode} @@ -21269,44 +34338,50 @@ defined}{}% % deferred. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvsmfont}% }% % \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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvsmfont}% }% } % \end{macrocode} @@ -21334,25 +34409,28 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% - text={\protect\glsabbrvsmfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +% The footnote needs to be suppressed in the inline form. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% % \end{macrocode} -% Needs the specific font command here as the style may have been +% Ensure \cs{glslabel} is expanded as it may be % lost by the time the footnote occurs. % \begin{macrocode} - \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% - {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -21362,13 +34440,6 @@ defined}{}% }% {}% }% -% \end{macrocode} -% The footnote needs to be suppressed in the inline form, so -% \cs{glsxtrfull} must set the first use switch off. -% \begin{macrocode} - \renewcommand*{\glsxtrsetupfulldefs}{% - \let\glsxtrifwasfirstuse\@secondoftwo - }% }% {% \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}% @@ -21377,7 +34448,7 @@ defined}{}% %\end{abbrvstyle} % %\subsection{Predefined Styles (Emphasized)} -% These styles use \ics{emph} for the short form. +% These styles use \cs{emph} for the short form. %\begin{macro}{\glsabbrvemfont} %\changes{1.04}{2016-05-02}{new} % \begin{macrocode} @@ -21413,6 +34484,13 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtremrevert} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtremrevert}[1]{\textup{#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. @@ -21430,16 +34508,17 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21454,6 +34533,7 @@ defined}{}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% % \end{macrocode} % Use the default long fonts. % \begin{macrocode} @@ -21464,25 +34544,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -21503,19 +34586,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% - first={\protect\glsfirstlongdefaultfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21550,22 +34634,24 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongemfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% description={\protect\glslongemfont{\the\glslongtok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21578,6 +34664,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -21587,25 +34674,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -21626,19 +34716,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% - first={\protect\glsfirstlongemfont{\the\glslongtok}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},% - firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21670,18 +34761,19 @@ defined}{}% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21696,6 +34788,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -21705,26 +34798,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -21746,19 +34841,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21791,21 +34887,23 @@ defined}{}% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, description={\protect\glslongemfont{\the\glslongtok}},% - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21818,6 +34916,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -21827,26 +34926,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -21867,19 +34968,20 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname},% sort={\glsxtrshortlongdescsort},% - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}% + \protect\glsxtrparen{\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -21908,10 +35010,10 @@ defined}{}% \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}}, + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -21921,6 +35023,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -21930,51 +35033,50 @@ defined}{}% % 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% -% \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}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -22007,10 +35109,10 @@ defined}{}% \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}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}, + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}}, + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% @@ -22019,6 +35121,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -22028,44 +35131,50 @@ defined}{}% % 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -22091,28 +35200,28 @@ defined}{}% % 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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}% - \ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -22122,7 +35231,7 @@ defined}{}% %\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}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-noshort-em}% {% @@ -22136,10 +35245,10 @@ defined}{}% \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}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},% description={\the\glslongtok}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -22150,6 +35259,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -22159,64 +35269,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -22231,7 +35349,7 @@ defined}{}% %\begin{abbrvstyle}{long-em-noshort-em} %\changes{1.04}{2016-05-02}{new} % The short form is explicitly invoked through commands like -% \cs{glsshort}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-em-noshort-em}% {% @@ -22245,13 +35363,14 @@ defined}{}% \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}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}},% description={\protect\glslongemfont{\the\glslongtok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% @@ -22259,6 +35378,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -22268,64 +35388,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongemfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongemfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongemfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% }% } % \end{macrocode} @@ -22367,7 +35495,7 @@ defined}{}% %\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}. +% \cs{glsxtrshort}. % \begin{macrocode} \newabbreviationstyle{long-noshort-em-desc}% {% @@ -22378,6 +35506,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -22387,64 +35516,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongdefaultfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongdefaultfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongdefaultfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongdefaultfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongdefaultfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongdefaultfont}% }% } % \end{macrocode} @@ -22467,10 +35604,10 @@ defined}{}% \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}}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}}, + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}}, + text={\glsxplongfont{\the\glslongtok}{\glscategorylabel}}, + plural={\glsxplongfont{\the\glslongpltok}{\glscategorylabel}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{regular}{true}}% @@ -22480,6 +35617,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -22489,64 +35627,72 @@ defined}{}% % is set). % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \glsxtrlongplformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongformat{##1}{##2}{\glslongemfont}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}% - \ifglsxtrinsertinside \else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glslongemfont}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlongformat{##1}{##2}{\glslongemfont}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glslongemfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongemfont}{\glsfirstabbrvemfont}% }% % \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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongemfont}% }% } % \end{macrocode} @@ -22594,14 +35740,14 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -22621,6 +35767,7 @@ defined}{}% %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -22630,52 +35777,61 @@ defined}{}% % as a footnote. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% \protect\glsxtrabbrvfootnote{##1}% - {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongformat{##1}{\glsfirstlongfootnotefont}}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% + \protect\glsxtrabbrvfootnote{##1}% + {\glsxtrfootnotelongplformat{##1}{\glsfirstlongfootnotefont}}% }% % \end{macrocode} -% The first use full form and the inline full form use the short -% (long) style. +% The first use inline full form uses 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -22703,14 +35859,14 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, % and unset the \catattr{regular} attribute if it has been set. @@ -22749,25 +35905,27 @@ defined}{}% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% % \end{macrocode} -% Needs the specific font command here as the style may have been +% Ensure \cs{glslabel} is expanded as it may be % lost by the time the footnote occurs. % \begin{macrocode} - \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% - {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -22777,19 +35935,13 @@ defined}{}% }% {}% }% -% \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} %\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsxtrrevert[1]{\glsxtremrevert{##1}}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -22799,44 +35951,49 @@ defined}{}% % deferred. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvemfont}% }% % \end{macrocode} -% The first use full form and the inline full form use the short -% (long) style. +% The inline full form uses 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}}}% + \glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}% + \Glsxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}% + \Glsxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortlongformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortlongplformat{##1}{##2}% + {\glsfirstlongfootnotefont}{\glsfirstabbrvemfont}% }% } % \end{macrocode} @@ -22864,25 +36021,23 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotedescname}, sort={\glsxtrfootnotedescsort}, - first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% - firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% - text={\protect\glsabbrvemfont{\the\glsshorttok}},% - plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + first={\glsfirstxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + firstplural={\glsfirstxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}}% % \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. +%Previously this was done by redefining {glsxtrsetupfulldefs} but +%that interferes with other styles. Instead, this now uses \cs{glsxtrifwasglslike} +%\changes{1.49}{??}{removed redef of \cs{glsxtrsetupfulldefs}} % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% - \glsxtrifwasfirstuse + \glsxtrifwasglslikeandfirstuse {% -% \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}}}}% + \glsxtrdopostpunc{\xpglsxtrpostabbrvfootnote}% }% {}% }% @@ -22892,13 +36047,6 @@ defined}{}% }% {}% }% -% \end{macrocode} -% The footnote needs to be suppressed in the inline form, so -% \cs{glsxtrfull} must set the first use switch off. -% \begin{macrocode} - \renewcommand*{\glsxtrsetupfulldefs}{% - \let\glsxtrifwasfirstuse\@secondoftwo - }% }% {% \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}% @@ -22918,12 +36066,28 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtruserparensep} +%\changes{1.49}{??}{new} +% Separator used inside parenthetical content. +% \begin{macrocode} +\newcommand*{\glsxtruserparensep}{, } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtruserfieldfmt} +%\changes{1.49}{??}{new} +% Used to format the value of the field given by \cs{glsxtruserfield}. +% \begin{macrocode} +\newcommand*{\glsxtruserfieldfmt}[1]{#1} +% \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 +% defined, then we have at least \sty{glossaries} v4.23, which makes % it easier for the user to adjust this. % \begin{macrocode} \ifdef\glscurrentfieldvalue @@ -22931,14 +36095,55 @@ defined}{}% \newcommand*{\glsxtruserparen}[2]{% \glsxtrfullsep{#2}% \glsxtrparen - {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}% + {#1\ifglshasfield{\glsxtruserfield}{#2}% + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}% + \glsxtruserfieldfmt{\expandafter\glsxtrgenentrytextfmt\expandafter{\glscurrentfieldvalue}}% + }{}% + }% } } { \newcommand*{\glsxtruserparen}[2]{% \glsxtrfullsep{#2}% \glsxtrparen - {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}% + {#1\ifglshasfield{\glsxtruserfield}{#2}% + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}% + \glsxtruserfieldfmt{\expandafter\glsxtrgenentrytextfmt\expandafter{\@glo@thisvalue}}% + }{}% + }% + } +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtruserparen} +%\changes{1.49}{??}{new} +% As above but converts the user supplied information to all-caps. +% The first argument should be provided in all-caps if required. +% \begin{macrocode} +\ifdef\glscurrentfieldvalue +{ + \newcommand*{\GLSxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}% + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}% + \glsxtruserfieldfmt{\expandafter\mfirstucMakeUppercase\expandafter{\expandafter + \glsxtrgenentrytextfmt\expandafter{\glscurrentfieldvalue}}}% + }{}% + }% + } +} +{ + \newcommand*{\GLSxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}% + {\expandafter\glsxtrgenentrytextfmt\expandafter{\glsxtruserparensep}% + \glsxtruserfieldfmt{\expandafter\mfirstucMakeUppercase\expandafter{\expandafter + \glsxtrgenentrytextfmt\expandafter{\@glo@thisvalue}}}% + }{}% + }% } } % \end{macrocode} @@ -23024,6 +36229,8 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{2}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23046,24 +36253,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + \glsxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + \glsxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}% + \Glsxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + \Glsxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% } % \end{macrocode} @@ -23097,12 +36308,11 @@ defined}{}% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% - {\glslabel}% + \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvuserfont}% }% {}% }% @@ -23127,43 +36337,22 @@ defined}{}% %First use full form: % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% }% \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}% + \Glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% }% - \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% }% - \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*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% }% } % \end{macrocode} @@ -23189,8 +36378,14 @@ defined}{}% \newcommand*{\glsxtrscusersuffix}{\glsxtrscsuffix} % \end{macrocode} %\end{macro} +%\begin{macro}{\glsxtrscuserrevert} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrscuserrevert}{\glsxtrscrevert} +% \end{macrocode} +%\end{macro} % -%\begin{macro}{\glsxtrscusername} +%\begin{macro}{\glsxtrlongshortscusername} %\changes{1.48}{2021-11-22}{new} % The default name format for this style. % \begin{macrocode} @@ -23201,8 +36396,8 @@ defined}{}% %\end{macro} % %\begin{abbrvstyle}{long-postshort-sc-user} -%\changes{1.48}{2017-02-03}{new} -%Like \abbrstyle{long-short-sc-user} but uses smallcaps. +%\changes{1.48}{2021-11-22}{new} +%Like \abbrstyle{long-postshort-sc-user} but uses smallcaps. % \begin{macrocode} \newabbreviationstyle{long-postshort-sc-user}% {% @@ -23223,12 +36418,11 @@ defined}{}% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% - {\glslabel}% + \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvscuserfont}% }% {}% }% @@ -23249,47 +36443,54 @@ defined}{}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvscuserfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrscuserrevert{##1}}% % \end{macrocode} %First use full form: % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlonguserfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlonguserfont}% }% % \end{macrocode} % In-line format: % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}[2]{% - \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% + \glsxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% + \glsxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% + \Glsxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% + \Glsxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtruserlongshortformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtruserlongshortplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvscuserfont}% }% } % \end{macrocode} @@ -23335,9 +36536,7 @@ defined}{}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% - {\glslabel}% + \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvuserfont}% }% {}% }% @@ -23391,9 +36590,7 @@ defined}{}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% - {\glslabel}% + \glsxtrpostusershortformat{\glslabel}{\glsfirstabbrvscuserfont}% }% {}% }% @@ -23439,12 +36636,11 @@ defined}{}% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% - {\glslabel}% + \glsxtrpostuserlongformat{\glslabel}{\glsfirstlonguserfont}% }% {}% }% @@ -23469,44 +36665,26 @@ defined}{}% %First use full form: % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}% }% -% \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*{\GLSxtrfullformat}[2]{% + \GLSxtrshortformat{##1}{##2}{\glsfirstabbrvuserfont}% }% - \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshortplformat{##1}{##2}{\glsfirstabbrvuserfont}% }% +% \end{macrocode} +% In-line format should be the same. +% \begin{macrocode} } % \end{macrocode} %\end{abbrvstyle} @@ -23552,9 +36730,7 @@ defined}{}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtruserparen - {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% - {\glslabel}% + \glsxtrpostuserlongformat{\glslabel}{\glsfirstlonguserfont}% }% {}% }% @@ -23602,6 +36778,7 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{2}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23652,6 +36829,8 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{2}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23674,24 +36853,28 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + \glsxtrusershortlongformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + \glsxtrusershortlongplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}% + \Glsxtrusershortlongformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}% + \Glsxtrusershortlongplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrusershortlongformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrusershortlongplformat{##1}{##2}% + {\glsfirstlonguserfont}{\glsfirstabbrvuserfont}% }% } % \end{macrocode} @@ -23728,6 +36911,7 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{2}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23781,6 +36965,11 @@ defined}{}% %\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. +%This unfortunately doesn't fit in with the new \cs{glsxtrshortformat} +%etc commands, but is retained for backward-compatibility. +%This means that the inserted part has to have a separate encapsulation for the +%inner format. The \meta{long} and \meta{short} arguments will need to include +%the inner format. % \begin{macrocode} \newcommand*{\glsxtrlonghyphenshort}[4]{% % \end{macrocode} @@ -23788,18 +36977,89 @@ defined}{}% % \begin{macrocode} {% % \end{macrocode} -% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep} +% 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.) 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 + \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside + {\glsxtrgenentrytextfmt{#4}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi \glsxtrfullsep{#1}% - \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% - \ifglsxtrinsertinside\else{#4}\fi}% + \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside + {\glsxtrgenentrytextfmt{#4}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlonghyphenshort} +%\changes{1.49}{??}{new} +%As above but convert the insert to uppercase. The long and short +%should already have the case-change applied. +% \begin{macrocode} +\newcommand*{\GLSxtrlonghyphenshort}[4]{% + {% + \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}% + \fi}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshorthyphennolong} +%\changes{1.49}{??}{new} +%\begin{definition} +%\cs{glsxtrshorthyphennolong}\marg{label}\marg{short}\marg{insert} +%\end{definition} +%The \meta{short} argument may be the plural form and may also be the first letter uppercase form. +% +%As \cs{glsxtrlonghyphenshort} but where only the short form should +%be shown. +% \begin{macrocode} +\newcommand*{\glsxtrshorthyphennolong}[3]{% +% \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. +% \begin{macrocode} + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside + {\glsxtrgenentrytextfmt{#3}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#3}}\fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrshorthyphennolong} +%\changes{1.49}{??}{new} +%As above but all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrshorthyphennolong}[3]{% + {% + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}% + \fi }% } % \end{macrocode} @@ -23836,6 +37096,12 @@ defined}{}% \newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix} % \end{macrocode} %\end{macro} +%\begin{macro}{\glsxtrlonghyphenshortsort} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphenshortsort}{\expandonce\glsxtrorgshort} +% \end{macrocode} +%\end{macro} % %\begin{abbrvstyle}{long-hyphen-short-hyphen} %\changes{1.17}{2017-08-09}{new} @@ -23853,13 +37119,13 @@ defined}{}% % \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, - sort={\the\glsshorttok}, + sort={\glsxtrlonghyphenshortsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% + \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% @@ -23867,6 +37133,8 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23885,18 +37153,218 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}% - {\glsaccessshortpl{##1}}{##2}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslong{##1}% + }% + {% + \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}% - {\glsaccessshortpl{##1}}{##2}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslongpl{##1}% + }% + {% + \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% +% \end{macrocode} +%Subsequent form also needs checking for a hyphen in case the short +%form has spaces. +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% } % \end{macrocode} @@ -23921,10 +37389,10 @@ defined}{}% sort={\glsxtrlongshortdescsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% + \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + \protect\glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% @@ -23932,6 +37400,7 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -23950,6 +37419,10 @@ defined}{}% %\begin{definition} %\cs{glsxtrlonghyphennoshort}\marg{label}\marg{long}\marg{insert} %\end{definition} +%As with \cs{glsxtrlonghyphenshort} this doesn't fit in with the +%new \cs{glsxtrshortformat} so the inserted part has to have a separate encapsulation for the +%inner format. The \meta{long} argument will need to include +%the inner format. % \begin{macrocode} \newcommand*{\glsxtrlonghyphennoshort}[3]{% % \end{macrocode} @@ -23957,20 +37430,45 @@ defined}{}% % \begin{macrocode} {% % \end{macrocode} -% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep} +% 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.) 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 + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside + {\glsxtrgenentrytextfmt{#3}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#3}}\fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrlonghyphennoshort} +%\changes{1.49}{??}{new} +%As above but convert insert to all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrlonghyphennoshort}[3]{% + {% + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#3}}}% + \fi }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrlonghyphennoshortdescsort} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphennoshortdescsort}{\expandonce\glsxtrorglong} +% \end{macrocode} +%\end{macro} +% %\begin{abbrvstyle}{long-hyphen-noshort-desc-noreg} %\changes{1.17}{2017-08-09}{new} %\changes{1.42}{2020-02-03}{added missing text key} @@ -23985,7 +37483,7 @@ defined}{}% {% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortdescname}, - sort={\expandonce\glsxtrorglong}, + sort={\glsxtrlonghyphennoshortdescsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glslonghyphenfont{\the\glslongtok}},% @@ -24003,7 +37501,6 @@ defined}{}% }% }% {% - \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% % \end{macrocode} % In case the user wants to mix and match font styles, these are % redefined here. @@ -24014,64 +37511,315 @@ defined}{}% \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. +% short form in parentheses (as long-hyphen-short-hyphen). % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslong{##1}% + }% + {% + \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}% + \glsxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslongpl{##1}% + }% + {% + \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlonghyphenshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% % \end{macrocode} % The first use full form only displays the long form. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslong{##1}% + }% + {% + \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslongpl{##1}% + }% + {% + \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% +% \end{macrocode} +% The format for subsequent use (not used when the regular attribute +% is set). +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslong{##1}% + }% + {% + \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslongpl{##1}% + }% + {% + \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrlonghyphennoshort{##1}% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% } % \end{macrocode} %\end{abbrvstyle} % +%\begin{macro}{\glsxtrlonghyphennoshortsort} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrlonghyphennoshortsort}{\expandonce\glsxtrorgshort} +% \end{macrocode} +%\end{macro} +% %\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 @@ -24091,7 +37839,7 @@ defined}{}% % \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, - sort={\the\glsshorttok}, + sort={\glsxtrlonghyphennoshortsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glslonghyphenfont{\the\glslongtok}},% @@ -24126,13 +37874,16 @@ defined}{}% %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. +% +%The \meta{long} argument will need to include +%the inner format. % \begin{macrocode} \newcommand*{\glsxtrlonghyphen}[3]{% % \end{macrocode} % Grouping is needed to localise the redefinitions. % \begin{macrocode} {% - \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% \glsfirstlonghyphenfont{#1}% }% } @@ -24151,29 +37902,176 @@ defined}{}% % \begin{macrocode} \newcommand*{\glsxtrposthyphenshort}[2]{% {% - \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% - \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstlonghyphenfont{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi \glsxtrfullsep{#1}% \glsxtrparen - {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}% - \ifglsxtrinsertinside\else{#2}\fi + {% + \glsxtrshortformat{#1}{#2}{\glsfirstabbrvhyphenfont}% }% }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrposthyphenshort} +%\changes{1.49}{??}{new} +%As above but all caps. +% \begin{macrocode} +\newcommand*{\GLSxtrposthyphenshort}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstlonghyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {% + \GLSxtrshortformat{#1}{#2}{\glsfirstabbrvhyphenfont}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrposthyphenshortpl} +%\changes{1.49}{??}{new} +%As above but plural. +% \begin{macrocode} +\newcommand*{\glsxtrposthyphenshortpl}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstlonghyphenfont{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {% + \glsxtrshortplformat{#1}{#2}{\glsfirstabbrvhyphenfont}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrposthyphenshortpl} +%\changes{1.49}{??}{new} +%As above but all caps. +% \begin{macrocode} +\newcommand*{\GLSxtrposthyphenshortpl}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstlonghyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {% + \GLSxtrshortplformat{#1}{#2}{\glsfirstabbrvhyphenfont}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xpglsxtrposthyphenshort} +%\changes{1.49}{??}{new} +%Expand placeholders and check for all caps. +% \begin{macrocode} +\newcommand*{\xpglsxtrposthyphenshort}{% + \glsxtrifallcaps + {% + \expandafter\GLSxtrposthyphenshort\expandafter\glslabel + \expandafter{\glsinsert}% + }% + {% + \expandafter\glsxtrposthyphenshort\expandafter\glslabel + \expandafter{\glsinsert}% + }% +} +% \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. +%ignored by default. This just does the insert part with appropriate formatting. % \begin{macrocode} \newcommand*{\glsxtrposthyphensubsequent}[2]{% - \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}% - \ifglsxtrinsertinside \else{#2}\fi + \ifglsxtrinsertinside + \glsabbrvfont{{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrposthyphensubsequent} +%\changes{1.49}{??}{new} +%As above but all caps. +% \begin{macrocode} +\newcommand*{\GLSxtrposthyphensubsequent}[2]{% + \ifglsxtrinsertinside + \glsabbrvfont{{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xpglsxtrposthyphensubsequent} +%\changes{1.49}{??}{new} +%Expand placeholders and check for all caps. +% \begin{macrocode} +\newcommand*{\xpglsxtrposthyphensubsequent}{% + \glsxtrifallcaps + {% + \expandafter\GLSxtrposthyphensubsequent\expandafter\glslabel + \expandafter{\glsinsert}% + }% + {% + \expandafter\glsxtrposthyphensubsequent\expandafter\glslabel + \expandafter{\glsinsert}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshorthyphennoinsert} +%\changes{1.17}{2017-08-09}{new} +%\begin{definition} +%\cs{glsxtrshorthyphennoinsert}\marg{label}\marg{short}\marg{insert} +%\end{definition} +%As with \cs{glsxtrshorthyphennolong} but doesn't actually show the +%insert. +% \begin{macrocode} +\newcommand*{\glsxtrshorthyphennoinsert}[3]{% +% \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. +% \begin{macrocode} + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstabbrvhyphenfont{#2}% + }% } % \end{macrocode} %\end{macro} @@ -24195,23 +38093,24 @@ defined}{}% % \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, - sort={\the\glsshorttok}, + sort={\glsxtrlonghyphenshortsort}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtrposthyphenshort{\glslabel}{\glsinsert}% + \xpglsxtrposthyphenshort }% {% % \end{macrocode} % Put the insertion into the post-link: % \begin{macrocode} - \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + \xpglsxtrposthyphensubsequent }% }% \glshasattribute{\the\glslabeltok}{regular}% @@ -24232,57 +38131,188 @@ defined}{}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% % \end{macrocode} -% Subsequent use needs to omit the insertion: +% Subsequent use needs to omit the insertion but it needs to perform +% the space-hyphen substitution: % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\glsaccessshort{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\glsaccessshortpl{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\Glsaccessshort{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\Glsaccessshortpl{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% % \end{macrocode} % First use full form: % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslong{##1}% + }% + {% + \Glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \Glsaccesslongpl{##1}% + }% + {% + \Glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \glsxtrlonghyphen + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% % \end{macrocode} % In-line format. % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}[2]{% - \glsfirstlonghyphenfont{\glsaccesslong{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \glsxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlonghyphenfont{\glsaccesslongpl{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \glsxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlonghyphenfont{\Glsaccesslong{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \Glsxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \Glsxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongplformatgrp{##1}{##2}{\glsfirstlonghyphenfont}% }% } % \end{macrocode} @@ -24314,13 +38344,13 @@ defined}{}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtrposthyphenshort{\glslabel}{\glsinsert}% + \xpglsxtrposthyphenshort }% {% % \end{macrocode} % Put the insertion into the post-link: % \begin{macrocode} - \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + \xpglsxtrposthyphensubsequent }% }% \glshasattribute{\the\glslabeltok}{regular}% @@ -24343,6 +38373,11 @@ defined}{}% %\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. +% +%As with \cs{glsxtrlonghyphenshort} this doesn't fit in with the +%new \cs{glsxtrshortformat} so the inserted part has to have a separate encapsulation for the +%inner format. The \meta{long} argument will need to include +%the inner format. % \begin{macrocode} \newcommand*{\glsxtrshorthyphenlong}[4]{% % \end{macrocode} @@ -24355,17 +38390,50 @@ defined}{}% % 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 + \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside + {\glsxtrgenentrytextfmt{#4}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi \glsxtrfullsep{#1}% - \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}% - \ifglsxtrinsertinside\else{#4}\fi}% + \glsxtrparen{\glsfirstlonghyphenfont{#3% + \ifglsxtrinsertinside{\glsxtrgenentrytextfmt{#4}}\fi}% + \ifglsxtrinsertinside\else{\glsxtrgenentrytextfmt{#4}}\fi}% }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrshorthyphenlong} +%\changes{1.49}{??}{new} +%As above but convert insert to all-caps. The long and short form +%arguments should be provided as all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrshorthyphenlong}[4]{% + {% + \glsxtrifhyphenstart{#4}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen{\glsfirstlonghyphenfont{#3% + \ifglsxtrinsertinside{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}\fi}% + \ifglsxtrinsertinside\else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#4}}}% + \fi}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrshorthyphenlongsort} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrshorthyphenlongsort}{\expandonce\glsxtrorgshort} +% \end{macrocode} +%\end{macro} +% %\begin{abbrvstyle}{short-hyphen-long-hyphen} %\changes{1.17}{2017-08-09}{new} %\changes{1.42}{2020-02-03}{added missing text key} @@ -24382,13 +38450,13 @@ defined}{}% % \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, - sort={\the\glsshorttok}, + sort={\glsxtrshorthyphenlongsort}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% + \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% @@ -24396,6 +38464,8 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -24414,18 +38484,218 @@ defined}{}% % this style. % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}% + \glsxtrshorthyphenlong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% \glsxtrshorthyphenlong{##1}% - {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{marklongwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}% + \glsxtrshorthyphenlong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslong{##1}% + }% + {% + \glsaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% \glsxtrshorthyphenlong{##1}% - {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \glsaccesslongpl{##1}% + }% + {% + \glsaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrshorthyphenlong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslong{##1}% + }% + {% + \GLSaccessfmtlong{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrshorthyphenlong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {% + \glsifattribute{##1}{markwords}{true}% + {% + \GLSaccesslongpl{##1}% + }% + {% + \GLSaccessfmtlongpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% +% \end{macrocode} +%Subsequent form also needs checking for a hyphen in case the short +%form has spaces. +% \begin{macrocode} + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \GLSxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \GLSxtrshorthyphennolong{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% } % \end{macrocode} @@ -24450,10 +38720,10 @@ defined}{}% sort={\glsxtrshortlongdescsort}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% + \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% - \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + \protect\glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}% }% @@ -24461,6 +38731,7 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsxtrsetcomplexstyle{\the\glslabeltok}{3}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -24480,7 +38751,7 @@ defined}{}% %\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 +%is checked 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]{% @@ -24488,7 +38759,7 @@ defined}{}% % Grouping is needed to localise the redefinitions. % \begin{macrocode} {% - \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsxtrifhyphenstart{#3}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% \glsfirstabbrvhyphenfont{#1}% }% } @@ -24507,18 +38778,98 @@ defined}{}% % \begin{macrocode} \newcommand*{\glsxtrposthyphenlong}[2]{% {% - \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}% - \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstabbrvhyphenfont{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi \glsxtrfullsep{#1}% \glsxtrparen - {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}% - \ifglsxtrinsertinside\else{#2}\fi - }% + {\glsxtrlongformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}% }% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrposthyphenlong} +%\changes{1.49}{??}{new} +%As above but all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrposthyphenlong}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstabbrvhyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {\GLSxtrlongformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%Plural versions in case they are required. +%\begin{macro}{\glsxtrposthyphenlongpl} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrposthyphenlongpl}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstabbrvhyphenfont{\glsxtrgenentrytextfmt{#2}}}% + \else + {\glsxtrgenentrytextfmt{#2}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {\glsxtrlongplformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GLSxtrposthyphenlongpl} +%\changes{1.49}{??}{new} +%As above but all-caps. +% \begin{macrocode} +\newcommand*{\GLSxtrposthyphenlongpl}[2]{% + {% + \glsxtrifhyphenstart{#2}{\let\glsxtrwordsep\glsxtrwordsephyphen}{}% + \ifglsxtrinsertinside + {\glsfirstabbrvhyphenfont{\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}}% + \else + {\mfirstucMakeUppercase{\glsxtrgenentrytextfmt{#2}}}% + \fi + \glsxtrfullsep{#1}% + \glsxtrparen + {\GLSxtrlongplformatgrp{#1}{#2}{\glsfirstlonghyphenfont}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xpglsxtrposthyphenlong} +%\changes{1.49}{??}{new} +%Expand placeholders and check for all caps. +% \begin{macrocode} +\newcommand*{\xpglsxtrposthyphenlong}{% + \glsxtrifallcaps + {% + \expandafter\GLSxtrposthyphenlong\expandafter\glslabel + \expandafter{\glsinsert}% + }% + {% + \expandafter\glsxtrposthyphenlong\expandafter\glslabel + \expandafter{\glsinsert}% + }% +} +% \end{macrocode} +%\end{macro} +% %\begin{abbrvstyle}{short-hyphen-postlong-hyphen} %\changes{1.17}{2017-08-09}{new} %\changes{1.42}{2020-02-03}{added missing text key} @@ -24536,23 +38887,24 @@ defined}{}% % \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, - sort={\the\glsshorttok}, + sort={\glsxtrshorthyphenlongsort}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtrposthyphenlong{\glslabel}{\glsinsert}% + \xpglsxtrposthyphenlong }% {% % \end{macrocode} % Put the insertion into the post-link: % \begin{macrocode} - \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + \xpglsxtrposthyphensubsequent }% }% \glshasattribute{\the\glslabeltok}{regular}% @@ -24573,59 +38925,189 @@ defined}{}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% % \end{macrocode} -% Subsequent use needs to omit the insertion: +% Subsequent use needs to omit the insertion but it needs to perform +% the space-hyphen substitution: % \begin{macrocode} \renewcommand*{\glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\glsaccessshort{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\glsaccessshortpl{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrsubsequentfmt}[2]{% - \glsabbrvfont{\Glsaccessshort{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% - \glsabbrvfont{\Glsaccessshortpl{##1}}% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentfmt}[2]{% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% + }% + \renewcommand*{\GLSxtrsubsequentplfmt}[2]{% + \glsxtrshorthyphennoinsert{##1}% + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##2}% }% % \end{macrocode} % First use full form: % \begin{macrocode} \renewcommand*{\glsxtrfullformat}[2]{% - \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshort{##1}% + }% + {% + \glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \glsaccessshortpl{##1}% + }% + {% + \glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshort{##1}% + }% + {% + \Glsaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \Glsaccessshortpl{##1}% + }% + {% + \Glsaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##1}% + }% + }{##1}{##2}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshort{##1}% + }% + {% + \GLSaccessfmtshort{}{\glsxtrgenentrytextfmt}{##1}% + }% + }% + {##1}{##2}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \glsxtrshorthyphen + {% + \glsifattribute{##1}{markshortwords}{true}% + {% + \GLSaccessshortpl{##1}% + }% + {% + \GLSaccessfmtshortpl{}{\glsxtrgenentrytextfmt}{##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}. +% commands) is stored in \cs{glscustomtext}. Note that unless the +% insert is saved, it won't appear in the post-link hook. % \begin{macrocode} \renewcommand*{\glsxtrinlinefullformat}[2]{% - \glsfirstabbrvhyphenfont{\glsaccessshort{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \glsxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \glsxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \Glsxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}% - \ifglsxtrinsertinside{##2}\fi}% - \ifglsxtrinsertinside \else{##2}\fi + \Glsxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrshortformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrshortplformatgrp{##1}{##2}{\glsfirstabbrvhyphenfont}% }% } % \end{macrocode} @@ -24657,13 +39139,13 @@ defined}{}% \csdef{glsxtrpostlink\glscategorylabel}{% \glsxtrifwasfirstuse {% - \glsxtrposthyphenlong{\glslabel}{\glsinsert}% + \xpglsxtrposthyphenlong }% {% % \end{macrocode} % Put the insertion into the post-link: % \begin{macrocode} - \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + \xpglsxtrposthyphensubsequent }% }% \glshasattribute{\the\glslabeltok}{regular}% @@ -24740,15 +39222,16 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlyname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% - firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% - text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% - plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -24769,47 +39252,49 @@ defined}{}% % 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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% }% % \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}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvonlyfont}% }% } % \end{macrocode} @@ -24846,10 +39331,10 @@ defined}{}% \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}}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -24889,6 +39374,14 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrsconlyrevert} +%\changes{1.49}{??}{new} +% \begin{macrocode} +\newcommand*{\glsxtrsconlyrevert}{\glsxtrscrevert} +% \end{macrocode} +%\end{macro} +% +% %\begin{macro}{\glsxtrsconlyname} %\changes{1.48}{2021-11-22}{new} % The default name format for this style. @@ -24914,8 +39407,8 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrsconlyname}, sort={\the\glsshorttok}, - first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% - firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},% text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% @@ -24923,6 +39416,7 @@ defined}{}% % Unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glsexclapplyinnerfmtfield{\the\glslabeltok}{desc}% \glshasattribute{\the\glslabeltok}{regular}% {% \glssetattribute{\the\glslabeltok}{regular}{false}% @@ -24936,51 +39430,54 @@ defined}{}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvsconlyfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% + \renewcommand*\glsxtrrevert[1]{\glsxtrsconlyrevert{##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 + \glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\glsxtrfullplformat}[2]{% - \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\Glsxtrfullformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% }% \renewcommand*{\Glsxtrfullplformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi + \Glsxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% + }% + \renewcommand*{\GLSxtrfullformat}[2]{% + \GLSxtrlongformat{##1}{##2}{\glsfirstlongonlyfont}% + }% + \renewcommand*{\GLSxtrfullplformat}[2]{% + \GLSxtrlongplformat{##1}{##2}{\glsfirstlongonlyfont}% }% % \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\glsfirstabbrvsconlyfont{\glsaccessshort{##1}}}% + \glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% }% \renewcommand*{\glsxtrinlinefullplformat}[2]{% - \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% + \glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% + \Glsxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% - \ifglsxtrinsertinside\else##2\fi - \glsxtrfullsep{##1}% - \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\Glsaccessshortpl{##1}}}% + \Glsxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% + }% + \renewcommand*{\GLSxtrinlinefullformat}[2]{% + \GLSxtrlongshortformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% + }% + \renewcommand*{\GLSxtrinlinefullplformat}[2]{% + \GLSxtrlongshortplformat{##1}{##2}% + {\glsfirstlongonlyfont}{\glsfirstabbrvsconlyfont}% }% } % \end{macrocode} @@ -25015,10 +39512,10 @@ defined}{}% \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrsconlydescname}, sort={\glsxtrsconlydescsort},% - first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% - firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% - text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% - plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}}% + first={\glsfirstxplongfont{\the\glslongtok}{\glscategorylabel}},% + firstplural={\glsfirstxplongfont{\the\glslongpltok}{\glscategorylabel}},% + text={\glsxpabbrvfont{\the\glsshorttok}{\glscategorylabel}},% + plural={\glsxpabbrvfont{\the\glsshortpltok}{\glscategorylabel}}% }% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -25037,5027 +39534,9 @@ defined}{}% % \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}{\GLSxtrtitleshort} -%\changes{1.42}{2020-02-03}{new} -% Command to display short form of abbreviation in section title and -% table of contents in all upper case. -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitleshort}[1]{% - \GLSxtrshort[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Glsxtrheadshortpl} -% Command used to display plural short form in the page header with the -% first letter converted to upper case. -%\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}{\GLSxtrtitleshortpl} -%\changes{1.42}{2020-02-03}{new} -% Command to display plural short form of abbreviation in section title and -% table of contents in all upper case. -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitleshortpl}[1]{% - \GLSxtrshortpl[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadname} -% As above but for the \gloskey{name} value. -%\changes{1.21}{2017-11-03}{new} -% \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. -%\changes{1.21}{2017-11-03}{new} -% \begin{macrocode} -\newrobustcmd*{\Glsxtrtitlename}[1]{% - \Glsname[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\GLSxtrtitlename} -% Command to display \gloskey{name} value in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlename}[1]{% - \GLSname[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadtext} -% As above but for the \gloskey{text} value. -%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} -% \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}{\GLSxtrtitletext} -% Command to display \gloskey{text} value in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitletext}[1]{% - \GLStext[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadplural} -% As above but for the \gloskey{plural} value. -%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} -% \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}{\GLSxtrtitleplural} -%\changes{1.42}{2020-02-03}{new} -% Command to display \gloskey{plural} value in section title and -% table of contents in all upper case. -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitleplural}[1]{% - \GLSplural[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadfirst} -% As above but for the \gloskey{first} value. -%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} -% \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}{\GLSxtrtitlefirst} -%\changes{1.42}{2020-02-03}{new} -% Command to display \gloskey{first} value in section title and -% table of contents in all upper case. -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlefirst}[1]{% - \GLSfirst[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadfirstplural} -% As above but for the \gloskey{firstplural} value. -%\changes{0.5.1}{2015-12-07}{now uses headuc attribute} -% \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}{\GLSxtrtitlefirstplural} -%\changes{1.42}{2020-02-03}{new} -% Command to display \gloskey{first} value in section title and -% table of contents in all upper case. -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% - \GLSfirstplural[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadlong} -% Command used to display long form in the page header. -%\changes{1.02}{2016-04-25}{new} -% \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}{\GLSxtrtitlelong} -% Command to display long form of abbreviation in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlelong}[1]{% - \GLSxtrlong[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Glsxtrheadlongpl} -% Command used to display plural long form in the page header with the -% first letter converted to upper case. -%\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}{\GLSxtrtitlelongpl} -% Command to display plural long form of abbreviation in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlelongpl}[1]{% - \GLSxtrlongpl[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrheadfull} -% Command used to display full form in the page header. -%\changes{1.02}{2016-04-25}{new} -% \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}{\GLSxtrtitlefull} -% Command to display full form of abbreviation in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlefull}[1]{% - \GLSxtrfull[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Glsxtrheadfullpl} -% Command used to display plural full form in the page header with the -% first letter converted to upper case. -%\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}{\GLSxtrtitlefullpl} -% Command to display plural full form of abbreviation in section title and -% table of contents in all upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\newrobustcmd*{\GLSxtrtitlefullpl}[1]{% - \GLSxtrfullpl[noindex,hyper=false]{#1}[]% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtshort} -% Provide a way of using the formatted short form in section -% headings. If \sty{hyperref} has been loaded, use -% \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}{\GLSfmtname} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtname}[1]{% - \texorpdfstring - {\GLSxtrtitlename{#1}}% - {\glsentryname{#1}}% - } -} -{ - \newcommand*{\GLSfmtname}[1]{% - \GLSxtrtitlename{#1}} -} -% \end{macrocode} -%\end{macro} -% -% -%\begin{macro}{\glsfmttext} -%As above but for the \gloskey{text} value. -%\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}{\GLSfmttext} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmttext}[1]{% - \texorpdfstring - {\GLSxtrtitletext{#1}}% - {\glsentrytext{#1}}% - } -} -{ - \newcommand*{\GLSfmttext}[1]{% - \GLSxtrtitletext{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtplural} -%As above but for the \gloskey{plural} value. -%\changes{0.5}{2015-12-07}{new} -% \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}{\GLSfmtplural} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtplural}[1]{% - \texorpdfstring - {\GLSxtrtitleplural{#1}}% - {\glsentryplural{#1}}% - } -} -{ - \newcommand*{\GLSfmtplural}[1]{% - \GLSxtrtitleplural{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtfirst} -%As above but for the \gloskey{first} value. -%\changes{0.5}{2015-12-07}{new} -% \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}{\GLSfmtfirst} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtfirst}[1]{% - \texorpdfstring - {\GLSxtrtitlefirst{#1}}% - {\glsentryfirst{#1}}% - } -} -{ - \newcommand*{\GLSfmtfirst}[1]{% - \Glsxtrtitlefirst{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtfirstpl} -%As above but for the \gloskey{firstplural} value. -%\changes{0.5}{2015-12-07}{new} -% \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}{\GLSfmtfirstpl} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtfirstpl}[1]{% - \texorpdfstring - {\GLSxtrtitlefirstplural{#1}}% - {\glsentryfirstplural{#1}}% - } -} -{ - \newcommand*{\GLSfmtfirstpl}[1]{% - \GLSxtrtitlefirstplural{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtlong} -%As above but for the \gloskey{long} value. -%\changes{1.02}{2016-04-25}{new} -% \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}{\GLSfmtlong} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtlong}[1]{% - \texorpdfstring - {\GLSxtrtitlelong{#1}}% - {\glsentrylong{#1}}% - } -} -{ - \newcommand*{\GLSfmtlong}[1]{% - \GLSxtrtitlelong{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtlongpl} -%As above but for the \gloskey{longplural} value. -%\changes{1.02}{2016-04-25}{new} -% \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}{\GLSfmtlongpl} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtlongpl}[1]{% - \texorpdfstring - {\GLSxtrtitlelongpl{#1}}% - {\glsentrylongpl{#1}}% - } -} -{ - \newcommand*{\GLSfmtlongpl}[1]{% - \GLSxtrtitlelongpl{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glspdffmtfull} -%\changes{1.42}{2020-02-03}{new} -%Can't use \cs{glsxtrinlinefullformat} in PDF bookmarks as it's not -%fully expandable. This command is for the PDF part of -%\cs{texorpdfstring} for the full form. -% \begin{macrocode} -\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% -% \end{macrocode} -%\end{macro} -%\begin{macro}{\glspdffmtfullpl} -%\changes{1.42}{2020-02-03}{new} -%Likewise for plural. -% \begin{macrocode} -\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% -% \end{macrocode} -%\end{macro} -%\begin{macro}{\glsfmtfull} -%In-line full format. -%\changes{1.02}{2016-04-25}{new} -%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\glsfmtfull}[1]{% - \texorpdfstring - {\glsxtrtitlefull{#1}}% - {\glspdffmtfull{#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} -%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\Glsfmtfull}[1]{% - \texorpdfstring - {\Glsxtrtitlefull{#1}}% - {\glspdffmtfull{#1}{}}% - } -} -{ - \newcommand*{\Glsfmtfull}[1]{% - \Glsxtrtitlefull{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\GLSfmtfull} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtfull}[1]{% - \texorpdfstring - {\GLSxtrtitlefull{#1}}% - {\glspdffmtfull{#1}}% - } -} -{ - \newcommand*{\GLSfmtfull}[1]{% - \GLSxtrtitlefull{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsfmtfullpl} -%In-line full plural format. -%\changes{1.02}{2016-04-25}{new} -%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\glsfmtfullpl}[1]{% - \texorpdfstring - {\glsxtrtitlefullpl{#1}}% - {\glspdffmtfullpl{#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} -%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\Glsfmtfullpl}[1]{% - \texorpdfstring - {\Glsxtrtitlefullpl{#1}}% - {\glspdffmtfullpl{#1}{}}% - } -} -{ - \newcommand*{\Glsfmtfullpl}[1]{% - \Glsxtrtitlefullpl{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\GLSfmtfullpl} -%All upper case. -%\changes{1.42}{2020-02-03}{new} -% \begin{macrocode} -\ifdef\texorpdfstring -{ - \newcommand*{\GLSfmtfullpl}[1]{% - \texorpdfstring - {\GLSxtrtitlefullpl{#1}}% - {\glspdffmtfullpl{#1}{}}% - } -} -{ - \newcommand*{\GLSfmtfullpl}[1]{% - \GLSxtrtitlefullpl{#1}} -} -% \end{macrocode} -%\end{macro} -% -%\section{Multi (Combined/Compound) Entries} -%(I'd rather call these combined or compound entries but \cs{cgls} is -%already taken.) -% -%New to version 1.48, the commands here provide a way of referencing -%multiple entries as a single unit. For example, biological -%organisms are often referred to by their genus and species, such as -%\emph{Clostridium botulinum} and \emph{Clostridium perfringens} -%(where the genus is Clostridium). The genus is often abbreviated -%after first use, regardless of which species in the genus is being -%referenced. For example, \qt{\emph{Clostridium botulinum} and -%\emph{C. perfringens}}. This can't be supported by any abbreviation -%styles unless the genus and species names are defined separately. -%For example: -%\begin{verbatim} -%\setabbreviationstyle{long-only-short-only} -%\newabbreviation{clostridium}{C.}{Clostridium} -%\newglossaryentry{botulinum}{name={botulinum},description={}} -%\newglossaryentry{perfringens}{name={perfringens},description={}} -%\end{verbatim} -%This means that the entries then need to be referenced using a -%rather cumbersome method: -%\begin{verbatim} -%\gls{clostridium} \gls{botulinum} and \gls{clostridum} -%\gls{perfringens} -%\end{verbatim} -%This section provides a command that will provide a way of defining -%a label that represents a combination of entries (which must all be -%first defined). For example: -%\begin{verbatim} -%\multiglossaryentry{cbot}{clostridium,botulinum} -%\end{verbatim} -%This label can then be referenced using \cs{mgls}, which internally -%uses \cs{gls} for each component. The last component in the list is -%considered the \qt{main} component (not to be confused with the -%main glossary). If this isn't the case, the label of the main -%component should be added in the optional argument before the label -%list. Note that the multi-label (\texttt{cbot} in this case) can't be -%referenced using commands like \cs{gls}. -% -%First define the general set of options that should be applied to -%all multi-entries. These can be set with: -%\begin{macro}{\multiglossaryentrysetup} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\@gls@combined@indexmain} -%\changes{1.48}{2021-11-22}{new} -%Numeric value: 0=false (don't index main component), 1=true (always -%index main component), 2=first (only index main component on first -%use). Default: 1 (true); -% \begin{macrocode} -\newcommand*{\@gls@combined@indexmain}{1} -\define@choicekey{glsxtrcombined}{indexmain}% - [\@gls@combined@indexmain@val\@gls@combined@indexmain] - {false,true,first}[true]{} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\@gls@combined@indexothers} -%\changes{1.48}{2021-11-22}{new} -%Numeric value: 0=false (don't index other components), 1=true (always -%index other components), 2=first (only index other components on first -%use). Default: 2 (first); -% \begin{macrocode} -\newcommand*{\@gls@combined@indexothers}{2} -\define@choicekey{glsxtrcombined}{indexothers}% - [\@gls@combined@indexothers@val\@gls@combined@indexothers] - {false,true,first}[true]{} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\@gls@combined@hyper} -%\changes{1.48}{2021-11-22}{new} -%Numeric value: 0=none (\cs{mgls} doesn't create a hyperlink), -% 1=allmain (all content hyperlinks to the main component), -% 2=mainonly (only the main component has a hyperlink), -% 3=individual (each component has a hyperlink to their own target). -% Default: 3. -% \begin{macrocode} -\newcommand*{\@gls@combined@hyper}{3} -\define@choicekey{glsxtrcombined}{hyper}% - [\@gls@combined@hyper@val\@gls@combined@hyper] - {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@encapmain} -%\changes{1.48}{2021-11-22}{new} -%Location encap value for main component (corresponding to format key in \cs{gls}). -% \begin{macrocode} -\newcommand*{\@gls@combined@encapmain}{glsnumberformat} -\define@key{glsxtrcombined}{encapmain}{% - \renewcommand*{\@gls@combined@encapmain}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@encapothers} -%\changes{1.48}{2021-11-22}{new} -%Location encap value for other components (corresponding to format key in \cs{gls}). -% \begin{macrocode} -\newcommand*{\@gls@combined@encapothers}{glsnumberformat} -\define@key{glsxtrcombined}{encapothers}{% - \renewcommand*{\@gls@combined@encapothers}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@textformat} -%\changes{1.48}{2021-11-22}{new} -%Encapsulate entire content with the command identified by the given -%control sequence name. -% \begin{macrocode} -\newcommand*{\@gls@combined@textformat}{@firstofone} -\define@key{glsxtrcombined}{textformat}{% - \renewcommand*{\@gls@combined@textformat}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@category} -%\changes{1.48}{2021-11-22}{new} -%Assign a category to the combined set. -% \begin{macrocode} -\newcommand*{\@gls@combined@category}{} -\define@key{glsxtrcombined}{category}{% - \renewcommand*{\@gls@combined@category}{#1}% -} -% \end{macrocode} -%Pre-options family: -% \begin{macrocode} -\define@key{glsxtrcombinedpreopts}{category}{% - \renewcommand*{\@gls@combined@category}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@mglsopts} -%\changes{1.48}{2021-11-22}{new} -%Default options to pass to \cs{mgls}. -% \begin{macrocode} -\newcommand*{\@gls@combined@mglsopts}{} -\define@key{glsxtrcombined}{mglsopts}{% - \renewcommand*{\@gls@combined@mglsopts}{#1}% -} -\define@key{glsxtrcombinedpreopts}{mglsopts}{% - \@gls@combined@mglsopts@do - {% - \renewcommand*{\@gls@combined@mglsopts}{#1}% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@mglsopts@do} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@gls@combined@mglsopts@do}[1]{#1} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mgls@disable@mglsopts} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mgls@disable@mglsopts}{% - \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mgls@enable@mglsopts} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mgls@enable@mglsopts}{% - \let\@gls@combined@mglsopts@do\@firstofone -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@mglsopts@do} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@gls@combined@mglsopts@do@not}[1]{% - \PackageError{glossaries-extra}{`mglsopts' key not permitted inside - `setup' value}{}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@firstprefix} -%\changes{1.48}{2021-11-22}{new} -%Prefix for multi-entry first use. -% \begin{macrocode} -\newcommand*{\@gls@combined@firstprefix}{} -\define@key{glsxtrcombined}{firstprefix}{% - \renewcommand*{\@gls@combined@firstprefix}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@usedprefix} -%\changes{1.48}{2021-11-22}{new} -%Prefix for multi-entry subsequent first use. -% \begin{macrocode} -\newcommand*{\@gls@combined@usedprefix}{} -\define@key{glsxtrcombined}{usedprefix}{% - \renewcommand*{\@gls@combined@usedprefix}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@firstsuffix} -%\changes{1.48}{2021-11-22}{new} -%Suffix for multi-entry first use. -% \begin{macrocode} -\newcommand*{\@gls@combined@firstsuffix}{} -\define@key{glsxtrcombined}{firstsuffix}{% - \renewcommand*{\@gls@combined@firstsuffix}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@usedsuffix} -%\changes{1.48}{2021-11-22}{new} -%Suffix for multi-entry subsequent first use. -% \begin{macrocode} -\newcommand*{\@gls@combined@usedsuffix}{} -\define@key{glsxtrcombined}{usedsuffix}{% - \renewcommand*{\@gls@combined@usedsuffix}{#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@firstskipmain} -%\changes{1.48}{2021-11-22}{new} -%Skip the main element on first use (multi-entry first use not -%element first use). -% \begin{macrocode} -\define@boolkey{glsxtrcombined}{firstskipmain}[true]{} -\KV@glsxtrcombined@firstskipmainfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@firstskipothers} -%\changes{1.48}{2021-11-22}{new} -%Skip the other elements on first use (multi-entry first use not -%element first use). -% \begin{macrocode} -\define@boolkey{glsxtrcombined}{firstskipothers}[true]{} -\KV@glsxtrcombined@firstskipothersfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@usedskipmain} -%\changes{1.48}{2021-11-22}{new} -%Skip the main element on subsequent use (multi-entry subsequent use not -%element subsequent use). -% \begin{macrocode} -\define@boolkey{glsxtrcombined}{usedskipmain}[true]{} -\KV@glsxtrcombined@usedskipmainfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@usedskipothers} -%\changes{1.48}{2021-11-22}{new} -%Skip the other elements on subsequent use (multi-entry subsequent use not -%element subsequent use). -% \begin{macrocode} -\define@boolkey{glsxtrcombined}{usedskipothers}[true]{} -\KV@glsxtrcombined@usedskipothersfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@postlinks} -%\changes{1.48}{2021-11-22}{new} -%Determine whether or not to use the individual element post-link hooks. -% \begin{macrocode} -\newcommand*{\@gls@combined@postlinks@nr}{0} -\define@choicekey{glsxtrcombined}{postlinks}% - [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr] - {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@mpostlink} -%\changes{1.48}{2021-11-22}{new} -%Determine whether or not to use the multi-entry post-link hook. -% \begin{macrocode} -\newcommand*{\@gls@combined@mpostlink@nr}{1} -\define@choicekey{glsxtrcombined}{mpostlink}% - [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr] - {false,true,firstonly,usedonly}[true]{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@gls@combined@mpostlinkelement} -%\changes{1.48}{2021-11-22}{new} -%Determine which element to use for the post-link hook. -% \begin{macrocode} -\newcommand*{\@gls@combined@mpostlinkelement@nr}{0} -\define@choicekey{glsxtrcombined}{mpostlinkelement}% - [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr] - {last,main,custom}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrifmulti} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmultimain} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmultilist} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmultitotalelements} -%\changes{1.48}{2021-11-22}{new} -%Total number of elements. -% \begin{macrocode} -\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmultimainindex} -%\changes{1.48}{2021-11-22}{new} -%Index of main element (starting from 1). If the main element is the -%last element in the list then this should equal the total number of -%elements. -% \begin{macrocode} -\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmultilastotherindex} -%\changes{1.48}{2021-11-22}{new} -%Index of the last non-main element. -% \begin{macrocode} -\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\ifmultiglossaryentryglobal} -%\changes{1.48}{2021-11-22}{new} -%Make definitions global. -% \begin{macrocode} -\newif\ifmultiglossaryentryglobal -\multiglossaryentryglobalfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglselementindex} -%\changes{1.48}{2021-11-22}{new} -% Count register to keep track of the current element index. -% \begin{macrocode} -\newcount\mglselementindex -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\multiglossaryentry} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{multiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label -%list} -%\end{definition} -%Defines the label \meta{multi-label} that can be used in \cs{mgls}. -% \begin{macrocode} -\newrobustcmd{\multiglossaryentry}[1][]{% - \def\@gls@combined@current@opts{#1}% - \ifnum\@glsxtr@docdefval=1\relax - \let\@multi@glossentry@donext\@defmultiglossaryentry - \else - \let\@multi@glossentry@donext\@multiglossaryentry - \fi - \@multi@glossentry@donext -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@multiglossaryentry} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@multiglossaryentry}[1]{% - \def\@gls@combined@current@label{#1}% - \@multi@glossaryentry -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@multi@glossaryentry} -%\changes{1.48}{2021-11-22}{new} -% Check for existence. -% \begin{macrocode} -\newcommand*{\@multi@glossaryentry}[2][]{% - \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% - {\PackageError{glossaries-extra}% - {Multi-entry label `\@gls@combined@current@label' already defined}% - {}% - }% - {% - \@multi@glossary@entry{#1}{#2}% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@defmultiglossaryentry} -%\changes{1.48}{2021-11-22}{new} -%Used if document definitions are on. -% \begin{macrocode} -\newcommand*{\@defmultiglossaryentry}[1]{% - \def\@gls@combined@current@label{#1}% - \@def@multi@glossaryentry -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@def@multi@glossaryentry} -%\changes{1.48}{2021-11-22}{new} -%Used if document definitions are on. -% \begin{macrocode} -\newcommand*{\@def@multi@glossaryentry}[2][]{% - \let\@def@multi@glossaryentry@do\@multi@glossary@entry - \ifundef\@glsxtr@docdefs@multilist - {% - \gdef\@glsxtr@docdefs@multilist{}% - \listxadd - {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% - }% - {% - \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}% - {% - \PackageError{glossaries-extra}% - {Multi-entry label `\@gls@combined@current@label' already defined}% - {}% - \let\@def@multi@glossaryentry@do\@gobbletwo - }% - {% - \listxadd - {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% - }% - }% - \@def@multi@glossaryentry@do{#1}{#2}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@multi@glossary@doifexists} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\providemultiglossaryentry} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{providemultiglossaryentry}\oarg{options}\marg{multi-label}\oarg{main label}\marg{label -%list} -%\end{definition} -%Defines a multi-entry unless it has already been defined. -% \begin{macrocode} -\newrobustcmd{\providemultiglossaryentry}[2][]{% - \def\@gls@combined@current@opts{#1}% - \def\@gls@combined@current@label{#2}% - \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% - {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}% - {% - \ifnum\@glsxtr@docdefval=1\relax - \def\@multi@glossentry@donext{\@def@multi@glossaryentry}% - \else - \def\@multi@glossentry@donext{\@multi@glossaryentry}% - \fi - }% - \@multi@glossentry@donext -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@provide@multi@glossaryentry@noop} -%\changes{1.48}{2021-11-22}{new} -% Do nothing. -% \begin{macrocode} -\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@multi@glossaryentry@list} -%\changes{1.48}{2021-11-22}{new} -% List of all defined multi-entry sets. -% \begin{macrocode} -\newcommand*{\@multi@glossaryentry@list}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@multi@glossary@entry} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@multi@glossary@entry}[2]{% - \protected@edef\@gls@combined@current@main{#1}% -% \end{macrocode} -% Fully expand list. -% \begin{macrocode} - \protected@edef\@gls@combined@currentlist{#2}% -% \end{macrocode} -% Count items in list, check they are all defined, and find last item at the same time. -% \begin{macrocode} - \mglselementindex=0\relax - \@for\@gls@tmp:=\@gls@combined@currentlist\do{% - \advance\mglselementindex by 1\relax - \@multi@glossary@doifexists{\@gls@tmp}{}% - \let\@gls@combined@finalitem\@gls@tmp - \ifdefvoid\@gls@combined@current@main - {}% - {% - \ifx\@gls@combined@current@main\@gls@tmp - \ifmultiglossaryentryglobal - \global\cslet{@gls@combined@\@gls@combined@current@label @main}% - \@gls@combined@current@main - \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}% - {\the\mglselementindex}% - \else - \cslet{@gls@combined@\@gls@combined@current@label @main}% - \@gls@combined@current@main - \csedef{@gls@combined@\@gls@combined@current@label @mainindex}% - {\the\mglselementindex}% - \fi - \else - \ifmultiglossaryentryglobal - \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% - {\the\mglselementindex}% - \else - \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% - {\the\mglselementindex}% - \fi - \fi - }% - }% - \ifmultiglossaryentryglobal - \csxdef{@gls@combined@\@gls@combined@current@label @total}% - {\the\mglselementindex}% - \else - \csedef{@gls@combined@\@gls@combined@current@label @total}% - {\the\mglselementindex}% - \fi - \ifnum\mglselementindex<2\relax - \PackageError{glossaries-extra}{At least 2 labels required in - multi-entry element list (\number\mglselementindex\space found)}{}% - \else - \ifdefvoid\@gls@combined@current@main - {}% - {% -% \end{macrocode} -% If \cs{@gls@combined@\meta{label}@main} hasn't been set then it -% wasn't included in the list. -% \begin{macrocode} - \ifcsundef{@gls@combined@\@gls@combined@current@label @main}% - {\PackageError{glossaries-extra}% - {Main element `\@gls@combined@current@main' not found in list}% - {The final element `\@gls@combined@finalitem' will be used instead} -% \end{macrocode} -% Set to empty so that the default (final element) is used instead. -% \begin{macrocode} - \let\@gls@combined@current@main\@empty - }% - {}% - }% - \ifdefvoid\@gls@combined@current@main - {% -% \end{macrocode} -% Set main to final element. -% \begin{macrocode} - \ifmultiglossaryentryglobal - \global\cslet{@gls@combined@\@gls@combined@current@label @main}% - \@gls@combined@finalitem - \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% - {@gls@combined@\@gls@combined@current@label @total}% - \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% - {\the\numexpr\mglselementindex-1 }% - \else - \cslet{@gls@combined@\@gls@combined@current@label @main}% - \@gls@combined@finalitem - \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% - {@gls@combined@\@gls@combined@current@label @total}% - \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% - {\the\numexpr\mglselementindex-1 }% - \fi - }% - {}% - \ifmultiglossaryentryglobal -% \end{macrocode} -% Globally define element list. -% \begin{macrocode} - \global\cslet{@gls@combined@\@gls@combined@current@label @list}% - \@gls@combined@currentlist -% \end{macrocode} -% Globally define options. -% \begin{macrocode} - \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}% - {\@gls@combined@current@opts}% -% \end{macrocode} -% Global conditional definition. -% \begin{macrocode} - \expandafter\@ifdefinable - \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname - {\expandafter\global\expandafter - \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}% - \expandafter\global - \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname - \else -% \end{macrocode} -% Locally define element list. -% \begin{macrocode} - \cslet{@gls@combined@\@gls@combined@current@label @list}% - \@gls@combined@currentlist -% \end{macrocode} -% Locally define options. -% \begin{macrocode} - \protected@csedef{@gls@combined@\@gls@combined@current@label @options}% - {\@gls@combined@current@opts}% -% \end{macrocode} -% Local conditional definition. -% \begin{macrocode} - \newboolean{@gls@combined@\@gls@combined@current@label @flag}% - \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname - \fi - \fi - \writemultiglossentry - {\@gls@combined@current@opts}{\@gls@combined@current@label}% - {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}% -% \end{macrocode} -%Append label to list. -% \begin{macrocode} - \ifmultiglossaryentryglobal - \ifdefempty\@multi@glossaryentry@list - {\let\@multi@glossaryentry@list\@gls@combined@current@label}% - {% - \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% - }% - \else - \ifdefempty\@multi@glossaryentry@list - {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}% - {% - \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% - }% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsxtr@multientry} -%\begin{definition} -%\cs{@glsxtr@multientry}\marg{options}\marg{multilabel}\marg{main}\marg{list} -%\end{definition} -%Information for aux file. Useful for \app{bib2gls} and also for -%\pkgopt{docdef}. -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@glsxtr@multientry}[4]{% - \ifnum\@glsxtr@docdefval=1\relax - \bgroup - \def\@gls@combined@current@opts{#1}% - \def\@gls@combined@current@label{#2}% - \let\@multi@glossary@doifexists\@secondoftwo - \let\writemultiglossentry\@gobblefour - \multiglossaryentryglobaltrue - \@multi@glossary@entry{#3}{#4}% - \egroup - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\writemultiglossentry} -%\changes{1.48}{2021-11-22}{new} -%This can be redefined to do nothing if the information isn't -%required. -% \begin{macrocode} -\newcommand*{\writemultiglossentry}[4]{% - \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\ifmglsused} -%\changes{1.48}{2021-11-22}{new} -% Determines whether or not the multi-entry set has been referenced -% by commands like \cs{mgls} or \cs{mglsname}. -% \begin{macrocode} -\newcommand*{\ifmglsused}[3]{% - \ifbool{@gls@combined@#1@flag}{#2}{#3}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsunset} -%\changes{1.48}{2021-11-22}{new} -%Unset the flag. -% \begin{macrocode} -\newcommand*{\mglsunset}[1]{% - \gls@ifnotmeasuring - {% - \glsxtrifmulti{#1}{\@mglsunset{#1}}% - {% - \glsxtrundefaction{Multi entry `#1' hasn't been defined}% - {You need to define `#1' with \string\multiglossaryentry}% - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mglsunset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mglsunset}[1]{% - \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsreset} -%\changes{1.48}{2021-11-22}{new} -%Unset the flag. -% \begin{macrocode} -\newcommand*{\mglsreset}[1]{% - \gls@ifnotmeasuring - {% - \glsxtrifmulti{#1}{\@mglsreset{#1}}% - {% - \glsxtrundefaction{Multi entry `#1' hasn't been defined}% - {You need to define `#1' with \string\multiglossaryentry}% - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mglsreset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mglsreset}[1]{% - \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslocalunset} -%\changes{1.48}{2021-11-22}{new} -%Unset the flag. -% \begin{macrocode} -\newcommand*{\mglslocalunset}[1]{% - \gls@ifnotmeasuring - {% - \glsxtrifmulti{#1}{\@mglslocalunset{#1}}% - {% - \glsxtrundefaction{Multi entry `#1' hasn't been defined}% - {You need to define `#1' with \string\multiglossaryentry}% - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mglslocalunset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mglslocalunset}[1]{% - \csname @gls@combined@#1@flagtrue\endcsname -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslocalreset} -%\changes{1.48}{2021-11-22}{new} -%Unset the flag. -% \begin{macrocode} -\newcommand*{\mglslocalreset}[1]{% - \gls@ifnotmeasuring - {% - \glsxtrifmulti{#1}{\@mglslocalreset{#1}}% - {% - \glsxtrundefaction{Multi entry `#1' hasn't been defined}% - {You need to define `#1' with \string\multiglossaryentry}% - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mglslocalreset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mglslocalreset}[1]{% - \csname @gls@combined@#1@flagfalse\endcsname -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsunsetall} -%\changes{1.48}{2021-11-22}{new} -%Unset all. -% \begin{macrocode} -\newcommand*{\mglsunsetall}{% - \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}% -}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsresetall} -%\changes{1.48}{2021-11-22}{new} -%Reset all. -% \begin{macrocode} -\newcommand*{\mglsresetall}{% - \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}% -}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsSetMain} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsSetName}\marg{multi-label}\marg{new main} -%\end{definition} -%Allow the main label to be changed (local). -% \begin{macrocode} -\newrobustcmd{\mglsSetMain}[2]{% - \ifcsundef{@gls@combined@#1@main}% - {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% - {% - \protected@edef\@gls@combined@current@main{#2}% - \letcs\@gls@combined@currentlist{@gls@combined@#1@list}% -% \end{macrocode} -% Check that the given label is in the list of elements and update -% main and last other element index. -% \begin{macrocode} - \mglselementindex=0\relax - \count@=0\relax - \@for\@gls@tmp:=\@gls@combined@currentlist\do{% - \advance\mglselementindex by 1\relax - \ifx\@gls@combined@current@main\@gls@tmp - \count@=\mglselementindex\relax - \let\@gls@combined@finalitem\@gls@tmp - \ifmultiglossaryentryglobal - \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main - \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% - \else - \cslet{@gls@combined@#1@main}\@gls@combined@current@main - \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% - \fi - \else - \ifmultiglossaryentryglobal - \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% - \else - \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% - \fi - \fi - }% - \ifnum\count@=0\relax - \PackageError{glossaries-extra}{Label `#2' is not in `#1' set - (\@gls@combined@currentlist)}{}% -% \end{macrocode} -% Default to final item. -% \begin{macrocode} - \ifmultiglossaryentryglobal - \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem - \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% - \csxdef{@gls@combined@#1@lastotherindex}{% - \number\numexpr\mglselementindex-1 }% - \else - \cslet{@gls@combined@#1@main}\@gls@combined@finalitem - \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% - \csedef{@gls@combined@#1@lastotherindex}{% - \number\numexpr\mglselementindex-1 }% - \fi - \fi - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsSetOptions} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsSetOptions}\marg{multi-label}\marg{new options} -%\end{definition} -%Allow the options to be changed (local). No expansion is applied. -% \begin{macrocode} -\newrobustcmd{\mglsSetOptions}[2]{% - \ifcsundef{@gls@combined@#1@main}% - {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% - {% - \csdef{@gls@combined@#1@options}{#2}% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsAddOptions} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsAddOptions}\marg{multi-label}\marg{extra options} -%\end{definition} -%Allow the options to be changed (local). No expansion is applied. -% \begin{macrocode} -\newrobustcmd{\mglsAddOptions}[2]{% - \ifcsundef{@gls@combined@#1@main}% - {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% - {% - \ifcsempty{@gls@combined@#1@options}% - {\csdef{@gls@combined@#1@options}{#2}}% - {\csappto{@gls@combined@#1@options}{,#2}}% - }% -} -% \end{macrocode} -%\end{macro} -% -%Options for \cs{mgls}: -%\begin{macro}{\@mgls@all} -%\changes{1.48}{2021-11-22}{new} -%Options to apply to all elements. -% \begin{macrocode} -\newcommand*{\@mgls@all}{} -\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@main} -%\changes{1.48}{2021-11-22}{new} -%Options to apply to the main element only. -% \begin{macrocode} -\newcommand*{\@mgls@main}{} -\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@others} -%\changes{1.48}{2021-11-22}{new} -%Options to apply to the other (no main) elements. -% \begin{macrocode} -\newcommand*{\@mgls@others}{} -\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@setup} -%\changes{1.48}{2021-11-22}{new} -%Options to apply to \cs{multiglossaryentrysetup}. -% \begin{macrocode} -\newcommand*{\@mgls@setup}{} -\define@key{mgls}{setup}{% - \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@setup@do} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@setup@do}[1]{#1} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@setup@do@not} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@setup@do@not}[1]{% - \PackageError{glossaries-extra}{`setup' key not permitted inside - `mglsopts' value}{}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mgls@disable@setup} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mgls@disable@setup}{% - \let\@mgls@setup@do\@mgls@setup@do@not -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mgls@enable@setup} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mgls@enable@setup}{% - \let\@mgls@setup@do\@firstofone -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@unsetaction} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand\@mgls@unsetaction{0} -\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]% - {global,local,none}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\ifKV@mgls@presetlocal} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\define@boolkey{mgls}{presetlocal}[true]{} -\KV@mgls@presetlocalfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@hyper} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@hyper}{} -\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]% -{% - \renewcommand*{\@mgls@hyper}{hyper=#1}% - \ifnum\@mgls@hyper@nr=1\relax - \let\@mgls@hyperlink\@secondoftwo - \else - \let\@mgls@hyperlink\@@mgls@hyperlink - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@@mgls@hyperlink} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@@mgls@hyperlink}[2]{% - \ifx\@glslink\glsdonohyperlink - #2% - \else - \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@hyperlink} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\let\@mgls@hyperlink\@@mgls@hyperlink -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsforelements} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsforelements}\marg{multi-label}\marg{cs}\marg{body} -%\end{definition} -% \begin{macrocode} -\newcommand*{\mglsforelements}[3]{% - \expandafter\@for\expandafter#2\expandafter:\expandafter - =\csname @gls@combined@#1@list\endcsname\do{#3}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsforotherelements} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsforotherelements}\marg{multi-label}\marg{cs}\marg{body} -%\end{definition} -% \begin{macrocode} -\newcommand*{\mglsforotherelements}[3]{% - \expandafter\@for\expandafter#2\expandafter:\expandafter - =\csname @gls@combined@#1@list\endcsname\do - {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsunsetothers} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsunsetothers}[1]{% - \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslocalunsetothers} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglslocalunsetothers}[1]{% - \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglselementreset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglselementreset}[1]{% - \ifKV@mgls@presetlocal - \glslocalreset{#1}% - \else - \glsreset{#1}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglselementunset} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglselementunset}[1]{% - \ifKV@mgls@presetlocal - \glslocalunset{#1}% - \else - \glsunset{#1}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@resetall} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@resetall}{} -\define@choicekey{mgls}{resetall}% -[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]% -{% - \ifcase\@mgls@resetall@nr\relax - \renewcommand*{\@mgls@resetall}{}% - \or - \renewcommand*{\@mgls@resetall}{% - \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}% - \renewcommand*{\@mgls@unsetall}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@resetmain} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@resetmain}{} -\define@choicekey{mgls}{resetmain} -[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]% -{% - \ifcase\@mgls@resetmain@nr\relax - \renewcommand*{\@mgls@resetmain}{}% - \or - \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}% - \renewcommand*{\@mgls@unsetmain}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@resetothers} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@resetothers}{} -\define@choicekey{mgls}{resetothers} -[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]% -{% - \ifcase\@mgls@resetothers@nr\relax - \renewcommand*{\@mgls@resetothers}{}% - \or - \renewcommand*{\@mgls@resetothers}{% - \@for\@gls@resetlabel:=\mglscurrentlist\do{% - \ifx\@gls@resetlabel\mglscurrentmainlabel - \else - \mglselementreset\@gls@resetlabel - \fi - }% - }% - \renewcommand*{\@mgls@unsetothers}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@unsetall} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@unsetall}{} -\define@choicekey{mgls}{unsetall}% -[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]% -{% - \ifcase\@mgls@unsetall@nr\relax - \renewcommand*{\@mgls@unsetall}{}% - \or - \renewcommand*{\@mgls@unsetall}{% - \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}% - \renewcommand*{\@mgls@resetall}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@unsetmain} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@unsetmain}{} -\define@choicekey{mgls}{unsetmain} -[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]% -{% - \ifcase\@mgls@unsetmain@nr\relax - \renewcommand*{\@mgls@unsetmain}{}% - \or - \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}% - \renewcommand*{\@mgls@resetmain}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@unsetothers} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@unsetothers}{} -\define@choicekey{mgls}{unsetothers} -[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]% -{% - \ifcase\@mgls@unsetothers@nr\relax - \renewcommand*{\@mgls@unsetothers}{}% - \or - \renewcommand*{\@mgls@unsetothers}{% - \@for\@gls@unsetlabel:=\mglscurrentlist\do{% - \ifx\@gls@unsetlabel\mglscurrentmainlabel - \else - \mglselementunset\@gls@unsetlabel - \fi - }% - }% - \renewcommand*{\@mgls@resetothers}{}% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtr@setup@docurrent} -%\changes{1.48}{2021-11-22}{new} -%Set up the commands to determine whether or not to do the current -%element. -% \begin{macrocode} -\newcommand{\glsxtr@setup@docurrent}{% -% \end{macrocode} -% \cs{mglscurrentlabel} expands to the label of the current element. -% Should this element be skipped? -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel -% \end{macrocode} -% Main element. Should it be skipped? -% \begin{macrocode} - \mglsisfirstuse - {% - \ifKV@glsxtrcombined@firstskipmain - \let\@mgls@do@current@element\@gobble - \else - \let\@mgls@do@current@element\@firstofone - \fi - }% - {% - \ifKV@glsxtrcombined@usedskipmain - \let\@mgls@do@current@element\@gobble - \else - \let\@mgls@do@current@element\@firstofone - \fi - }% - \else -% \end{macrocode} -% Other element. Should it be skipped? -% \begin{macrocode} - \mglsisfirstuse - {% - \ifKV@glsxtrcombined@firstskipothers - \let\@mgls@do@current@element\@gobble - \else - \let\@mgls@do@current@element\@firstofone - \fi - }% - {% - \ifKV@glsxtrcombined@usedskipothers - \let\@mgls@do@current@element\@gobble - \else - \let\@mgls@do@current@element\@firstofone - \fi - }% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtr@mgls@checklastelement} -%\changes{1.48}{2021-11-22}{new} -% If the last element is skipped, \cs{mglsiflast} needs -% adjusting. -% The first argument should be either "first" or "used". -% The second argument is the multi-element label. -% \begin{macrocode} -\newcommand*{\glsxtr@mgls@checklastelement}[2]{% - \ifbool{KV@glsxtrcombined@#1skipmain}% - {% - \ifbool{KV@glsxtrcombined@#1skipothers}% - {% -% \end{macrocode} -% This condition has already been checked for. -% \begin{macrocode} - }% - {% -% \end{macrocode} -% Main skipped. The last item will be the last other element. -% \begin{macrocode} - \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax - \let\mglsiflast\@firstoftwo - \else - \let\mglsiflast\@secondoftwo - \fi - }% - }% - {% -% \end{macrocode} -% Main not skipped. -% \begin{macrocode} - \ifbool{KV@glsxtrcombined@#1skipothers}% - {% -% \end{macrocode} -% Others skipped. The main element is the only item. -% \begin{macrocode} - \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax - \let\mglsiflast\@firstoftwo - \else - \let\mglsiflast\@secondoftwo - \fi - }% - {% -% \end{macrocode} -% None skipped. This isn't the last element. -% \begin{macrocode} - \let\mglsiflast\@secondoftwo - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtrmglsWarnAllSkipped} -%\changes{1.48}{2021-11-22}{new} -%Warning if all elements are skipped. The first argument is the -%warning message, the second argument is the inserted content (final -%optional argument), the third command is the encapsulation command -%(which may be a hyperlink). -% \begin{macrocode} -\newcommand{\glsxtrmglsWarnAllSkipped}[3]{% - \GlossariesExtraWarning{#1}% - #3{#2}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtr@mgls@applyopts} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\glsxtr@mgls@applyopts}[1]{% - \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}% - \@mgls@dooptions -% \end{macrocode} -% Append any unknown options to all. -% \begin{macrocode} - \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}% -% \end{macrocode} -% If setup key has been used, check for pre-option keys: -% \begin{macrocode} - \ifdefvoid\@mgls@setup - {}% - {% - \edef\@mgls@dooptions{% - \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}% - \mgls@disable@mglsopts - \@mgls@dooptions - \mgls@enable@mglsopts -% \end{macrocode} -% Save remaining setup options. -% \begin{macrocode} - \ifx\@mgls@setupoptions\@empty - \let\@mgls@setupoptions\XKV@rm - \else - \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% - \fi - }% -% \end{macrocode} -% Apply gls unset/reset options. -% \begin{macrocode} - \@mgls@resetall - \@mgls@unsetall - \@mgls@resetmain - \@mgls@unsetmain - \@mgls@resetothers - \@mgls@unsetothers -% \end{macrocode} -% Disable. -% \begin{macrocode} - \let\@mgls@resetall\@empty - \let\@mgls@resetmain\@empty - \let\@mgls@resetothers\@empty - \let\@mgls@unsetall\@empty - \let\@mgls@unsetmain\@empty - \let\@mgls@unsetothers\@empty -% \end{macrocode} -% First use flags. -% \begin{macrocode} - \ifmglsused\mglscurrentmultilabel - {\let\mglsisfirstuse\@secondoftwo}% - {\let\mglsisfirstuse\@firstoftwo}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@firstofthree} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\providecommand{\@firstofthree}[3]{#1} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@secondofthree} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\providecommand{\@secondofthree}[3]{#2} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@thirdofthree} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\providecommand{\@thirdofthree}[3]{#3} -% \end{macrocode} -%\end{macro} -% -%The main internal command for referencing multi-entries: -%\begin{macro}{\glsxtr@mgls@inner} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{glsxtr@mgls@inner}\marg{options}\marg{label}\marg{insert}\marg{first -%cs}\marg{not first cs}\marg{main first cs}\marg{main other cs} -%\end{definition} -% \begin{macrocode} -\newcommand*{\glsxtr@mgls@inner}[7]{% - \let\mglslastmainlabel\@empty - \let\mglsiflastmainwasfirstuse\@firstoftwo - \let\mglsiflastmainwasplural\@secondoftwo - \let\mglsiflastmaincapscase\@firstofthree - \let\mglsiflastmainskipped\@firstoftwo - \bgroup - \ifcsundef{@gls@combined@#2@main}% - {% - \glsxtrundefaction{Multi entry `#2' hasn't been defined}% - {You need to define `#2' with \string\multiglossaryentry}% - \gdef\@mgls@post@hookdefs{% - \protected@edef\mglslastmultilabel{#2}% - \let\mglswasfirstuse\@firstoftwo - \let\mglslastcategory\@empty - \let\mglsiflastelementskipped\@firstoftwo - \let\mglsiflastelementwasfirstuse\@firstoftwo - \let\mglsiflastelementwasplural\@secondoftwo - \let\mglsiflastelementcapscase\@firstofthree - \let\mglslastelementlabel\@empty - \let\mgls@do@postlinkhook\relax - }% - }% - {% - \protected@edef\mglscurrentmultilabel{#2}% - \letcs\mglscurrentmainlabel{@gls@combined@#2@main}% - \letcs\mglscurrentlist{@gls@combined@#2@list}% - \letcs\mglscurrentoptions{@gls@combined@#2@options}% -% \end{macrocode} -% Initialise (may be changed if \texttt{multiunset} is present): -% \begin{macrocode} - \ifmglsused\mglscurrentmultilabel - {\let\mglsisfirstuse\@secondoftwo}% - {\let\mglsisfirstuse\@firstoftwo}% -% \end{macrocode} -% Only obtain pre-option keys: -% \begin{macrocode} - \edef\@mgls@dooptions{% - \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}% - \@mgls@dooptions -% \end{macrocode} -% Save remaining setup options. -% \begin{macrocode} - \let\@mgls@setupoptions\XKV@rm -% \end{macrocode} -% Apply \cs{mgls} options. -% \begin{macrocode} - \mgls@disable@setup - \ifdefvoid\@gls@combined@mglsopts - {}% - {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}% - \mgls@enable@setup -% \end{macrocode} -% Apply options provided in \verb|#1|. -% \begin{macrocode} - \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}% -% \end{macrocode} -% Check for attribute settings. -% \begin{macrocode} - \ifx\@gls@combined@category\empty -% \end{macrocode} -% No category -% \begin{macrocode} - \else -% \end{macrocode} -% Attribute options: -% \begin{macrocode} - \glshascategoryattribute{\@gls@combined@category}{multioptions}% - {% - \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category - @multioptions}% -% \end{macrocode} -% Only obtain pre-option keys: -% \begin{macrocode} - \let\@gls@combined@mglsopts\@empty - \edef\@mgls@dooptions{% - \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}% - \@mgls@dooptions -% \end{macrocode} -% Append remaining options: -% \begin{macrocode} - \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% - \ifx\@gls@combined@mglsopts\@empty - \else -% \end{macrocode} -% mgls options found: -% \begin{macrocode} - \let\@mgls@setup\@empty - \mgls@disable@setup - \glsxtr@mgls@applyopts\@gls@combined@mglsopts - \mgls@enable@setup - \fi - }% - {}% - \fi -% \end{macrocode} -% Apply setup options. -% \begin{macrocode} - \edef\@mgls@dooptions{% - \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}% - \@mgls@dooptions -% \end{macrocode} -% Provide local user-level access to category: -% \begin{macrocode} - \let\mglscurrentcategory\@gls@combined@category -% \end{macrocode} -% Should the entire content be a hyperlink? -% \begin{macrocode} - \ifnum\@gls@combined@hyper=1\relax - \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}% - \else - \def\@mgls@combinedlink{\@firstofone}% - \fi -% \end{macrocode} -% Entire content encapsulator. -% \begin{macrocode} - \def\@gls@combined@encapsulator##1{% - \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}% -% \end{macrocode} -% Initialise. -% \begin{macrocode} - \let\@mgls@do@current@element\@firstofone -% \end{macrocode} -% Check if all elements are being skipped. -% \begin{macrocode} - \mglsisfirstuse - {% - \ifKV@glsxtrcombined@firstskipmain - \ifKV@glsxtrcombined@firstskipothers -% \end{macrocode} -% Just do the warning and insert. This will ignore the loop. -% \begin{macrocode} - \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator - \def\@gls@combined@encapsulator##1{% - \glsxtrmglsWarnAllSkipped{All elements skipped for - first use of multi-entry `#2'}{#3}% - {\@gls@org@combined@encapsulator}% - }% - \let\@mgls@do@current@element\@gobble - \fi - \fi - }% - {% - \ifKV@glsxtrcombined@usedskipmain - \ifKV@glsxtrcombined@usedskipothers -% \end{macrocode} -% Just do the warning and insert. This will ignore the loop. -% \begin{macrocode} - \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator - \def\@gls@combined@encapsulator##1{% - \glsxtrmglsWarnAllSkipped{All elements skipped for - subsequent use of multi-entry `#2'}{#3}% - {\@gls@org@combined@encapsulator}% - }% - \let\@mgls@do@current@element\@gobble - \fi - \fi - }% -% \end{macrocode} -% Determine prefix and suffix. -% \begin{macrocode} - \mglsisfirstuse - {% - \let\mglscurrentprefix\@gls@combined@firstprefix - \let\mglscurrentsuffix\@gls@combined@firstsuffix - }% - {% - \let\mglscurrentprefix\@gls@combined@usedprefix - \let\mglscurrentsuffix\@gls@combined@usedsuffix - }% -% \end{macrocode} -%Set up post-link hook used after current scope. -% \begin{macrocode} - \xdef\@mgls@post@hookdefs{% - \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}% - \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}% - }% - \ifx\@mgls@do@current@element\@gobble - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastelementskipped\@firstoftwo - \let\mglslastelementlabel\@empty - \let\mglsiflastelementwasfirstuse\@firstoftwo - \let\mglsiflastelementwasplural\@secondoftwo - \let\mglsiflastelementcapscase\@firstofthree - }% - \fi - \mglsisfirstuse - {% - \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}% -% \end{macrocode} -% Determine if the multi-entry post-link hook should be applied. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlink@nr\relax -% \end{macrocode} -% \texttt{mpostlink=false}. -% \begin{macrocode} - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% - \or -% \end{macrocode} -% \texttt{mpostlink=true}. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlinkelement@nr\relax - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% - \fi - \or -% \end{macrocode} -% \texttt{mpostlink=firstonly}. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlinkelement@nr\relax - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% - \fi - \or -% \end{macrocode} -% \texttt{mpostlink=usedonly}. -% \begin{macrocode} - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% - \fi - }% - {% - \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}% -% \end{macrocode} -% Determine if the multi-entry post-link hook should be applied. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlink@nr\relax -% \end{macrocode} -% \texttt{mpostlink=false}. -% \begin{macrocode} - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% - \or -% \end{macrocode} -% \texttt{mpostlink=true}. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlinkelement@nr\relax - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% - \fi - \or -% \end{macrocode} -% \texttt{mpostlink=firstonly}. -% \begin{macrocode} - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% - \or -% \end{macrocode} -% \texttt{mpostlink=usedonly}. -% \begin{macrocode} - \ifcase\@gls@combined@mpostlinkelement@nr\relax - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% - \or - \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% - \fi - \fi - }% -% \end{macrocode} -% Save current post-link hook. -% \begin{macrocode} - \let\mgls@org@postlinkhook\glspostlinkhook -% \end{macrocode} -% Prefix. -% \begin{macrocode} - \mglsprefix -% \end{macrocode} -% Initialise last element label (for \cs{mglssuffix}). -% \begin{macrocode} - \let\mglslastelementlabel\@empty - \@gls@combined@encapsulator - {% -% \end{macrocode} -% Save previous label. -% \begin{macrocode} - \def\@mgls@previouslabel{}% - \mglselementindex=0\relax - \@for\mglscurrentlabel:=\mglscurrentlist\do{% - \advance\mglselementindex by 1\relax - \glsxtr@setup@docurrent -% \end{macrocode} -% Is this the last element? -% \begin{macrocode} - \ifx\@xfor@nextelement\@nnil - \let\mglsiflast\@firstoftwo - \else - \let\mglsiflast\@secondoftwo -% \end{macrocode} -% Are any elements being skipped? -% \begin{macrocode} - \mglsisfirstuse - {% - \glsxtr@mgls@checklastelement{first}{#2}% - }% - {% - \glsxtr@mgls@checklastelement{used}{#2}% - }% - \fi -% \end{macrocode} -% Should the element post-link hook be used? -% \begin{macrocode} - \ifcase\@gls@combined@postlinks@nr\relax -% \end{macrocode} -% \texttt{postlinks=none} -% \begin{macrocode} - \let\glspostlinkhook\relax - \or -% \end{macrocode} -% \texttt{postlinks=all} -% \begin{macrocode} - \let\glspostlinkhook\mgls@org@postlinkhook - \or -% \end{macrocode} -% \texttt{postlinks=notlast} -% \begin{macrocode} - \mglsiflast - {% - \let\glspostlinkhook\relax - }% - {% - \let\glspostlinkhook\mgls@org@postlinkhook - }% - \or -% \end{macrocode} -% \texttt{postlinks=mainnotlast} -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel - \mglsiflast - {% - \let\glspostlinkhook\relax - }% - {% - \let\glspostlinkhook\mgls@org@postlinkhook - }% - \else - \let\glspostlinkhook\relax - \fi - \or -% \end{macrocode} -% \texttt{postlinks=mainonly} -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel - \let\glspostlinkhook\mgls@org@postlinkhook - \else - \let\glspostlinkhook\relax - \fi - \or -% \end{macrocode} -% \texttt{postlinks=othernotlast} -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel - \let\glspostlinkhook\relax - \else - \mglsiflast - {% - \let\glspostlinkhook\relax - }% - {% - \let\glspostlinkhook\mgls@org@postlinkhook - }% - \fi - \or -% \end{macrocode} -% \texttt{postlinks=otheronly} -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel - \let\glspostlinkhook\relax - \else - \let\glspostlinkhook\mgls@org@postlinkhook - \fi - \fi -% \end{macrocode} -% Save the last element for the multi-entry post-link hook. -% \begin{macrocode} - \mglsiflast - {% - \xappto\@mgls@post@hookdefs{% - \noexpand\def\noexpand\mglslastelementlabel - {\expandonce\mglscurrentlabel}}% - }% - {}% -% \end{macrocode} -% Do current element: -% \begin{macrocode} - \@mgls@do@current@element - {% -% \end{macrocode} -% Pre element hook. -% \begin{macrocode} - \mglselementprehook -% \end{macrocode} -% Is this the first use of the current element? -% \begin{macrocode} - \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}% - {\let\@mgls@current@iffirstuse\@firstoftwo}% - {\let\@mgls@current@iffirstuse\@secondoftwo}% - \ifx\mglscurrentlabel\mglscurrentmainlabel -% \end{macrocode} -% Main element. -% Location encap option: -% \begin{macrocode} - \edef\@mgls@current@options{format=\@gls@combined@encapmain}% -% \end{macrocode} -%Indexing option: -% \begin{macrocode} - \ifcase\@gls@combined@indexmain - \appto\@mgls@current@options{,noindex}% - \or - \appto\@mgls@current@options{,noindex=false}% - \or - \@mgls@current@iffirstuse - {\appto\@mgls@current@options{,noindex=false}}% - {\appto\@mgls@current@options{,noindex}}% - \fi -% \end{macrocode} -% Hyperlink option: -% \begin{macrocode} - \ifcase\@gls@combined@hyper\relax - \appto\@mgls@current@options{,hyper=false}% none - \or - \appto\@mgls@current@options{,hyper=false}% allmain - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% individual - \or - \appto\@mgls@current@options{,hyper=false}% otheronly - \or - \mglsisfirstuse - {% - \appto\@mgls@current@options{,hyper=false}% notmainfirst - }% - {% - \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst - }% - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst - \or - \mglsisfirstuse - {% - \appto\@mgls@current@options{,hyper=false}% notfirst - }% - {% - \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst - }% - \fi -% \end{macrocode} -%Append all and then main: -% \begin{macrocode} - \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}% - \else -% \end{macrocode} -% Other element. -% Location encap option: -% \begin{macrocode} - \edef\@mgls@current@options{format=\@gls@combined@encapothers}% -% \end{macrocode} -% Indexing option: -% \begin{macrocode} - \ifcase\@gls@combined@indexothers\relax - \appto\@mgls@current@options{,noindex}% - \or - \appto\@mgls@current@options{,noindex=false}% - \or - \@mgls@current@iffirstuse - {\appto\@mgls@current@options{,noindex=false}}% - {\appto\@mgls@current@options{,noindex}}% - \fi -% \end{macrocode} -% Hyperlink option: -% \begin{macrocode} - \ifcase\@gls@combined@hyper\relax - \appto\@mgls@current@options{,hyper=false}% none - \or - \appto\@mgls@current@options{,hyper=false}% allmain - \or - \appto\@mgls@current@options{,hyper=false}% mainonly - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% individual - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly - \or - \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst - \or - \mglsisfirstuse - {% - \appto\@mgls@current@options{,hyper=false}% nototherfirst - }% - {% - \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst - }% - \or - \mglsisfirstuse - {% - \appto\@mgls@current@options{,hyper=false}% notfirst - }% - {% - \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst - }% - \fi -% \end{macrocode} -%Append all and then others: -% \begin{macrocode} - \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}% - \fi -% \end{macrocode} -% Is this the first element? -% \begin{macrocode} - \ifx\@mgls@previouslabel\empty - \ifx\mglscurrentlabel\mglscurrentmainlabel - \let\@mgls@cs#6\relax - \else - \let\@mgls@cs#4\relax - \fi - \else -% \end{macrocode} -% Not the first element so add separator. -% \begin{macrocode} - \@mgls@previous@iffirstuse - {% - \@mgls@current@iffirstuse - {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% - {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}% - }% - {% - \@mgls@current@iffirstuse - {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% - {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}% - }% - \ifx\mglscurrentlabel\mglscurrentmainlabel - \let\@mgls@cs#7\relax - \else - \let\@mgls@cs#5\relax - \fi - \fi -% \end{macrocode} -% Is this the last element? -% \begin{macrocode} - \mglsiflast - {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}% - {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}% -% \end{macrocode} -% Is this the main element? If so, save information for post-link -% hook. -% \begin{macrocode} - \ifx\mglscurrentlabel\mglscurrentmainlabel - \xappto\@mgls@post@hookdefs{% - \noexpand\def\noexpand\mglslastmainlabel - {\expandonce\mglscurrentmainlabel}% - }% - \glsxtrifwasfirstuse - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}% - }% - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}% - }% - \glsifplural - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}% - }% - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}% - }% - \glscapscase - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastmaincapscase\@firstofthree - }% - }% - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastmaincapscase\@secondofthree - }% - }% - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastmaincapscase\@thirdofthree - }% - }% - \fi - \let\@mgls@previouslabel\mglscurrentlabel - \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse - }% -% \end{macrocode} -% Post element hook. -% \begin{macrocode} - \mglselementposthook - }% - \ifx\mglslastmainlabel\@empty - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}% - \else - \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}% - \fi -% \end{macrocode} -% Encapsulator may introduce grouping so check here. -% \begin{macrocode} - \ifx\@mgls@do@current@element\@gobble - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}% - \else - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}% - \fi - \glsxtrifwasfirstuse - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}% - }% - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}% - }% - \glsifplural - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}% - }% - {% - \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}% - }% - \glscapscase - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastelementcapscase\@firstofthree - }% - }% - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastelementcapscase\@secondofthree - }% - }% - {% - \gappto\@mgls@post@hookdefs{% - \let\mglsiflastelementcapscase\@thirdofthree - }% - }% - }% -% \end{macrocode} -% Suffix needs post-link hook commands. -% \begin{macrocode} - \@mgls@post@hookdefs - \mglssuffix -% \end{macrocode} -%Unset multi-entry first use flag after current scope. -% \begin{macrocode} - \ifcase\@mgls@unsetaction\relax - \xappto\@mgls@post@hookdefs{% - \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}% - \or - \xappto\@mgls@post@hookdefs{% - \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}% - \fi - }% - \glsxtrmglswrite{#2}% - \egroup - \@mgls@post@hookdefs - \mgls@do@postlinkhook -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglscustompostlinkhook} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglscustompostlinkhook}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslastelementpostlinkhook} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglslastelementpostlinkhook}{% - \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse - \let\glsifplural\mglsiflastelementwasplural - \let\glscapscase\mglsiflastelementcapscase - \let\glslabel\mglslastelementlabel - \glspostlinkhook -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslastmainpostlinkhook} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglslastmainpostlinkhook}{% - \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse - \let\glsifplural\mglsiflastmainwasplural - \let\glscapscase\mglsiflastmaincapscase - \let\glslabel\mglslastmainlabel - \glspostlinkhook -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsdefcategoryprefix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsdefcategoryprefix}[2]{% - \csdef{mglsprefix@#1}{#2}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglshascategoryprefix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglshascategoryprefix}[3]{% - \ifcsdef{mglsprefix@#1}{#2}{#3}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsusecategoryprefix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsusecategoryprefix}[1]{% - \csuse{mglsprefix@#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsprefix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsprefix}{% - \ifdefempty\mglscurrentcategory - {\mglscurrentprefix}% - {% - \mglshascategoryprefix{\mglscurrentcategory}% - {\mglsusecategoryprefix{\mglscurrentcategory}}% - {\mglscurrentprefix}% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsdefcategorysuffix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsdefcategorysuffix}[2]{% - \csdef{mglssuffix@#1}{#2}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglshascategorysuffix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglshascategorysuffix}[3]{% - \ifcsdef{mglssuffix@#1}{#2}{#3}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsusecategorysuffix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglsusecategorysuffix}[1]{% - \csuse{mglssuffix@#1}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglssuffix} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglssuffix}{% - \ifdefempty\mglscurrentcategory - {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% - {% - \mglshascategorysuffix{\mglscurrentcategory}% - {\mglsusecategorysuffix{\mglscurrentcategory}}% - {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglselementprehook} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglselementprehook}{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglselementposthook} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mglselementposthook}{} -% \end{macrocode} -%\end{macro} -% -%Separators. -%\begin{macro}{\glscombinedsep} -%\changes{1.48}{2021-11-22}{new} -%Separator between two elements that have been marked as used. -%This takes the two element labels as arguments. -% \begin{macrocode} -\newcommand*{\glscombinedsep}[2]{% - \glshasattribute{#1}{combinedsep}% - {\glsgetattribute{#1}{combinedsep}}% - { }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glscombinedfirstsepfirst} -%\changes{1.48}{2021-11-22}{new} -%Separator following and preceding a first use. -% \begin{macrocode} -\newcommand*{\glscombinedfirstsepfirst}[2]{% - \glshasattribute{#1}{combinedfirstsepfirst}% - {\glsgetattribute{#1}{combinedfirstsepfirst}}% - {\glscombinedsep{#1}{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glscombinedfirstsep} -%\changes{1.48}{2021-11-22}{new} -%Separator following a first use. -% \begin{macrocode} -\newcommand*{\glscombinedfirstsep}[2]{% - \glshasattribute{#1}{combinedfirstsep}% - {\glsgetattribute{#1}{combinedfirstsep}}% - {\glscombinedsep{#1}{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glscombinedsepfirst} -%\changes{1.48}{2021-11-22}{new} -%Separator preceding a first use. -% \begin{macrocode} -\newcommand*{\glscombinedsepfirst}[2]{% - \glshasattribute{#1}{combinedsepfirst}% - {\glsgetattribute{#1}{combinedsepfirst}}% - {\glscombinedsep{#1}{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glssetcombinedsepabbrvnbsp} -%\changes{1.48}{2021-11-22}{new} -%Provide shortcut for using non-breakable space following an -%abbreviation that has already been used. -% \begin{macrocode} -\newcommand*{\glssetcombinedsepabbrvnbsp}{% - \renewcommand*{\glscombinedsep}[2]{% - \glshasattribute{##1}{combinedsep}% - {\glsgetattribute{##1}{combinedsep}}% - {\ifhasshort{##1}{~}{ }}% - }% - \renewcommand*{\glscombinedsepfirst}[2]{% - \glshasattribute{##1}{combinedsepfirst}% - {\glsgetattribute{##1}{combinedsepfirst}}% - {\ifhasshort{##1}{~}{ }}% - }% - \renewcommand*{\glscombinedfirstsep}[2]{% - \glshasattribute{##1}{combinedfirstsep}% - {\glsgetattribute{##1}{combinedfirstsep}}% - { }% - }% - \renewcommand*{\glscombinedfirstsepfirst}[2]{% - \glshasattribute{##1}{combinedfirstsepfirst}% - {\glsgetattribute{##1}{combinedfirstsepfirst}}% - { }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glssetcombinedsepabbrvnone} -%\changes{1.48}{2021-11-22}{new} -%Provide shortcut for using nothing if either on next use are -%abbreviations (otherwise use space). -% \begin{macrocode} -\newcommand*{\glssetcombinedsepabbrvnone}{% - \renewcommand*{\glscombinedsep}[2]{% - \glshasattribute{##1}{combinedsep}% - {\glsgetattribute{##1}{combinedsep}}% - {\ifhasshort{##1}{}{\ifhasshort{##2}{}{ }}}% - }% - \renewcommand*{\glscombinedsepfirst}[2]{% - \glshasattribute{##1}{combinedsepfirst}% - {\glsgetattribute{##1}{combinedsepfirst}}% - {\ifhasshort{##1}{}{ }}% - }% - \renewcommand*{\glscombinedfirstsep}[2]{% - \glshasattribute{##1}{combinedfirstsep}% - {\glsgetattribute{##1}{combinedfirstsep}}% - {\ifhasshort{##2}{}{ }}% - }% - \renewcommand*{\glscombinedfirstsepfirst}[2]{% - \glshasattribute{##1}{combinedfirstsepfirst}% - {\glsgetattribute{##1}{combinedfirstsepfirst}}% - { }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glssetcombinedsepnarrow} -%\changes{1.48}{2021-11-22}{new} -%Measures both. -% \begin{macrocode} -\newcommand*{\glssetcombinedsepnarrow}[2]{% - \renewcommand*{\glscombinedsep}[2]{% - \glshasattribute{##1}{combinedsep}% - {\glsgetattribute{##1}{combinedsep}}% - {% - \ifhasshort{##1}% - {\settowidth{\dimen@}{\glsentryshort{##1}}}% - {\settowidth{\dimen@}{\glsentrytext{##1}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \ifhasshort{##2}% - {\settowidth{\dimen@}{\glsentryshort{##2}}}% - {\settowidth{\dimen@}{\glsentrytext{##2}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \space - \fi - \fi - }% - }% - \renewcommand*{\glscombinedsepfirst}[2]{% - \glshasattribute{##1}{combinedsepfirst}% - {\glsgetattribute{##1}{combinedsepfirst}}% - {% - \ifhasshort{##1}% - {\settowidth{\dimen@}{\glsentryshort{##1}}}% - {\settowidth{\dimen@}{\glsentrytext{##1}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \ifhaslong{##2}% - {\settowidth{\dimen@}{\glsentrylong{##2}}}% - {\settowidth{\dimen@}{\glsentryfirst{##2}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \space - \fi - \fi - }% - }% - \renewcommand*{\glscombinedfirstsep}[2]{% - \glshasattribute{##1}{combinedfirstsep}% - {\glsgetattribute{##1}{combinedfirstsep}}% - {% - \ifhaslong{##1}% - {\settowidth{\dimen@}{\glsentrylong{##1}}}% - {\settowidth{\dimen@}{\glsentryfirst{##1}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \ifhasshort{##2}% - {\settowidth{\dimen@}{\glsentryshort{##2}}}% - {\settowidth{\dimen@}{\glsentrytext{##2}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \space - \fi - \fi - }% - }% - \renewcommand*{\glscombinedfirstsepfirst}[2]{% - \glshasattribute{##1}{combinedfirstsepfirst}% - {\glsgetattribute{##1}{combinedfirstsepfirst}}% - {% - \ifhaslong{##1}% - {\settowidth{\dimen@}{\glsentrylong{##1}}}% - {\settowidth{\dimen@}{\glsentryfirst{##1}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \ifhaslong{##2}% - {\settowidth{\dimen@}{\glsentrylong{##2}}}% - {\settowidth{\dimen@}{\glsentryfirst{##2}}}% - \ifdim\dimen@<#1\relax - #2% - \else - \space - \fi - \fi - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsxtr@mglswrite} -%\changes{1.48}{2021-11-22}{new} -%Write information to the aux file for \app{bib2gls} to pick up, but -%only need to do it once per label since it only indicates which multi-entry -%has been referenced without any additional information. -% \begin{macrocode} -\newcommand{\glsxtrmglswrite}[1]{% - \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off - \else - \protected@edef\@glsxtr@mglslabel{#1}% - \ifdef\@glsxtr@mglsreflist - {% - \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}% - {\@glsxtr@mglsreflist}{}% - {% - \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}% - \if@mgls@writeseparaterefs - \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% - \fi - }% - }% - {% - \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel - \if@mgls@writeseparaterefs - \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% - \else - \AtEndDocument{\immediate\protected@write\@auxout{}% - {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}% - \fi - \@mgls@disable@writeseparateref@cond - }% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsxtr@mglsrefs} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand{\@glsxtr@mglsrefs}[1]{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\if@mgls@writeseparaterefs} -%\changes{1.48}{2021-11-22}{new} -%If this conditional is changed, it must be done before the first -%instance of any \cs{mgls}-like command. -% \begin{macrocode} -\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsWriteSeparateRefsTrue} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsWriteSeparateRefsFalse} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@mgls@disable@writeseparateref@cond} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@mgls@disable@writeseparateref@cond}{% - \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}% - {Too late to use \string\mglsWriteSeparateRefsTrue}% - {\string\mglsWriteSeparateRefsTrue\space can only be used before - the first instance of any \string\mgls-like command}}% - \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}% - {Too late to use \string\mglsWriteSeparateRefsFalse}% - {\string\mglsWriteSeparateRefsFalse\space can only be used before - the first instance of any \string\mgls-like command}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\glsxtr@newmgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand{\glsxtr@newmgls}[5]{% - \edef\@glsxr@newmgls@do{% - \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}% - {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}% - \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{% - \noexpand\new@ifnextchar[% - {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}% - {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}% - }% - \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{% - \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}% - \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}% - {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}% - }% - }% - \@glsxr@newmgls@do - \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off - \else -% \end{macrocode} -% Provide a way for \app{bib2gls} to recognise the command (this will -% make it easier to add extra commands without having to modify -% \app{bib2gls}). -% \begin{macrocode} - \ifdef\@glsxtr@mglslikelist - {\xappto\@glsxtr@mglslikelist{,#1}}% - {% - \gdef\@glsxtr@mglslikelist{#1}% - \AtEndDocument{\immediate\protected@write\@auxout{}% - {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}% - }% - \fi -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsxtr@mglslike} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@glsxtr@mglslike}[1]{} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\GlsXtrMglsOrGls} -%\begin{definition} -%\cs{GlsXtrMglsOrGls}\marg{mgls cs}\marg{gls cs}\meta{modifier}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\GlsXtrMglsOrGls}[2]{% - \def\@glsxtr@mgls@or@gls@mcs{#1}% - \def\@glsxtr@mgls@or@gls@gcs{#2}% - \@ifstar{\s@GlsXtrMglsOrGls}% - {% - \@ifnextchar+{\PLUS\@firstoftwo{\p@GlsXtrMglsOrGls}}% - {% - \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls - }% - }% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\alt@GlsXtrMglsOrGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\alt@GlsXtrMglsOrGls}{ - \expandafter\@ifnextchar\@gls@alt@hyp@opt@char - {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@GlsXtrMglsOrGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@GlsXtrMglsOrGls}[2][]{% - \glsxtrifmulti{#2}% - {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}% - {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\s@GlsXtrMglsOrGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\s@GlsXtrMglsOrGls}[2][]{% - \glsxtrifmulti{#2}% - {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}% - {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\p@GlsXtrMglsOrGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\p@GlsXtrMglsOrGls}[2][]{% - \glsxtrifmulti{#2}% - {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}% - {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@alt@GlsXtrMglsOrGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{% - \glsxtrifmulti{#2}% - {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}% - {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mgls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mgls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{gls} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{glspl} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Only use \cs{glspl} for the main element, otherwise use \cs{gls}. -% \begin{macrocode} -\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mgls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mgls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{Gls} for first element and \cs{gls} for others. -% \begin{macrocode} -\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{Glspl} for first element and \cs{glspl} for others. -% \begin{macrocode} -\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Upper case the first element, no case change for others. -%Use plural for the main element only. -% \begin{macrocode} -\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{Gls} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGlspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGlspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{Glspl} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGlsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGlsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Start all elements with upper case. Only use plural for main -%element. -% \begin{macrocode} -\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGLS} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGLS}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{GLS} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGLSpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGLSpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{GLSpl} for all elements. -% \begin{macrocode} -\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGLSmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGLSmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Upper case all elements. Only use plural for main element. -% \begin{macrocode} -\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glslongortext@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glslongortext#1#2[#3]{% - \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsshortortext@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glsshortortext#1#2[#3]{% - \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glsfullorfirst@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glsfullorfirst#1#2[#3]{% - \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Glslongortext@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Glslongortext#1#2[#3]{% - \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Glsshortortext@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Glsshortortext#1#2[#3]{% - \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Glsfullorfirst@} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Glsfullorfirst#1#2[#3]{% - \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsshort} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsshort}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use short or text for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mglsshort}% -{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglslong} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglslong}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use long or text for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mglslong}% -{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsfull} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsfull}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use full or first for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mglsfull}% -{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglsshort} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglsshort}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use short or text for all elements with initial cap on first element. -% \begin{macrocode} -\glsxtr@newmgls{Mglsshort}% -{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglslong} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglslong}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use long or text for all elements with initial cap on first -% element. -% \begin{macrocode} -\glsxtr@newmgls{Mglslong}% -{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglsfull} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglsfull}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use full or first for all elements with initial cap on first -% element. -% \begin{macrocode} -\glsxtr@newmgls{Mglsfull}% -{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsname} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsname}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use name for all elements. -% \begin{macrocode} -\glsxtr@newmgls{mglsname}% - {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglsname} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglsname}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use name for all elements with initial cap on first -% element. -% \begin{macrocode} -\glsxtr@newmgls{Mglsname}% - {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGlsname} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGlsname}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use name for all elements with initial cap on all -% elements. -% \begin{macrocode} -\glsxtr@newmgls{MGlsname}% - {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glssymbolorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glssymbolorgls#1#2[#3]{% - \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@glssymbolorGls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glssymbolorGls#1#2[#3]{% - \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglssymbol} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglssymbol}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{glssymbol} if the \gloskey{symbol} key is set otherwise -% use \cs{gls}. -% \begin{macrocode} -\glsxtr@newmgls{mglssymbol}% - {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglssymbol} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglssymbol}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% As above but initial the first element if it's not a symbol. -% \begin{macrocode} -\glsxtr@newmgls{Mglssymbol}% - {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGlssymbol} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGlssymbol}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% As above but initial each element if it's not a symbol. -% \begin{macrocode} -\glsxtr@newmgls{MGlssymbol}% - {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsfield} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand{\mglsfield}{useri} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\@glsfieldorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@glsfieldorgls#1#2[#3]{% - \glsxtrifhasfield{\mglsfield}{#2}% - {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}% - {\@gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Glsfieldorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Glsfieldorgls#1#2[#3]{% - \glsxtrifhasfield{\mglsfield}{#2}% - {\@glsdisp[#1]{#2}{\xmakefirstuc\glscurrentfieldvalue#3}}% - {\@Gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mglsusefield} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mglsusefield}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use the field given by \cs{\mglsfield}. -% \begin{macrocode} -\glsxtr@newmgls{mglsusefield}% - {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mglsusefield} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mglsusefield}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% As above but use initial cap for first element only. -% \begin{macrocode} -\glsxtr@newmgls{Mglsusefield}% - {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MGlsusefield} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MGlsusefield}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% As above but use initial cap for all elements. -% \begin{macrocode} -\glsxtr@newmgls{MGlsusefield}% - {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}% -% \end{macrocode} -%\end{macro} -% -% Use commands provided by \sty{glossaries-prefix} if it has been -% loaded. -%\begin{macro}{\mpglsWarning} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\newcommand*{\mpglsWarning}{% - \GlossariesExtraWarning{glossaries-prefix.sty is required for - \string\mpgls\space family of commands (either load after - glossaries-extra.sty or use the `prefix' package option)}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@pglsorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@pglsorgls#1#2[#3]{% - \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@pglsorglspl} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@pglsorglspl#1#2[#3]{% - \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Pglsorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Pglsorgls#1#2[#3]{% - \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@pglsorglspl} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@pglsorglspl#1#2[#3]{% - \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@Pglsorglspl} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@Pglsorglspl#1#2[#3]{% - \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@PGLSorgls} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@PGLSorgls#1#2[#3]{% - \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@PGLSorglspl} -%\changes{1.48}{2021-11-22}{new} -% \begin{macrocode} -\def\@PGLSorglspl#1#2[#3]{% - \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}% -} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mpgls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mpgls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{pgls} for the first element and \cs{gls} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mpglspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mpglspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{pglspl} for the first element and \cs{glspl} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\mpglsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{mpglsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Only use plural for main element and only use prefixing command for -%first element. -% \begin{macrocode} -\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mpgls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mpgls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{Pgls} for the first element and \cs{gls} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mpglspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mpglspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{Pglspl} for the first element and \cs{glspl} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\Mpglsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{Mpglsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Only use plural for main element and only use first letter -%uppercase prefixing command for first element. -% \begin{macrocode} -\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGls} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGls}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Use \cs{Pgls} for the first element and \cs{Gls} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGlspl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGlspl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{Pglspl} for the first element and \cs{Glspl} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGlsmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGlsmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Only use plural for main element and first letter uppercase all -%elements. -% \begin{macrocode} -\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGLS} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGLS}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{PGLS} for the first element and \cs{GLS} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGLSpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGLSpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -% Use \cs{PGLSpl} for the first element and \cs{GLSpl} for the remainder. -% \begin{macrocode} -\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}% -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\MPGLSmainpl} -%\changes{1.48}{2021-11-22}{new} -%\begin{definition} -%\cs{MPGLSmainpl}\oarg{options}\marg{label}\oarg{insert} -%\end{definition} -%Only use plural for main element and uppercase all elements. -% \begin{macrocode} -\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}% -% \end{macrocode} -%\end{macro} -% -%Not currently implementing any other variations. -% -%\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> +%</glossaries-extra-abbrstyles.def> % \end{macrocode} %\fi %\iffalse @@ -30065,13 +39544,21 @@ defined}{}% %<*glossaries-extra-bib2gls.sty> % \end{macrocode} %\fi +%\section{Commands Specific to bib2gls (glossaries-extra-bib2gls.sty)} %\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}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-bib2gls-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossaries-extra-bib2gls}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} %Provide convenient shortcut commands for predefined glossary types. %\begin{macro}{\printunsrtacronyms} @@ -30152,6 +39639,16 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\IfTeXParserLib} +%\changes{1.49}{2022-10-14}{new} +%This is defined by the \TeX\ parser library to behave like +%\cs{@firstoftwo}. May be used to provide different code in fields +%that may be interpreted. +% \begin{macrocode} +\providecommand{\IfTeXParserLib}[2]{#2} +% \end{macrocode} +%\end{macro} +% %These are some convenient macros for use with custom rules. %\begin{macro}{\glshex} %\changes{1.21}{2017-11-03}{new} @@ -30167,6 +39664,16 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glshashchar} +%\changes{1.49}{2022-10-14}{new} +% Expands to a literal hash character (similar to \cs{glsbackslash}) +% \begin{macrocode} +\ifdef\glshashchar +{} +{\edef\glshashchar{\expandafter\@gobble\string\#}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrIfHasNonZeroChildCount} %\changes{1.31}{2018-05-09}{new} %\changes{1.47}{2021-11-04}{added starred version} @@ -30234,7 +39741,13 @@ defined}{}% % %\begin{macro}{\glsxtr@wrglossarylocation} %\changes{1.29}{2018-04-09}{new} +%\begin{definition} +%\cs{glsxtr@wrglossarylocation}\marg{wr-loc}\marg{page} +%\end{definition} %For use with \pkgopt{indexcounter} and \app{bib2gls}. +%This just expands to \meta{wr-loc} to allow \cs{glsnoidxdisplayloc} +%to obtain the hyperlink target. The page number obtained when +%\app{bib2gls} parses the aux file. % \begin{macrocode} \newcommand*{\glsxtr@wrglossarylocation}[2]{#1} % \end{macrocode} @@ -30276,6 +39789,7 @@ defined}{}% % %\begin{macro}{\GlsXtrDualBackLink} %\changes{1.30}{2018-04-25}{new} +%\changes{1.49}{2022-10-14}{corrected false part} %\begin{definition} %\cs{GlsXtrDualBackLink}\marg{text}\marg{label} %\end{definition} @@ -30284,7 +39798,7 @@ defined}{}% \newcommand*{\GlsXtrDualBackLink}[2]{% \glsxtrifhasfield{\GlsXtrDualField}{#2}% {\glshyperlink[#1]{\glscurrentfieldvalue}}% - {#2}% + {#1}% } % \end{macrocode} %\end{macro} @@ -30395,26 +39909,34 @@ defined}{}% { % \end{macrocode} % Default action uses \meta{hcounter}. Equations and pages typically don't -% have a title, so check the counter name (otherwise the title may -% section or chapter title, which may be confusing). As from v1.42, +% have a title, so check the counter name (otherwise the title may be the +% section or chapter title, which can be confusing). As from v1.42, % this now checks if the control sequence -% \cs{glsxtr\meta{counter}locfmt} is defined. +% \cs{glsxtr\meta{counter}locfmt} is defined. The prefix argument is +% redundant. % \begin{macrocode} \newcommand*{\glsxtrdisplaylocnameref}[8]{% + \def\glsxtrrecentanchor{#6}% + \def\glsxtrlocationanchor{#2.#7}% +% \end{macrocode} +% Initialise \cs{glsxtractualanchor}: +% \begin{macrocode} + \let\glsxtractualanchor\glsxtrlocationanchor + \glsxtrsetactualanchor{#2}% \ifcsdef{glsxtr#2locfmt}% - {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#2.#7}{#8}}% + {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{\glsxtractualanchor}{#8}}% {% \ifstrempty{#5}% {% % \end{macrocode} %No title, so just use the location as the link text. % \begin{macrocode} - \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% + \glsxtrnamereflink{#3}{#4}{\glsxtractualanchor}{#8}% }% {% \ifstrequal{#2}{page}% - {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% - {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% + {\glsxtrnamereflink{#3}{#4}{\glsxtractualanchor}{#8}}% + {\glsxtrtitlednamereflink{#3}{#4}{#5}{#8}}% }% }% } @@ -30422,6 +39944,26 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtractualanchor} +%\changes{1.49}{2022-10-14}{new} +%Does nothing by default. May be redefined to override the default. +% \begin{macrocode} +\newcommand{\glsxtrsetactualanchor}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrtitlednamereflink} +%\begin{definition} +%\cs{glsxtrtitlednamereflink}\marg{format}\marg{location}\marg{title}\marg{file} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glsxtrtitlednamereflink}[4]{% + \glsxtrnamereflink{#1}{#2}{\glsxtrrecentanchor}{#4}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrequationlocfmt} %\changes{1.42}{2020-02-03}{new} %\begin{definition} @@ -30432,6 +39974,20 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrwrglossarylocfmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrwrglossarylocfmt}\marg{location}\marg{title} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrwrglossarylocfmt}[2]{% + {\@@glsxtrwrglosscountermark{#1}% + \let\glsxtr@wrglossarylocation\@secondoftwo + #1}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrnamereflink} %\changes{1.37}{2018-11-30}{new} %\begin{definition} @@ -30461,7 +40017,7 @@ defined}{}% %\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 +%\cs{glsxtrnameloclink}\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 @@ -30546,7 +40102,7 @@ defined}{}% %\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} +%As from \app{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} @@ -30677,7 +40233,7 @@ defined}{}% %\begin{definition} %\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list} %\end{definition} -%Used when \gls{bib2gls} can't determine the widest name. +%Used when \app{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 @@ -30786,10 +40342,10 @@ defined}{}% % %\begin{macro}{\@glsxtr@prefixlabellist} %\changes{1.37}{2018-11-30}{new} -%This is provided for the benefit of \gls{bib2gls}. It's possible +%This is provided for the benefit of \app{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}. +%of the list (the fallback) is the only prefix of interest for \app{bib2gls}. % \begin{macrocode} \AtBeginDocument{% \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}% @@ -30798,31 +40354,225 @@ defined}{}% % \end{macrocode} %\end{macro} % +% Before v1.49, the last label was used as a fallback, but this +% doesn't make sense when the first matching label is used when +% entries are defined. The selection should be deferred to +% \app{bib2gls}, which means passing the list of label choices to +% \app{bib2gls}. +% +%\begin{macro}{\@glsxtr@dglsnomatch} +%\changes{1.49}{2022-10-14}{new} +%No match found so record all possibilities. Requires \app{bib2gls} v3.0+. +%This will add the final insert argument but won't be able to apply +%any case-changing etc. +% \begin{macrocode} +\def\@glsxtr@dglsnomatch#1#2[#3]{% + \begingroup +% \end{macrocode} +% This is a cut-down version of \cs{@@glsxtr@record}. +% Use the fallback label in the event any hooks have to reference +% \cs{glslabel}. This is mainly to prevent an undefined control +% sequence error. It can't be relied on as the actual label. +% \begin{macrocode} + \let\glslabel\@gls@thislabel + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \let\@gls@counter\glscounter + \if@glsxtr@equations + \@glsxtr@use@equation@counter + \fi + \@gls@setdefault@glslink@opts + \@glsxtr@glslink@prekeys + \setkeys{glslink}{#1}% + \glsxtr@do@autoadd{glslink}% +% \end{macrocode} +% Can't increment associated counter. +% \begin{macrocode} + \ifKV@glslink@noindex + \GlossariesExtraWarning{Can't obtain a match for prefix + candidates: \@glsxtr@prefixedlist. Check the label spelling or rerun}% + \else + \ifdefempty{\@glsxtr@thevalue}% + {% + \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \else + \let\theHglsentrycounter\@glsxtr@theHvalue + \fi + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \let\theHglsentrycounter\@glsxtr@theHvalue + }% + \glsxtr@saveentrycounter + \@@glsxtr@dorecord\@glsxtr@prefixedlist + \glsxtr@select@entry\glsxtr@do@select@nameref@record +% \end{macrocode} +% Issue warning. +% \begin{macrocode} + \GlossariesExtraWarning{Can't obtain a match for prefix + candidates: \@glsxtr@prefixedlist. Check the label spelling, use bib2gls v3.0+ to + select entry and rerun LaTeX}% + \fi + \@glsxtrundeftag#3% + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@select@entry} +%\changes{1.49}{2022-10-14}{new} +%Instruction to \app{bib2gls} to select the first found label in the +%list. +% \begin{macrocode} +\newcommand*{\glsxtr@select@entry}[5]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@select@entry@nameref} +%\changes{1.49}{2022-10-14}{new} +%Instruction to \app{bib2gls} to select the first found label in the +%list as though it has a record. +% \begin{macrocode} +\newcommand*{\glsxtr@select@entry@nameref}[8]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtr@do@select@nameref@record} +%\changes{1.49}{2022-10-14}{new} +%Instruction to \app{bib2gls} to select the first found label in the +%list as though it has a record. +% \begin{macrocode} +\newcommand*{\glsxtr@do@select@nameref@record}[5]{% + \gls@ifnotmeasuring + {% + \protected@write\@auxout{}{\string\glsxtr@select@entry@nameref + {#1}{#2}{#3}{#4}{#5}% + {\csuse{@currentlabelname}}{\csuse{@currentHref}}% + {\theHglsentrycounter}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifGlsXtrPrefixLabelFallbackLast} +%\changes{1.49}{2022-10-14}{new} +% Determine whether the first or last label should be used as the +% fallback in the event that there's no match on any prefixes. +% \begin{macrocode} +\newif\ifGlsXtrPrefixLabelFallbackLast +\GlsXtrPrefixLabelFallbackLasttrue +% \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. +%mean that it's the first \LaTeX\ run. % \begin{macrocode} \newcommand*{\@glsxtr@get@prefixedlabel}[1]{% +% \end{macrocode} +% Grouping is used in case of a nested for loop. +% \begin{macrocode} \begingroup % \end{macrocode} +%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} %Initialise to the unprefixed label in the event that the list is %empty. -%\changes{1.46}{2021-09-20}{changed \cs{edef} to \cs{protected@edef}} % \begin{macrocode} \protected@edef\@gls@thislabel{#1}% +% \end{macrocode} +%Save the first label. +% \begin{macrocode} + \let\@glsxtr@prefixedfirstlabel\@gls@thislabel + \def\@glsxtr@set@prefixedfirstlabel{% + \let\@glsxtr@prefixedfirstlabel\@gls@thislabel + \let\@glsxtr@set@prefixedfirstlabel\relax + }% +% \end{macrocode} +%List of labels in the event that no combination is found. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty +% \end{macrocode} +% Iterate over all labels. +% \begin{macrocode} + \count@=0\relax \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do {% + \advance\count@ by 1\relax \protected@edef\@gls@thislabel{\@glsxtr@prefix#1}% - \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}% + \@glsxtr@set@prefixedfirstlabel +% \end{macrocode} +% Check if this label exists. +% \begin{macrocode} + \ifglsentryexists{\@gls@thislabel}% + {% + \@endfortrue +% \end{macrocode} +% Found a label that exists. Clear the list. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty + }% + {% +% \end{macrocode} +% Append or prepend to list. +% \begin{macrocode} + \ifdefempty\@glsxtr@prefixedlist + {\let\@glsxtr@prefixedlist\@gls@thislabel}% + {% + \ifGlsXtrPrefixLabelFallbackLast + \epreto\@glsxtr@prefixedlist{\expandonce\@gls@thislabel,}% + \else + \eappto\@glsxtr@prefixedlist{,\expandonce\@gls@thislabel}% + \fi + }% + }% }% + \if@endfor +% \end{macrocode} +% Loop ended prematurely, which means label was found. +% \begin{macrocode} + \else + \ifnum\count@>1\relax + \ifGlsXtrPrefixLabelFallbackLast + \else +% \end{macrocode} +% Fallback on first label. +% \begin{macrocode} + \let\@gls@thislabel\@glsxtr@prefixedfirstlabel + \fi + \else +% \end{macrocode} +% Only one prefix so assume that one. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty + \fi + \fi % \end{macrocode} %\changes{1.46}{2021-09-20}{changed \cs{x} to \cs{@glo@tmp}} % \begin{macrocode} - \edef\@glo@tmp{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\@glo@tmp + \edef\@glo@tmp{\endgroup + \noexpand\def\noexpand\@glsxtr@prefixedlist{\expandonce\@glsxtr@prefixedlist}% + \noexpand\def\noexpand\@gls@thislabel{\expandonce\@gls@thislabel}}\@glo@tmp +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@dgls@} +%\changes{1.49}{2022-10-14}{new} +%Used by all the \cs{dgls}-like commands to find the first match. +% \begin{macrocode} +\newcommand*{\@@dgls@}[3]{% + \@glsxtr@get@prefixedlabel{#2}% + \ifx\@glsxtr@prefixedlist\@empty + \let\@dgls@@next#3% + \else + \let\@dgls@@next\@glsxtr@dglsnomatch + \fi + \new@ifnextchar[{\@dgls@@next{#1}{\@gls@thislabel}}% + {\@dgls@@next{#1}{\@gls@thislabel}[]}% } % \end{macrocode} %\end{macro} @@ -30841,10 +40591,7 @@ defined}{}% %\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}[]}% -} +\newcommand*{\@dgls}[2][]{\@@dgls@{#1}{#2}{\@gls@}} % \end{macrocode} %\end{macro} % @@ -30857,42 +40604,35 @@ defined}{}% %\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}[]}% -} +\newcommand*{\@dglspl}[2][]{\@@dgls@{#1}{#2}{\@glspl@}} % \end{macrocode} %\end{macro} % %\begin{macro}{\dGls} % \begin{macrocode} \newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls} +\glsmfuaddmap{\dgls}{\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}[]}% -} +\newcommand*{\@dGls}[2][]{\@@dgls@{#1}{#2}{\@Gls@}} % \end{macrocode} %\end{macro} % %\begin{macro}{\dGlspl} % \begin{macrocode} \newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl} +\glsmfuaddmap{\dglspl}{\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}[]}% -} +\newcommand*{\@dGlspl}[2][]{\@@dgls@{#1}{#2}{\@Glspl@}} % \end{macrocode} %\end{macro} % @@ -30900,16 +40640,14 @@ defined}{}% %\changes{1.37}{2018-11-30}{new} % \begin{macrocode} \newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS} +\glsmfublocker{\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}[]}% -} +\newcommand*{\@dGLS}[2][]{\@@dgls@{#1}{#2}{\@GLS@}} % \end{macrocode} %\end{macro} % @@ -30917,16 +40655,14 @@ defined}{}% %\changes{1.37}{2018-11-30}{new} % \begin{macrocode} \newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl} +\glsmfublocker{\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}[]}% -} +\newcommand*{\@dGLSpl}[2][]{\@@dgls@{#1}{#2}{\@GLSpl@}} % \end{macrocode} %\end{macro} % @@ -30934,24 +40670,438 @@ defined}{}% %\changes{1.37}{2018-11-30}{new} %Like \cs{glslink} but tries the prefixes. % \begin{macrocode} -\newrobustcmd*{\dglslink}[3][]{% +\newrobustcmd*{\dglslink}{\@gls@hyp@opt\@dglslink} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dglslink} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dglslink}[3][]{% \@glsxtr@get@prefixedlabel{#2}% \glslink[#1]{\@gls@thislabel}{#3}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\dGlslink} +%\changes{1.49}{2022-10-14}{new} +%Sentence-case version to provide a mapping. +% \begin{macrocode} +\newrobustcmd*{\dGlslink}{\@gls@hyp@opt\@dGlslink} +\glsmfuaddmap{\dglslink}{\dGlslink} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGlslink} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dGlslink}[3][]{% + \dglslink[#1]{#2}{\glssentencecase{#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][]{% +\newrobustcmd*{\dglsdisp}{\@gls@hyp@opt\@dglsdisp} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dglsdisp} +%\changes{1.49}{2022-10-14}{new} +%Like \cs{glsdisp} but tries the prefixes. +% \begin{macrocode} +\newcommand*{\@dglsdisp}[3][]{% \@glsxtr@get@prefixedlabel{#2}% \glsdisp[#1]{\@gls@thislabel}{#3}% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\dGlsdisp} +%\changes{1.49}{2022-10-14}{new} +%Sentence-case version to provide a mapping. +% \begin{macrocode} +\newrobustcmd*{\dGlsdisp}{\@gls@hyp@opt\@dGlsdisp} +\glsmfuaddmap{\dglsdisp}{\dGlsdisp} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGlsdisp} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dGlsdisp}[3][]{% + \dglsdisp[#1]{#2}{\glssentencecase{#3}}% +} +% \end{macrocode} +%\end{macro} +% +%Similar to the above but searches for a match with the given field +%set. +%\begin{macro}{\@glsxtr@get@prefixedlabel@field} +%\changes{1.49}{2022-10-14}{new} +%The second argument is the field's internal label. +% \begin{macrocode} +\newcommand*{\@glsxtr@get@prefixedlabel@field}[2]{% + \protected@edef\dglsfieldcurrentfieldlabel{#2}% + \let\dglsfieldactualfieldlabel\dglsfieldcurrentfieldlabel +% \end{macrocode} +% Grouping is used in case of a nested for loop. +% \begin{macrocode} + \begingroup +% \end{macrocode} +%Initialise to the unprefixed label in the event that the list is +%empty. +% \begin{macrocode} + \protected@edef\@gls@thislabel{#1}% +% \end{macrocode} +%Save the first label. +% \begin{macrocode} + \let\@glsxtr@prefixedfirstlabel\@gls@thislabel + \def\@glsxtr@set@prefixedfirstlabel{% + \let\@glsxtr@prefixedfirstlabel\@gls@thislabel + \let\@glsxtr@set@prefixedfirstlabel\relax + }% +% \end{macrocode} +%Initialise fallback label. +% \begin{macrocode} + \let\@gls@fallbacklabel\relax +% \end{macrocode} +%List of labels in the event that no combination is found. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty +% \end{macrocode} +% Iterate over all labels. +% \begin{macrocode} + \count@=0\relax + \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do + {% + \advance\count@ by 1\relax + \protected@edef\@gls@thislabel{\@glsxtr@prefix#1}% + \@glsxtr@set@prefixedfirstlabel +% \end{macrocode} +% Check if this label exists. +% \begin{macrocode} + \ifglsentryexists{\@gls@thislabel}% + {% +% \end{macrocode} +% Found a label that exists. Has the field been set? +% \begin{macrocode} + \ifcsvoid{glo@\glsdetoklabel{\@gls@thislabel}@#2}% + {% +% \end{macrocode} +%Field hasn't been set. Has a fallback been set yet? +% \begin{macrocode} + \ifx\@gls@fallbacklabel\relax + \ifcsvoid + {glo@\glsdetoklabel{\@gls@thislabel}@\dglsfieldfallbackfieldlabel}% + {}% + {% + \let\@gls@fallbacklabel\@gls@thislabel + }% + \fi + }% + {% + \@endfortrue +% \end{macrocode} +% The field has been set. Clear the list. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty + }% + }% + {% +% \end{macrocode} +% Append or prepend to list. +% \begin{macrocode} + \ifdefempty\@glsxtr@prefixedlist + {\let\@glsxtr@prefixedlist\@gls@thislabel}% + {% + \ifGlsXtrPrefixLabelFallbackLast + \epreto\@glsxtr@prefixedlist{\expandonce\@gls@thislabel,}% + \else + \eappto\@glsxtr@prefixedlist{,\expandonce\@gls@thislabel}% + \fi + }% + }% + }% + \if@endfor +% \end{macrocode} +% Loop ended prematurely, which means label was found. +% \begin{macrocode} + \else +% \end{macrocode} +% Label not found. Was the fallback field found? +% \begin{macrocode} + \ifx\@gls@fallbacklabel\relax +% \end{macrocode} +% No field fallback found. +% \begin{macrocode} + \ifnum\count@>1\relax + \ifGlsXtrPrefixLabelFallbackLast + \else +% \end{macrocode} +% Fallback on first label. +% \begin{macrocode} + \let\@gls@thislabel\@glsxtr@prefixedfirstlabel + \fi + \else +% \end{macrocode} +% Only one prefix so assume that one. +% \begin{macrocode} + \let\@glsxtr@prefixedlist\@empty + \fi + \else +% \end{macrocode} +% Fallback field was found. +% \begin{macrocode} + \let\@gls@thislabel\@gls@fallbacklabel + \let\dglsfieldactualfieldlabel\dglsfieldfallbackfieldlabel + \fi + \fi +% \end{macrocode} +%\changes{1.46}{2021-09-20}{changed \cs{x} to \cs{@glo@tmp}} +% \begin{macrocode} + \edef\@glo@tmp{\endgroup + \noexpand\def\noexpand\@glsxtr@prefixedlist{\expandonce\@glsxtr@prefixedlist}% + \noexpand\def\noexpand\@gls@thislabel{\expandonce\@gls@thislabel}% + \noexpand\def\noexpand\dglsfieldactualfieldlabel + {\expandonce\dglsfieldactualfieldlabel}% + }% + \@glo@tmp +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@@dgls@@field} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{@@dgls@@field}\marg{options}\marg{label}\marg{field}\marg{cs} +%\end{definition} +% \begin{macrocode} +\newcommand*{\@@dgls@@field}[4]{% + \@glsxtr@get@prefixedlabel@field{#2}{#3}% + \ifx\@glsxtr@prefixedlist\@empty + \let\@dgls@@next#4% + \else + \let\@dgls@@next\@glsxtr@dglsnomatch + \fi + \new@ifnextchar[{\@dgls@@next{#1}{\@gls@thislabel}}% + {\@dgls@@next{#1}{\@gls@thislabel}[]}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglsfieldcurrentfieldlabel} +%\changes{1.49}{2022-10-14}{new} +%Set by the \cs{dglsfield} commands to the current field label. +%This is the field requested in the argument of \cs{dglsfield}. +% \begin{macrocode} +\newcommand*{\dglsfieldcurrentfieldlabel}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglsfieldfallbackfieldlabel} +%\changes{1.49}{2022-10-14}{new} +%The field to use if the required field isn't set. +% \begin{macrocode} +\newcommand*{\dglsfieldfallbackfieldlabel}{text} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglsfieldactualfieldlabel} +%\changes{1.49}{2022-10-14}{new} +%This is the field that's actually used. +% \begin{macrocode} +\newcommand*{\dglsfieldactualfieldlabel}{\dglsfieldcurrentfieldlabel} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dglsfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{dglsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\dglsfield}{\@gls@hyp@opt\@dglsfield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dglsfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dglsfield}[3][]{% + \@@dgls@@field{#1}{#2}{#3}{\@dgls@field}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dgls@field} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\def\@dgls@field#1#2[#3]{% + \@gls@field@link{#1}{#2}{\glsxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGlsfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{dGlsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\dGlsfield}{\@gls@hyp@opt\@dGlsfield} +\glsmfuaddmap{\dglsfield}{\dGlsfield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGlsfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dGlsfield}[3][]{% + \@@dgls@@field{#1}{#2}{#3}{\@dGls@field}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGls@field} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\def\@dGls@field#1#2[#3]{% + \@gls@field@link{#1}{#2}{\Glsxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\dGLSfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{dGlsfield}\oarg{options}\marg{label}\marg{field}\oarg{insert} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\dGLSfield}{\@gls@hyp@opt\@dGLSfield} +\glsmfublocker{\dGLSfield} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGLSfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@dGLSfield}[3][]{% + \@@dgls@@field{#1}{#2}{#3}{\@dGLS@field}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@dGLS@field} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\def\@dGLS@field#1#2[#3]{% + \@gls@field@link{#1}{#2}{\GLSxtrusefield{#2}{\dglsfieldactualfieldlabel}#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\d@inner@glsfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{d@inner@glsfield}\marg{default options}\marg{field}\meta{modifier}% +%\oarg{options}\marg{label}\oarg{insert} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\d@inner@glsfield}[2]{% + \ifstrempty{#1} + {\def\@d@inner@glsfield@opts{}}% + {\def\@d@inner@glsfield@opts{#1,}}% + \def\dglsfieldcurrentfieldlabel{#2}% + \@gls@hyp@opt\@d@inner@glsfield +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@d@inner@glsfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@d@inner@glsfield}[2][]{% + \expandafter\@@dgls@@field\expandafter + {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dgls@field}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\d@inner@Glsfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\d@inner@Glsfield}[2]{% + \ifstrempty{#1} + {\def\@d@inner@glsfield@opts{}}% + {\def\@d@inner@glsfield@opts{#1,}}% + \def\dglsfieldcurrentfieldlabel{#2}% + \@gls@hyp@opt\@d@inner@Glsfield +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@d@inner@Glsfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@d@inner@Glsfield}[2][]{% + \expandafter\@@dgls@@field\expandafter + {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dGls@field}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\d@inner@GLSfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\d@inner@GLSfield}[2]{% + \ifstrempty{#1} + {\def\@d@inner@glsfield@opts{}}% + {\def\@d@inner@glsfield@opts{#1,}}% + \def\dglsfieldcurrentfieldlabel{#2}% + \@gls@hyp@opt\@d@inner@GLSfield +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@d@inner@GLSfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand*{\@d@inner@GLSfield}[2][]{% + \expandafter\@@dgls@@field\expandafter + {\@d@inner@glsfield@opts#1}{#2}{\dglsfieldcurrentfieldlabel}{\@dGLS@field}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\newdglsfield} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{newdglsfield}\oarg{options}\marg{field}\marg{cs} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\newdglsfield}[3][]{% + \newrobustcmd*{#3}{\d@inner@glsfield{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\newdglsfieldlike} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{newdglsfieldlike}\oarg{options}\marg{field}\marg{cs}\marg{Cs}\marg{CS} +%\end{definition} +% \begin{macrocode} +\newrobustcmd*{\newdglsfieldlike}[5][]{% + \newrobustcmd*{#3}{\d@inner@glsfield{#1}{#2}}% + \newrobustcmd*{#4}{\d@inner@Glsfield{#1}{#2}}% + \newrobustcmd*{#5}{\d@inner@GLSfield{#1}{#2}}% + \glsmfuaddmap{#3}{#4}% + \glsmfublocker{#5}% +} +% \end{macrocode} +%\end{macro} +% %Multi (compound/combined) entry commands used by \app{bib2gls}. %\begin{macro}{\glsxtrmultientryadjustedname} %\begin{definition} @@ -31000,6 +41150,7 @@ defined}{}% \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% \egroup } +\glsmfuaddmap{\glsxtrmultientryadjustedname}{\Glsxtrmultientryadjustedname} % \end{macrocode} %\end{macro} % @@ -31019,6 +41170,7 @@ defined}{}% \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% \egroup } +\glsmfublocker{\GlsXtrmultientryadjustedname} % \end{macrocode} %\end{macro} % @@ -31038,6 +41190,7 @@ defined}{}% \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% \egroup } +\glsmfublocker{\GLSxtrmultientryadjustedname} % \end{macrocode} %\end{macro} % @@ -31122,7 +41275,7 @@ defined}{}% %\begin{macro}{\Glsxtrmultientryadjustednamefmt} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} -\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\makefirstuc{#1}} +\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\glssentencecase{#1}} % \end{macrocode} %\end{macro} % @@ -31158,14 +41311,14 @@ defined}{}% %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} \newcommand*{\GLSxtrmultientryadjustednameother}[1]{% - \mfirstucMakeUppercase{\glsentryname{#1}}} + \glsuppercase{\glsentryname{#1}}} % \end{macrocode} %\end{macro} % %\begin{macro}{\GLSxtrmultientryadjustednamefmt} %\changes{1.48}{2021-11-22}{new} % \begin{macrocode} -\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\mfirstucMakeUppercase{#1}} +\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\glsuppercase{#1}} % \end{macrocode} %\end{macro} % @@ -31406,7 +41559,7 @@ defined}{}% %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 +%by \sty{glossaries-extra} if the document has support for that %language. % %When combining these blocks of rules, remember to separate them @@ -31416,7 +41569,7 @@ defined}{}% % ;\glsxtrspacerules % ;\glsxtrnonprintablerules % ;\glsxtrcombiningdiacriticrules -% ,\glsxtrhyphenrules +% ;\glsxtrhyphenrules % <\glsxtrgeneralpuncrules % <\glsxtrdigitrules % <\glsxtrfractionrules @@ -31425,6 +41578,34 @@ defined}{}% %} %\end{verbatim} % +%\begin{macro}{\glsxtrIgnorableRules} +%\changes{1.49}{2022-10-14}{new} +%A shortcut command for common ignorable characters. +% \begin{macrocode} +\newcommand{\glsxtrIgnorableRules}{% + \glsxtrcontrolrules + \string;\glsxtrspacerules + \string;\glsxtrnonprintablerules +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralInitRules} +%\changes{1.49}{2022-10-14}{new} +%A shortcut command for common initial rules for ignorables, +%diacritics, punctuation and digits. +% \begin{macrocode} +\newcommand{\glsxtrGeneralInitRules}{% + \glsxtrIgnorableRules + \string;\glsxtrcombiningdiacriticrules + \string;\glsxtrhyphenrules + \string<\glsxtrgeneralpuncrules + \string<\glsxtrdigitrules + \string<\glsxtrfractionrules +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrcontrolrules} %\changes{1.27}{2018-02-26}{new} %These are control characters that are usually placed at the start @@ -31671,6 +41852,20 @@ defined}{}% %First set of general punctuation. % \begin{macrocode} \newcommand*{\glsxtrgeneralpuncIrules}{% + \glsxtrgeneralpuncmarksrules + \string<\glsxtrgeneralpuncaccentsrules + \string<\glsxtrgeneralpuncquoterules + \string<\glsxtrgeneralpuncbracketrules + \string<\glsxtrgeneralpuncsignrules +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncmarksrules} +%\changes{1.49}{2022-10-14}{new} +%Punctuation marks subset. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncmarksrules}{% \string'\glshex 005F\string'% underscore \string<\glshex 00AF% macron \string<\string'\glshex 002C\string'% comma @@ -31682,18 +41877,45 @@ defined}{}% \string<\glshex 00BF% inverted question mark \string<\string'\glshex 002F\string'% solidus \string<\string'\glshex 002E\string'% full stop - \string<\glshex 00B4% acute accent +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncaccentsrules} +%\changes{1.49}{2022-10-14}{new} +%Punctuation marks subset: accent characters. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncaccentsrules}{% + \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 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncquoterules} +%\changes{1.49}{2022-10-14}{new} +%Punctuation marks subset: quotes. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncquoterules}{% + \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 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncbracketrules} +%\changes{1.49}{2022-10-14}{new} +%Punctuation marks subset: brackets. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncbracketrules}{% + \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 @@ -31701,7 +41923,16 @@ defined}{}% \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 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrgeneralpuncsignrules} +%\changes{1.49}{2022-10-14}{new} +%Punctuation marks subset: signs. +% \begin{macrocode} +\newcommand*{\glsxtrgeneralpuncsignrules}{% + \glshex 00A7% section sign \string<\glshex 00B6% pilcrow sign \string<\glshex 00A9% copyright sign \string<\glshex 00AE% registered sign @@ -32078,6 +42309,115 @@ defined}{}% % \end{macrocode} %\end{macro} % +%Fragments. +%\begin{macro}{\glsxtrGeneralLatinAtoMrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet A--M. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinAtoMrules}{% + \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 +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinNtoZrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet N--Z. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinNtoZrules}{% + \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}{\glsxtrGeneralLatinAtoGrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet A--G. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinAtoGrules}{% + \glsxtrLatinA + \string<b,B% + \string<c,C% + \string<d,D% + \string<\glsxtrLatinE + \string<f,F% + \string<g,G% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinHtoMrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet H--M. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinHtoMrules}{% + \string<\glsxtrLatinH + \string<\glsxtrLatinI + \string<j,J% + \string<\glsxtrLatinK + \string<\glsxtrLatinL + \string<\glsxtrLatinM +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrGeneralLatinNtoSrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet N--S. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinNtoSrules}{% + \string<\glsxtrLatinN + \string<\glsxtrLatinO + \string<\glsxtrLatinP + \string<q,Q% + \string<r,R% + \string<\glsxtrLatinS +} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\glsxtrGeneralLatinTtoZrules} +%\changes{1.49}{2022-10-14}{new} +%Basic Latin alphabet T--Z. +% \begin{macrocode} +\newcommand*{\glsxtrGeneralLatinTtoZrules}{% + \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}{\glsxtrLatinA} %\changes{1.27}{2018-02-26}{new} % \begin{macrocode} @@ -32207,20 +42547,22 @@ defined}{}% % %\begin{macro}{\glsxtrLatinEszettSs} %\changes{1.27}{2018-02-26}{new} +%\SS=ss % \begin{macrocode} \newcommand*{\glsxtrLatinEszettSs}{% \glshex 00DF% eszett - \string=\glshex 017Fs % long S s + \string=\glshex 017Fs % "long S"s } % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrLatinEszettSz} %\changes{1.27}{2018-02-26}{new} +%\SS=sz % \begin{macrocode} \newcommand*{\glsxtrLatinEszettSz}{% \glshex 00DF% eszett - \string= \glshex 017Fz % long S z + \string= \glshex 017Fz % "long S"z } % \end{macrocode} %\end{macro} @@ -33363,7 +43705,7 @@ defined}{}% %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 +%\cs{glossariesextrasetup}.) Not recommended, but if this has been %done try to find the associated language resources. % \begin{macrocode} \ifdef\glsxtr@loaddialect @@ -33390,16 +43732,24 @@ defined}{}% %<*glossaries-extra-stylemods.sty> % \end{macrocode} %\fi -%\chapter{Style Adjustments (\styfmt{glossaries-extra-stylemods.sty})} +%\section{Style Adjustments (\sty{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} +%\subsection{Package Initialisation} % First identify package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossaries-extra-stylemods-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossaries-extra-stylemods}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} % Provide package options to automatically load required predefined % styles. The simplest method is to just test for the existence of @@ -33414,8 +43764,8 @@ defined}{}% % %\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}} +%\changes{1.38}{2018-12-01}{added \sty{glossary-longextra}} +%\changes{1.40}{2019-03-22}{added \sty{glossary-topic}} %Provide all known styles. % \begin{macrocode} \DeclareOption{all}{% @@ -33485,7 +43835,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\section{List-Like Styles} +%\subsection{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} @@ -33615,6 +43965,13 @@ defined}{}% {\glslistinit\begin{description}}{\end{description}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the list styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand*{\glossentry}[2]{% \glslistitem{##1}\glslistdesc{##1}\glslistprelocation ##2}% \renewcommand*{\subglossentry}[3]{% @@ -33665,10 +44022,15 @@ defined}{}% \ifdef{\@glsstyle@listgroup} {% % \end{macrocode} -%\begin{macro}{\glslistgroupafterheader} +%\begin{macro}{\glslistgroupheaderitem} %\changes{1.47}{2021-11-04}{new} % \begin{macrocode} \newcommand{\glslistgroupheaderitem}[2]{\item[{#2}]} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistgroupafterheader} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} \newcommand{\glslistgroupafterheader}{% \mbox{}\par\nobreak\@afterheading } @@ -33741,7 +44103,7 @@ defined}{}% {} % \end{macrocode} % -%\section{Longtable Styles} +%\subsection{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}. @@ -33754,6 +44116,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the long styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription @@ -33784,6 +44153,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the long styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline @@ -33818,6 +44194,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the long styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & @@ -33847,7 +44230,7 @@ defined}{}% %styles in \sty{glossary-long}, so no adjustments are needed for %that package. % -%\section{Long Ragged Styles} +%\subsection{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 @@ -33861,6 +44244,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the longragged styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2% @@ -33894,6 +44284,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the longragged styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline @@ -33927,6 +44324,13 @@ defined}{}% {\end{longtable}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the longragged styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & \glossentrysymbol{##1} & @@ -33951,7 +44355,7 @@ defined}{}% {} % \end{macrocode} % -%\section{Supertabular Styles} +%\subsection{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}. @@ -33965,6 +44369,13 @@ defined}{}% {\end{supertabular}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the super styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription @@ -33996,6 +44407,13 @@ defined}{}% {\end{supertabular}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the super styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline @@ -34029,6 +44447,13 @@ defined}{}% \end{supertabular}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the super styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & @@ -34053,7 +44478,7 @@ defined}{}% {} % \end{macrocode} % -%\section{Super Ragged Styles} +%\subsection{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 @@ -34068,6 +44493,13 @@ defined}{}% {\end{supertabular}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the super styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2% @@ -34101,6 +44533,13 @@ defined}{}% {\end{supertabular}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. This +% does nothing as the sub-entries don't have the name displayed for +% the super styles. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & \glossentrydesc{##1}\glspostdescription & @@ -34159,7 +44598,7 @@ defined}{}% {} % \end{macrocode} % -%\section{Inline Style} +%\subsection{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. @@ -34187,7 +44626,7 @@ defined}{}% {} % \end{macrocode} % -%\section{Tree Styles} +%\subsection{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 @@ -34232,6 +44671,17 @@ defined}{}% \newcommand{\glstreePreHeader}[2]{} % \end{macrocode} %\end{macro} +% +%\begin{macro}{\glstreeSubPreHeader} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstreeSubPreHeader}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title} +%\end{definition} +% \begin{macrocode} + \newcommand{\glstreeSubPreHeader}[5]{} +% \end{macrocode} +%\end{macro} +% % \begin{macrocode} } {} @@ -34288,6 +44738,11 @@ defined}{}% {\par}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand*{\glossentry}[2]{% \item\glsentryitem{##1}% \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% @@ -34320,14 +44775,57 @@ defined}{}% % \begin{macrocode} \ifdef{\@glsstyle@indexgroup} {% +% \end{macrocode} +% Provide formatting command for sub-headings to make it easier to +% adjust. +%\begin{macro}{\glsindexsubgroupitem} +%\begin{definition} +%\cs{glsindexsubgroupitem}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsindexsubgroupitem}[5]{% + \ifcase#2\relax +% \end{macrocode} +%This case shouldn't occur as \cs{glsgroupheading} will be used +%instead, but include for completeness. +% \begin{macrocode} + \item \glstreegroupheaderfmt{#5}% + \glstreegroupheaderskip + \or + \smallskip + \subitem \glstreegroupheaderfmt{#5}% + \smallskip + \else + \smallskip + \subsubitem \glstreegroupheaderfmt{#5}% + \smallskip + \fi + } +% \end{macrocode} +%\end{macro} +% \begin{macrocode} \renewglossarystyle{indexgroup}{% \setglossarystyle{index}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glsindexsubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \@afterheading + }% } } {} @@ -34344,12 +44842,26 @@ defined}{}% \renewcommand*{\glossaryheader}{% \item\glstreenavigationfmt{\glsnavigation}% \glstreegroupheaderskip\@afterheading}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glsindexsubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + \@afterheading + }% }% } {} @@ -34368,13 +44880,13 @@ defined}{}% %\begin{macro}{\glsxtrtreepredesc} %\changes{1.46}{2021-09-20}{new} % \begin{macrocode} -\newcommand{\glsxtrtreepredesc}{\glstreepredesc} + \newcommand{\glsxtrtreepredesc}{\glstreepredesc} % \end{macrocode} %\end{macro} %\begin{macro}{\glsxtrtreechildpredesc} %\changes{1.46}{2021-09-20}{new} % \begin{macrocode} -\newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc} + \newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc} % \end{macrocode} %\end{macro} %Provide a command for use with the \glostyle{tree} styles that displays @@ -34456,6 +44968,7 @@ defined}{}% }% % \end{macrocode} %\end{macro} +%Redefine tree style. % \begin{macrocode} \renewglossarystyle{tree}{% \renewenvironment{theglossary}% @@ -34463,7 +44976,18 @@ defined}{}% \setlength{\parskip}{0pt plus 0.3pt}}% {}% \renewcommand*{\glossaryheader}{}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% +% \end{macrocode} +% Top level entry. +% \begin{macrocode} \renewcommand{\glossentry}[2]{% \hangindent0pt\relax \parindent0pt\relax @@ -34471,6 +44995,9 @@ defined}{}% \glstreesymbol{##1}% \glstreeDescLoc{##1}{##2}\par }% +% \end{macrocode} +% Sub entries. +% \begin{macrocode} \renewcommand{\subglossentry}[3]{% \hangindent##1\glstreeindent\relax \parindent##1\glstreeindent\relax @@ -34494,13 +45021,42 @@ defined}{}% % \begin{macrocode} \ifdef{\@glsstyle@treegroup} {% +% \end{macrocode} +% Provide formatting command for sub-headings to make it easier to +% adjust. +%\begin{macro}{\glstreesubgroupitem} +%\begin{definition} +%\cs{glstreesubgroupitem}\marg{previous group level}\marg{level}\marg{parent label}\marg{group label}\marg{title} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glstreesubgroupitem}[5]{% + \par\smallskip\noindent\hspace{#2\glstreeindent}% + \glstreegroupheaderfmt{#5}\smallskip\par + } +% \end{macrocode} +%\end{macro} +% Redefine treegroup style. +% \begin{macrocode} \renewglossarystyle{treegroup}{% \setglossarystyle{tree}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% \glstreegroupheaderskip\@afterheading}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glstreesubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + }% } } {} @@ -34517,6 +45073,9 @@ defined}{}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% \glstreegroupheaderskip\@afterheading}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% @@ -34524,6 +45083,16 @@ defined}{}% \glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glstreesubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + }% } } {} @@ -34581,6 +45150,7 @@ defined}{}% } % \end{macrocode} %\end{macro} +%Redefine treenoname style % \begin{macrocode} \renewglossarystyle{treenoname}{% \renewenvironment{theglossary}% @@ -34588,7 +45158,15 @@ defined}{}% \setlength{\parskip}{0pt plus 0.3pt}}% {}% \renewcommand*{\glossaryheader}{}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \hangindent0pt\relax \parindent0pt\relax @@ -34615,7 +45193,8 @@ defined}{}% % \end{macrocode} % % The \glostyle{treenonamegroup} style is redefined to discourage a page -% break after the heading. +% break after the heading. There are no sub-groups as sub-entries +% don't have the name shown. %\changes{1.21}{2017-11-03}{redefined \texttt{treenonamegroup} to discourage %breaks after group headings} % \begin{macrocode} @@ -34888,7 +45467,7 @@ defined}{}% % %\begin{macro}{\glsFindWidestTopLevelName} %CamelCase is easier for long command names. Provide a CamelCase -%synonym of \ics{glsfindwidesttoplevelname}. +%synonym of \cs{glsfindwidesttoplevelname}. % \begin{macrocode} \let\glsFindWidestTopLevelName\glsfindwidesttoplevelname % \end{macrocode} @@ -35164,7 +45743,7 @@ defined}{}% %\begin{macro}{\glsFindWidestUsedAnyNameSymbolLocation} %\changes{1.05}{2016-06-10}{new} % Like the \cs{glsFindWidestUsedAnyNameSymbol} but also measures the -% location list. This requires \ics{glsentrynumberlist}. +% location list. This requires \cs{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 @@ -35280,7 +45859,7 @@ defined}{}% %\begin{macro}{\glsFindWidestAnyNameLocation} %\changes{1.05}{2016-06-10}{new} % Like the \cs{glsFindWidestAnyNameLocation} but doesn't -% check the \gls{firstuse} flag. +% check the first use flag. % \begin{macrocode} \newrobustcmd*{\glsFindWidestAnyNameLocation}[2][\@glo@types]{% \dimen@=0pt\relax @@ -35369,6 +45948,11 @@ defined}{}% {\par}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{}% \renewcommand{\glossentry}[2]{% \ifnum\@gls@prevlevel=0\relax \else @@ -35426,7 +46010,24 @@ defined}{}% %breaks after group headings} % \begin{macrocode} \ifdef{\@glsstyle@alttreegroup} -{% +{ +% \end{macrocode} +%\begin{macro}{\glsalttreesubgroupitem} +%\begin{definition} +%\cs{glsalttreesubgroupheader}\marg{previous group level}\marg{group +%level}\marg{parent label}\marg{group label}\marg{title}\marg{width} +%\end{definition} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} + \newcommand*{\glsalttreesubgroupheader}[6]{% + \par\smallskip + \makebox[0pt][r]{\glstreenamebox{#6}% + {\glstreegroupheaderfmt{#5}}}% + \smallskip\par + } +% \end{macrocode} +%\end{macro} +% \begin{macrocode} \renewglossarystyle{alttreegroup}{% \setglossarystyle{alttree}% \renewcommand{\glsgroupheading}[1]{\par @@ -35442,6 +46043,52 @@ defined}{}% % \begin{macrocode} \glstreegroupheaderskip }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% +% \end{macrocode} +%This is similar to \cs{subglossentry} +% \begin{macrocode} + \ifnum\@gls@prevlevel=##2\relax + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \ifnum\@gls@prevlevel<##2\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##2}% + \glsalttreesubgroupheader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}{\gls@tmplen}% + \def\@gls@prevlevel{##2}% + \par + }% }% }% {% @@ -35481,13 +46128,60 @@ defined}{}% % \begin{macrocode} \glstreegroupheaderskip }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% +% \end{macrocode} +%This is similar to \cs{subglossentry} +% \begin{macrocode} + \ifnum\@gls@prevlevel=##2\relax + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \ifnum\@gls@prevlevel<##2\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##2}% + \glsalttreesubgroupheader{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}% + \def\@gls@prevlevel{##2}% + \par + }% } }% {% } % \end{macrocode} % -%\section{Multicolumn Styles} +%\subsection{Multicolumn Styles} %Adjust \glostyle{mcolindexgroup} to discourage page breaks after %the group headings. %\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexgroup} to discourage @@ -35497,12 +46191,25 @@ defined}{}% {% \renewglossarystyle{mcolindexgroup}{% \setglossarystyle{mcolindex}% +% \end{macrocode} +% Group heading as \glostyle{indexgroup}. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glsindexsubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \@afterheading + }% } }% {% @@ -35523,6 +46230,9 @@ defined}{}% % \begin{macrocode} \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% @@ -35530,6 +46240,17 @@ defined}{}% {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glsindexsubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + \@afterheading + }% } }% {% @@ -35550,6 +46271,9 @@ defined}{}% \setlength{\parskip}{0pt plus 0.3pt}% \let\item\glstreeitem}% {\end{multicols}}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% @@ -35557,6 +46281,17 @@ defined}{}% {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glsindexsubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + \@afterheading + }% } }% {% @@ -35570,12 +46305,24 @@ defined}{}% {% \renewglossarystyle{mcoltreegroup}{% \setglossarystyle{mcoltree}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glstreesubgroupitem{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + }% } }% {% @@ -35593,6 +46340,9 @@ defined}{}% \par\noindent\glstreenavigationfmt{\glsnavigation}% \glstreegroupheaderskip }% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% @@ -35600,6 +46350,16 @@ defined}{}% \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glstreesubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + }% } }% {% @@ -35621,6 +46381,9 @@ defined}{}% \setlength{\parskip}{0pt plus 0.3pt}% }% {\end{multicols}}% +% \end{macrocode} +% Group heading. +% \begin{macrocode} \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% @@ -35628,6 +46391,16 @@ defined}{}% \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% + \glstreesubgroupitem{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}% + }% } }% {% @@ -35636,6 +46409,8 @@ defined}{}% %Similarly for \glostyle{mcoltreenonamegroup}. %\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamegroup} to discourage %breaks after group headings} +%There are no sub-groups for this style as it doesn't show the name +%of the child entries. % \begin{macrocode} \ifdef{\@glsstyle@mcoltreenonamegroup} {% @@ -35742,6 +46517,52 @@ defined}{}% \glstreegroupheaderfmt{\glsxtr@grptitle}% \glstreegroupheaderskip }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% +% \end{macrocode} +%This is similar to \cs{subglossentry} +% \begin{macrocode} + \ifnum\@gls@prevlevel=##2\relax + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \ifnum\@gls@prevlevel<##2\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##2}% + \glsalttreesubgroupheader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}{\gls@tmplen}% + \def\@gls@prevlevel{##2}% + \par + }% } }% {% @@ -35773,6 +46594,53 @@ defined}{}% \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% +% \end{macrocode} +%This is similar to \cs{subglossentry} +% \begin{macrocode} + \ifnum\@gls@prevlevel=##2\relax + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \ifnum\@gls@prevlevel<##2\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##2}% + \glsalttreesubgroupheader{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}% + \def\@gls@prevlevel{##2}% + \par + }% } }% {% @@ -35804,6 +46672,53 @@ defined}{}% \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% \glstreegroupheaderskip }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% + \glsxtrgetgrouptitle{##4}{\glsxtr@grptitle}% + \glstreeSubPreHeader{##1}{##2}{##3}{##4}{\glsxtr@grptitle}% +% \end{macrocode} +%This is similar to \cs{subglossentry} +% \begin{macrocode} + \ifnum\@gls@prevlevel=##2\relax + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \ifnum\@gls@prevlevel<##2\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \ifnum\@gls@prevlevel=0\relax + \glsxtrComputeTreeIndent{##2}% + \else + \ifcsundef{@glswidestname\romannumeral##2}% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##2\endcsname\space}}% + }% + \fi + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \glsxtrAltTreeSetSubHangIndent{##2}% + \glsalttreesubgroupheader{##1}{##2}{##3}{##4}% + {\glsnavhypertarget{##4}{\glsxtr@grptitle}}{\gls@tmplen}% + \def\@gls@prevlevel{##2}% + \par + }% } }% {% @@ -35827,12 +46742,19 @@ defined}{}% %<*glossary-bookindex.sty> % \end{macrocode} %\fi -%\chapter{bookindex style (\styfmt{glossary-bookindex.sty})} +%\section{bookindex style (\sty{glossary-bookindex.sty})} %\changes{1.21}{2017-11-03}{new} -%\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-bookindex}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossary-bookindex-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossary-bookindex}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -35957,7 +46879,7 @@ defined}{}% %\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 +%At the end of a letter group. The argument is the label of the last %top-level entry. % \begin{macrocode} \newcommand{\glsxtrbookindexatendgroup}[1]{} @@ -35965,7 +46887,7 @@ defined}{}% %\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 +%At the end of a letter group. The argument is the label of the last %level~1 entry. % \begin{macrocode} \newcommand{\glsxtrbookindexsubatendgroup}[1]{} @@ -35973,7 +46895,7 @@ defined}{}% %\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 +%At the end of a letter group. The argument is the label of the last %level~2 entry. % \begin{macrocode} \newcommand{\glsxtrbookindexsubsubatendgroup}[1]{} @@ -35988,16 +46910,70 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrbookindexpregroupskip} +%\changes{1.49}{2022-10-14}{new} +%After group header. The argument is the skip that would normally +%be inserted if there wasn't a group header. +% \begin{macrocode} +\newcommand{\glsxtrbookindexpregroupskip}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexpostgroupskip} +%\changes{1.49}{2022-10-14}{new} +%After group header. +% \begin{macrocode} +\newcommand{\glsxtrbookindexpostgroupskip}{\indexspace} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexpresubgroupskip} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glsxtrbookindexpresubgroupskip}\marg{default}\marg{prev group +%level}\marg{group level} +%\end{definition} +%Before sub-group separator. +%The first argument is the skip that would normally be used at this +%point if there wasn't a header. +% \begin{macrocode} +\newcommand{\glsxtrbookindexpresubgroupskip}[3]{\par\medskip} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrbookindexpostsubgroupskip} +%\changes{1.49}{2022-10-14}{new} +%After sub-group separator. +% \begin{macrocode} +\newcommand{\glsxtrbookindexpostsubgroupskip}[2]{\par\medskip} +% \end{macrocode} +%\end{macro} +% %Format group title. %\begin{macro}{\glsxtrbookindexformatheader} %\changes{1.21}{2017-11-03}{new} -%Group separator. +%Group header. % \begin{macrocode} \newcommand*{\glsxtrbookindexformatheader}[1]{% \par{\centering\glstreegroupheaderfmt{#1}\par}% } % \end{macrocode} %\end{macro} +%Format sub-group title. +%\begin{macro}{\glsxtrbookindexformatsubheader} +%\changes{1.49}{2022-10-14}{new} +%Sub-group header. This defaults to the same format as the +%top-level group. +% \begin{macrocode} +\newcommand*{\glsxtrbookindexformatsubheader}[5]{% + \ifnum#2>1\relax + \glstreesubsubitem\glstreegroupheaderfmt{#5}% + \else + \glstreesubitem\glstreegroupheaderfmt{#5}% + \fi +} +% \end{macrocode} +%\end{macro} %\begin{macro}{\glsxtrbookindexbookmark} %\changes{1.21}{2017-11-03}{new} %Book mark group heading if supported. @@ -36016,6 +46992,24 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrbookindexsubbookmark} +%\changes{1.49}{2022-10-14}{new} +%Book mark sub-group heading if supported. +% \begin{macrocode} +\ifdef\pdfbookmark +{% + \newcommand*{\glsxtrbookindexsubbookmark}[3]{% + \ifdefstring{\@@glossarysec}{chapter}% + {\expandafter\pdfbookmark\expandafter[\number\numexpr#1+1]{#3}{#2}}% + {\expandafter\pdfbookmark\expandafter[\number\numexpr#1+2]{#3}{#2}}% + } +} +{% + \newcommand*{\glsxtrbookindexsubbookmark}[3]{} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrbookindexbookmarkprefix} %\changes{1.42}{2020-02-03}{new} %Make the bookmark label prefix used for letter groups depend on the glossary label @@ -36039,6 +47033,7 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{style}{bookindex} %Define the style. % \begin{macrocode} \newglossarystyle{bookindex}{% @@ -36114,10 +47109,15 @@ defined}{}% \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep \let\@glsxtr@bookindex@subbetween\@gobble \let\@glsxtr@bookindex@subsubbetween\@gobble - \edef\@glsxtr@bookindex@between{% +% \end{macrocode} +%The second argument of \cs{glsxtrbookindexbetween} will be supplied +%as the argument to \cs{@glsxtr@bookindex@between}. +%\changes{1.49}{2022-10-14}{replaced \cs{edef} with \cs{protected@edef}} +% \begin{macrocode} + \protected@edef\@glsxtr@bookindex@between{% \noexpand\glsxtrbookindexbetween{##1}% }% - \edef\@glsxtr@bookindex@atendgroup{% + \protected@edef\@glsxtr@bookindex@atendgroup{% \noexpand\glsxtrbookindexatendgroup{##1}% }% \let\@glsxtr@bookindex@subatendgroup\relax @@ -36203,7 +47203,7 @@ defined}{}% \@glsxtr@bookindex@subsubatendgroup \@glsxtr@bookindex@subatendgroup \@glsxtr@bookindex@atendgroup - \@glsxtr@bookindexgroupskip + \glsxtrbookindexpregroupskip\@glsxtr@bookindexgroupskip % \end{macrocode} % Update separators. % \begin{macrocode} @@ -36226,10 +47226,45 @@ defined}{}% % Format the group title. % \begin{macrocode} \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}% - \nopagebreak\indexspace\nopagebreak\@afterheading + \nopagebreak\glsxtrbookindexpostgroupskip\nopagebreak\@afterheading }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}[4]{% +% \end{macrocode} +% Do end group hooks. +% \begin{macrocode} + \@glsxtr@bookindex@subsubatendgroup + \@glsxtr@bookindex@subatendgroup + \@glsxtr@bookindex@atendgroup + \glsxtrbookindexpresubgroupskip\@glsxtr@bookindexgroupskip{##1}{##2}% +% \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} +% Get group title. +% \begin{macrocode} + \glsxtrgetgrouptitle{##4}{\glsxtrcurrentgrptitle}% +% \end{macrocode} +% Do the PDF bookmark if supported. +% \begin{macrocode} + \glsxtrbookindexsubbookmark{##2}{##4}{\glsxtrcurrentgrptitle}% +% \end{macrocode} +% Format the group title. +% \begin{macrocode} + \glsxtrbookindexformatsubheader{##1}{##2}{##3}{##4}{\glsxtrcurrentgrptitle}% + \nopagebreak\glsxtrbookindexpostsubgroupskip{##1}{##2}\nopagebreak\@afterheading + } } % \end{macrocode} +%\end{style} % 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 @@ -36322,13 +47357,20 @@ defined}{}% %<*glossary-longextra.sty> % \end{macrocode} %\fi -%\chapter{longextra styles (\styfmt{glossary-longextra.sty})} +%\section{longextra styles (\sty{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}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossary-longextra-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossary-longextra}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -36373,6 +47415,35 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraSymbolTargetFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSymbolTargetFmt}\marg{label} +%\end{definition} +%Governs the way the symbol is displayed if it needs to include the +%target. +% \begin{macrocode} +\newcommand{\glslongextraSymbolTargetFmt}[1]{% + \glsentryitem{#1}\glstarget{#1}{\glslongextraSymbolFmt{#1}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymbolOrName} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSymbolOrName}\marg{label} +%\end{definition} +%Governs the way the symbol is displayed if it needs to include the +%target. +% \begin{macrocode} +\newcommand{\glslongextraSymbolOrName}[1]{% + \ifglshassymbol{#1}% + {\glslongextraSymbolTargetFmt{#1}}% + {\glslongextraNameFmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glslongextraLocationFmt} %\changes{1.37}{2018-11-30}{new} %\begin{definition} @@ -36384,6 +47455,34 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraShortTargetFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraShortTargetFmt}\marg{label} +%\end{definition} +%Governs the way the short form is displayed if it needs to include the +%target. +% \begin{macrocode} +\newcommand{\glslongextraShortTargetFmt}[1]{% + \glsentryitem{#1}\glstarget{#1}{{\glsxtrshort[noindex,hyper=false]{#1}}}% + \glsxtrpostnamehook{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLongFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraLongFmt}\marg{label} +%\end{definition} +%Governs the way the long form is displayed. +% \begin{macrocode} +\newcommand{\glslongextraLongFmt}[1]{% + {\glsxtrlong[noindex,hyper=false]{#1}}\glspostdescription +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glslongextraSubNameFmt} %\changes{1.37}{2018-11-30}{new} %\begin{definition} @@ -36424,6 +47523,62 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraSubSymbolTargetFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSubSymbolTargetFmt}\marg{level}\marg{label} +%\end{definition} +%Governs the way the child symbol is displayed if the target is +%required. +% \begin{macrocode} +\newcommand{\glslongextraSubSymbolTargetFmt}[2]{% + \glssubentryitem{#2}\glstarget{#2}{\glslongextraSymbolFmt{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubSymbolOrName} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSubSymbolOrName}\marg{level}\marg{label} +%\end{definition} +%Shows the symbol or the name (if the symbol isn't set) as the +%target for sub-entries. +% \begin{macrocode} +\newcommand{\glslongextraSubSymbolOrName}[2]{% + \ifglshassymbol{#2}% + {\glslongextraSubSymbolTargetFmt{#1}{#2}}% + {\glslongextraSubNameFmt{#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubShortTargetFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSubShortTargetFmt}\marg{level}\marg{label} +%\end{definition} +%Governs the way the short form is displayed if it needs to include the +%target. +% \begin{macrocode} +\newcommand{\glslongextraSubShortTargetFmt}[2]{% + \glssubentryitem{#2}\glstarget{#2}{{\glsxtrshort[noindex,hyper=false]{#2}}}% + \glsxtrpostnamehook{#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSubLongFmt} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSubLongFmt}\marg{label} +%\end{definition} +%Governs the way the long form is displayed. +% \begin{macrocode} +\newcommand{\glslongextraSubLongFmt}[2]{\glslongextraLongFmt{#2}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glslongextraSubLocationFmt} %\changes{1.37}{2018-11-30}{new} %\begin{definition} @@ -36459,6 +47614,15 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraSymbolNameAlign} +%\changes{1.49}{2022-10-14}{new} +%Alignment for the symbol column when it's being used instead of the +%name. +% \begin{macrocode} +\newcommand{\glslongextraSymbolNameAlign}{l} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glslongextraLocationAlign} %\changes{1.37}{2018-11-30}{new} %Alignment for the location column. @@ -36477,6 +47641,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraSubGroupHeading} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glslongextraSubGroupHeading}\marg{number of columns}\marg{prev group level}\marg{group +%level}\marg{parent entry}\marg{group label} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glslongextraSubGroupHeading}[5]{} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glslongextraHeaderFormat} %\changes{1.37}{2018-11-30}{new} %Format for the column headers. @@ -36615,6 +47790,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraSymNoNameSetDescWidth} +%\changes{1.49}{2022-10-14}{new} +% Computes the value of \cs{glsdescwidth} for the styles that only +% have symbol and description columns. +% \begin{macrocode} +\newcommand{\glslongextraSymNoNameSetDescWidth}{% +% \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 4\cs{tabcolsep} and the symbol header width. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\linewidth-4\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 @@ -36651,6 +47845,26 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glslongextraShortNoNameSetDescWidth} +%\changes{1.49}{2022-10-14}{new} +% Computes the value of \cs{glsdescwidth} for the styles that only +% have short and long columns. The long form will essentially be +% treated like a description column. +% \begin{macrocode} +\newcommand{\glslongextraShortNoNameSetDescWidth}{% +% \end{macrocode} +% Now work out the short column width. This is assuming that the +% column title will be the widest text in the column. +% \begin{macrocode} + \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\glslongextraShortHeader}% +% \end{macrocode} +% Subtract 4\cs{tabcolsep} and the above header width. +% \begin{macrocode} + \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\ifGlsLongExtraUseTabular} %\changes{1.37}{2018-11-30}{new} %If true use \env{tabular} instead of \env{longtable}. Obviously @@ -36668,7 +47882,7 @@ defined}{}% \newcommand*{\glslongextraTabularVAlign}{c} % \end{macrocode} %\end{macro} -%\begin{abbrvstyle}{long-name-desc} +%\begin{style}{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. @@ -36705,10 +47919,21 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameDescHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{2}}% +% \end{macrocode} +%Top-level entry. +% \begin{macrocode} \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraDescFmt{##1}\tabularnewline }% +% \end{macrocode} +%Child entry. +% \begin{macrocode} \renewcommand{\subglossentry}[3]{% \glslongextraSubNameFmt{##1}{##2} & @@ -36722,7 +47947,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraNameDescLocationHeader} %\changes{1.37}{2018-11-30}{new} @@ -36756,7 +47981,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-name-desc-loc} +%\begin{style}{long-name-desc-loc} %\changes{1.37}{2018-11-30}{new} %Three columns: name, description and location list. % \begin{macrocode} @@ -36796,6 +48021,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraDescFmt{##1} & @@ -36814,7 +48044,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraDescNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -36847,7 +48077,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-desc-name} +%\begin{style}{long-desc-name} %\changes{1.37}{2018-11-30}{new} %Like \glostyle{name-desc} but swaps the columns. % \begin{macrocode} @@ -36883,6 +48113,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraDescNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{2}}% \renewcommand{\glossentry}[2]{% \glslongextraDescFmt{##1} & \glslongextraNameFmt{##1}\tabularnewline @@ -36898,7 +48133,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraLocationDescNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -36932,7 +48167,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-loc-desc-name} +%\begin{style}{long-loc-desc-name} %\changes{1.37}{2018-11-30}{new} %Three columns: location, description and name. % \begin{macrocode} @@ -36969,6 +48204,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraLocationFmt{##1}{##2} & \glslongextraDescFmt{##1} & @@ -36986,7 +48226,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraNameDescSymHeader} %\changes{1.37}{2018-11-30}{new} @@ -37020,7 +48260,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-name-desc-sym} +%\begin{style}{long-name-desc-sym} %\changes{1.37}{2018-11-30}{new} %Three column style with symbol in the third column. % \begin{macrocode} @@ -37060,6 +48300,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameDescSymHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraDescFmt{##1} & @@ -37078,7 +48323,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraNameDescSymLocationHeader} %\changes{1.37}{2018-11-30}{new} @@ -37113,7 +48358,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-name-desc-sym-loc} +%\begin{style}{long-name-desc-sym-loc} %\changes{1.37}{2018-11-30}{new} %Four columns: name, description and location % \begin{macrocode} @@ -37155,6 +48400,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}% \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraDescFmt{##1} & @@ -37175,7 +48425,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraNameSymDescHeader} %\changes{1.37}{2018-11-30}{new} @@ -37209,7 +48459,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-name-sym-desc} +%\begin{style}{long-name-sym-desc} %\changes{1.37}{2018-11-30}{new} %Three column style with symbol in the second column. % \begin{macrocode} @@ -37249,6 +48499,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameSymDescHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraSymbolFmt{##1} & @@ -37266,7 +48521,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraNameSymDescLocationHeader} %\changes{1.37}{2018-11-30}{new} @@ -37301,7 +48556,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-name-sym-desc-loc} +%\begin{style}{long-name-sym-desc-loc} %\changes{1.37}{2018-11-30}{new} %Four column style with symbol in the second column. % \begin{macrocode} @@ -37343,6 +48598,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}% \renewcommand{\glossentry}[2]{% \glslongextraNameFmt{##1} & \glslongextraSymbolFmt{##1} & @@ -37362,7 +48622,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraSymDescNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -37396,7 +48656,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-sym-desc-name} +%\begin{style}{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. @@ -37437,6 +48697,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraSymDescNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraSymbolFmt{##1} & \glslongextraDescFmt{##1} & @@ -37454,7 +48719,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraLocationSymDescNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -37489,7 +48754,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-loc-sym-desc-name} +%\begin{style}{long-loc-sym-desc-name} %\changes{1.37}{2018-11-30}{new} %Four column style with location list, symbol, description and name. % \begin{macrocode} @@ -37531,6 +48796,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}% \renewcommand{\glossentry}[2]{% \glslongextraLocationFmt{##1}{##2} & \glslongextraSymbolFmt{##1} & @@ -37550,7 +48820,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraDescSymNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -37584,7 +48854,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-desc-sym-name} +%\begin{style}{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. @@ -37625,6 +48895,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraDescSymNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% \renewcommand{\glossentry}[2]{% \glslongextraDescFmt{##1} & \glslongextraSymbolFmt{##1} & @@ -37642,7 +48917,7 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} % %\begin{macro}{\glslongextraLocationDescSymNameHeader} %\changes{1.37}{2018-11-30}{new} @@ -37677,7 +48952,7 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{abbrvstyle}{long-loc-desc-sym-name} +%\begin{style}{long-loc-desc-sym-name} %\changes{1.37}{2018-11-30}{new} %Four column style with location list, description, symbol and name. % \begin{macrocode} @@ -37719,6 +48994,11 @@ defined}{}% \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameHeader}% \fi \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{4}}% \renewcommand{\glossentry}[2]{% \glslongextraLocationFmt{##1}{##2} & \glslongextraDescFmt{##1} & @@ -37738,7 +49018,411 @@ defined}{}% \fi } % \end{macrocode} -%\end{abbrvstyle} +%\end{style} +% +%\begin{style}{long-sym-desc} +%\changes{1.49}{2022-10-14}{new} +%Two column style with symbol in the first column and description in +%the second. The name isn't shown unless the symbol is missing. +% \begin{macrocode} +\newglossarystyle{long-sym-desc}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraSymbolNameAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraSymDescTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraSymDescTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraSymbolNameAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraSymDescHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% + \renewcommand{\glossentry}[2]{% + \glslongextraSymbolOrName{##1} & + \glslongextraDescFmt{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubSymbolOrName{##1}{##2} & + \glslongextraSubDescFmt{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{style} +% +%\begin{macro}{\glslongextraSymDescHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescHeader}{% + \glslongextraSymDescTabularHeader\endhead + \glslongextraSymDescTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymDescTabularHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescTabularHeader}{% + \toprule + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraSymDescTabularFooter} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraSymDescTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{style}{long-desc-sym} +%\changes{1.49}{2022-10-14}{new} +%Two column style with description in the first column and symbol in +%the second. The name isn't shown. +% \begin{macrocode} +\newglossarystyle{long-desc-sym}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraSymNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraDescSymTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraDescSymTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraSymNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraSymbolNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraDescSymHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% + \renewcommand{\glossentry}[2]{% + \glslongextraDescFmt{##1} & + \glslongextraSymbolOrName{##1}\tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \glslongextraSubDescFmt{##1}{##2} & + \glslongextraSubSymbolOrName{##1}{##2}\tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{style} +% +%\begin{macro}{\glslongextraDescSymHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymHeader}{% + \glslongextraDescSymTabularHeader\endhead + \glslongextraDescSymTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescSymTabularHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymTabularHeader}{% + \toprule + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraDescSymTabularFooter} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraDescSymTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{style}{abbr-short-long} +%\changes{1.49}{2022-10-14}{new} +%Two column style with the short field in the first column and the +%long field in the second. The name, symbol and description aren't shown +%(although the abbreviation style may mean that they will happen to +%be shown if they are the same as the short or long field). +% \begin{macrocode} +\newglossarystyle{abbr-short-long}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraShortNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraShortLongTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraShortLongTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraShortNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraNameAlign + \expandonce\glslongextraDescAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraShortLongHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% + \renewcommand{\glossentry}[2]{% + \ifglshasshort{##1}% + {\glslongextraShortTargetFmt{##1}}% + {\glslongextraNameFmt{##1}}% + & + \ifglshaslong{##1}% + {\glslongextraLongFmt{##1}}% + {\glslongextraDescFmt{##1}}% + \tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \ifglshasshort{##2}% + {\glslongextraSubShortTargetFmt{##1}{##2}}% + {\glslongextraSubNameFmt{##1}{##2}}% + & + \ifglshaslong{##2}% + {\glslongextraSubLongFmt{##1}{##2}}% + {\glslongextraSubDescFmt{##1}{##2}}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{style} +% +%\begin{macro}{\glslongextraShortLongHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraShortLongHeader}{% + \glslongextraShortLongTabularHeader\endhead + \glslongextraShortLongTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraShortHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraShortHeader}{\entryname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslongextraLongHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraLongHeader}{\descriptionname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslongextraShortLongTabularHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraShortLongTabularHeader}{% + \toprule + \glslongextraHeaderFmt\glslongextraShortHeader & + \glslongextraHeaderFmt\glslongextraLongHeader\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraShortLongTabularFooter} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraShortLongTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{style}{abbr-long-short} +%\changes{1.49}{2022-10-14}{new} +%Two column style with the short field in the first column and the +%long field in the second. The name, symbol and description aren't shown +%(although the abbreviation style may mean that they will happen to +%be shown if they are the same as the short or long field). +% \begin{macrocode} +\newglossarystyle{abbr-long-short}% +{% + \ifGlsLongExtraUseTabular + \renewenvironment{theglossary}% + {% + \glslongextraShortNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{tabular}[\glslongextraTabularVAlign]{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {% + \glslongextraLongShortTabularFooter + \end{tabular}% + }% + \renewcommand*{\glossaryheader}{\glslongextraLongShortTabularHeader}% + \else + \renewenvironment{theglossary}% + {% + \glspatchLToutput + \glslongextraShortNoNameSetDescWidth + \edef\@glslongextra@begintab{% + \noexpand\begin{longtable}{% + \expandonce\glslongextraDescAlign + \expandonce\glslongextraNameAlign + }}% + \@glslongextra@begintab + }% + {\end{longtable}}% + \renewcommand*{\glossaryheader}{\glslongextraLongShortHeader}% + \fi + \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}% +% \end{macrocode} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glslongextraSubGroupHeading{3}}% + \renewcommand{\glossentry}[2]{% + \ifglshaslong{##1}% + {\glslongextraLongFmt{##1}}% + {\glslongextraDescFmt{##1}}% + & + \ifglshasshort{##1}% + {\glslongextraShortTargetFmt{##1}}% + {\glslongextraNameFmt{##1}}% + \tabularnewline + }% + \renewcommand{\subglossentry}[3]{% + \ifglshaslong{##2}% + {\glslongextraSubLongFmt{##1}{##2}}% + {\glslongextraSubDescFmt{##1}{##2}}% + & + \ifglshasshort{##2}% + {\glslongextraSubShortTargetFmt{##1}{##2}}% + {\glslongextraSubNameFmt{##1}{##2}}% + \tabularnewline + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}% + \fi +} +% \end{macrocode} +%\end{style} +% +%\begin{macro}{\glslongextraLongShortHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraLongShortHeader}{% + \glslongextraLongShortTabularHeader\endhead + \glslongextraLongShortTabularFooter\endfoot +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLongShortTabularHeader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraLongShortTabularHeader}{% + \toprule + \glslongextraHeaderFmt\glslongextraLongHeader & + \glslongextraHeaderFmt\glslongextraShortHeader\tabularnewline + \midrule +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glslongextraLongShortTabularFooter} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glslongextraLongShortTabularFooter}{% + \bottomrule +} +% \end{macrocode} +%\end{macro} % %\iffalse % \begin{macrocode} @@ -37750,14 +49434,21 @@ defined}{}% %<*glossary-topic.sty> % \end{macrocode} %\fi -%\chapter{topic styles (\styfmt{glossary-topic.sty})} +%\section{topic styles (\sty{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}[2021/11/22 v1.48 (NLCT)] +% \end{macrocode} +% Rollback releases: +% \begin{macrocode} +\DeclareRelease{v1.48}{2021-11-22}{glossary-topic-2021-11-22.sty} +\DeclareCurrentRelease{v1.49}{2022-10-14} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossary-topic}[2022/10/14 v1.49 (NLCT)] % \end{macrocode} %Load required package. % \begin{macrocode} @@ -37781,6 +49472,11 @@ defined}{}% \def\glstopic@prevlevel{-1}% \glstopicGroupHeading{##1}% }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glstopicSubGroupHeading}% \renewcommand{\glossentry}[2]{% \hangindent0pt\relax \parindent\glstopicParIndent\relax @@ -37834,6 +49530,26 @@ defined}{}% \newcommand*{\glstopicGroupHeading}[1]{} % \end{macrocode} %\end{macro} +%\begin{macro}{\glstopicSubGroupHeading} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstopicSubGroupHeading}\marg{prev group level}\marg{group +%level}\marg{parent entry}\marg{group label} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glstopicSubGroupHeading}[4]{% + \begingroup + \glspar\glstopicPreSkip\glspar\noindent + \glsxtrgetgrouptitle{#4}{\glstopicsubgrouptitle}% + \glstopicAssignSubIndent{#2}% + \glstopicSubItemBox{#2}{\glstopicTitleFont{\glstopicsubgrouptitle}}% + \glstopicSubItemSep + \glspar\nobreak\glstopicPostSkip + \par + \endgroup +} +% \end{macrocode} +%\end{macro} %\begin{macro}{\glstopicItem} %\changes{1.40}{2019-03-22}{new} %\begin{definition} @@ -37849,7 +49565,8 @@ defined}{}% }% \ifglshasdesc{#1}% {\glspar\nobreak\glstopicMidSkip\glspar\nobreak - \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip}% + \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip + }% {\glspar\nobreak\glstopicPostSkip}% \glstopicLoc{#1}{#2}% } @@ -38100,6 +49817,11 @@ defined}{}% \def\glstopic@prevlevel{-1}% \glstopicGroupHeading{##1}% }% +% \end{macrocode} +%\changes{1.49}{2022-10-14}{added \cs{glssubgroupheading}} +% Sub-groups are only supported with \cs{printunsrtglossary}. +% \begin{macrocode} + \renewcommand*{\glssubgroupheading}{\glstopicSubGroupHeading}% \renewcommand{\glossentry}[2]{% \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi \def\glstopic@prevlevel{0}% @@ -38143,6 +49865,1956 @@ defined}{}% %\fi %\iffalse % \begin{macrocode} +%<*glossary-table.sty> +% \end{macrocode} +%\fi +%\section{table styles (\sty{glossary-table.sty})} +%\changes{1.49}{2022-10-14}{new} +%Intended for use with \app{bib2gls}. This is still experimental. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% Declare package: +% \begin{macrocode} +\ProvidesPackage{glossary-table}[2022/10/14 v1.49 (NLCT)] +% \end{macrocode} +%Load required packages. +% \begin{macrocode} +\RequirePackage{glossary-longbooktabs} +% \end{macrocode} +%\begin{macro}{\glstableblockperrowcount} +%\changes{1.49}{2022-10-14}{new} +%Number of blocks (entries) per row. +% \begin{macrocode} +\newcount\glstableblockperrowcount +\glstableblockperrowcount=2\relax +% \end{macrocode} +%\end{macro} +%Add a key to allow this value to be changed. +% \begin{macrocode} +\define@key{printglosstable}{blocks}{\glstableblockperrowcount=#1\relax} +% \end{macrocode} +% +%\begin{macro}{\glstablecurrentblockindex} +%Keep track of current block (entry) index. +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcount\glstablecurrentblockindex +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstabletotalcols} +%\changes{1.49}{2022-10-14}{new} +%Total number of columns. This will be updated at the start of +%\cs{printunsrttable}, but is a user level command so that it can be +%used in any hooks. +% \begin{macrocode} +\newcount\glstabletotalcols +\glstabletotalcols=4\relax +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablenameheader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablenameheader}{\entryname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstabledescheader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstabledescheader}{\descriptionname} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableotherheader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableotherheader}{\MFUsentencecase{\glstableotherfield}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablesymbolheader} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablesymbolheader}{\symbolname} +% \end{macrocode} +%\end{macro} +% +%Provide boolean option to suppress header. +% \begin{macrocode} +\define@boolkey{printglosstable}{header}[true]{} +\KV@printglosstable@headertrue +% \end{macrocode} +% +%Provide boolean option to suppress rules. +% \begin{macrocode} +\define@boolkey{printglosstable}{rules}[true]{} +\KV@printglosstable@rulestrue +% \end{macrocode} +% +% \begin{macrocode} +\define@key{printglosstable}{blocksep}{\renewcommand{\glstable@blockalignsep}{#1}} +% \end{macrocode} +% +%\begin{macro}{\glstable@blockalignsep} +%\changes{1.49}{2022-10-14}{new} +%Alignment spec between blocks. +% \begin{macrocode} +\newcommand{\glstable@blockalignsep}{|} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{glstablesubentries} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newenvironment{glstablesubentries}{\begin{tabular}[t]{l}}{\end{tabular}} +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\glstablePreChildren} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablePreChildren}{\glstableifpar{\par}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableblocksubentrysep} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableblocksubentrysep}{\\} +% \end{macrocode} +%\end{macro} +% +%Provide boolean option to allow paragraph cells. +% \begin{macrocode} +\define@choicekey{printglosstable}{par} +[\@glstable@par@val\@glstable@par@n] +{false,justified,ragged} +{% + \ifcase\@glstable@par@n + \renewcommand{\glstable@parcase}[3]{##1}% + \or + \renewcommand{\glstable@parcase}[3]{##2}% + \or + \renewcommand{\glstable@parcase}[3]{##3}% + \fi +} +% \end{macrocode} +% +%\begin{macro}{\glstable@parcase} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@parcase}[3]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableifpar} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableifpar}[1]{\glstable@parcase{}{#1}{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableleftalign} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableleftalign}[1]{% + \glstable@parcase{l}{p{#1}}{>{\protect\raggedright}p{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablerightalign} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablerightalign}[1]{% + \glstable@parcase{r}{p{#1}}{>{\protect\raggedleft}p{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablecenteralign} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablecenteralign}[1]{% + \glstable@parcase{c}{p{#1}}{>{\protect\centering}p{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablenamecolalign} +%\changes{1.49}{2022-10-14}{new} +%The alignment for the name column. +% \begin{macrocode} +\newcommand{\glstablenamecolalign}{\glstableleftalign{\glstablenamewidth}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstabledesccolalign} +%\changes{1.49}{2022-10-14}{new} +%The alignment for the description column. +% \begin{macrocode} +\newcommand{\glstabledesccolalign}{\glstableleftalign{\glstabledescwidth}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablesymbolcolalign} +%\changes{1.49}{2022-10-14}{new} +%The alignment for the symbol column. +% \begin{macrocode} +\newcommand{\glstablesymbolcolalign}{\glstablecenteralign{\glstablesymbolwidth}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameTarget} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameTarget}[1]{% + \glstarget{#1}{\glstableNameFmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameFmt} +%\changes{1.49}{2022-10-14}{new} +%Entry item needs to be included in measuring to ensure there's +%enough room for it as well. +% \begin{macrocode} +\newcommand{\glstableNameFmt}[1]{\glsentryitem{#1}\glossentryname{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubNameTarget} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubNameTarget}[1]{% + \glstarget{#1}{\glstableSubNameFmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubNameFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubNameFmt}[1]{% + \glssubentryitem{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableotherfield} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableotherfield}{} +% \end{macrocode} +%\end{macro} +% +%Add an extra key to allow this value to be changed. +% \begin{macrocode} +\define@key{printglosstable}{other}{\renewcommand{\glstableotherfield}{#1}} +% \end{macrocode} +% +%\begin{macro}{\glstableOther} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableOther}[1]{% + \glsxtrusefield{#1}{\glstableotherfield}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSingleFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSingleFmt}[1]{% + \glstableNameTarget{#1}% + \ifglshasdesc{#1}% + {% + \glstableNameSinglePostName + \glstableNameSingleSuppl + {% + \ifglshassymbol{#1}% + {\glstableSymbolFmt{#1}\glstableNameSingleSymSep}% + {}% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOther{#1}\glstableOtherSep}% + }% + \glstableDescFmt{#1}% + }% + }% + {% + \ifglshassymbol{#1}% + {% + \glstableNameSinglePostName + \glstableNameSingleSuppl{\glstableSymbolFmt{#1}}% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableNameSingleSymSep\glstableOther{#1}}% + }% + }% + {% + \ifdefempty\glstableotherfield{}% + {% + \glstableNameSinglePostName + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOther{#1}}% + }% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSingleSuppl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSingleSuppl}[1]{(#1)} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSinglePostName} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSinglePostName}{ } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSingleSymSep} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSingleSymSep}{ } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableOtherSep} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableOtherSep}{, } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubNameSingleFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubNameSingleFmt}[1]{% + \glstableSubNameTarget{#1}% + \GlsXtrIfFieldUndef{desc}{#1}{}% + {% + \GlsXtrIfFieldUndef{symbol}{#1}{}{}% + {% + \glstableNameSinglePostSubName + \glstableNameSingleSubSuppl{\glstableSubSymbolFmt{#1}}% + }% + }% + {% + \glstableNameSinglePostSubName + \glstableNameSingleSubSuppl + {% + \GlsXtrIfFieldUndef{symbol}{#1}{}% + {\glstableSubSymbolFmt{#1}\glstableNameSingleSymSep}% + \glstableSubDescFmt{#1}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSingleSubSuppl} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSingleSubSuppl}[1]{#1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameSinglePostSubName} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameSinglePostSubName}{ } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableNameNoDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableNameNoDesc}[1]{% + \glstableNameTarget{#1}% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOtherSep\glstableOther{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubNameNoDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubNameNoDesc}[1]{% + \glstableSubNameTarget{#1}% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOtherSep\glstableOther{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSymbolFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSymbolFmt}[1]{\glossentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubSymbolFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubSymbolFmt}[1]{\glstableSymbolFmt{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSymbolNameTarget} +%\changes{1.49}{2022-10-14}{new} +%Where the symbol takes place of the name. +% \begin{macrocode} +\newcommand{\glstableSymbolNameTarget}[1]{% + \glstarget{#1}{\glstableSymbolNameFmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSymbolNameFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSymbolNameFmt}[1]{\glsentryitem{#1}\glossentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubSymbolNameTarget} +%\changes{1.49}{2022-10-14}{new} +%Where the symbol takes place of the name. +% \begin{macrocode} +\newcommand{\glstableSubSymbolNameTarget}[1]{% + \glstarget{#1}{\glstableSubSymbolNameFmt{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubSymbolNameFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubSymbolNameFmt}[1]{\glssubentryitem{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableDesc}[1]{% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOther{#1}\ifglshasdesc{#1}{\glstableOtherSep}{}}% + }% + \glstableDescFmt{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableDescFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableDescFmt}[1]{\glossentrydesc{#1}\glspostdescription} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubDesc}[1]{\glstableDesc{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubDescFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubDescFmt}[1]{\glstableDescFmt{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableOtherNoDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableOtherNoDesc}[1]{% + \ifdefempty\glstableotherfield{}% + {% + \GlsXtrIfFieldUndef{\glstableotherfield}{#1}{}% + {\glstableOther{#1}}% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableSubOtherNoDesc} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableSubOtherNoDesc}[1]{% + \glstableOtherNoDesc{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableHeaderFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableHeaderFmt}[1]{\textbf{#1}} +% \end{macrocode} +%\end{macro} +% +% \begin{macrocode} +\define@key{printglosstable}{block-style} +{\glstablesetstyle{#1}} +% \end{macrocode} +% +%\begin{macro}{\glstablecolsperblock} +%\changes{1.49}{2022-10-14}{new} +%Number of columns per block (entry). +%Assigned by block style. +% \begin{macrocode} +\newcount\glstablecolsperblock +\glstablecolsperblock=2\relax +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableblockheader} +%\changes{1.49}{2022-10-14}{new} +%The column header, which may cover multiple columns. +%Redefined by block style. +% \begin{macrocode} +\newcommand{\glstableblockheader}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstableblockalign} +%\changes{1.49}{2022-10-14}{new} +%The column alignment. +%The default assumes two columns per entry (name and description) +%Redefined by the block style. +% \begin{macrocode} +\newcommand{\glstableblockalign}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableblockentry} +%\changes{1.49}{2022-10-14}{new} +%The entry item, which may cover multiple columns. +%Redefined by block style. +% \begin{macrocode} +\newcommand{\glstableblockentry}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableblocksubentry} +%\changes{1.49}{2022-10-14}{new} +%The sub-entry is in the final column of the block (requires children to be saved) +%Redefined by block style. +% \begin{macrocode} +\newcommand{\glstableblocksubentry}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableinitlengthupdates} +%\changes{1.49}{2022-10-14}{new} +%Block style command. +% \begin{macrocode} +\newcommand{\glstableinitlengthupdates}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablelengthupdate} +%\changes{1.49}{2022-10-14}{new} +%Block style command. +% \begin{macrocode} +\newcommand{\glstablelengthupdate}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablefinishlengthupdates} +%\changes{1.49}{2022-10-14}{new} +%Block style command. +% \begin{macrocode} +\newcommand{\glstablefinishlengthupdates}{} +% \end{macrocode} +%\end{macro} +% +% +%\begin{macro}{\glstablesetstyle} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablesetstyle}[1]{% + \ifcsdef{@glstable@style@#1}% + {\csuse{@glstable@style@#1}}% + {\PackageError{glossary-table}{Unknown style `#1'}{}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablenewstyle} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablenewstyle}[2]{% + \ifcsdef{@glstable@style@#1}% + {\PackageError{glossary-table}{style `#1' already defined}{}}% + {\csdef{@glstable@style@#1}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%Provide some common layouts. +% \begin{macrocode} +\glstablenewstyle{name-desc}{% +% \end{macrocode} +% 2 columns per block (name, description). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameTarget{##1} & \glstableDesc{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameTarget{##1} & \glstableSubDesc{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader & + \glstableHeaderFmt\glstabledescheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstabledesccolalign}% +} +% \end{macrocode} +%Set the default style. +% \begin{macrocode} +\glstablesetstyle{name-desc} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{name}{% +% \end{macrocode} +% 1 columns per block (name optionally with symbol and description). +% \begin{macrocode} + \glstablecolsperblock=1\relax +% \end{macrocode} +% Initialise length registers (no calculation required, column width +% same as block width). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{}% +% \end{macrocode} +% No measuring required. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{}% +% \end{macrocode} +% Set the name width to the amount available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstablenamewidth}{\glstableblockwidth}% + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameSingleFmt{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameSingleFmt{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablenamecolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{name-symbol}{% +% \end{macrocode} +% 2 columns per block (name and symbol). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max symbol +% width if par align). This assumes the symbol requires the minimal +% width and any leftover can be assigned to the name. +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstablenamewidth}{0pt}% + }% +% \end{macrocode} +% Update widths in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}% + }% +% \end{macrocode} +% Finally set the name width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstablenamewidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth}% + \ifdim\glstablenamewidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstablesymbolwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameNoDesc{##1} & \glstableSymbolFmt{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameNoDesc{##1} & \glstableSubSymbolFmt{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader & + \glstableHeaderFmt\glstablesymbolheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstablesymbolcolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{desc-name}{% +% \end{macrocode} +% 2 columns per block (description, name). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableDesc{##1} & + \glstableNameTarget{##1}% + }% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubDesc{##1} & + \glstableSubNameTarget{##1}% + }% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstabledescheader & + \glstableHeaderFmt\glstablenameheader + }% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablenamecolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{symbol-name}{% +% \end{macrocode} +% 2 columns per block (symbol, name). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max symbol +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstablenamewidth}{0pt}% + }% +% \end{macrocode} +% Update widths in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}% + }% +% \end{macrocode} +% Finally set the name width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstablenamewidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth}% + \ifdim\glstablenamewidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstablesymbolwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableSymbolFmt{##1} & + \glstableNameNoDesc{##1}% + }% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubSymbolFmt{##1} & + \glstableSubNameNoDesc{##1}% + }% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablesymbolheader & + \glstableHeaderFmt\glstablenameheader + }% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablesymbolcolalign\glstablenamecolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{name-symbol-desc}{% +% \end{macrocode} +% 3 columns per block (name, symbol, description). +% \begin{macrocode} + \glstablecolsperblock=3\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name and symbol +% widths if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update widths in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth + - 0.5\glstablesymbolwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameTarget{##1} & + \glstableSymbolFmt{##1} & + \glstableDesc{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameTarget{##1} & + \glstableSubSymbolFmt{##1} & + \glstableSubDesc{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader & + \glstableHeaderFmt\glstablesymbolheader & + \glstableHeaderFmt\glstabledescheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{% + \glstablenamecolalign\glstablesymbolcolalign\glstabledesccolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{name-desc-symbol}{% +% \end{macrocode} +% 3 columns per block (name, description, symbol). +% \begin{macrocode} + \glstablecolsperblock=3\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name and symbol +% widths if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update widths in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth + - 0.5\glstablesymbolwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameTarget{##1} & + \glstableDesc{##1} & + \glstableSymbolFmt{##1}% + }% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameTarget{##1} & + \glstableSubDesc{##1} & + \glstableSubSymbolFmt{##1}% + }% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader & + \glstableHeaderFmt\glstabledescheader & + \glstableHeaderFmt\glstablesymbolheader + }% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{% + \glstablenamecolalign\glstabledesccolalign\glstablesymbolcolalign}% +} +% \end{macrocode} +% +%As name-desc but the other field is put in the description column. +% \begin{macrocode} +\glstablenewstyle{name-other}{% +% \end{macrocode} +% 2 columns per block (name, other). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableNameTarget{##1} & \glstableOtherNoDesc{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubNameTarget{##1} & \glstableSubOtherNoDesc{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablenameheader & + \glstableHeaderFmt\glstableotherheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablenamecolalign\glstabledesccolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{other-name}{% +% \end{macrocode} +% 2 columns per block (other, name). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max name +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablenamewidth}% + {\glstableHeaderFmt\glstablenameheader}% + \else + \setlength{\glstablenamewidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablenamewidth}{\glstableNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablenamewidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablenamewidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablenamewidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableOtherNoDesc{##1} & + \glstableNameTarget{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubOtherNoDesc{##1} & + \glstableSubNameTarget{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstableotherheader & + \glstableHeaderFmt\glstablenameheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablenamecolalign}% +} +% \end{macrocode} +% +%As name-other but the use the symbol in place of the name. +% \begin{macrocode} +\glstablenewstyle{symbol-other}{% +% \end{macrocode} +% 2 columns per block (symbol, other). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max symbol +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablesymbolwidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablesymbolwidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableSymbolNameTarget{##1} & \glstableOtherNoDesc{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubSymbolNameTarget{##1} & \glstableSubOtherNoDesc{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstablesymbolheader & + \glstableHeaderFmt\glstableotherheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstablesymbolcolalign\glstabledesccolalign}% +} +% \end{macrocode} +% +% \begin{macrocode} +\glstablenewstyle{other-symbol}{% +% \end{macrocode} +% 2 columns per block (other-symbol). +% \begin{macrocode} + \glstablecolsperblock=2\relax +% \end{macrocode} +% Initialise length registers (need to calculate max symbol +% width if par align). +% \begin{macrocode} + \renewcommand{\glstableinitlengthupdates}{% + \ifKV@printglosstable@header + \settowidth{\glstablesymbolwidth}% + {\glstableHeaderFmt\glstablesymbolheader}% + \else + \setlength{\glstablesymbolwidth}{0pt}% + \fi + \setlength{\glstabledescwidth}{0pt}% + }% +% \end{macrocode} +% Update width in unsrt hook. +% \begin{macrocode} + \renewcommand{\glstablelengthupdate}[1]{% + \glstablemeasureandupdate{\glstablesymbolwidth}{\glstableSymbolNameFmt{##1}}% + }% +% \end{macrocode} +% Finally set the description width to the remaining available. +% \begin{macrocode} + \renewcommand{\glstablefinishlengthupdates}{% + \setlength{\glstabledescwidth}{\dimexpr\glstableblockwidth + - \glstablesymbolwidth}% + \ifdim\glstabledescwidth<0pt\relax + \setlength{\glstablesymbolwidth}{\dimexpr0.5\glstableblockwidth}% + \setlength{\glstabledescwidth}{\glstablesymbolwidth}% + \fi + }% +% \end{macrocode} +% How to format the top-level entry in the block. +% \begin{macrocode} + \renewcommand{\glstableblockentry}[1]{% + \glstableOtherNoDesc{##1} & \glstableSymbolNameTarget{##1}}% +% \end{macrocode} +% How to format the entry's children. +% \begin{macrocode} + \renewcommand{\glstableblocksubentry}[1]{% + \glstableSubOtherNoDesc{##1} & + \glstableSubSymbolNameTarget{##1}}% +% \end{macrocode} +% How to format the block's header row, if required. +% \begin{macrocode} + \renewcommand{\glstableblockheader}{% + \glstableHeaderFmt\glstableotherheader & + \glstableHeaderFmt\glstablesymbolheader}% +% \end{macrocode} +% Set the block's column alignments. +% \begin{macrocode} + \renewcommand{\glstableblockalign}{\glstabledesccolalign\glstablesymbolcolalign}% +} +% \end{macrocode} +% +% +%\begin{macro}{\glstablecaption} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablecaption}\marg{toc title}\marg{title}\marg{label} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablecaption}[3]{% + \caption[#1]{#3#2}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablepostnextcaption} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablepostnextcaption}{ Cont./} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablenextcaption} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablenextcaption}\marg{toc title}\marg{title} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablenextcaption}[2]{% + \caption[]{#1\glstablepostnextcaption}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablefoot} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablefoot}\marg{postamble} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablefoot}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablelastfoot} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablelastfoot}\marg{postamble} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablelastfoot}[1]{\glstablerowspan{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablehead} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablehead}\marg{preamble} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablehead}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablefirsthead} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablefirsthead}\marg{preamble} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablefirsthead}[1]{\glstablerowspan{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablerowspan} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablerowspan}\marg{text} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablerowspan}[1]{% + \multicolumn{\glstabletotalcols}{c}{\parbox{\LTcapwidth}{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@begin} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@begin}{% + \PackageError{glossary-table}{table style can only be used with + \string\printunsrttable}{}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@filter} +%\changes{1.49}{2022-10-14}{new} +%Filter all child entries, but take level offset into account and +%apply custom handler. +% \begin{macrocode} +\newcommand{\glstable@filter}[1]{% + \ifnum\glscurrententrylevel>0\relax + \printunsrtglossaryskipentry + \else + \glstableiffilter{#1}% + {\printunsrtglossaryskipentry}% + {% + \glstableifpar{\glstablelengthupdate{#1}}% + }% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableiffilter} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableiffilter}[3]{#3} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablenamewidth} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newlength\glstablenamewidth +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableblockwidth} +%\changes{1.49}{2022-10-14}{new} +%Maximum width available for each block. +% \begin{macrocode} +\newlength\glstableblockwidth +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstabledescwidth} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newlength\glstabledescwidth +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablesymbolwidth} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newlength\glstablesymbolwidth +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableifmeasuring} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstableifmeasuring}\marg{true}\marg{false} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstableifmeasuring}[2]{#2} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@stepentry} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@stepentry}[1]{% + \ifglsentrycounter + \stepcounter{glossaryentry}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@stepsubentry} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@stepsubentry}[1]{% + \ifglssubentrycounter + \stepcounter{glossarysubentry}% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablemeasureandupdate} +%\changes{1.49}{2022-10-14}{new} +%\begin{definition} +%\cs{glstablemeasureandupdate}\marg{len reg}\marg{text} +%\end{definition} +% \begin{macrocode} +\newcommand{\glstablemeasureandupdate}[2]{% + \let\glstableifmeasuring\@firstoftwo +% \end{macrocode} +%Disable unset and indexing +% \begin{macrocode} + \let\@glsunset\@glsxtrbuffer@unset + \let\@gls@org@noindex\ifKV@glslink@noindex + \KV@glslink@noindextrue +% \end{macrocode} +%Disable targets and links +% \begin{macrocode} + \let\@glstable@org@target\glstarget + \let\glstarget\@secondoftwo + \let\@glstable@org@link\@glslink + \let\@glslink\@secondoftwo +% \end{macrocode} +%Disable ref step and label +% \begin{macrocode} + \let\glstable@org@stepentry\glsstepentry + \let\glsstepentry\glstable@stepentry + \let\glstable@org@stepsubentry\glsstepsubentry + \let\glsstepsubentry\glstable@stepsubentry +% \end{macrocode} +%Measure. +% \begin{macrocode} + \settowidth{\dimen@}{#2}% +% \end{macrocode} +%Update if wider. +% \begin{macrocode} + \ifdim\dimen@>#1\relax + \setlength{#1}{\dimen@}% + \fi +% \end{macrocode} +%Restore +% \begin{macrocode} + \let\ifKV@glslink@noindex\@gls@org@noindex + \let\@glsunset\@glsxtr@unset + \let\glstarget\@glstable@org@target + \let\@glslink\@glstable@org@link + \let\glsstepentry\glstable@org@stepentry + \let\glsstepsubentry\glstable@org@stepsubentry + \let\glstableifmeasuring\@secondoftwo +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@ifhaspreamble} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@ifhaspreamble}[2]{% + \ifdefempty\glossarypreamble + {#2}% + {% + \ifx\@glstable@defaultpreamble\glossarypreamble + \ifcsvoid{@glossarypreamble@\currentglossary}{#2}{#1}% + \else + #1% + \fi + }% +} +% \end{macrocode} +%\end{macro} +% +%Need the type, preamble and postamble. +% \begin{macrocode} +\define@key{printglosstable}{type}{\renewcommand{\@glo@type}{#1}} +\define@key{printglosstable}{preamble}{\renewcommand{\glossarypreamble}{#1}} +\define@key{printglosstable}{postamble}{\renewcommand{\glossarypostamble}{#1}} +% \end{macrocode} +% +%Allow localised initialisation. +%\begin{macro}{\glstable@init} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand\glstable@init{} +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +\define@key{printglosstable}{init}{\renewcommand{\glstable@init}{#1}} +% \end{macrocode} +% +%The default setting is groups=false, unlike the usual default for +%\cs{printunsrtglossary}. Support for groups isn't fully +%implemented. +% \begin{macrocode} +\define@choicekey{printglosstable}{groups} +[\@glstable@groups@val\@glstable@groups@n] +{false,true}[true]% +{% + \ifnum\@glstable@groups@n=0\relax + \let\glstable@groupheading\@gobble + \glsxtr@printgloss@groupsfalse + \else + \let\glstable@groupheading\glstablegroupheading + \glsxtr@printgloss@groupstrue + \fi +} +% \end{macrocode} +% +%\begin{macro}{\glstable@groupheading} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@groupheading}[1]{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstablegroupheading} +%\changes{1.49}{2022-10-14}{new} +%This isn't quite working as it puts a spurious line above if it +%occurs at the start of a new row. +% \begin{macrocode} +\newcommand{\glstablegroupheading}[1]{% + \glstablefinishrow + \multicolumn{\glstabletotalcols}{c}{% + \glsxtrgetgrouptitle{#1}{\glsxtrcurrentgrptitle}% + \glstableGroupHeaderFmt\glsxtrcurrentgrptitle + }% + \\*% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glstable@defaultpreamble} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\let\@glstable@defaultpreamble\glossarypreamble +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableGroupHeaderFmt} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableGroupHeaderFmt}{\glstableHeaderFmt} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\printunsrttable} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newrobustcmd*{\printunsrttable}[1][]{% + \bgroup +% \end{macrocode} +%Initialise glossary type. +% \begin{macrocode} + \def\@glo@type{\glsdefaulttype}% +% \end{macrocode} +%Initialise title. +% \begin{macrocode} + \def\glossarytitle{% + \ifcsdef{@glotype@\@glo@type @title}% + {\csuse{@glotype@\@glo@type @title}}% + {\glossaryname}% + }% + \def\glossarytoctitle{\glossarytitle}% +% \end{macrocode} +%Initialise preamble. +% \begin{macrocode} + \let\glossarypreamble\@glstable@defaultpreamble +% \end{macrocode} +%Set table keys. +% \begin{macrocode} + \setkeys*{printglosstable}{#1}% + \let\currentglossary\@glo@type + \protected@edef\glstable@opts{type=\@glo@type,style=table}% + \ifdefempty\XKV@rm{}{\epreto\glstable@opts{\expandonce\XKV@rm,}}% +% \end{macrocode} +%Calculate the total number of columns. +% \begin{macrocode} + \glstabletotalcols=\numexpr\glstablecolsperblock*\glstableblockperrowcount\relax +% \end{macrocode} +%If the widest name is non-void, calculate the remaining width +%available for the blocks. +% \begin{macrocode} + \glstableifpar + {% + \glstableblockwidth=\dimexpr\linewidth/\glstableblockperrowcount + -\glstablecolsperblock\tabcolsep\relax + \glstableinitlengthupdates + }% +% \end{macrocode} +%If no vertical line required between blocks, \cs{glstablefinishrow} +%can simply do a new line. +% \begin{macrocode} + \ifdefempty\glstable@blockalignsep{\def\glstable@finishrow{}}{}% +% \end{macrocode} +%Build the header row. +% \begin{macrocode} + \def\glstable@alignment{}% + \ifKV@printglosstable@rules + \def\glstable@header{\toprule}% + \else + \def\glstable@header{}% + \fi + \global\glstablecurrentblockindex=0\relax + \loop +% \end{macrocode} +%Add to alignment spec. +% \begin{macrocode} + \ifnum\glstablecurrentblockindex>0\relax + \protected@eappto\glstable@alignment{\glstable@blockalignsep}% + \fi + \protected@eappto\glstable@alignment{\glstableblockalign}% + \ifKV@printglosstable@header +% \end{macrocode} +%Add to header. +% \begin{macrocode} + \ifnum\glstablecurrentblockindex>0\relax + \appto\glstable@header{&}% + \fi + \eappto\glstable@header{\expandonce\glstableblockheader}% + \fi +% \end{macrocode} +%Increment loop counter +% \begin{macrocode} + \advance\glstablecurrentblockindex by 1\relax + \ifnum\glstablecurrentblockindex<\glstableblockperrowcount + \repeat + \ifKV@printglosstable@header +% \end{macrocode} +%Append cr to header. +% \begin{macrocode} + \appto\glstable@header{\tabularnewline}% + \ifKV@printglosstable@rules + \appto\glstable@header{\midrule}% + \fi + \fi + \protected@edef\glstable@begin{% + \noexpand\begin{longtable}{\expandonce\glstable@alignment}% + \noexpand\glstablecaption + {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}% + {\noexpand\@@glossaryseclabel}% + \noexpand\tabularnewline + }% +% \end{macrocode} +%Add preamble if set. +% \begin{macrocode} + \glstable@ifhaspreamble + {% + \eappto\glstable@begin{\noexpand\glstablefirsthead + {\expandonce\glossarypreamble}% + \noexpand\tabularnewline + \expandonce\glstable@header + \noexpand\endfirsthead + \noexpand\glstablenextcaption + {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}% + {\expandonce\glossarypreamble}% + }% + }% + {% + \eappto\glstable@begin{% + \expandonce\glstable@header + \noexpand\endfirsthead + \noexpand\glstablenextcaption + {\noexpand\glossarytoctitle}{\noexpand\glossarytitle}% + }% + }% + \eappto\glstable@begin{% + \noexpand\tabularnewline + \expandonce\glstable@header + \noexpand\endhead + }% +% \end{macrocode} +%Add postamble if set. +% \begin{macrocode} + \ifdefvoid\glossarypostamble + {% +% \end{macrocode} +%Just add rule, if required. +% \begin{macrocode} + \ifKV@printglosstable@rules + \appto\glstable@begin{\bottomrule\endfoot}% + \fi + } + {% + \ifKV@printglosstable@rules + \eappto\glstable@begin{% + \noexpand\bottomrule + \noexpand\glstablefoot{\expandonce\glossarypostamble}% + \noexpand\tabularnewline + \noexpand\endfoot + \noexpand\bottomrule + \noexpand\glstablelastfoot{\expandonce\glossarypostamble}% + \noexpand\tabularnewline + \noexpand\endlastfoot + }% + \else + \eappto\glstable@begin{% + \noexpand\glstablefoot{\expandonce\glossarypostamble}% + \noexpand\tabularnewline + \noexpand\endfoot + \noexpand\glstablelastfoot{\expandonce\glossarypostamble}% + \noexpand\tabularnewline + \noexpand\endlastfoot + }% + \fi + }% +% \end{macrocode} +%Initialisation hook. +% \begin{macrocode} + \glstable@init +% \end{macrocode} +%Set up filtering. +% \begin{macrocode} + \let\printunsrtglossaryentryprocesshook\glstable@filter +% \end{macrocode} +%Disable preamble and postamble commands as their content has +%already been added to the table specs. +% \begin{macrocode} + \let\glossarypostamble\relax + \let\glossarypreamble\relax +% \end{macrocode} +%Disable the section command as the title and toc title are now in +%the caption. +% \begin{macrocode} + \renewcommand{\glossarysection}[2][]{}% +% \end{macrocode} +%The glossary will be empty on the first \LaTeX\ run as the entries +%won't be defined until \app{bib2gls} has selected them. +% \begin{macrocode} + \glsxtrifemptyglossary{\currentglossary} + {% + \GlossariesExtraWarning{Glossary `\currentglossary' is empty}% +% \end{macrocode} +%Just do the table header and footer to allow it to be added to the +%list of tables and have the label added to the aux file. +% \begin{macrocode} + \edef\@glsxtr@tmp{\noexpand\setkeys{printgloss}{\expandonce\glstable@opts}}% + \@glsxtr@tmp + \glstableifpar{\glstablefinishlengthupdates}% + \global\glstablecurrentblockindex=0\relax + \glstable@begin + \glstablefinishrow + \end{longtable}% + }% + {% + \expandafter\printunsrtglossary\expandafter[\glstable@opts]\relax + }% + \egroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@child} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@child}[1]{% + \ifdefempty\glstable@dochildren{}% + {\appto\glstable@dochildren{\glstableblocksubentrysep}}% + \appto\glstable@dochildren{\glstableblocksubentry{#1}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstableChildEntries} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstableChildEntries}[1]{% + \def\glstable@dochildren{}% + \GlsXtrIfHasNonZeroChildCount*{#1}% + {% + \glsxtrfieldforlistloop{#1}{childlist}{\glstable@child}% + \preto\glstable@dochildren{% + \glstablePreChildren + \begin{glstablesubentries}% + }% + \appto\glstable@dochildren{\end{glstablesubentries}}% + }% + {}% + \glstable@dochildren +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@n@amps} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@n@amps}[1]{% + \ifnum#1>0\relax + \count@=0\relax + \loop + \advance\count@ by 1\relax + \appto\glstable@endblock{&}% + \ifnum\count@<#1 + \repeat + \fi +} +% \end{macrocode} +%\end{macro} +% +%TODO: this needs to do nothing if it occurs are the start of a new +%row. The position of \cs{tabularnewline} may need changing within +%\cs{printunsrttable} and the table style. +%\begin{macro}{\glstablefinishrow} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstablefinishrow}{% + \glstable@finishrow + \tabularnewline +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glstable@finishrow} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\glstable@finishrow}{% + \def\glstable@endblock{}% + \@glstable@finishrow + \glstable@endblock +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glstable@finishrow} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newcommand{\@glstable@finishrow}{% + \ifnum\glstablecurrentblockindex>0 + \ifnum\glstablecurrentblockindex<\glstableblockperrowcount + \expandafter\glstable@n@amps\expandafter{% + \numexpr + (\glstableblockperrowcount-\glstablecurrentblockindex) + * (\glstablecolsperblock -1) + }% + \fi + \global\glstablecurrentblockindex=0 + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{style}{table} +%\changes{1.49}{2022-10-14}{new} +% \begin{macrocode} +\newglossarystyle{table}% +{% + \renewenvironment{theglossary}% + {% + \glstableifpar{\glstablefinishlengthupdates}% + \global\glstablecurrentblockindex=0\relax + \glstable@begin + } + {% + \glstablefinishrow + \end{longtable}% + }% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{\glstable@groupheading{##1}}% + \renewcommand*{\glssubgroupheading}[4]{}% + \renewcommand*{\glsgroupskip}{}% + \renewcommand{\glossentry}[2]{% + \global\advance\glstablecurrentblockindex by 1\relax + \ifnum\glstableblockperrowcount=\glstablecurrentblockindex + \gdef\glstable@endblock{% + \global\glstablecurrentblockindex=0\relax + \tabularnewline + }% + \else + \gdef\glstable@endblock{&}% + \fi + \glstableblockentry{##1}% + \glstableChildEntries{##1}% + \glstable@endblock + }% + \renewcommand{\subglossentry}[3]{}% +} +% \end{macrocode} +%\end{style} +%\iffalse +% \begin{macrocode} +%</glossary-table.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} %<*example-glossaries-xr.tex> % \end{macrocode} %\fi @@ -41043,5 +54715,19676 @@ amet, libero} %</example-glossaries-xr.bib> % \end{macrocode} %\fi +%\iffalse +% \begin{macrocode} +%<*glossaries-extra-2021-11-22.sty> +% \end{macrocode} +%\fi +%\section{Rollback Files} +% \subsection{Rollback v1.48 (glossaries-extra-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra}[2021/11/22 v1.48 (NLCT)] +\RequirePackage{xkeyval} +\RequirePackage{etoolbox} +\@ifpackageloaded{glossaries} +{% + \newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% + \let\@glsxtr@declareoption\@gls@declareoption +} +{% + \newcommand{\glsxtr@dooption}[1]{% + \PassOptionsToPackage{#1}{glossaries}% + }% + \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}% + } +} +\newcommand*{\glsxtrundefaction}[2]{% + \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% +} +\newcommand*{\glsxtr@warnonexistsordo}[1]{} +\newcommand*{\glsxtrundeftag}{??} +\newcommand*{\@glsxtrundeftag}{} +\newcommand*{\@glsxtr@warn@undefaction}[2]{% + \@glsxtrundeftag\GlossariesExtraWarning{#1}% +} +\newcommand*{\@glsxtr@err@undefaction}[2]{% + \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}% +} +\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.)}% +} + +\newcommand*{\@glsxtr@redef@forglsentries}{} +\newcommand*{\@glsxtr@do@redef@forglsentries}{% + \renewcommand*{\forglsentries}[3][\glsdefaulttype]{% + \protected@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}% + }% + }% + }% +}% +\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 + } +\newcommand*{\@glsxtr@record}[3]{} +\newcommand*{\glsxtr@recordsee}[2]{} +\newcommand*{\@glsxtr@defaultnumberformat}{glsnumberformat}% +\newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{% + \renewcommand*{\@glsxtr@defaultnumberformat}{#1}% +}% +\newcommand*{\@glsxtr@do@record@wrglossary}[1]{% + \begingroup + \ifKV@glslink@noindex + \else + \protected@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 + \glsxtr@inc@wrglossaryctr{#1}% + \@@do@@wrglossary + \fi + }% + \fi + \endgroup +} +\newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{% + \glsxtr@@do@wrglossary{#1}% + \@glsxtr@do@record@wrglossary{#1}% +} +\newcommand*{\@@glsxtr@record}[3]{% + \protected@edef\@gls@label{\glsdetoklabel{#2}}% + \let\glslabel\@gls@label + \ifglsentryexists{#2}{}% + {% + \@@glsxtrwrglossmark + \begingroup + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \let\@gls@counter\glscounter + \if@glsxtr@equations + \@glsxtr@use@equation@counter + \fi + \@gls@setdefault@glslink@opts + \csuse{@glsxtr@#3@prekeys}% + \setkeys{#3}{#1}% + \glsxtr@do@autoadd{#3}% + \csuse{@glsxtr@#3@postkeys}% + \glsxtr@inc@wrglossaryctr{#2}% + \ifKV@glslink@noindex + \else + \glswriteentry{#2}% + {% + \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{#2}% + \else + \@@do@@wrglossary + \fi + }% + \fi + \endgroup + }% +} +\newcommand{\@glsxtr@glslink@prekeys}{\glslinkpresetkeys} +\newcommand{\@glsxtr@glslink@postkeys}{\glslinkpostsetkeys} +\newcommand{\@glsxtr@glossadd@prekeys}{\glsaddpresetkeys} +\newcommand{\@glsxtr@glossadd@postkeys}{\glsaddpostsetkeys} +\newcommand*\@glsxtr@dorecord{% + \global\let\@glsrecordlocref\theglsentrycounter + \let\@glsxtr@orgprefix\@glo@counterprefix + \ifx\theglsentrycounter\theHglsentrycounter + \def\@glo@counterprefix{}% + \else + \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 + \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 +} +\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 +} +\newcommand{\@glsxtr@ifnum@mmode}[2]{% + \ifmmode + \ifst@rred + #2% + \else + \if@display #1\else #2\fi + \fi + \else + #2% + \fi +} +\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}}% + }% +} +\newcommand*{\@@glsxtr@recordcounter}{% + \@glsxtr@noop@recordcounter +} +\newcommand*{\@glsxtr@noop@recordcounter}[1]{% + \PackageError{glossaries-extra}{\string\GlsXtrRecordCounter\space + requires record=only or record=hybrid package option}{}% +} +\newcommand*{\@glsxtr@op@recordcounter}[1]{% + \protected@eappto\@glsxtr@counterrecordhook{\noexpand\@glsxtr@docounterrecord{#1}}% +} +\newcommand*{\@glsxtr@recordsee}[2]{% + \@@glsxtrwrglossmark + \def\@gls@xref{#2}% + \@onelevel@sanitize\@gls@xref + \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}% +} +\newcommand{\printunsrtglossaryunit}{% + \print@noop@unsrtglossaryunit +} +\newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary} +\newcommand*{\glsxtr@indexonly@saveentrycounter}{% + \ifKV@glslink@noindex + \else + \glsxtr@saveentrycounter + \fi +} +\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}% + }% + {}% + \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}% + }% + {}% + \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}% + }% + {}% +} +\newcommand*{\@glsxtr@record@setting}{off} +\newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex} +\newcommand*{\@glsxtr@record@setting@only}{only} +\newcommand*{\@glsxtr@record@setting@nameref}{nameref} +\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 +} +\newcommand*{\@glsxtr@record@setting@off}{off} +\newcommand\@glsxtr@warn@hybrid@noprintgloss{% + \ifdefstring{\@glo@types}{,}% + {% + \GlossariesExtraWarningNoLine{No glossaries have been defined}% + }% + {% + \GlossariesExtraWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found. ^^JYou have requested the hybrid setting + record=\@glsxtr@record@setting\space which requires a + combination of bib2gls (to fetch entries) and makeindex/xindy + (to sort and collate the entries). If you only want to use + bib2gls then change the option to record=only or record=nameref}% + }% +} +\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}% + \def\glsxtrsetaliasnoindex{}% + \ifdef\@gls@setupsort@none{\@gls@setupsort@none}{}% + \def\glsxtrNoGlossaryWarning{\@glsxtr@record@noglossarywarning}% + \RequirePackage{glossaries-extra-bib2gls}[=v1.48]% + }% +} +\define@choicekey{glossaries-extra.sty}{record} + [\@glsxtr@record@setting\glsxtr@record@nr]% + {off,only,alsoindex,nameref,hybrid}% + [only]% + {% + \ifcase\glsxtr@record@nr\relax + \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 + \@glsxtr@record@only@setup + \or + \def\glsxtr@setup@record{% + \renewcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex}% + \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 + \@glsxtr@record@only@setup + \ifundef\hyperlink + {\GlossariesExtraWarning{You have requested record=nameref but + the document doesn't support hyperlinks}}% + {}% + \or + \def\glsxtr@setup@record{% + \renewcommand*{\@glsxtr@record@setting@alsoindex}{hybrid}% + \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 + }% + \fi + } +\newcommand*{\@glsxtr@docdefval}{0} +\newcommand*{\if@glsxtrdocdef}{\ifnum\@glsxtr@docdefval>0 } +\newcommand*{\@glsxtrdocdeftrue}{\def\@glsxtr@docdefval{1}} +\newcommand*{\@glsxtrdocdeffalse}{\def\@glsxtr@docdefval{0}} +\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 +} +\newcommand*{\if@glsxtrdocdefrestricted}{\ifnum\@glsxtr@docdefval>1 } +\newcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn} +\define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{% + \if@glsxtrindexcrossrefs + \else + \renewcommand*{\@glsxtr@autoindexcrossrefs}{}% + \fi +} +\@glsxtrindexcrossrefsfalse +\newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue} +\define@boolkey{glossaries-extra.sty}[@glsxtr@]{autoseeindex}[true]{% +} +\@glsxtr@autoseeindextrue +\define@boolkey{glossaries-extra.sty}[@glsxtr@]{equations}[true]{% +} +\@glsxtr@equationsfalse +\let\glsxtr@float\@float +\let\glsxtr@dblfloat\@dblfloat +\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 +\newcommand*{\GlossariesExtraWarning}[1]{\PackageWarning{glossaries-extra}{#1}} +\newcommand*{\GlossariesExtraWarningNoLine}[1]{% + \PackageWarningNoLine{glossaries-extra}{#1}} +\@glsxtr@declareoption{nowarn}{% + \let\GlossariesExtraWarning\@gobble + \let\GlossariesExtraWarningNoLine\@gobble + \glsxtr@dooption{nowarn}% +} +\newcommand*{\@glsxtr@defpostpunc}{} +\@glsxtr@declareoption{postdot}{% + \glsxtr@dooption{nopostdot=false}% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{% + \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% + }% +} + +\define@choicekey{glossaries-extra.sty}{nopostdot}{true,false}[true]{% + \glsxtr@dooption{nopostdot=#1}% + \renewcommand*{\@glsxtr@defpostpunc}{% + \renewcommand*{\glspostdescription}{% + \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}% + }% +} +\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}% + }% + }% + }% + }% +} +\newcommand*{\glsxtrabbrvtype}{\glsdefaulttype} +\newcommand*{\@glsxtr@abbreviationsdef}{} + +\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}% + \ifglsacronym + \else + \renewcommand*{\acronymtype}{\glsxtrabbrvtype}% + \fi +}% +\@glsxtr@declareoption{abbreviations}{% + \let\@glsxtr@abbreviationsdef\@glsxtr@doabbreviationsdef +} +\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}% + \providecommand*{\newabbr}{\newabbreviation}% + \let\GlsXtrDefineAbbreviationShortcuts\relax +} +\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}% + \providecommand*{\newabbr}{\newabbreviation}% + \let\GlsXtrDefineAcShortcuts\relax +} +\newcommand*{\GlsXtrDefineOtherShortcuts}{% + \newcommand*{\newentry}{\newglossaryentry}% + \ifdef\printsymbols + {% + \newcommand*{\newsym}{\glsxtrnewsymbol}% + }{}% + \ifdef\printnumbers + {% + \newcommand*{\newnum}{\glsxtrnewnumber}% + }{}% + \let\GlsXtrDefineOtherShortcuts\relax +} +\newcommand*{\@glsxtr@setupshortcuts}{} +\newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}% +\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 + \GlsXtrDefineAcShortcuts + \GlsXtrDefineAbbreviationShortcuts + \GlsXtrDefineOtherShortcuts + }% + \or % true + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \GlsXtrDefineAcShortcuts + \GlsXtrDefineAbbreviationShortcuts + \GlsXtrDefineOtherShortcuts + }% + \or % ac + \renewcommand*{\@glsxtr@setupshortcuts}{% + \glsacrshortcutstrue + \GlsXtrDefineAcShortcuts + }% + \else % none, false + \renewcommand*{\@glsxtr@setupshortcuts}{}% + \fi + } +\newcommand*{\@glsxtr@doaccsupp}{} +\@glsxtr@declareoption{accsupp}{% + \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}} +\newcommand*{\@glsxtr@doloadprefix}{} +\@glsxtr@declareoption{prefix}{% + \renewcommand*{\@glsxtr@doloadprefix}{\RequirePackage{glossaries-prefix}}} +\newcommand{\glsxtrNoGlossaryWarning}[1]{% + \GlossariesExtraWarning{Glossary `#1' is missing}% + \@glsxtr@defaultnoglossarywarning{#1}% +} +\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 + } +\newcommand*{\@glsxtr@redefstyles}{} +\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}[=v1.48]}% + } + }% +} +\newcommand*{\@glsxtr@do@style}{} +\define@key{glossaries-extra.sty}{style}{% + \renewcommand*{\@glsxtr@do@style}{% + \setkeys{glossaries.sty}{style={#1}}% + \setglossarystyle{#1}% + }% +} +\newcommand*{\glsxtr@inc@wrglossaryctr}[1]{} +\newcommand*{\GlsXtrInternalLocationHyperlink}[3]{% + \glsxtrhyperlink{#1#2#3}{#3}% +} +\newcommand*{\@glsxtr@wrglossary@locationhyperlink}[3]{% + \pageref{wrglossary.#3}% +} +\@glsxtr@declareoption{indexcounter}{% + \glsxtr@dooption{counter=wrglossary}% + \ifundef\c@wrglossary + {% + \newcounter{wrglossary}% + \renewcommand{\thewrglossary}{\arabic{wrglossary}}% + }% + {}% + \renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{% + \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}}% + }% +} +\newcommand*{\@glsxtrwrglossmark}{} +\newcommand*{\@@glsxtrwrglossmark}{} +\AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}} +\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}} +\newcommand\@glsxtr@doshowtarget[2]{#2} +\define@choicekey{glossaries-extra.sty}{debug} + [\@glsxtr@debugval\@glsxtr@debugnr]% + {true,false,showtargets,showwrgloss,all,showaccsupp}[true]{% + \ifcase\@glsxtr@debugnr\relax % true + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \or % false + \glsxtr@dooption{debug=false}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \let\@glsxtr@doshowtarget\@secondoftwo + \or % showtargets + \glsxtr@dooption{debug=showtargets}% + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \or % showwrgloss + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \or % all + \glsxtr@dooption{debug=showtargets,debug=showaccsupp}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \or % showaccsupp + \glsxtr@dooption{debug=showaccsupp}% + \fi + } +\newcommand*{\glsxtrshowtargetouter}{\glsshowtargetouter} +\newcommand*{\glsxtrshowtargetinner}[1]{\glsshowtargetinner{#1}} +\newcommand{\@glsxtrshowtargetleft}[2]{\@glsshowtarget{#1}#2\@glsxtrshowtargetmark}% +\newcommand{\@glsxtrshowtargetright}[2]{\@glsxtrshowtargetmark#2\@glsshowtarget{#1}}% +\newcommand{\@glsxtrshowtargetmark}{}% +\define@choicekey{glossaries-extra.sty}{showtargets} + [\@glsxtr@showtargetsval\@glsxtr@showtargetsnr]% + {left,right,innerleft,innerright,annoteleft,annoteright}% + {% + \glsxtr@dooption{debug=showtargets}% + \ifcase\@glsxtr@showtargetsnr\relax + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \def\glsxtrshowtargetouter{\glsshowtargetouter}% + \def\glsxtrshowtargetinner{\glsshowtargetinner}% + \let\@glsxtrshowtargetmark\empty + \or + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% + \def\glsxtrshowtargetouter{\glsshowtargetouter}% + \def\glsxtrshowtargetinner{\glsshowtargetinner}% + \let\@glsxtrshowtargetmark\empty + \or + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% + \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}% + \let\@glsxtrshowtargetmark\empty + \or + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% + \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% + \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}% + \let\@glsxtrshowtargetmark\empty + \or + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetleft}% + \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% + \def\glsxtrshowtargetinner{\glsshowtargetinnersymleft}% + \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolright}% + \or + \def\@glsxtr@doshowtarget{\@glsxtrshowtargetright}% + \def\glsxtrshowtargetouter{\glsxtrshowtargetinner}% + \def\glsxtrshowtargetinner{\glsshowtargetinnersymright}% + \def\@glsxtrshowtargetmark{\@glsshowtargetmarkfmt\glsxtrshowtargetsymbolleft}% + \fi + } +\DeclareOptionX*{% + \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} +\ProcessOptionsX +\RequirePackage{glossaries} +\@glsxtr@doaccsupp +\@glsxtr@doloadprefix +\@glsxtr@defpostpunc +\def\glsdoshowtarget{\@glsxtr@doshowtarget} +\newcommand{\glsxtrshowtargetsymbolright}{{\tiny$\triangleleft$}}% +\newcommand{\glsxtrshowtargetsymbolleft}{{\tiny$\triangleright$}}% +\providecommand*{\glsshowtargetinner}[1]{{\glsshowtargetfont [#1]}} +\providecommand*{\glsshowtargetfont}{\ttfamily\footnotesize} +\newcommand*{\glsshowtargetinnersymleft}[1]{% + \glsshowtargetinner{#1}\allowbreak\glsxtrshowtargetsymbolleft} +\newcommand*{\glsshowtargetinnersymright}[1]{% + \glsxtrshowtargetsymbolright\allowbreak\glsshowtargetinner{#1}} +\providecommand*{\glsshowtargetouter}[1]{% + \glsshowtargetsymbol\marginpar{\glsshowtargetsymbol\glsshowtargetfont #1}} +\providecommand*{\@glsshowtarget}[1]{} +\def\glsshowtarget#1{% + \glsxtrtitleorpdforheading + {% + \ifmmode + \nfss@text{\glsxtrshowtargetinner{#1}}% + \else + \ifinner + \glsxtrshowtargetinner{#1}% + \else + \glsxtrshowtargetouter{#1}% + \fi + \fi + }% + {[#1]}% + {{\protect\glsshowtargetinner{#1}}}% +} +\newcommand*{\@glsshowtargetmarkfmt}[1]{% + \glsxtrtitleorpdforheading + {% + \ifmmode \nfss@text{#1}\else #1\fi + }% + {}% + {\ifmmode \nfss@text{#1}\else #1\fi}% +} +\let\@glsxtr@org@doseeglossary\@do@seeglossary +\newcommand*{\@glsxtr@doseeglossary}[2]{% + \glsdoifexists{#1}% + {% + \@@glsxtrwrglossmark + \@glsxtr@org@doseeglossary{#1}{#2}% + }% +} +\newcommand*{\@glsxtr@dosee@alsoindex@glossary}[2]{% + \@glsxtr@recordsee{#1}{#2}% + \@glsxtr@doseeglossary{#1}{#2}% +} +\let\@glsxtr@org@gloautosee\@glo@autosee +\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 +\ifdef\@glo@autosee +{% + \renewcommand*{\@glo@autosee}{% + \if@glsxtr@autoseeindex\@glsxtr@org@gloautosee\fi}% +}% +{} +\renewcommand*{\gls@checkseeallowed}{% + \if@glsxtr@autoseeindex\@gls@see@noindex\fi +} +\@glsxtr@abbreviationsdef +\let\@glsxtr@abbreviationsdef\relax +\@glsxtr@setupshortcuts +\@glsxtr@redef@forglsentries +\renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% +\disable@keys{glossaries-extra.sty}{accsupp} +\newcommand*{\glossariesextrasetup}[1]{% + \let\glsxtr@setup@record\relax + \let\@glsxtr@setupshortcuts\relax + \let\@glsxtr@redef@forglsentries\relax + \let\@glsxtr@doloadprefix\relax + \setkeys{glossaries-extra.sty}{#1}% + \@glsxtr@abbreviationsdef + \let\@glsxtr@abbreviationsdef\relax + \@glsxtr@setupshortcuts + \glsxtr@setup@record + \@glsxtr@redef@forglsentries + \@glsxtr@doloadprefix +} +\let\glsxtr@org@@do@wrglossary\@@do@wrglossary +\newcommand*{\glsxtr@@do@wrglossary}[1]{% + \@@glsxtrwrglossmark + \glsxtr@inc@wrglossaryctr{#1}% + \glsxtr@org@@do@wrglossary{#1}% +} +\let\glsxtr@saveentrycounter\@gls@saveentrycounter +\let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter +\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 + \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 +} +\newcommand*{\@glsxtrdialecthook}{} +\glsxtr@setup@record +\AtBeginDocument{% + \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}% + \def\@glsxtrundeftag{\glsxtrundeftag}% +} +\newcommand*{\GlsXtrIfUnusedOrUndefined}[3]{% + \ifglsentryexists{#1}% + {\ifbool{glo@\glsdetoklabel{#1}@flag}{#3}{#2}}% + {#2}% +} +\ifdef\s@ifglossaryexists +{} +{ + \renewcommand{\ifglossaryexists}{% + \@ifstar\s@ifglossaryexists\@ifglossaryexists + } + \newcommand{\@ifglossaryexists}[3]{% + \ifcsundef{@glotype@#1@out}{#3}{#2}% + } + \newcommand{\s@ifglossaryexists}[3]{% + \ifcsundef{glolist@#1}{#3}{#2}% + } +} +\newcommand{\glsxtrifemptyglossary}[3]{% + \ifcsdef{glolist@#1}% + {% + \ifcsstring{glolist@#1}{,}{#2}{#3}% + }% + {% + \glsxtrundefaction{Glossary type `#1' doesn't exist}{}% + #2% + }% +} +\newcommand*{\glsxtrifkeydefined}[3]{% + \key@ifundefined{glossentry}{#1}{#3}{#2}% +} +\newcommand*{\glsxtrprovidestoragekey}{% + \@ifstar\@sglsxtr@provide@storagekey\@glsxtr@provide@storagekey +} +\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}% + }% + \ifblank{#3} + {}% + {% + \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% + }% + }% + {% + \ifblank{#3} + {}% + {% + \providecommand*{#3}[1]{\@gls@entry@field{##1}{#1}}% + }% + }% +} +\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}% +} +\newcommand{\GlsXtrFmtField}{useri} +\newcommand{\GlsXtrFmtDefaultOptions}{noindex} +\newrobustcmd*{\glsxtrfmt}{\@ifstar\s@glsxtrfmt\@glsxtrfmt} +\newcommand*{\@glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{#3}{}} +\newcommand*{\s@glsxtrfmt}[3][]{% + \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{#3}}% + {\@@glsxtrfmt{#1}{#2}{#3}{}}% +} +\def\s@@glsxtrfmt#1#2#3[#4]{\@@glsxtrfmt{#1}{#2}{#3}{#4}} +\newcommand*{\@@glsxtrfmt}[4]{% + \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}}% + }% + {% + \begingroup + \@gls@setdefault@glslink@opts + \setkeys{glslink}{\GlsXtrFmtDefaultOptions,#1}% + \ifKV@glslink@noindex\else\glsadd{#2}\fi + \endgroup + \glsxtrfmtdisplay{@firstofone}{#3}{#4}% + }% + \endgroup +} +\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3} +\ifdef\texorpdfstring +{ + \newcommand*{\glsxtrentryfmt}[2]{% + \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% + } +} +{ + \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt} +} +\newcommand*{\glsxtrpdfentryfmt}[2]{#2} +\newrobustcmd*{\@glsxtrentryfmt}[2]{% + {% + \protected@edef\glslabel{#1}% + \glsdoifexistsordo{#1}% + {% + \ifglshasfield{\GlsXtrFmtField}{#1}% + {% + \csuse{\glscurrentfieldvalue}{#2}% + }% + {#2}% + }% + {#2}% + }% +} +\newcommand*{\glsxtrfieldlistadd}[3]{% + \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +\newcommand*{\glsxtrfieldlistgadd}[3]{% + \listcsgadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +\newcommand*{\glsxtrfieldlisteadd}[3]{% + \listcseadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +\newcommand*{\glsxtrfieldlistxadd}[3]{% + \listcsxadd{glo@\glsdetoklabel{#1}@#2}{#3}% +} +\newcommand*{\glsxtrfielddolistloop}[2]{% + \dolistcsloop{glo@\glsdetoklabel{#1}@#2}% +} +\newcommand*{\glsxtrfieldforlistloop}[3]{% + \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}% +} +\newrobustcmd*{\glsxtrfieldformatlist}[2]{% + \begingroup + \def\@dtl@formatlist@itemsep{}% + \def\@dtl@formatlist@lastitem{}% + \def\@dtl@formatlist@prelastitem{}% + \def\@dtl@formatlist@prelastitemsep{}% + \forlistcsloop{\@dtl@formatlist@handler}{glo@\glsdetoklabel{#1}@#2}% + \@dtl@formatlist@prelastitem\@dtl@formatlist@lastitem + \endgroup +} +\newcommand*{\glsxtrfieldifinlist}[5]{% + \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% +} +\newcommand*{\glsxtrfieldxifinlist}[5]{% + \xifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% +} +\newcommand*{\glsxtrforcsvfield}{% + \@ifstar\s@glsxtrforcsvfield\@glsxtrforcsvfield +} +\newcommand*{\@glsxtrforcsvfield}[3]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \let\glsxtrendfor\@endfortrue + \@for\@glsxtr@label:=\glscurrentfieldvalue\do + {\expandafter#3\expandafter{\@glsxtr@label}}}% + {}% +} +\newcommand*{\s@glsxtrforcsvfield}[3]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \let\glsxtrendfor\@endfortrue + \@for\@glsxtr@label:=\glscurrentfieldvalue\do + {\expandafter#3\expandafter{\@glsxtr@label}}}% + {}% +} +\newrobustcmd*{\glsxtrfieldformatcsvlist}[2]{% + \@glsxtrifhasfield{#2}{#1}% + {\@dtlformatlist\glscurrentfieldvalue}% + {}% +} +\newcommand*{\GlsXtrIfFieldValueInCsvList}{% + \@ifstar\s@GlsXtrIfFieldValueInCsvList\@GlsXtrIfFieldValueInCsvList +} +\newcommand*{\@GlsXtrIfFieldValueInCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\s@GlsXtrIfFieldValueInCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\GlsXtrIfValueInFieldCsvList}{% + \@ifstar\s@GlsXtrIfValueInFieldCsvList\@GlsXtrIfValueInFieldCsvList +} +\newcommand*{\@GlsXtrIfValueInFieldCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\s@GlsXtrIfValueInFieldCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\xGlsXtrIfValueInFieldCsvList}{% + \@ifstar\s@xGlsXtrIfValueInFieldCsvList\@xGlsXtrIfValueInFieldCsvList +} +\newcommand*{\@xGlsXtrIfValueInFieldCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \protected@edef\@gls@tmp{#3}% + \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\s@xGlsXtrIfValueInFieldCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \protected@edef\@gls@tmp{#3}% + \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +\newrobustcmd{\glsxtrifhasfield}{% + \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}% +} +\newcommand{\@glsxtrifhasfield}[4]{% + {\s@glsxtrifhasfield{#1}{#2}{#3}{#4}}% +} +\newcommand{\s@glsxtrifhasfield}[4]{% + \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% + \ifundef\glscurrentfieldvalue + {#4}% + {% + \ifdefempty\glscurrentfieldvalue{#4}{#3}% + }% +} +\newcommand{\GlsXtrIfFieldNonZero}{% + \@ifstar\s@GlsXtrIfFieldNonZero\@GlsXtrIfFieldNonZero +} +\newcommand{\@GlsXtrIfFieldNonZero}[4]{% + \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% +} +\newcommand{\s@GlsXtrIfFieldNonZero}[4]{% + \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% +} +\newcommand{\GlsXtrIfFieldEqNum}{% + \@ifstar\s@GlsXtrIfFieldEqNum\@GlsXtrIfFieldEqNum +} +\newcommand{\@GlsXtrIfFieldEqNum}[5]{% + \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% +} +\newcommand{\s@GlsXtrIfFieldEqNum}[5]{% + \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}% +} +\newcommand{\GlsXtrIfFieldCmpNum}{% + \@ifstar\s@GlsXtrIfFieldCmpNum\@GlsXtrIfFieldCmpNum +} +\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 + }% +} +\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 +} +\newcommand{\GlsXtrIfFieldUndef}[2]{% + \ifcsundef{glo@\glsdetoklabel{#2}@#1}% +} +\newcommand*{\glsxtrusefield}[2]{% + \@gls@entry@field{#1}{#2}% +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsxtrusefield}[2]{% + \texorpdfstring + {\@Gls@entry@field{#1}{#2}} + {\@gls@entry@field{#1}{#2}}% + } +} +{ + \newcommand*{\Glsxtrusefield}[2]{% + \@Gls@entry@field{#1}{#2}% + } +} +\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}}}% + } +} +\newcommand*{\glsxtrentryparentname}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@parent}% + {\csuse{glo@\csuse{glo@\glsdetoklabel{#1}@parent}@name}}% + {}% +} +\newcommand*{\glsxtrdeffield}[2]{\csdef{glo@\glsdetoklabel{#1}@#2}} +\newcommand*{\glsxtredeffield}[2]{\protected@csedef{glo@\glsdetoklabel{#1}@#2}} +\newcommand*{\glsxtrapptocsvfield}[3]{% + \ifcsdef{glo@\glsdetoklabel{#1}@#2}% + {\csappto{glo@\glsdetoklabel{#1}@#2}{,#3}}% + {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newcommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}} +\newrobustcmd*{\GlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newrobustcmd*{\GlstrLetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newrobustcmd*{\csGlsXtrLetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csletcs{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newrobustcmd*{\GlsXtrLetFieldToField}[4]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csletcs{glo@\glsdetoklabel{#1}@#2}{glo@\glsdetoklabel{#3}@#4}}% +} +\newrobustcmd*{\gGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newrobustcmd*{\xGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\protected@csxdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newrobustcmd*{\eGlsXtrSetField}[3]{% + \glsxtrsetfieldifexists{#1}{#2}% + {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +\newcommand*{\GlsXtrIfFieldEqStr}{% + \@ifstar\s@GlsXtrIfFieldEqStr\@GlsXtrIfFieldEqStr +} +\newrobustcmd*{\@GlsXtrIfFieldEqStr}[5]{% + \@glsxtrifhasfield{#1}{#2}% + {% + \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% + }% + {#5}% +} +\newrobustcmd*{\s@GlsXtrIfFieldEqStr}[5]{% + \s@glsxtrifhasfield{#1}{#2}% + {% + \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\GlsXtrIfFieldEqXpStr}{% + \@ifstar\s@GlsXtrIfFieldEqXpStr\@GlsXtrIfFieldEqXpStr +} +\newrobustcmd*{\@GlsXtrIfFieldEqXpStr}[5]{% + \@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +\newrobustcmd*{\s@GlsXtrIfFieldEqXpStr}[5]{% + \s@glsxtrifhasfield{#1}{#2}% + {% + \protected@edef\@gls@tmp{#3}% + \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\GlsXtrIfXpFieldEqXpStr}{% + \@ifstar\s@GlsXtrIfXpFieldEqXpStr\@GlsXtrIfXpFieldEqXpStr +} +\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}% +} +\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}% +} +\ifdef\foreignlanguage +{ + \ifdef\GetTrackedDialectFromLanguageTag + { + \newcommand{\GlsXtrForeignText}[2]{% + \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 + {% + \ifundef\TrackedDialectClosestSubMatch + {% + \GlossariesExtraWarning{Can't obtain dialect label + (tracklang v1.3.6+ required)}% + }% + {\let\@glsxtr@dialect\TrackedDialectClosestSubMatch}% + }% + {}% + \ifdefempty\@glsxtr@dialect + {% + }% + {% + \ifcsundef{captions\@glsxtr@dialect}{}% + {% + \IfTrackedDialectHasMapping{\@glsxtr@dialect}% + {% + \edef\@glsxtr@dialect{% + \GetTrackedDialectToMapping{\@glsxtr@dialect}}% + \ifcsundef{captions\@glsxtr@dialect}{}% + {% + \ifcsundef{captions\@tracklang@lang}{}% + {% + \let\@glsxtr@dialect\@tracklang@lang + }% + }% + }% + {% + \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% + } + } +} +{ + \newcommand{\GlsXtrForeignText}[2]{#2} +} +\newcommand*{\GlsXtrForeignTextField}{userii} +\newcommand*{\GlsXtrUnknownDialectWarning}[2]{% + \GlossariesExtraWarning{Can't determine valid dialect label + for locale `#1' (root language: #2)}% +} +\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 + } +}% +\newcommand{\apptoglossarypreamble}[2][\glsdefaulttype]{% + \ifcsdef{glolist@#1}% + {% + \ifcsundef{@glossarypreamble@#1}% + {\csdef{@glossarypreamble@#1}{}}% + {}% + \csappto{@glossarypreamble@#1}{#2}% + }% + {% + \GlossariesExtraWarning{Glossary `#1' is not defined}% + }% +} +\newcommand{\preglossarypreamble}[2][\glsdefaulttype]{% + \ifcsdef{glolist@#1}% + {% + \ifcsundef{@glossarypreamble@#1}% + {\csdef{@glossarypreamble@#1}{}}% + {}% + \cspreto{@glossarypreamble@#1}{#2}% + }% + {% + \GlossariesExtraWarning{Glossary `#1' is not defined}% + }% +} +\ifdef\@gls@entry@field +{ + \renewcommand*{\@gls@entry@field}[2]{\csuse{glo@\glsdetoklabel{#1}@#2}} +} +{} +\renewcommand*{\ifglsused}[3]{% + \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}% +} +\renewcommand*{\longnewglossaryentry}{% + \@ifstar\@glsxtr@s@longnewglossaryentry\@glsxtr@longnewglossaryentry +} +\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 + }% +} +\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}% + \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}% + } + \gls@defglossaryentry{#1}{#2}% + \egroup + }% +} +\newcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip\nopostdesc} +\renewcommand{\newignoredglossary}{% + \@ifstar\glsxtr@s@newignoredglossary\glsxtr@org@newignoredglossary +} +\newcommand*{\glsxtr@org@newignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + }% + {% + \ifdefempty\@ignored@glossaries + {% + \protected@edef\@ignored@glossaries{#1}% + }% + {% + \protected@eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + \ifdefempty\@gls@nohyperlist + {% + \renewcommand*{\@gls@nohyperlist}{#1}% + }% + {% + \protected@eappto\@gls@nohyperlist{,#1}% + }% + }% +} +\newcommand*{\glsxtr@s@newignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {% + \glsxtrundefaction{Glossary type `#1' already exists}{}% + }% + {% + \ifdefempty\@ignored@glossaries + {% + \protected@edef\@ignored@glossaries{#1}% + }% + {% + \protected@eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + }% +} +\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}}% + } +} +\newcommand{\provideignoredglossary}{% + \@ifstar\glsxtr@s@provideignoredglossary\glsxtr@provideignoredglossary +} +\newcommand*{\glsxtr@provideignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {}% + {% + \ifdefempty\@ignored@glossaries + {% + \protected@edef\@ignored@glossaries{#1}% + }% + {% + \protected@eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + \ifdefempty\@gls@nohyperlist + {% + \renewcommand*{\@gls@nohyperlist}{#1}% + }% + {% + \protected@eappto\@gls@nohyperlist{,#1}% + }% + }% +} +\newcommand*{\glsxtr@s@provideignoredglossary}[1]{% + \ifcsdef{glolist@#1} + {}% + {% + \ifdefempty\@ignored@glossaries + {% + \protected@edef\@ignored@glossaries{#1}% + }% + {% + \protected@eappto\@ignored@glossaries{,#1}% + }% + \csgdef{glolist@#1}{,}% + \ifcsundef{gls@#1@entryfmt}% + {% + \defglsentryfmt[#1]{\glsentryfmt}% + }% + {}% + }% +} +\newcommand*{\glsxtrcopytoglossary}[2]{% + \glsdoifexists{#1}% + {% + \ifcsdef{glolist@#2} + {% + \protected@cseappto{glolist@#2}{#1,}% + }% + {% + \glsxtrundefaction{Glossary type `#2' doesn't exist}{}% + }% + }% +} +\renewcommand{\glsdoifexists}[2]{% + \ifglsentryexists{#1}{#2}% + {% + \protected@edef\glslabel{\glsdetoklabel{#1}}% + \glsxtrundefaction{Glossary entry `\glslabel' + has not been defined}{You need to define a glossary entry before + you can reference it.}% + }% +} +\renewcommand{\glsdoifnoexists}[2]{% + \ifglsentryexists{#1}{% + \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}' + has already been defined}{}}{#2}% +} +\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% + }% + }% +} +\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}% + }% +} + +\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}} +\newcommand*{\glsxtrusesee}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}% + \ifdefempty\@glo@see + {}% + {% + \expandafter\glsxtr@usesee\@glo@see\@end@glsxtr@usesee + }% + }% +} +\newcommand*{\glsxtr@usesee}[1][\seename]{% + \@glsxtr@usesee[#1]% +} +\def\@glsxtr@usesee[#1]#2\@end@glsxtr@usesee{% + \glsxtruseseeformat{#1}{#2}% +} +\newcommand*{\glsxtruseseeformat}[2]{% + \glsseeformat[#1]{#2}{}% +} +\renewcommand*{\glsseeitemformat}[1]{% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% +} +\newcommand*{\glsxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% + }% +} +\newcommand*{\Glsxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {% + \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% + }% + {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}% + }% +} +\newcommand*{\GlsXtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {}% + \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}% + }% +} +\newcommand*{\GLSxtrhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {% + \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% + }% + {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}% + }% +} +\newcommand*{\GLSXTRhiername}[1]{% + \glsdoifexists{#1}% + {% + \glsxtrifhasfield{parent}{#1}% + {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% + {} + \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% + }% +} +\newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,} +\newcommand*{\glsxtruseseealso}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}% + \ifdefempty\@glo@see + {}% + {% + \expandafter\glsxtruseseealsoformat\expandafter{\@glo@see}% + }% + }% +} +\newcommand*{\glsxtrusealias}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}% + \ifdefempty\@glo@see + {}% + {% + \glsxtruseseeformat{\seename}{\@glo@see}% + }% + }% +} +\newcommand*{\glsxtruseseealsoformat}[1]{% + \glsseeformat[\seealsoname]{#1}{}% +} +\newrobustcmd{\glsxtrseelist}[1]{% + \protected@edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp +} +\renewrobustcmd*{\glsseelist}[1]{% + \let\@gls@dolast\relax + \let\@gls@donext\relax + \let\@glsseeitem\@glsxtr@seefirstitem + \let\@glsseelastsep\glsseelastsep + \@for\@gls@thislabel:=#1\do{% + \ifx\@xfor@nextelement\@nnil + \@gls@dolast + \else + \@gls@donext + \fi + \expandafter\@glsseeitem\expandafter{\@gls@thislabel}% + \let\@gls@dolast\@glsseelastsep + \let\@gls@donext\glsseesep + \let\@glsseeitem\@glsxtr@seeitem + \let\@glsseelastsep\glsseelastoxfordsep + }% +} +\newcommand*{\@glsxtr@seeitem}[1]{% + \glsxtrifmulti{#1}{\mglsseeitem{#1}}{\glsseeitem{#1}}% +} +\newcommand*{\@glsxtr@seefirstitem}[1]{% + \glsxtrifmulti{#1}{\mglsseefirstitem{#1}}{\glsseefirstitem{#1}}% +} +\newcommand*{\mglsseeitem}[1]{% + \mglsname[all={noindex},setup={hyper=allmain}]{#1}% +} +\newcommand*{\mglsseefirstitem}{\mglsseeitem} +\newcommand*{\glsseefirstitem}{\glsseeitem} +\newcommand*{\glsseelastoxfordsep}{\glsseelastsep} +\ifdef\alsoname +{\providecommand{\seealsoname}{\alsoname}} +{\providecommand{\seealsoname}{see also}} +\ifdef\@xdycrossrefhook +{ + \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")}% + } + \appto\@xdylocationclassorder{\space\string"seealso\string"} + \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" + ) + }% + }% + } +} +{ + \newrobustcmd*{\glsxtrindexseealso}{\glssee[\seealsoname]} +} +\ifdef\gls@set@xr@key +{ + \define@key{glossentry}{alias}{% + \gls@set@xr@key{alias}{\@glo@alias}{#1}% + } + \define@key{glossentry}{seealso}{% + \gls@set@xr@key{seealso}{\@glo@seealso}{#1}% + } + \appto\@gls@keymap{,{alias}{alias},{seealso}{seealso}} + \appto\@newglossaryentryprehook{\def\@glo@alias{}\def\@glo@seealso{}}% + \appto\@newglossaryentryposthook{% + \ifdefvoid\@glo@seealso + {\csxdef{glo@\@glo@label @seealso}{}}% + {% + \csxdef{glo@\@glo@label @seealso}{\@glo@seealso}% + \if@glsxtr@autoseeindex + \@glsxtr@autoindexcrossrefs + \fi + }% + \ifdefvoid\@glo@alias + {\csxdef{glo@\@glo@label @alias}{}}% + {% + \csxdef{glo@\@glo@label @alias}{\@glo@alias}% + }% + } + \newcommand*{\glsxtralias}[1]{\@gls@entry@field{#1}{alias}} + \newcommand*{\glsxtrseealsolabels}[1]{\@gls@entry@field{#1}{seealso}} + \appto\@glo@autoseehook{% + \ifdefvoid\@glo@alias + {% + \ifdefvoid\@glo@seealso + {}% + {% + \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso + {\@glo@label}{\@glo@seealso}}% + \@do@glssee + }% + }% + {% + \ifdefvoid\@glo@see + {% + \protected@edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}% + \@do@glssee + }% + {}% + }% + }% +} +{ + \glsaddstoragekey*{alias}{}{\glsxtralias} + \glsaddstoragekey*{seealso}{}{\glsxtrseealsolabels} + \appto\@newglossaryentryposthook{% + \ifcsvoid{glo@\@glo@label @alias}% + {% + \ifcsvoid{glo@\@glo@label @seealso}% + {}% + {% + \protected@edef\@do@glssee{\noexpand\glsxtrindexseealso + {\@glo@label}{\csuse{glo@\@glo@label @seealso}}}% + \@do@glssee + }% + }% + {% + \ifdefvoid\@glo@see + {% + \protected@edef\@do@glssee{\noexpand\glssee + {\@glo@label}{\csuse{glo@\@glo@label @alias}}}% + \@do@glssee + }% + {}% + }% + } +} +\AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi} +\newcommand*{\glsxtraddallcrossrefs}{% + \forallglossaries{\@glo@type}% + {% + \forglsentries[\@glo@type]{\@glo@label}% + {% + \ifglsused{\@glo@label}% + {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}% + }% + }% +} +\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 + }% +} +\newcommand*{\glsxtr@addunused}[1][]{% + \@glsxtr@addunused +} +\def\@glsxtr@addunused#1\@end@glsxtr@addunused{% + \@for\@glsxtr@label:=#1\do + {% + \glsxtrifmulti\@glsxtr@label + {% + \letcs\@glsxtr@labellist{@gls@combined@\@glsxtr@label @list}% + \@for\@glsxtr@multilabel:=\@glsxtr@labellist\do + {\@glsxtr@addunused\@glsxtr@multilabel\@end@glsxtr@addunused}% + }% + {% + \ifglsused{\@glsxtr@label}{}% + {% + \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}% + \glsunset{\@glsxtr@label}% + \expandafter\@glsxtr@addunusedxrefs\expandafter{\@glsxtr@label}% + }% + }% + }% +} +\newcommand*{\glsxtrunusedformat}[1]{\unskip} +\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 + \@gls@enablesavenonumberlist + \let\gls@checkseeallowed\relax + \let\newglossaryentry\new@atom@glossaryentry + \global\newwrite\@gls@deffile + \immediate\openout\@gls@deffile=\jobname.glsdefs + \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 +} +\newrobustcmd{\new@atom@glossaryentry}[2]{% + \gls@defglossaryentry{#1}{#2}% + \@gls@writedef{#1}% +} +\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries +\renewcommand{\makenoidxglossaries}{% + \@domakeglossaries + {% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {% + \glsxtr@orgmakenoidxglossaries + \renewcommand{\@do@seeglossary}[2]{% + \@@glsxtrwrglossmark + \protected@edef\@gls@label{\glsdetoklabel{##1}}% + \protected@write\@auxout{}{% + \string\@gls@reference + {\csname glo@\@gls@label @type\endcsname}% + {\@gls@label}% + {% + \string\glsseeformat##2{}% + }% + }% + }% + \if@glsxtrdocdefrestricted + \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 + \@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}% + }% + }% +} +\renewcommand*{\gls@defdocnewglossaryentry}{% + \ifcase\@glsxtr@docdefval + \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 + \let\gls@checkseeallowed\relax + \let\newglossaryentry\new@glossaryentry + \else + \let\gls@checkseeallowed\relax + \fi +}% +\newcommand*{\GlsXtrEnableOnTheFly}{% + \@ifstar\@sGlsXtrEnableOnTheFly\@GlsXtrEnableOnTheFly +} +\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 +} +\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)}% +} +\newcommand*{\@GlsXtrEnableOnTheFly}{% + \newcommand*{\glsxtrcat}{general} + \newcommand*{\glsxtr}[1][]{% + \def\glsxtr@keylist{##1}% + \@glsxtr + } + \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}% + } + \newcommand*{\Glsxtr}[1][]{% + \def\glsxtr@keylist{##1}% + \@Glsxtr + } + \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}% + } + \newcommand*{\glsxtrpl}[1][]{% + \def\glsxtr@keylist{##1}% + \@glsxtrpl + } + \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}% + } + \newcommand*{\Glsxtrpl}[1][]{% + \def\glsxtr@keylist{##1}% + \@Glsxtrpl + } + \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}% + } + \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}% + } + \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}% + } + \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} + \let\GlsXtrEnableOnTheFly\relax +} +\@onlypreamble\GlsXtrEnableOnTheFly +\newcommand*{\@glsxtr@current@style}{\@glossary@default@style} +\renewcommand*{\setglossarystyle}[1]{% + \ifcsundef{@glsstyle@#1}% + {% + \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}% + }% + {% + \csname @glsstyle@#1\endcsname + \protected@edef\@glsxtr@current@style{#1}% + }% + \ifx\@glossary@default@style\relax + \protected@edef\@glossary@default@style{#1}% + \fi +} +\ifdef\@glossary@default@style +{} +{% + \let\@glossary@default@style\relax +} +\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 +} +{}% +\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 +} +{}% +\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 +} +{}% +\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 +\newcommand*{\GlsXtrFormatLocationList}[1]{#1} +\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 +\newcommand*{\@@glsxtrpreloctag}{% + \let\@glsxtr@org@delimN\delimN + \let\@glsxtr@org@delimR\delimR + \let\@glsxtr@org@glsignore\glsignore + \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 +} +\newcommand*{\@glsxtrpreloctag}{} +\newcommand*{\@glsxtr@pagetag}{}% +\newcommand*{\@glsxtr@pagestag}{}% +\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}}% +} +\newcommand*{\@glsxtrpostloctag}{} +\newcommand*{\@glsxtr@savepreloctag}[2]{} +\protected@write\@auxout{}{% + \string\providecommand\string\@glsxtr@savepreloctag[2]{}} +\newcommand*{\@glsxtr@doloctag}{} +\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 + }% +} +\renewcommand*{\glsentryfmt}{% + \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}% + \glsifregular{\glslabel}% + {\glsxtrregularfont{\glsgenentryfmt}}% + {% + \ifglshasshort{\glslabel}% + {\glsxtrabbreviationfont{\glsxtrgenabbrvfmt}}% + {\glsxtrregularfont{\glsgenentryfmt}}% + }% +} +\newcommand*{\glsxtrregularfont}[1]{#1} +\newcommand*{\glsxtrabbreviationfont}[1]{#1} +\renewcommand{\@gls@field@link}[4][]{% + \@glsxtr@record{#2}{#3}{glslink}% + \glsdoifexists{#3}% + {% + \let\glsxtrorg@ifKV@glslink@hyper\ifKV@glslink@hyper + \@gls@save@glslocal + \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 + \@gls@restore@glslocal + }% + \glspostlinkhook +} +\let\@glsxtr@org@gls@\@gls@ +\def\@gls@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@gls@{#1}{#2}% +}% +\let\@glsxtr@org@glspl@\@glspl@ +\def\@glspl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@glspl@{#1}{#2}% +}% +\let\@glsxtr@org@Gls@\@Gls@ +\def\@Gls@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@Gls@{#1}{#2}% +}% +\let\@glsxtr@org@Glspl@\@Glspl@ +\def\@Glspl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@Glspl@{#1}{#2}% +}% +\let\@glsxtr@org@GLS@\@GLS@ +\def\@GLS@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@GLS@{#1}{#2}% +}% +\let\@glsxtr@org@GLSpl@\@GLSpl@ +\def\@GLSpl@#1#2{% + \@glsxtr@record{#1}{#2}{glslink}% + \@glsxtr@org@GLSpl@{#1}{#2}% +}% +\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}% + \@gls@do@glsunset{#2}% + }% + \glspostlinkhook +} +\renewcommand*{\@gls@@link}[3][]{% + \@glsxtr@record{#1}{#2}{glslink}% + \glsdoifexistsordo{#2}% + {% + \let\do@gls@link@checkfirsthyper\relax + \def\glscustomtext{#3}% + \@glsxtr@field@linkdefs + \@gls@link[#1]{#2}{#3}% + }% + {% + \glstextformat{#3}% + }% + \glspostlinkhook +} +\newcommand*{\glsxtrinitwrgloss}{% + \glsifattribute{\glslabel}{wrgloss}{after}% + {% + \glsxtrinitwrglossbeforefalse + }% + {% + \glsxtrinitwrglossbeforetrue + }% +} +\newif\ifglsxtrinitwrglossbefore +\glsxtrinitwrglossbeforetrue +\define@choicekey{glslink}{wrgloss}% +[\@glsxtr@wrglossval\@glsxtr@wrglossnr]% +{before,after}% +{% + \ifcase\@glsxtr@wrglossnr\relax + \glsxtrinitwrglossbeforetrue + \or + \glsxtrinitwrglossbeforefalse + \fi +} +\define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}} +\define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}} +\define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{} +\glsxtr@hyperoutsidetrue +\define@key{glslink}{textformat}{% + \ifcsdef{#1} + {% + \letcs{\@glsxtr@local@textformat}{#1}% + }% + {% + \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}% + }% +} +\define@key{glslink}{prefix}{\def\glolinkprefix{#1}} +\newcommand*{\glsxtrinithyperoutside}{% + \glsifattribute{\glslabel}{hyperoutside}{false}% + {% + \glsxtr@hyperoutsidefalse + }% + {% + \glsxtr@hyperoutsidetrue + }% +} +\newcommand*{\glsxtr@inc@linkcount}{} +\newcommand*{\glslinkpresetkeys}{} +\newrobustcmd*{\GlsXtrExpandedFmt}[2]{% + \protected@edef\@glsxtr@tmp{#2}% + \expandafter#1\expandafter{\@glsxtr@tmp}% +} +\newcommand*{\@glsxtr@use@equation@counter}{% + \@glsxtr@ifnum@mmode{\def\@gls@counter{equation}}{}% +} +\newcommand*{\glsxtr@do@autoadd}[1]{} +\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 + }% +} +\providecommand*{\glslinkwrcontent}[1]{{#1}} +\def\@gls@link[#1]#2#3{% + \leavevmode + \protected@edef\glslabel{\glsdetoklabel{#2}}% + \def\@gls@link@opts{#1}% + \let\@gls@link@label\glslabel + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% + \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}% + \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper + \@gls@save@glslocal + \let\@glsxtr@org@glolinkprefix\glolinkprefix + \let\@glsxtr@local@textformat\relax + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \glsxtrinitwrgloss + \glsxtrinithyperoutside + \@gls@setdefault@glslink@opts + \glsxtr@inc@linkcount + \if@glsxtr@equations + \@glsxtr@use@equation@counter + \fi + \do@glsdisablehyperinlist + \do@gls@link@checkfirsthyper + \glslinkpresetkeys + \setkeys{glslink}{#1}% + \glsxtr@do@autoadd{glslink}% + \glslinkpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \@gls@setsort{\glslabel}% + \ifx\@glsxtr@local@textformat\relax + \glshasattribute{\glslabel}{textformat}% + {% + \protected@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 + \glslinkwrcontent + {% + \ifglsxtrinitwrglossbefore + \@do@wrglossary{#2}% + \fi + \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 + \ifglsxtrinitwrglossbefore + \else + \@do@wrglossary{#2}% + \fi + }% + \let\glolinkprefix\@glsxtr@org@glolinkprefix + \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper + \@gls@restore@glslocal +} +\define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}} +\define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}} +\newcommand*{\glsaddpresetkeys}{} + +\newcommand*{\glsaddpostsetkeys}{} +\renewrobustcmd*{\glsadd}[2][]{% + \glsxtrifinmark + {}% + {% + \@gls@adjustmode + \begingroup + \@glsxtr@record{#1}{#2}{glossadd}% + \glsdoifexists{#2}% + {% + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \glsaddpresetkeys + \setkeys{glossadd}{#1}% + \glsaddpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \@gls@setsort{#2}% + \KV@glslink@noindexfalse + \@@do@wrglossary{#2}% + }% + \endgroup + }% +} +\newrobustcmd{\glsaddeach}[2][]{% + \@for\@gls@thislabel:=#2\do{\glsadd[#1]{\@gls@thislabel}}% +} +\newcommand*{\@glsxtr@field@linkdefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + \let\glsifplural\@secondoftwo + \let\glscapscase\@firstofthree + \let\glsinsert\@empty +} +\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 + }% +} +\def\@glstext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}% +} +\def\@GLStext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}% + {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@Glstext@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}% + {\@gls@field@font{\Glsaccesstext{#2}#3}}% +} +\newcommand*{\glsxtrchecknohyperfirst}[1]{% + \glsifattribute{#1}{nohyperfirst}{true}{\KV@glslink@hyperfalse}{}% +} +\def\@glsfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \glsxtrchecknohyperfirst{#2}% + ]{#1}{#2}% + {\@gls@field@font{\glsaccessfirst{#2}#3}}% +} +\def\@Glsfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glscapscase\@secondofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}% +} +\def\@GLSfirst@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glscapscase\@thirdofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@glsplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}% + {\@gls@field@font{\glsaccessplural{#2}#3}}% +} +\def\@Glsplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}% +} +\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}}}% +} +\def\@glsfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}% +} +\def\@Glsfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@secondofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}% +} +\def\@GLSfirstplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glsxtrifwasfirstuse\@firstoftwo + \let\glsifplural\@firstoftwo + \let\glscapscase\@thirdofthree + \glsxtrchecknohyperfirst{#2}% + ]% + {#1}{#2}% + {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@glsname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}% +} +\def\@Glsname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsaccessname{#2}#3}}% +} +\def\@GLSname@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}% + {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@glsdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}% +} +\def\@Glsdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsaccessdesc{#2}#3}}% +} +\def\@GLSdesc@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@glsdescplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}% +} +\def\@Glsdescplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}% +} +\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}}}% +} +\def\@glssymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}% +} +\def\@Glssymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}% +} +\def\@GLSsymbol@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}% +} +\def\@glssymbolplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}% +} +\def\@Glssymbolplural@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo + \let\glsifplural\@firstoftwo + ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}% +} +\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}}}% +} +\def\@Glsuseri@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]{#1}{#2}% + {\@gls@field@font{\Glsentryuseri{#2}#3}}% +} +\def\@GLSuseri@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}% +} +\def\@Glsuserii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}% +} +\def\@GLSuserii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}% +} +\def\@Glsuseriii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}% +} +\def\@GLSuseriii@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}% +} +\def\@Glsuseriv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}% +} +\def\@GLSuseriv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}% + {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}% +} +\def\@Glsuserv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}% +} +\def\@GLSuserv@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}% +} +\def\@Glsuservi@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link + [\let\glscapscase\@secondoftwo]% + {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}% +} +\def\@GLSuservi@#1#2[#3]{% + \glsxtrassignfieldfont{#2}% + \@gls@field@link[\let\glscapscase\@thirdoftwo]% + {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}% +} +\newcommand*{\@@glsxtr@base@acrcmd@warn}[2]{% + \GlossariesExtraWarning{Base acronym command \string#1\space + should not be used with new abbreviation definitions. Use + \string#2\space instead}% +} +\let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn +\def\@acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshort\glsxtrshort + \glsdoifexists{#2}% + {% + \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper + \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 +} +\def\@Acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort + \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 +} +\def\@ACRshort#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort + \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 +} +\def\@acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl + \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 +} +\def\@Acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl + \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 +} +\def\@ACRshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl + \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 +} +\def\@acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlong\glsxtrlong + \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 +} +\def\@Acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong + \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 +} +\def\@ACRlong#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong + \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 +} +\def\@acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl + \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 +} +\def\@Acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl + \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 +} +\def\@ACRlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl + \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 +} +\def\@acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfull\glsxtrfull + \acrfullfmt{#1}{#2}{#3}% +} +\def\@Acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull + \Acrfullfmt{#1}{#2}{#3}% +} +\def\@ACRfull#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull + \ACRfullfmt{#1}{#2}{#3}% +} +\def\@acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl + \acrfullplfmt{#1}{#2}{#3}% +} +\def\@Acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl + \Acrfullplfmt{#1}{#2}{#3}% +} +\def\@ACRfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl + \ACRfullplfmt{#1}{#2}{#3}% +} +\renewcommand*{\@glsaddkey}[7]{% + \key@ifundefined{glossentry}{#1}% + {% + \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}}% + \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}% + }% + \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}% + }% + \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}{}% + }% +} +\providecommand*{\@gls@link@nocheckfirsthyper}{} +\let\@glsxtr@org@checkfirsthyper\@gls@link@checkfirsthyper +\renewcommand*{\@gls@link@checkfirsthyper}{% + \ifglsused{\glslabel}% + {\let\glsxtrifwasfirstuse\@secondoftwo} + {\let\glsxtrifwasfirstuse\@firstoftwo}% + \protected@edef\glscategorylabel{\glscategory{\glslabel}}% + \ifglsused{\glslabel}% + {% + \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}% + {\KV@glslink@hyperfalse}{}% + }% + {% + \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}% + {\KV@glslink@hyperfalse}{}% + }% + \glslinkcheckfirsthyperhook +} +\ifdef\do@glsdisablehyperinlist +{% + \let\@glsxtr@do@glsdisablehyperinlist\do@glsdisablehyperinlist + \renewcommand*{\do@glsdisablehyperinlist}{% + \@glsxtr@do@glsdisablehyperinlist + \glsifattribute{\glslabel}{nohyper}{true}{\KV@glslink@hyperfalse}{}% + } +} +{} +\define@boolkey{glslink}{noindex}[true]{} +\KV@glslink@noindexfalse +\providecommand*{\@gls@save@glslocal}{% + \let\if@org@KV@glslink@local\ifKV@glslink@local +} +\providecommand*{\@gls@restore@glslocal}{% + \ifKV@glslink@local + \let\@gls@do@glsunset\glslocalunset + \else + \let\@gls@do@glsunset\glsunset + \fi +} +\providecommand*{\@gls@do@glsunset}[1]{\glsunset{#1}} +\ifdef\@gls@setdefault@glslink@opts +{ + \renewcommand*{\@gls@setdefault@glslink@opts}{% + \KV@glslink@noindexfalse + \@glsxtrsetaliasnoindex + } +} +{ + \newcommand*{\@gls@setdefault@glslink@opts}{% + \KV@glslink@noindexfalse + \@glsxtrsetaliasnoindex + } + \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts} +} +\providecommand*{\glsxtrsetaliasnoindex}{% + \KV@glslink@noindextrue +} +\newcommand*{\@glsxtrsetaliasnoindex}{% + \ifcsvoid{glo@\glsdetoklabel{\glslabel}@alias}% + {}% + {% + \let\glsxtrindexaliased\@glsxtrindexaliased + \glsxtrsetaliasnoindex + \let\glsxtrindexaliased\@no@glsxtrindexaliased + }% +} +\newcommand{\@glsxtrindexaliased}{% + \ifKV@glslink@noindex + \else + \begingroup + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \protected@edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}% + \glsxtr@saveentrycounter + \@@do@wrglossary{\glsxtralias{\glslabel}}% + \endgroup + \fi +} +\newcommand{\@no@glsxtrindexaliased}{% + \PackageError{glossaries-extra}{\string\glsxtrindexaliased\space + not permitted outside definition of \string\glsxtrsetaliasnoindex}% + {}% +} +\let\glsxtrindexaliased\@no@glsxtrindexaliased +\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{% + \renewcommand*{\@gls@setdefault@glslink@opts}{% + \setkeys{glslink}{#1}% + \@glsxtrsetaliasnoindex + }% +} +\newcommand*{\glsxtrifindexing}[2]{% + \ifKV@glslink@noindex #2\else #1\fi +} +\renewcommand*{\glswriteentry}[2]{% + \glsxtrifindexing + {% + \ifglsindexonlyfirst + \GlsXtrIfUnusedOrUndefined{#1} + {#2}% + {\glsxtrdoautoindexname{#1}{dualindex}}% + \else + \glsifattribute{#1}{indexonlyfirst}{true}% + {% + \GlsXtrIfUnusedOrUndefined{#1}% + {#2}% + {\glsxtrdoautoindexname{#1}{dualindex}}% + }% + {#2}% + \fi + }% + {}% +} +\appto\@@do@@wrglossary{\@glsxtr@do@@wrindex + \glsxtrdowrglossaryhook{\@gls@label}% +} +\appto\gls@noidxglossary{\@glsxtr@do@@wrindex + \glsxtrdowrglossaryhook{\@gls@label}% +} +\newcommand*{\@glsxtr@do@@wrindex}{% + \glsxtrdoautoindexname{\@gls@label}{dualindex}% +} +\newcommand*{\glsxtrdowrglossaryhook}[1]{} +\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}% + }% + }% +} +\newcommand*{\@alt@gls@hyp@opt}[1][]{% + \let\glslinkvar\@firstofthree + \expandafter\@gls@hyp@opt@cs\expandafter[\@gls@alt@hyp@opt@keys,#1]} +\newcommand*{\@gls@alt@hyp@opt@char}{} +\newcommand*{\@gls@alt@hyp@opt@keys}{} +\newcommand*{\GlsXtrSetAltModifier}[2]{% + \let\@gls@hyp@opt\@gls@alt@hyp@opt + \ifstrequal{#1}{+}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {% + \ifstrequal{#1}{*}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {}% + }% + \def\@gls@alt@hyp@opt@char{#1}% + \def\@gls@alt@hyp@opt@keys{#2}% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {}% + {% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}% + \protected@write\@auxout{}{\string\@glsxtr@altmodifier{#1}}% + }% +} +\let\glsxtr@org@dohyperlink\glsdohyperlink +\ifdef\glsnavhyperlink +{ + \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{% + \protected@edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}% + {% + \let\glsxtrdohyperlink\glsxtr@org@dohyperlink + \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% + }% + }% +} +{} +\ifdef\@@gls@navhypertarget +{} +{% + \renewcommand*{\glsnavhypertarget}{\protect\@@gls@navhypertarget} + \newcommand*{\@@gls@navhypertarget}[3][\@glo@type]{% + \@glsnavhypertarget{#1}{#2}{#3}% + } +}% +\ifdef\@glsnavhypertarget +{% + \renewcommand*{\@glsnavhypertarget}[3]{% + \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}% + \@glsxtr@do@org@target{\glsnavhyperlinkname{#1}{#2}}{#3}% + \ifcsdef{@gls@hypergrouplist@#1}% + {% + \letcs\@gls@list{@gls@hypergrouplist@#1}% + \protected@edef\@gls@thishypernavlabel{#2}% + \expandafter\DTLifinlist\expandafter{\@gls@thishypernavlabel}\@gls@list{}% + {% + \GlossariesWarningNoLine{Navigation panel + for glossary type `#1'^^Jmissing group `#2'}% + \gdef\gls@hypergrouprerun{% + \GlossariesWarningNoLine{Navigation panel + has changed. Rerun LaTeX}}% + }% + }% + {% + \GlossariesWarningNoLine{Navigation panel + for glossary type `#1'^^Jmissing group `#2'}% + \gdef\gls@hypergrouprerun{% + \GlossariesWarningNoLine{Navigation panel + has changed. Rerun LaTeX}}% + }% + }% +} +{} +\newcommand*{\glsxtrdohyperlink}[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}}% + }% + }% + {% + \glsfieldfetch{\glslabel}{alias}{\gloaliaslabel}% + \ifdefvoid\gloaliaslabel + {% + \glsxtrhyperlink{#1}{{\glsxtrprotectlinks#2}}% + }% + {% + \glsxtrifmulti\gloaliaslabel + {% + \letcs\gloaliaslabel{@gls@combined@\gloaliaslabel @main}% + }% + {}% + \glsxtrhyperlink + {\glolinkprefix\glsdetoklabel{\gloaliaslabel}}% + {{\glsxtrprotectlinks#2}}% + }% + }% +} + +\newcommand{\glsxtrhyperlink}[2]{% + \glsdoshowtarget{#1}{\hyperlink{#1}{#2}}% +}% +\renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% + \glsdoifexists{#2}% + {% + \def\@glo@label{#2}% + {\protected@edef\glslabel{#2}% + \@glslink{\glolinkprefix\glslabel}{#1}}% + }% +} +\renewcommand{\glsdisablehyper}{% + \KV@glslink@hyperfalse + \def\@glslink{\glsdonohyperlink}% + \let\@glstarget\@secondoftwo +} +\renewcommand{\glsenablehyper}{% + \KV@glslink@hypertrue + \def\@glslink{\glsxtrdohyperlink}% + \def\@glstarget{\glsdohypertarget}% +} +\def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}} +\ifcsundef{hyperlink}% +{% + \def\@glslink{\glsdonohyperlink} +}% +{% + \def\@glslink{\glsxtrdohyperlink} +} +\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@ +} +\def\@glsxtr@p@text@#1#2[#3]{{\@glstext@{#1}{#2}[#3]}} +\def\@Glsxtr@p@text@#1#2[#3]{{\@Glstext@{#1}{#2}[#3]}} +\def\@GLSxtr@p@text@#1#2[#3]{{\@GLStext@{#1}{#2}[#3]}} +\def\@glsxtr@p@plural@#1#2[#3]{{\@glsplural@{#1}{#2}[#3]}} +\def\@Glsxtr@p@plural@#1#2[#3]{{\@Glsplural@{#1}{#2}[#3]}} +\def\@GLSxtr@p@plural@#1#2[#3]{{\@GLSplural@{#1}{#2}[#3]}} +\def\@glsxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\glsentryshort{#2}}#3% + }% +} +\def\@Glsxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\Glsentryshort{#2}}#3% + }% +} +\def\@GLSxtr@p@short@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}% + }% +} +\def\@glsxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\glsentryshortpl{#2}}#3% + }% +} +\def\@Glsxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \glsabbrvfont{\Glsentryshortpl{#2}}#3% + }% +} +\def\@GLSxtr@p@shortpl@#1#2[#3]{% + {% + \glssetabbrvfmt{\glscategory{#2}}% + \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}% + }% +} +\def\@glsxtr@p@long@#1#2[#3]{{\glsentrylong{#2}#3}} +\def\@Glsxtr@p@long@#1#2[#3]{{\Glsentrylong{#2}#3}} +\def\@GLSxtr@p@long@#1#2[#3]{% + {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}} +\def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} +\def\@Glsxtr@p@longpl@#1#2[#3]{{\glslongfont{\Glsentrylongpl{#2}}#3}} +\def\@GLSxtr@p@longpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}} +\def\@glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\glsentryshort{#2}}#3}} +\def\@Glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\Glsentryshort{#2}}#3}} +\def\@GLSxtr@p@acrshort@#1#2[#3]{% + {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}} +\def\@glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\glsentryshortpl{#2}}#3}} +\def\@Glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\Glsentryshortpl{#2}}#3}} +\def\@GLSxtr@p@acrshortpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}} +\def\@glsxtr@p@acrlong@#1#2[#3]{{\glsentrylong{#2}#3}} +\def\@Glsxtr@p@acrlong@#1#2[#3]{{\Glsentrylong{#2}#3}} +\def\@GLSxtr@p@acrlong@#1#2[#3]{% + {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}} +\def\@glsxtr@p@acrlongpl@#1#2[#3]{{\glsentrylongpl{#2}#3}} +\def\@Glsxtr@p@acrlongpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}} +\def\@GLSxtr@p@acrlongpl@#1#2[#3]{% + {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}} +\newcommand*{\@glsxtrp@opt}{hyper=false,noindex} +\newcommand*{\glsxtrsetpopts}[1]{% + \renewcommand*{\@glsxtrp@opt}{#1}% +} +\newcommand*{\glossxtrsetpopts}{% + \glsxtrsetpopts{noindex}% +} +\newrobustcmd*{\@@glsxtrp}[2]{% + {% + \let\glspostlinkhook\relax + \csname#1\expandafter\endcsname\expandafter[\@glsxtrp@opt]{#2}[]% + }% +} +\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}{}% + }% + }% +} +\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}{}% + }% + }% +} +\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}{}% + }% + }% +} +\newrobustcmd*{\glsxtr@headentry@p}[2]{% + \glsifattribute{#1}{headuc}{true}% + {% + \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}% + }% + {% + \@gls@entry@field{#1}{#2}% + }% +} +\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}% + }% + }% + } +} +\newcommand*{\glsps}{\glsxtrp{short}} +\newcommand*{\glspt}{\glsxtrp{text}} +\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}% + }% + }% + } +} +\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}% + }% + }% + } +} +\newcommand*{\@glsxtr@unset}[1]{% + \@@glsunset{#1}% + \glsxtrpostunset{#1}% +}% +\let\@glsunset\@glsxtr@unset +\newcommand*{\glsxtrpostunset}[1]{} +\newcommand*{\GlsXtrStartUnsetBuffering}{% + \@ifstar\s@GlsXtrStartUnsetBuffering\@GlsXtrStartUnsetBuffering +} +\newcommand*{\@GlsXtrStartUnsetBuffering}{% + \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer + \def\@glsxtr@unset@buffer{}% + \let\@glsunset\@glsxtrbuffer@unset +} +\newcommand*{\s@GlsXtrStartUnsetBuffering}{% + \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer + \def\@glsxtr@unset@buffer{}% + \let\@glsunset\@glsxtrbuffer@nodup@unset +} +\newcommand*{\@glsxtrbuffer@unset}[1]{% + \listxadd\@glsxtr@unset@buffer{#1}% +} +\newcommand*{\@glsxtrbuffer@nodup@unset}[1]{% + \expandafter\ifinlist\expandafter{#1}{\@glsxtr@unset@buffer}{}% + {\listxadd\@glsxtr@unset@buffer{#1}}% +} +\newcommand*{\GlsXtrStopUnsetBuffering}{% + \@ifstar\s@GlsXtrStopUnsetBuffering\@GlsXtrStopUnsetBuffering +} +\newcommand*{\@GlsXtrStopUnsetBuffering}{% + \let\@glsunset\@glsxtr@unset + \forlistloop\@glsunset\@glsxtr@unset@buffer + \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer +} +\newcommand*{\s@GlsXtrStopUnsetBuffering}{% + \forlistloop\@glslocalunset\@glsxtr@unset@buffer + \let\@glsunset\@glsxtr@unset +} +\newcommand*{\GlsXtrDiscardUnsetBuffering}{% + \let\@glsunset\@glsxtr@unset + \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer +} +\newcommand*{\GlsXtrForUnsetBufferedList}[1]{% + \forlistloop#1\@glsxtr@unset@buffer +} +\renewcommand*{\@glslocalunset}[1]{% + \@@glslocalunset{#1}% + \glsxtrpostlocalunset{#1}% +}% +\newcommand*{\glsxtrpostlocalunset}[1]{} +\renewcommand*{\@glsreset}[1]{% + \@@glsreset{#1}% + \glsxtrpostreset{#1}% +}% +\newcommand*{\glsxtrpostreset}[1]{} +\renewcommand*{\@glslocalreset}[1]{% + \@@glslocalreset{#1}% + \glsxtrpostlocalreset{#1}% +}% +\newcommand*{\glsxtrpostlocalreset}[1]{} +\newcommand*{\glslocalreseteach}[1]{% + \gls@ifnotmeasuring + {% + \@for\@gls@thislabel:=#1\do{% + \glsdoifexists{\@gls@thislabel}% + {% + \@glslocalreset{\@gls@thislabel}% + }% + }% + }% +} +\newcommand*{\glslocalunseteach}[1]{% + \gls@ifnotmeasuring + {% + \@for\@gls@thislabel:=#1\do{% + \glsdoifexists{\@gls@thislabel}% + {% + \@glslocalunset{\@gls@thislabel}% + }% + }% + }% +} +\newcommand*{\GlsXtrEnableEntryCounting}[2]{% + \glsenableentrycount + \renewcommand*{\gls}{\cgls}% + \renewcommand*{\Gls}{\cGls}% + \renewcommand*{\glspl}{\cglspl}% + \renewcommand*{\Glspl}{\cGlspl}% + \renewcommand*{\GLS}{\cGLS}% + \renewcommand*{\GLSpl}{\cGLSpl}% + \@glsxtr@setentrycountunsetattr{#1}{#2}% + \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}}% +} +\newcommand*{\@glsxtr@setentrycountunsetattr}[2]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% + }% + }% +} +\renewcommand*{\glsenableentrycount}{% + \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defcounters}% + \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}% + }% + }% + \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}}% + }% + \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}% + }% + \let\@cgls@\@@cgls@ + \let\@cglspl@\@@cglspl@ + \let\@cGls@\@@cGls@ + \let\@cGlspl@\@@cGlspl@ + \let\@cGLS@\@@cGLS@ + \let\@cGLSpl@\@@cGLSpl@ + \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}% + }% +} +\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 +} +\newcommand*{\glsxtrifcounttrigger}[3]{% + \glshasattribute{#1}{entrycount}% + {% + \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax + #3% + \else + #2% + \fi + }% + {#3}% +} +\def\@@cgls@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cglsformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@gls@{#1}{#2}[#3]% + }% +}% +\def\@@cglspl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cglsplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@glspl@{#1}{#2}[#3]% + }% +}% +\def\@@cGls@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGlsformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@Gls@{#1}{#2}[#3]% + }% +}% +\def\@@cGlspl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGlsplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@Glspl@{#1}{#2}[#3]% + }% +}% +\def\@@cGLS@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGLSformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@GLS@{#1}{#2}[#3]% + }% +}% +\def\@@cGLSpl@#1#2[#3]{% + \glsxtrifcounttrigger{#2}% + {% + \cGLSplformat{#2}{#3}% + \glsunset{#2}% + }% + {% + \@GLSpl@{#1}{#2}[#3]% + }% +}% +\def\@cgls@#1#2[#3]{\@gls@{#1}{#2}[#3]} +\def\@cGls@#1#2[#3]{\@Gls@{#1}{#2}[#3]} +\def\@cglspl@#1#2[#3]{\@glspl@{#1}{#2}[#3]} +\def\@cGlspl@#1#2[#3]{\@Glspl@{#1}{#2}[#3]} +\newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS} +\newcommand*{\@cGLS}[2][]{% + \new@ifnextchar[{\@cGLS@{#1}{#2}}{\@cGLS@{#1}{#2}[]}% +} +\def\@cGLS@#1#2[#3]{\@GLS@{#1}{#2}[#3]} +\newcommand*{\cGLSformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}% +} +\newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl} +\newcommand*{\@cGLSpl}[2][]{% + \new@ifnextchar[{\@cGLSpl@{#1}{#2}}{\@cGLSpl@{#1}{#2}[]}% +} +\def\@cGLSpl@#1#2[#3]{\@GLSpl@{#1}{#2}[#3]} +\newcommand*{\cGLSplformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}% +} +\renewcommand*{\cglsformat}[2]{% + \glsifregular{#1} + {\glsentryfirst{#1}}% + {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% +} +\renewcommand*{\cGlsformat}[2]{% + \glsifregular{#1} + {\Glsentryfirst{#1}}% + {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% +} +\renewcommand*{\cglsplformat}[2]{% + \glsifregular{#1} + {\glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}}#2% +} +\renewcommand*{\cGlsplformat}[2]{% + \glsifregular{#1} + {\Glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}}#2% +} +\newcommand*{\@@newglossaryentry@defunitcounters}{% + \protected@edef\@glo@countunit{\csuse{@glsxtr@categoryattr@@\@glo@category @unitcount}}% + \ifdefvoid\@glo@countunit + {}% + {% + \@glsxtr@ifunitcounter{\@glo@countunit}% + {}% + {\expandafter\@glsxtr@addunitcounter\expandafter{\@glo@countunit}}% + }% +} +\newcommand*{\@glsxtr@unitcountlist}{} +\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}}}% + }% + {}% +} +\newcommand*{\@glsxtr@ifunitcounter}[3]{% + \xifinlist{#1}{\@glsxtr@unitcountlist}{#2}{#3}% +} +\newcommand*\@glsxtr@currentunitcount[1]{% + glo@\glsdetoklabel{#1}@currunit@\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% +} +\newcommand*\@glsxtr@previousunitcount[1]{% + glo@\glsdetoklabel{#1}@prevunit@\glsgetattribute{#1}{unitcount}.% + \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}% +} +\newcommand*{\@gls@increment@currunitcount}[1]{% + \glshasattribute{#1}{unitcount}% + {% + \protected@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}% + }% + }% + {}% +} +\newcommand*{\@gls@local@increment@currunitcount}[1]{% + \glshasattribute{#1}{unitcount}% + {% + \protected@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}% + }% + }% + {}% +} +\newcommand*{\@glsxtr@currunitcount}[2]{% + \ifcsundef + {glo@\glsdetoklabel{#1}@currunit@#2}% + {0}% + {\csuse{glo@\glsdetoklabel{#1}@currunit@#2}}% +}% +\newcommand*{\@glsxtr@prevunitcount}[2]{% + \ifcsundef + {glo@\glsdetoklabel{#1}@prevunit@#2}% + {0}% + {\csuse{glo@\glsdetoklabel{#1}@prevunit@#2}}% +}% +\newcommand*{\glsenableentryunitcount}{% + \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defunitcounters}% + \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}% + }% + }% + \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}}}% + }% + \newcommand*{\glsentryprevtotalcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}% + {0}% + {% + \number\csuse{glo@\glsdetoklabel{##1}@prevunittotal} + }% + }% + \newcommand*{\glsentryprevmaxcount}[1]{% + \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}% + {0}% + {% + \number\csuse{glo@\glsdetoklabel{##1}@prevunitmax} + }% + }% + \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}% + {% + \protected@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}% + {% + \protected@edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}% + \ifcsundef{\@glsxtr@csname}% + {}% + {\csdef{\@glsxtr@csname}{0}}% + }% + {}% + }% + \let\@cgls@\@@cgls@ + \let\@cglspl@\@@cglspl@ + \let\@cGls@\@@cGls@ + \let\@cGlspl@\@@cGlspl@ + \let\@cGLS@\@@cGLS@ + \let\@cGLSpl@\@@cGLSpl@ + \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 +\newcommand*{\@gls@entry@unitcount}[3]{} +\newcommand*{\@gls@write@entryunitcounts@do}[1]{% + \immediate\write\@auxout + {\string\@gls@entry@unitcount + {\@glsentry}% + {\@glsxtr@currunitcount{\@glsentry}{#1}% + }% + {#1}}% +} +\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 +} +\newcommand*{\GlsXtrEnableEntryUnitCounting}[3]{% + \glsenableentryunitcount + \renewcommand*{\gls}{\cgls}% + \renewcommand*{\Gls}{\cGls}% + \renewcommand*{\glspl}{\cglspl}% + \renewcommand*{\Glspl}{\cGlspl}% + \renewcommand*{\GLS}{\cGLS}% + \renewcommand*{\GLSpl}{\cGLSpl}% + \@glsxtr@setentryunitcountunsetattr{#1}{#2}{#3}% + \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}}% +} +\newcommand*{\@glsxtr@setentryunitcountunsetattr}[3]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}% + \glssetcategoryattribute{\@glsxtr@cat}{unitcount}{#3}% + }% + }% +} +\renewcommand*{\SetGenericNewAcronym}{% + \ifdefequal\@addtoacronymlists\@glsxtr@org@addtoacronynlists + {}% + {% + \GlossariesWarning{\string\SetGenericNewAcronym\space used + without restoring base acronym functions with + \string\RestoreAcronyms}% + }% + \let\@Gls@entryname\@Gls@acrentryname + \renewcommand{\newacronym}[4][]{% + \ifdefempty{\@glsacronymlists}% + {% + \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}{}}% +} +\let\@glsxtr@org@setacronymstyle\setacronymstyle +\let\@glsxtr@org@newacronymstyle\newacronymstyle +\let\@glsxtr@acronymlists\@glsacronymlists +\let\@glsxtr@org@addtoacronynlists\@addtoacronymlists +\let\@glsxtr@org@setacronymlists\SetAcronymLists +\newcommand{\@glsxtr@abbrlists}{} +\newcommand*{\forallabbreviationlists}[2]{% + \@for#1:=\@glsxtr@abbrlists\do{\ifdefempty{#1}{}{#2}}% +} +\newcommand*{\@glsxtr@addabbreviationlist}[1]{% + \protected@edef\@glo@type{#1}% + \ifdefempty\@glsxtr@abbrlists + {\let\@glsxtr@abbrlists\@glo@type}% + {% + \ifdefequal\@glsxtr@abbrlists\@glo@type + {}% + {% + \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@abbrlists}{}% + {\protected@eappto\@glsxtr@abbrlists{,\@glo@type}}% + }% + }% +} +\renewcommand*{\forallacronyms}[2]{% + \@glsxtr@base@acrcmd\forallacronyms\forallabbreviationlists + \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}% +} +\newcommand*{\MakeAcronymsAbbreviations}{% + \@for\@gls@type:=\@glsacronymlists\do{% + \csgdef{gls@\@gls@type @entryfmt}{\glsentryfmt}% + }% + \let\@glsxtr@acronymlists\@glsacronymlists + \let\@glsacronymlists\@empty + \let\@addtoacronymlists\@gobble + \let\SetAcronymLists\@gobble + \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn + \renewcommand*{\newacronym}[4][]{% + \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}% + }% + \renewcommand*{\firstacronymfont}[1]{\glsfirstabbrvfont{##1}}% + \renewcommand*{\acronymfont}[1]{\glsabbrvfont{##1}}% + \renewcommand*{\setacronymstyle}[1]{% + \PackageError{glossaries-extra}{\string\setacronymstyle{##1} + unavailable. + Use \string\setabbreviationstyle[acronym]\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}% + }% +} +\MakeAcronymsAbbreviations +\newcommand*{\RestoreAcronyms}{% + \let\@glsacronymlists\@glsxtr@acronymlists + \let\@addtoacronymlists\@glsxtr@org@addtoacronynlists + \let\SetAcronymLists\@glsxtr@org@setacronymlists + \let\@glsxtr@base@acrcmd\@gobbletwo + \@for\@gls@type:=\@glsacronymlists\do{% + \SetDefaultAcronymDisplayStyle{\@gls@type}% + }% + \SetGenericNewAcronym + \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}% + \renewcommand{\acronymfont}[1]{##1}% + \let\setacronymstyle\@glsxtr@org@setacronymstyle + \let\newacronymstyle\@glsxtr@org@newacronymstyle + \renewcommand*\@gls@link@checkfirsthyper{% + \ifglsused{\glslabel}% + {\let\glsxtrifwasfirstuse\@secondoftwo} + {\let\glsxtrifwasfirstuse\@firstoftwo}% + \@glsxtr@org@checkfirsthyper + } + \glssetcategoryattribute{acronym}{regular}{false}% + \setacronymstyle{long-short}% +} +\renewcommand*{\glsacspace}[1]{% + \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}% + \ifdim\dimen@<\glsacspacemax~\else\space\fi +} +\newcommand*{\glsacspacemax}{3em} +\newcommand*{\@glsxtr@reg@glosslist}{} +\let\@glsxtr@org@makeglossaries\makeglossaries +\providecommand\@makeglossaries@warn@noprintglossary{% + \ifdefstring{\@glo@types}{,}% + {% + \GlossariesWarningNoLine{No glossaries have been defined}% + }% + {% + \GlossariesWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found. ^^J(Remove \string\makeglossaries\space if you + don't want any glossaries.) ^^JThis document will not + have a glossary}% + }% +}% +\providecommand{\@domakeglossaries}[1]{#1} +\renewcommand*{\makeglossaries}[1][]{% + \@domakeglossaries + {% + \@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=hybrid options}% + }% + {% + \ifblank{#1}% + {% + \@glsxtr@org@makeglossaries + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \let\warn@noprintglossary\@glsxtr@warn@hybrid@noprintgloss + \fi + }% + {% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space + not permitted\MessageBreak with record=\@glsxtr@record@setting\space package option}% + {You may only use the hybrid \string\makeglossaries[...]\space with + record=off option}% + \else + \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% + \protected@edef\@glsxtr@reg@glosslist{#1}% + \ifundef{\glswrite}{\newwrite\glswrite}{}% + \protected@write\@auxout{}{\string\providecommand + \string\@glsorder[1]{}} + \protected@write\@auxout{}{\string\providecommand + \string\@istfilename[1]{}} + \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% + \protected@write\@auxout{}{\string\@glsorder{\glsorder}} + \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} + \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% + \@for\@glo@type:=#1\do{% + \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% + }% + \renewcommand*\newglossary[4][]{% + \PackageError{glossaries}{New glossaries + must be created before \string\makeglossaries}{You need + to move \string\makeglossaries\space after all your + \string\newglossary\space commands}}% + \let\@makeglossary\@gobble + \renewcommand\makeglossaries[1][]{}% + \@disable@onlypremakeg + \let\gls@checkseeallowed\relax + \renewcommand*{\@do@seeglossary}[2]{% + \glsdoifexists{##1}% + {% + \protected@edef\@gls@label{\glsdetoklabel{##1}}% + \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@org@doseeglossary{##1}{##2}}% + {% + \@@glsxtrwrglossmark + \protected@write\@auxout{}{% + \string\@gls@reference + {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + }% + }% + }% + }% + \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary + \def\@@do@@wrglossary{% + \protected@edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@@do@@wrglossary}% + {\gls@noidxglossary}% + }% + \let\warn@nomakeglossaries\relax + \let\warn@noprintglossary\@makeglossaries@warn@noprintglossary + \renewcommand{\@gls@noref@warn}[1]{% + \protected@edef\@gls@type{##1}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {% + \GlossariesExtraWarning{Can't use + \string\printnoidxglossary[type={\@gls@type}] + when `\@gls@type' is listed in the optional argument of + \string\makeglossaries}% + }% + {% + \GlossariesWarning{Empty glossary for + \string\printnoidxglossary[type={##1}]. + Rerun may be required (or you may have forgotten to use + commands like \string\gls)}% + }% + }% + \renewcommand*{\glsdisplaynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@displaynumberlist{##1}}% + {\@glsxtr@noidx@displaynumberlist{##1}}% + }% + \renewcommand*{\glsentrynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@entrynumberlist{##1}}% + {\@glsxtr@noidx@entrynumberlist{##1}}% + }% + \renewcommand*{\glsnumberlistloop}[2]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {% + \PackageError{glossaries-extra}{\string\glsnumberlistloop\space + not available for glossary `##1'}{}% + }% + {\@glsxtr@noidx@numberlistloop{##1}{##2}}% + }% + \renewcommand*{\glsprestandardsort}[3]{% + \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% + {% + \glsdosanitizesort + }% + {% + \ifglssanitizesort + \@gls@noidx@sanitizesort + \else + \@gls@noidx@nosanitizesort + \fi + }% + }% + \renewcommand*\new@glossaryentry[2]{% + \PackageError{glossaries-extra}{Glossary entries must be defined + in the preamble\MessageBreak when you use the optional argument + of \string\makeglossaries}{Either move your definitions to the + preamble or don't use the optional argument of + \string\makeglossaries}% + }% + \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey + \renewcommand*{\@printgloss@setsort}{% + \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% + type=\glsdefaulttype,\@end@glsxtr@gettype + \def\@glo@sorttype{\@glo@default@sorttype}% + }% + \ifglsautomake + \renewcommand*{\@gls@doautomake}{% + \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% + \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + }% + }% + \fi + \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% + \fi + }% + }% + }% +} +\ifdef\@printgloss@checkexists +{\newcommand{\glsxtr@printgloss@checkexists}{\@printgloss@checkexists}} +{\newcommand{\glsxtr@printgloss@checkexists}[2]{#2}} +\newcommand{\@glsxtr@orgprintglossary}[2]{% + \def\@glo@type{\glsdefaulttype}% + \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 + \glsxtractivatenopost + \gls@dotoctitle + \@glossarystyle + \let\gls@org@glossaryentryfield\glossentry + \let\gls@org@glossarysubentryfield\subglossentry + \renewcommand{\glossentry}[1]{% + \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}% + \gls@org@glossaryentryfield{##1}% + }% + \renewcommand{\subglossentry}[2]{% + \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}% + \gls@org@glossarysubentryfield{##1}{##2}% + }% + \@gls@preglossaryhook + \glsxtr@printgloss@checkexists{\@glo@type}{#2}% + \egroup + \global\let\glossaryentrynumbers\@org@glossaryentrynumbers + \global\let\warn@noprintglossary\relax +} +\newcommand*{\glsxtractivatenopost}{% + \let\nopostdesc\@nopostdesc + \let\glsxtrnopostpunc\@glsxtr@nopostpunc +} +\newrobustcmd*{\glsxtrnopostpunc}{} +\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 +} +\newcommand*{\@glsxtr@nopostpunc@postdesc}{} +\newcommand*{\@glsxtr@restore@postpunc}{% + \def\@glsxtr@nopostpunc@postdesc{% + \@glsxtr@org@postdescription + \let\@glsxtr@nopostpunc@postdesc\@empty + \let\glsxtrrestorepostpunc\@empty + }% +} +\newcommand*{\glsxtrrestorepostpunc}{} +\renewcommand{\@printglossary}[2]{% + \def\@glsxtr@printglossopts{#1}% + \@glsxtr@orgprintglossary{#1}{#2}% +} +\define@choicekey{printgloss}{target} +[\@glsxtr@printglossval\@glsxtr@printglossnr]% +{true,false}[true]% +{% + \ifcase\@glsxtr@printglossnr + \def\@glstarget{\glsdohypertarget}% + \else + \let\@glstarget\@secondoftwo + \fi +} +\newcommand{\@glsxtrhypernameprefix}{} +\define@key{printgloss}{targetnameprefix}{% + \renewcommand{\@glsxtrhypernameprefix}{#1}% +} +\define@key{printgloss}{prefix}{% + \renewcommand{\glolinkprefix}{#1}% +} +\define@key{printgloss}{label}{% + \glsxtrsetglossarylabel{#1}% +} +\newcommand{\glsxtrsetglossarylabel}[1]{% + \renewcommand*{\@@glossaryseclabel}{% + \protected@edef\@currentlabelname{\glossarytoctitle}% + \label{#1}% + }% +} +\newcount\@glsxtr@leveloffset +\define@key{printgloss}{leveloffset}{% + \@glsxtr@assign@leveloffset#1\relax +} +\newcommand*{\@glsxtr@assign@leveloffset}{% + \@ifnextchar+{\p@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% +} +\newcommand*{\p@glsxtr@assign@leveloffset}[1]{% + \@ifnextchar+{\pp@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% +} +\def\np@glsxtr@assign@leveloffset#1\relax{\@glsxtr@leveloffset=#1\relax} +\def\pp@glsxtr@assign@leveloffset#1\relax{\advance\@glsxtr@leveloffset by #1\relax} +\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{} +\glsxtr@printgloss@groupstrue +\let\@glsxtr@org@glsdohypertarget\glsdohypertarget +\renewcommand{\glsdohypertarget}[2]{% + \@glsxtr@org@glsdohypertarget{\@glsxtrhypernameprefix#1}{#2}% +} +\ifx\@glstarget\@glsxtr@org@glsdohypertarget + \def\@glstarget{\glsdohypertarget}% +\fi +\newcommand{\@glsxtr@do@org@target}[2]{% + {% + \let\glsdohypertarget\@glsxtr@org@glsdohypertarget + \@glstarget{#1}{#2}% + }% +} +\newcommand*{\glsxtr@makeglossaries}[1]{} +\def\@glsxtr@gettype#1,type=#2,#3\@end@glsxtr@gettype{% + \def\@glo@type{#2}% +} +\newcommand\@glsxtr@mixed@assign@sortkey[1]{% + \protected@edef\@glo@type{\@glo@type}% + \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}% + {% + \@glo@no@assign@sortkey{#1}% + }% + {% + \@@glo@assign@sortkey{#1}% + }% +}% +\let\@glsxtr@idx@displaynumberlist\glsdisplaynumberlist +\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 + }% + {% + \glsxtrundeftag + \glsdoifexists{#1}% + {% + \GlossariesWarning{Missing location list for `#1'. Either + a rerun is required or you haven't referenced the entry.}% + }% + }% +}% + +\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}% + }% + {% + \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 +}% +\newcommand*{\@glsxtr@noidx@entrynumberlist}[1]{% + \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \ifdef\@gls@loclist + {% + \glsnoidxloclist{\@gls@loclist}% + }% + {% + \glsxtrundeftag + \glsdoifexists{#1}% + {% + \GlossariesWarning{Missing location list for `#1'. Either + a rerun is required or you haven't referenced the entry.}% + }% + }% +}% +\newcommand*{\@glsxtr@idx@entrynumberlist}[1]{\glsentrynumberlist{#1}} +\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 + }% +} +\let\glsxtr@org@getgrouptitle\@gls@getgrouptitle +\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 +\newcommand{\glsxtrsetgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \protected@csxdef{\@glsxtr@titlelabel}{#2}% +} +\newcommand{\glsxtrlocalsetgrouptitle}[2]{% + \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}% + \@onelevel@sanitize\@glsxtr@titlelabel + \protected@csedef{\@glsxtr@titlelabel}{#2}% +} +\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 + }% +} +\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 + \def\@gls@currentlettergroup{}% + \begin{theglossary}% + \glossaryheader + \glsresetentrylist + \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}% + \end{theglossary}% + \glossarypostamble + }% + {% + \glsxtrifemptyglossary{\@glo@type}% + {}% + {\glossarysection[\glossarytoctitle]{\glossarytitle}}% + \@gls@noref@warn{\@glo@type}% + }% +} +\renewcommand*{\glsnoidxdisplayloc}[4]{% + \setentrycounter[#1]{#2}% + \@glsxtr@display@loc#3\empty\end@glsxtr@display@loc{#4}% +} +\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 +} +\newcommand*{\glsxtrdisplaysingleloc}[2]{% + \csuse{#1}{#2}% +} +\newcommand*{\glsxtrdisplaystartloc}[2]{% + \protected@edef\glsxtrlocrangefmt{#1}% + \ifx\glsxtrlocrangefmt\empty + \def\glsxtrlocrangefmt{glsnumberformat}% + \fi + \expandafter\glsxtrdisplaysingleloc + \expandafter{\glsxtrlocrangefmt}{#2}% +} +\newcommand*{\glsxtrdisplayendloc}[2]{% + \protected@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{}% +} +\newcommand*{\glsxtrdisplayendlochook}[2]{} +\newcommand*{\glsxtrlocrangefmt}{} +\renewcommand*{\setentrycounter}[2][]{% + \def\glsxtrcounterprefix{#1}% + \ifx\glsxtrcounterprefix\@empty + \def\@glo@counterprefix{.}% + \else + \def\@glo@counterprefix{.#1.}% + \fi + \def\glsentrycounter{#2}% +} +\def\@gls@removespaces#1 #2\@nil{% + \toks@=\expandafter{\the\toks@#1}% + \ifx\\#2\\% + \edef\@glo@tmp{\the\toks@}% + \ifx\@glo@tmp\empty + \else + \expandafter\glsxtrlocationhyperlink\expandafter + \glsentrycounter\expandafter\@glo@counterprefix\expandafter{\the\toks@}% + \fi + \else + \@gls@ReturnAfterFi{% + \@gls@removespaces#2\@nil + }% + \fi +} +\newcommand*{\glsxtrlocationhyperlink}[3]{% + \ifdefvoid\glsxtrsupplocationurl + {% + \GlsXtrInternalLocationHyperlink{#1}{#2}{#3}% + }% + {% + \hyperref{\glsxtrsupplocationurl}{}{#1#2#3}{#3}% + }% +} +\newcommand*{\glsxtrsupphypernumber}[1]{% + {% + \glshasattribute{\glscurrententrylabel}{externallocation}% + {% + \def\glsxtrsupplocationurl{% + \glsgetattribute{\glscurrententrylabel}{externallocation}}% + }% + {% + \def\glsxtrsupplocationurl{}% + }% + \glshypernumber{#1}% + }% +} +\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}% + }% +} +\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.% +} +\newcommand{\GlsXtrNoGlsWarningEmptyStart}{% + This has probably happened because there are no entries defined + in this glossary.% +} +\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:% +} +\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}.% +} +\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.% +} +\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}% +} +\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.% +} +\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.% +} +\newcommand{\GlsXtrRecordWarning}[1]{% + \texttt{\string\printglossary} doesn't work + with the \texttt{record=\@glsxtr@record@setting} package option + use\par\texttt{\string\printunsrtglossary[type=#1]}\par + instead (or change the package option).% +} +\newcommand{\GlsXtrNoGlsWarningTail}{% + This message will be removed once the problem has been fixed.% +} +\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.% +} +\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 +} +\newcommand*{\@glsxtr@record@noglossarywarning}[1]{% + \GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak + with record=\@glsxtr@record@setting\space package option\MessageBreak(use + \string\printunsrtglossary[type=#1])\MessageBreak + instead (or change the package option)}% + \glossarysection[\glossarytoctitle]{\glossarytitle} + \GlsXtrRecordWarning{#1} + \GlsXtrNoGlsWarningTail +} +\newcommand*{\GlsXtrDefaultResourceOptions}{} +\newcommand*{\glsxtrresourcefile}[2][]{% + \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}% + {% + \edef\@bibgls@restoreat{\noexpand\catcode\noexpand`\noexpand\@=\number\catcode`\@}% + \makeatletter + \@input{#2.glstex}% + \@bibgls@restoreat + \@glsxtr@check@bibgls@nameref + }% + {% + \GlossariesExtraWarning{No file `#2.glstex'}% + }% + \let\@gls@see@noindex\@glsxtr@org@see@noindex +} +\@onlypreamble\glsxtrresourcefile +\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 +} +\newcommand*{\glsxtrresourceinit}{} +\newcount\glsxtrresourcecount +\newcommand*{\GlsXtrLoadResources}[1][]{% + \ifnum\glsxtrresourcecount=0\relax + \glsxtrresourcefile[#1]{\jobname}% + \else + \glsxtrresourcefile[#1]{\jobname-\the\glsxtrresourcecount}% + \fi + \advance\glsxtrresourcecount by 1\relax +} +\newcommand*{\glsxtr@resource}[2]{} +\newcommand*{\glsxtr@fields}[1]{} +\newcommand*{\glsxtr@texencoding}[1]{} +\newcommand*{\glsxtr@langtag}[1]{} +\newcommand*{\glsxtr@pluralsuffixes}[4]{} +\newcommand*{\glsxtr@shortcutsval}[1]{} +\newcommand*{\glsxtr@linkprefix}[1]{} +\newcommand*{\glsxtr@writefields}{% + \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}}% + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@record}[5]{}}% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref + \protected@write\@auxout{}% + {\string\providecommand*{\string\glsxtr@record@nameref}[8]{}}% + \fi + \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}}% + }% + {% + \@ifpackageloaded{fontspec}% + {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}% + {}% + }% + \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}% + \AtBeginDocument + {\protected@write\@auxout{}{\string\glsxtr@linkprefix{\glolinkprefix}}}% + \let\glsxtr@writefields\relax + \ifglsautomake + \IfFileExists{\jobname.aux}% + {\immediate\write18{bib2gls \jobname}}{}% + \ifx\@gls@doautomake\@gls@doautomake@err + \let\@gls@doautomake\relax + \fi + \fi + \@glsxtr@if@record@only + {\ifdefstring{\glsorder}{letter}% + {\GlossariesExtraWarningNoLine{Package option `order=letter' isn't + supported with `record=\@glsxtr@record@setting'. Use `break-at=none' + resource option instead}}% + {}% + }% + {}% +} +\newcommand*{\@gls@doautomake@err}{% + \PackageError{glossaries}{You must use + \string\makeglossaries\space with automake=true} + {% + Either remove the automake=true setting or + add \string\makeglossaries\space to your document preamble.% + }% +} +\newcommand*{\glsxtr@record}[5]{} +\newcommand*{\glsxtr@record@nameref}[8]{} +\newcommand*{\glsxtr@counterrecord}[3]{% + \glsxtrfieldlistgadd{#1}{record.#2}{#3}% +} +\newcommand*{\@glsxtr@counterrecordhook}{} +\newcommand*{\GlsXtrRecordCounter}[1]{% + \@@glsxtr@recordcounter{#1}% +} +\@onlypreamble\GlsXtrRecordCounter +\newcommand*{\@glsxtr@docounterrecord}[1]{% + \protected@write\@auxout{}{\string\glsxtr@counterrecord + {\@gls@label}{#1}{\csuse{the#1}}}% +} +\newcommand*{\glsxtrglossentry}[1]{% + \glsxtrtitleorpdforheading + {\@glsxtrglossentry{#1}}% + {\glsentryname{#1}}% + {\glsxtrheadname{#1}}% +} +\newrobustcmd*{\@glsxtrglossentry}[1]{% + \glsxtrtitleorpdforheading + {% + \glsdoifexists{#1}% + {% + \begingroup + \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}% + \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}% + \ifglshasparent{#1}% + {\GlsXtrStandaloneSubEntryItem{#1}}% + {\glsentryitem{#1}}% + \GlsXtrStandaloneEntryName{#1}% + \endgroup + }% + }% + {\glsentryname{#1}}% + {\glsxtrheadname{#1}}% +} +\newcommand*{\GlsXtrStandaloneEntryName}[1]{% + \glstarget{#1}{\glossentryname{#1}}% +} +\newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}} +\newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{% + \GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}% +} +\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}% + }% +} +\newrobustcmd*{\@glsxtrglossentryother}[3]{% + \glsxtrtitleorpdforheading + {% + \glsdoifexists{#1}% + {% + \begingroup + \protected@edef\glscurrententrylabel{\glsdetoklabel{#1}}% + \protected@edef\currentglossary{\GlsXtrStandaloneGlossaryType}% + \ifglshasparent{#1}% + {\GlsXtrStandaloneSubEntryItem{#1}}% + {\glsentryitem{#1}}% + \GlsXtrStandaloneEntryOther{#1}% + \endgroup + }% + }% + {\@gls@entry@field{#1}{#2}}% + {#3}% +} +\newcommand*{\GlsXtrStandaloneEntryOther}[2]{% + \glstarget{#1}{\glossentrynameother{#1}{#2}}% +} +\ifdef\@printgloss@checkexists +{ + \newcommand*{\printunsrtglossary}{% + \let\@printgloss@checkexists\@printgloss@checkexists@allowignored + \@ifstar\s@printunsrtglossary\@printunsrtglossary + } +} +{ + \newcommand*{\printunsrtglossary}{% + \@ifstar\s@printunsrtglossary\@printunsrtglossary + } +} +\newcommand*{\@printunsrtglossary}[1][]{% + \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% +} +\newcommand*{\s@printunsrtglossary}[2][]{% + \begingroup + #2% + \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}% + \endgroup +} +\newcommand*{\printunsrtglossaries}{% + \forallglossaries{\@@glo@type}{\printunsrtglossary[type=\@@glo@type]}% +} + +\newcommand*{\@print@unsrt@glossary}{% + \glossarysection[\glossarytoctitle]{\glossarytitle}% + \glossarypreamble + \glsxtrifemptyglossary{\@glo@type}% + {% + \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% + }% + {% + \key@ifundefined{glossentry}{group}% + {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% + {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% + \def\@gls@currentlettergroup{}% + \def\@glsxtr@doglossary{% + \begin{theglossary}% + \glossaryheader + \glsresetentrylist + }% + \expandafter\@for\expandafter\glscurrententrylabel\expandafter + :\expandafter=\csname glolist@\@glo@type\endcsname\do{% + \ifdefempty{\glscurrententrylabel} + {}% + {% + \let\glsxtr@process\@firstofone + \let\printunsrtglossaryskipentry + \@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% + \glsxtr@process + {% + \ifglsxtr@printgloss@groups + \ifglshasparent{\glscurrententrylabel}{}% + {% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% + }% + \fi + \protected@eappto\@glsxtr@doglossary{% + \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% + }% + }% + }% + \appto\@glsxtr@doglossary{\end{theglossary}}% + \printunsrtglossarypredoglossary + \@glsxtr@doglossary + }% + \glossarypostamble +} +\newcommand*{\printunsrtinnerglossary}[3][]{% + \begingroup + \def\@glsxtr@printglossopts{#1}% + \def\@glo@type{\glsdefaulttype}% + \setkeys{printgloss}[title,toctitle,style,numberedsection,sort,label]{#1}% + \let\currentglossary\@glo@type + #2% + \@print@unsrt@innerglossary + #3% + \endgroup +} +\newenvironment{printunsrtglossarywrap}[1][]% +{% + \def\@glsxtr@printglossopts{#1}% + \def\@glo@type{\glsdefaulttype}% + \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}% + \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 + \@printgloss@setsort + \setkeys{printgloss}{#1}% + \ifglossaryexists*{\@glo@type}% + {% + \ifx\glossarytitle\org@glossarytitle + \else + \expandafter\let\csname @glotype@\@glo@type @title\endcsname + \glossarytitle + \fi + \let\currentglossary\@glo@type + }% + {}% + \let\org@glossaryentrynumbers\glossaryentrynumbers + \let\glsnonextpages\@glsnonextpages + \let\glsnextpages\@glsnextpages + \let\nopostdesc\@nopostdesc + \gls@dotoctitle + \@glossarystyle + \let\gls@org@glossaryentryfield\glossentry + \let\gls@org@glossarysubentryfield\subglossentry + \renewcommand{\glossentry}[1]{% + \protected@xdef\glscurrententrylabel{\glsdetoklabel{##1}}% + \gls@org@glossaryentryfield{##1}% + }% + \renewcommand{\subglossentry}[2]{% + \protected@xdef\glscurrententrylabel{\glsdetoklabel{##2}}% + \gls@org@glossarysubentryfield{##1}{##2}% + }% + \@gls@preglossaryhook + \glossarysection[\glossarytoctitle]{\glossarytitle}% + \glossarypreamble + \begin{theglossary}% + \glossaryheader + \glsresetentrylist +}% +{% + \end{theglossary}% + \glossarypostamble + \global\let\glossaryentrynumbers\@org@glossaryentrynumbers + \global\let\warn@noprintglossary\relax +} +\newcommand*{\@print@unsrt@innerglossary}{% + \glsxtrifemptyglossary{\@glo@type}% + {% + \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}% + }% + {% + \key@ifundefined{glossentry}{group}% + {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}% + {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}% + \def\@gls@currentlettergroup{}% + \def\@glsxtr@doglossary{}% + \expandafter\@for\expandafter\glscurrententrylabel\expandafter + :\expandafter=\csname glolist@\@glo@type\endcsname\do{% + \ifdefempty{\glscurrententrylabel} + {}% + {% + \let\glsxtr@process\@firstofone + \let\printunsrtglossaryskipentry + \@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% + \glsxtr@process + {% + \ifglsxtr@printgloss@groups + \ifglshasparent{\glscurrententrylabel}{}% + {% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% + }% + \fi + \protected@eappto\@glsxtr@doglossary{% + \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% + }% + }% + }% + \printunsrtglossarypredoglossary + \@glsxtr@doglossary + }% +} +\newcommand*{\printunsrtglossaryentryprocesshook}[1]{} +\newcommand*{\printunsrtglossaryskipentry}{% + \PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space +can only be used within \string\printunsrtglossaryentryprocesshook}{}% +} +\newcommand*{\@glsxtr@printunsrtglossaryskipentry}{% + \let\glsxtr@process\@gobble +} +\newcommand*{\printunsrtglossarypredoglossary}{} +\newcommand{\@printunsrt@glossary@handler}[1]{% + \protected@xdef\glscurrententrylabel{#1}% + \printunsrtglossaryhandler\glscurrententrylabel +} +\newcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrunsrtdo{#1}% +} +\newrobustcmd*{\glsxtriflabelinlist}[4]{% + \protected@edef\@glsxtr@doiflabelinlist{\noexpand\@gls@ifinlist{#1}{#2}}% + \@glsxtr@doiflabelinlist{#3}{#4}% +} +\newcommand{\print@op@unsrtglossaryunit}[2][]{% + \s@printunsrtglossary[type=\glsdefaulttype,#1]{% + \printunsrtglossaryunitsetup{#2}% + }% +} +\newcommand*{\printunsrtglossaryunitsetup}[1]{% + \renewcommand{\printunsrtglossaryhandler}[1]{% + \glsxtrfieldxifinlist{##1}{record.#1}{\csuse{the#1}} + {\glsxtrunsrtdo{##1}}% + {}% + }% + \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}% +} +\newcommand{\print@noop@unsrtglossaryunit}[2][]{% + \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space + requires the record=only or record=alsoindex package option}{}% +} +\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}}% +} +\newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do} +\newcommand*{\glsxtrgroupfield}{group} +\newcommand*{\@glsxtr@checkgroup}[1]{% + \def\@glsxtr@groupheading{}% + \key@ifundefined{glossentry}{group}% + {% + \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}% + \expandafter\glo@grabfirst\@gls@sort{}{}\@nil + }% + {% + \protected@edef\@glo@thislettergrp{% + \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}% + }% + \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% + {}% + {% + \ifdefempty{\@gls@currentlettergroup}{}% + {\def\@glsxtr@groupheading{\glsgroupskip}}% + \protected@eappto\@glsxtr@groupheading{% + \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% + }% + }% + \let\@gls@currentlettergroup\@glo@thislettergrp +} +\newcommand*{\GlsXtrLocationField}{location} +\newcommand{\@glsxtr@noidx@do}[1]{% + \ifglsentryexists{#1}% + {% + \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}% + \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax + \ifnum\gls@level>0 + \let\@glsxtr@ifischild\@firstoftwo + \else + \let\@glsxtr@ifischild\@secondoftwo + \fi + \@glsxtr@ifischild + {% + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist}% + {% + \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}% + }% + {% + \expandafter\subglossentry\expandafter{\number\gls@level}{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \expandafter\subglossentry\expandafter + {\number\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}% + }% + }% + {% + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist} + {% + \glossentry{#1}{}% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\@gls@location}% + }% + }% + }% + }% + {}% +} +\newcount\@glsxtrnewgls@inner +\newcommand*{\@glsxtr@providenewgls}{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslike}[2]{}}% + \let\@glsxtr@providenewgls\relax +} +\newcommand{\glsxtridentifyglslike}[2]{% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {}% + {% + \@glsxtr@providenewgls + \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}% + }% +} +\newcommand*{\@glsxtrnewgls}[4]{% + \ifdef{#3}% + {% + \PackageError{glossaries-extra}{Command \string#3\space already +defined}{}% + }% + {% + \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}[]}% + }% + }% + }% +} +\newrobustcmd*{\glsxtrnewgls}[3][]{% + \@glsxtrnewgls{#1}{#2}{#3}{gls}% +} +\newrobustcmd*{\glsxtrnewglslike}[6][]{% + \@glsxtrnewgls{#1}{#2}{#3}{gls}% + \@glsxtrnewgls{#1}{#2}{#4}{glspl}% + \@glsxtrnewgls{#1}{#2}{#5}{Gls}% + \@glsxtrnewgls{#1}{#2}{#6}{Glspl}% +} +\newrobustcmd*{\glsxtrnewGLSlike}[4][]{% + \@glsxtrnewgls{#1}{#2}{#3}{GLS}% + \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}% +} +\newrobustcmd*{\glsxtrnewrgls}[3][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rgls}% +} +\newrobustcmd*{\glsxtrnewrglslike}[6][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rgls}% + \@glsxtrnewgls{#1}{#2}{#4}{rglspl}% + \@glsxtrnewgls{#1}{#2}{#5}{rGls}% + \@glsxtrnewgls{#1}{#2}{#6}{rGlspl}% +} +\newrobustcmd*{\glsxtrnewrGLSlike}[4][]{% + \@glsxtrnewgls{#1}{#2}{#3}{rGLS}% + \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}% +} +\newcommand*{\GlsXtrTotalRecordCount}[1]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount}% + {\csname glo@\glsdetoklabel{#1}@recordcount\endcsname}% + {0}% +} +\newcommand*{\GlsXtrRecordCount}[2]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2}% + {\csname glo@\glsdetoklabel{#1}@recordcount.#2\endcsname}% + {0}% +} +\newcommand*{\GlsXtrLocationRecordCount}[3]{% + \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}}% + {\csname glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}\endcsname}% + {0}% +} +\newcommand*{\glsxtrdetoklocation}[1]{#1} +\newcommand*{\glsxtrenablerecordcount}{% + \renewcommand*{\gls}{\rgls}% + \renewcommand*{\Gls}{\rGls}% + \renewcommand*{\glspl}{\rglspl}% + \renewcommand*{\Glspl}{\rGlspl}% + \renewcommand*{\GLS}{\rGLS}% + \renewcommand*{\GLSpl}{\rGLSpl}% +} +\newcommand*{\glsxtrrecordtriggervalue}[1]{% + \GlsXtrTotalRecordCount{#1}% +} +\newcommand*{\GlsXtrSetRecordCountAttribute}[2]{% + \@for\@glsxtr@cat:=#1\do + {% + \ifdefempty{\@glsxtr@cat}{}% + {% + \glssetcategoryattribute{\@glsxtr@cat}{recordcount}{#2}% + }% + }% +} +\newcommand*{\glsxtrifrecordtrigger}[3]{% + \glshasattribute{#1}{recordcount}% + {% + \ifnum\glsxtrrecordtriggervalue{#1}>\glsgetattribute{#1}{recordcount}\relax + #3% + \else + #2% + \fi + }% + {#3}% +} +\newcommand*{\@glsxtr@rglstrigger@record}[3]{% + \protected@edef\glslabel{\glsdetoklabel{#2}}% + \let\@gls@link@label\glslabel + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \def\@glsnumberformat{glstriggerrecordformat}% + \protected@edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% + \protected@edef\glstype{\csname glo@\glslabel @type\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \@gls@save@glslocal + \glsxtrinitwrgloss + \glslinkpresetkeys + \setkeys{glslink}{#1}% + \glslinkpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \glslinkwrcontent + {% + \ifglsxtrinitwrglossbefore + \@do@wrglossary{#2}% + \fi + #3% + \ifglsxtrinitwrglossbefore + \else + \@do@wrglossary{#2}% + \fi + }% + \@gls@restore@glslocal + \@gls@do@glsunset{#2}% +} +\newcommand*{\glstriggerrecordformat}[1]{} +\newrobustcmd*{\rgls}{\@gls@hyp@opt\@rgls} +\newcommand*{\@rgls}[2][]{% + \new@ifnextchar[{\@rgls@{#1}{#2}}{\@rgls@{#1}{#2}[]}% +} +\def\@rgls@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rglsformat{#2}{#3}}% + }% + {% + \@gls@{#1}{#2}[#3]% + }% +}% +\newrobustcmd*{\rglspl}{\@gls@hyp@opt\@rglspl} +\newcommand*{\@rglspl}[2][]{% + \new@ifnextchar[{\@rglspl@{#1}{#2}}{\@rglspl@{#1}{#2}[]}% +} +\def\@rglspl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rglsplformat{#2}{#3}}% + }% + {% + \@glspl@{#1}{#2}[#3]% + }% +}% +\newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls} +\newcommand*{\@rGls}[2][]{% + \new@ifnextchar[{\@rGls@{#1}{#2}}{\@rGls@{#1}{#2}[]}% +} +\def\@rGls@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsformat{#2}{#3}}% + }% + {% + \@Gls@{#1}{#2}[#3]% + }% +}% +\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl} +\newcommand*{\@rGlspl}[2][]{% + \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}% +} +\def\@rGlspl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsplformat{#2}{#3}}% + }% + {% + \@Glspl@{#1}{#2}[#3]% + }% +}% +\newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS} +\newcommand*{\@rGLS}[2][]{% + \new@ifnextchar[{\@rGLS@{#1}{#2}}{\@rGLS@{#1}{#2}[]}% +} +\def\@rGLS@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSformat{#2}{#3}}% + }% + {% + \@GLS@{#1}{#2}[#3]% + }% +}% +\newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl} +\newcommand*{\@rGLSpl}[2][]{% + \new@ifnextchar[{\@rGLSpl@{#1}{#2}}{\@rGLSpl@{#1}{#2}[]}% +} +\def\@rGLSpl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% + {% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}% + }% + {% + \@GLSpl@{#1}{#2}[#3]% + }% +}% +\newcommand*{\rglsformat}[2]{% + \glsifregular{#1} + {\glsentryfirst{#1}}% + {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2% +} +\newcommand*{\rglsplformat}[2]{% + \glsifregular{#1} + {\glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\glsentrylongplural{#1}}{\glsentryfirstplural{#1}}}#2% +} +\newcommand*{\rGlsformat}[2]{% + \glsifregular{#1} + {\Glsentryfirst{#1}}% + {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2% +} +\newcommand*{\rGlsplformat}[2]{% + \glsifregular{#1} + {\Glsentryfirstplural{#1}}% + {\ifglshaslong{#1}{\Glsentrylongplural{#1}}{\Glsentryfirstplural{#1}}}#2% +} +\newcommand*{\rGLSformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}% +} +\newcommand*{\rGLSplformat}[2]{% + \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}% +} +\newcommand{\@glsxtr@do@inc@linkcount}{% + \glsifattribute{\glslabel}{linkcount}{true}% + {% + \ifcsdef{c@glsxtr@linkcount@\glslabel}{}% + {% + \newcounter{glsxtr@linkcount@\glslabel}% + \glshasattribute{\glslabel}{linkcountmaster}% + {% + \begingroup + \edef\@glo@tmp{\endgroup\noexpand\@addtoreset{glsxtr@linkcount@\glslabel}% + {\glsgetattribute{\glslabel}{linkcountmaster}}}% + \@glo@tmp + }% + {}% + }% + \glsxtrinclinkcounter{glsxtr@linkcount@\glslabel}% + }% + {}% +} +\newcommand*{\glsxtrinclinkcounter}[1]{\stepcounter{#1}} +\newcommand*{\GlsXtrLinkCounterValue}[1]{% + \ifcsundef{c@glsxtr@linkcount@#1}{0}{\csname c@glsxtr@linkcount@#1\endcsname}% +} +\newcommand*{\GlsXtrTheLinkCounter}[1]{% + \ifcsundef{theglsxtr@linkcount@#1}{0}% + {\csname theglsxtr@linkcount@#1\endcsname}% +} +\newcommand*{\GlsXtrIfLinkCounterDef}[3]{% + \ifcsundef{theglsxtr@linkcount@#1}{#3}{#2}% +} +\newcommand*{\GlsXtrLinkCounterName}[1]{glsxtr@linkcount@#1} +\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 +\@ifpackageloaded{glossaries-accsupp} +{ + \newcommand*{\glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \glsentryname{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessname}[1]{% + \glsnameaccessdisplay + {% + \Glsentryname{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessname}[1]{% + \glsnameaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryname{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccesstext}[1]{% + \glstextaccessdisplay + {% + \glsentrytext{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccesstext}[1]{% + \glstextaccessdisplay + {% + \Glsentrytext{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccesstext}[1]{% + \glstextaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrytext{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessplural}[1]{% + \glspluralaccessdisplay + {% + \glsentryplural{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessplural}[1]{% + \glspluralaccessdisplay + {% + \Glsentryplural{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessplural}[1]{% + \glspluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryplural{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \glsentryfirst{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \Glsentryfirst{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessfirst}[1]{% + \glsfirstaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryfirst{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \glsentryfirstplural{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \Glsentryfirstplural{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessfirstplural}[1]{% + \glsfirstpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryfirstplural{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \glsentrysymbol{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \Glsentrysymbol{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccesssymbol}[1]{% + \glssymbolaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrysymbol{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \glsentrysymbolplural{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \Glsentrysymbolplural{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccesssymbolplural}[1]{% + \glssymbolpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \glsentrydesc{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \Glsentrydesc{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessdesc}[1]{% + \glsdescriptionaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrydesc{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \glsentrydescplural{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \Glsentrydescplural{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessdescplural}[1]{% + \glsdescriptionpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrydescplural{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessshort}[1]{% + \glsshortaccessdisplay + {% + \glsentryshort{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessshort}[1]{% + \glsshortaccessdisplay + {% + \Glsentryshort{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessshort}[1]{% + \glsshortaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryshort{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \glsentryshortpl{#1}% + }% + {#1}% + } + \newcommand*{\Glsaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \Glsentryshortpl{#1}% + }% + {#1}% + } + \newcommand*{\GLSaccessshortpl}[1]{% + \glsshortpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentryshortpl{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccesslong}[1]{% + \glslongaccessdisplay{\glsentrylong{#1}}{#1}% + } + + \newcommand*{\Glsaccesslong}[1]{% + \glslongaccessdisplay{\Glsentrylong{#1}}{#1}% + } + \newcommand*{\GLSaccesslong}[1]{% + \glslongaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrylong{#1}}% + }% + {#1}% + } + \newcommand*{\glsaccesslongpl}[1]{% + \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}% + } + + \newcommand*{\Glsaccesslongpl}[1]{% + \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}% + } + \newcommand*{\GLSaccesslongpl}[1]{% + \glslongpluralaccessdisplay + {% + \mfirstucMakeUppercase{\glsentrylongpl{#1}}% + }% + {#1}% + } + \define@key{glsxtrabbrv}{access}{% + \def\@gls@nameaccess{#1}% + } + \define@key{glsxtrabbrv}{textaccess}{% + \def\@gls@textaccess{#1}% + } + \define@key{glsxtrabbrv}{pluralaccess}{% + \def\@gls@pluralaccess{#1}% + } + \define@key{glsxtrabbrv}{firstaccess}{% + \def\@gls@firstaccess{#1}% + } + \define@key{glsxtrabbrv}{firstpluralaccess}{% + \def\@gls@firstpluralaccess{#1}% + } + \define@key{glsxtrabbrv}{shortaccess}{% + \def\@gls@shortaccess{#1}% + } + \define@key{glsxtrabbrv}{shortpluralaccess}{% + \def\@gls@shortaccesspl{#1}% + } + \define@key{glsxtrabbrv}{longaccess}{% + \def\@gls@longaccess{#1}% + } + \define@key{glsxtrabbrv}{shortlonglaccess}{% + \def\@gls@longaccesspl{#1}% + } + \newcommand*{\@gls@initaccesskeys}{% + \def\@gls@nameaccess{}% + \def\@gls@textaccess{}% + \def\@gls@pluralaccess{}% + \def\@gls@firstaccess{}% + \def\@gls@firstpluralaccess{}% + \def\@gls@shortaccess{}% + \def\@gls@shortaccesspl{}% + \def\@gls@longaccess{}% + \def\@gls@longaccesspl{}% + } +\newcommand*{\@gls@ifaccessattribute@set}[3]{% + \glsifcategoryattribute{\glscategorylabel}{access#1}{true}% + {#2}% + {% + \glsifcategoryattribute{\glscategorylabel}{access#1}{false}% + {#3}% + {% + \glsifcategoryattribute{\glscategorylabel}{#1}{true}% + {#2}% + {#3}% + }% + }% +} + \def\glsdefaultshortaccess#1#2{#1 (#2)} + \newcommand{\glsxtrassignactualsetup}{% + \let\@\empty + \let\emph\@firstofone + \let\textbf\@firstofone + \let\textmd\@firstofone + \let\textit\@firstofone + \let\textsl\@firstofone + \let\textsc\@firstofone + \let\textrm\@firstofone + \let\textsf\@firstofone + \let\texttt\@firstofone + } + \ifdef\pdfstringdef + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \pdfstringdef\@gls@actualshort{\glsxtrorgshort}% + \pdfstringdef\@gls@actuallong{\glsxtrorglong}% + \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}% + \pdfstringdef\@gls@actuallongpl{\@gls@longpl}% + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}% + \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}% + \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}% + \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}% + }% + \@gls@tmp + } + } + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\glsxtrorgshort}% + \def\noexpand\@gls@actuallong{\glsxtrorglong}% + \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% + \def\noexpand\@gls@actuallongpl{\@gls@longpl}% + }% + \@gls@tmp + } + } + \newcommand{\@gls@setup@default@access}{% + \@gls@assign@actual + \ifdefempty\@gls@shortaccess + {% + \@gls@ifaccessattribute@set{insertdots}% + {% + \expandafter\@glsxtr@insertdots\expandafter\@gls@actualshort\expandafter + {\@gls@actualshort}% + }% + {}% + \ifdefempty\@gls@longaccess + {% + \protected@edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@actuallong}{\expandonce\@gls@actualshort}}% + }% + {% + \protected@edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@longaccess}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortaccess={\@gls@shortaccess},}% + \ifdefempty\@gls@shortaccesspl + {% + \@gls@ifaccessattribute@set{aposplural}% + {% + \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% + \@gls@actualshort'\glsxtrabbrvpluralsuffix}% + }% + {% + \@gls@ifaccessattribute@set{noshortplural}% + {% + \let\@gls@shortaccesspl\@gls@shortaccess + }% + {% + \let\@gls@shortaccesspl\@gls@actualshortpl + }% + }% + \ifdefempty\@gls@longaccesspl + {% + \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@actuallongpl}{\expandonce\@gls@actualshortpl}}% + }% + {% + \protected@edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@longaccesspl}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortpluralaccess={\@gls@shortaccesspl},}% + }% + {}% + }% + {% + \ifdefempty\@gls@shortaccesspl + {\let\@gls@shortaccesspl\@gls@shortaccess}% + {}% + }% + \ifdefempty\@gls@nameaccess + {% + \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{access={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@textaccess + {% + \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{textaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@pluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + pluralaccess={\@gls@shortaccesspl},% + }% + }% + {}% + }% + {}% + \ifdefempty\@gls@firstaccess + {% + \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{firstaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@firstpluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + firstpluralaccess={\@gls@shortaccesspl},% + }% + }% + {}% + }% + {}% + } + \newcommand*{\glsxtrprovideaccsuppcmd}[2]{% + \ifcsundef{glsxtr#1#2accsupp}% + {\csdef{glsxtr#1#2accsupp}{\glsshortaccsupp}}% + {}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } +} +{ + \newcommand*{\glsaccessname}[1]{\glsentryname{#1}} + \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} + \newcommand*{\GLSaccessname}[1]{% + \protect\mfirstucMakeUppercase{\glsentryname{#1}}} + \newcommand*{\glsaccesstext}[1]{\glsentrytext{#1}} + \newcommand*{\Glsaccesstext}[1]{\Glsentrytext{#1}} + \newcommand*{\GLSaccesstext}[1]{% + \protect\mfirstucMakeUppercase{\glsentrytext{#1}}} + \newcommand*{\glsaccessplural}[1]{\glsentryplural{#1}} + \newcommand*{\Glsaccessplural}[1]{\Glsentryplural{#1}} + \newcommand*{\GLSaccessplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentryplural{#1}}} + \newcommand*{\glsaccessfirst}[1]{\glsentryfirst{#1}} + \newcommand*{\Glsaccessfirst}[1]{\Glsentryfirst{#1}} + \newcommand*{\GLSaccessfirst}[1]{% + \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}} + \newcommand*{\glsaccessfirstplural}[1]{\glsentryfirstplural{#1}} + \newcommand*{\Glsaccessfirstplural}[1]{\Glsentryfirstplural{#1}} + \newcommand*{\GLSaccessfirstplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}} + \newcommand*{\glsaccesssymbol}[1]{\glsentrysymbol{#1}} + \newcommand*{\Glsaccesssymbol}[1]{\Glsentrysymbol{#1}} + \newcommand*{\GLSaccesssymbol}[1]{% + \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}} + \newcommand*{\glsaccesssymbolplural}[1]{\glsentrysymbolplural{#1}} + \newcommand*{\Glsaccesssymbolplural}[1]{\Glsentrysymbolplural{#1}} + \newcommand*{\GLSaccesssymbolplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}} + \newcommand*{\glsaccessdesc}[1]{\glsentrydesc{#1}} + \newcommand*{\Glsaccessdesc}[1]{\Glsentrydesc{#1}} + \newcommand*{\GLSaccessdesc}[1]{% + \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}} + \newcommand*{\glsaccessdescplural}[1]{\glsentrydescplural{#1}} + \newcommand*{\Glsaccessdescplural}[1]{\Glsentrydescplural{#1}} + \newcommand*{\GLSaccessdescplural}[1]{% + \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}} + \newcommand*{\glsaccessshort}[1]{\glsentryshort{#1}} + \newcommand*{\Glsaccessshort}[1]{\Glsentryshort{#1}} + \newcommand*{\GLSaccessshort}[1]{% + \protect\mfirstucMakeUppercase{\glsentryshort{#1}}} + \newcommand*{\glsaccessshortpl}[1]{\glsentryshortpl{#1}} + \newcommand*{\Glsaccessshortpl}[1]{\Glsentryshortpl{#1}} + \newcommand*{\GLSaccessshortpl}[1]{% + \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}} + \newcommand*{\glsaccesslong}[1]{\glsentrylong{#1}} + \newcommand*{\Glsaccesslong}[1]{\Glsentrylong{#1}} + \newcommand*{\GLSaccesslong}[1]{% + \protect\mfirstucMakeUppercase{\glsentrylong{#1}}} + \newcommand*{\glsaccesslongpl}[1]{\glsentrylongpl{#1}} + \newcommand*{\Glsaccesslongpl}[1]{\Glsentrylongpl{#1}} + \newcommand*{\GLSaccesslongpl}[1]{% + \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}} + \newcommand*{\@gls@initaccesskeys}{} + \newcommand{\@gls@setup@default@access}{} + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{} +} +\glsaddstoragekey{category}{general}{\glscategory} +\newcommand{\glsifcategory}[4]{% + \ifglsfieldeq{#1}{category}{#2}{#3}{#4}% +} +\newcommand*{\glssetcategoryattribute}[3]{% + \csdef{@glsxtr@categoryattr@@#1@#2}{#3}% +} +\newcommand*{\glssetcategoriesattribute}[3]{% + \@for\@gls@thiscatlabel:=#1\do{% + \csgdef{@glsxtr@categoryattr@@\@gls@thiscatlabel @#2}{#3}% + }% +} +\newcommand*{\glssetcategoriesattributes}[3]{% + {% + \@for\@gls@thisattrlabel:=#2\do{% + \glssetcategoriesattribute{#1}{\@gls@thisattrlabel}{#3}% + }% + }% +} +\newcommand*{\glsgetcategoryattribute}[2]{% + \csuse{@glsxtr@categoryattr@@#1@#2}% +} +\newcommand*{\glsunsetcategoryattribute}[2]{% + \csundef{@glsxtr@categoryattr@@#1@#2}% +} +\newcommand*{\glshascategoryattribute}[4]{% + \ifcsvoid{@glsxtr@categoryattr@@#1@#2}{#4}{#3}% +} +\newcommand*{\glssetattribute}[3]{% + \glssetcategoryattribute{\glscategory{#1}}{#2}{#3}% +} +\newcommand*{\glsgetattribute}[2]{% + \glsgetcategoryattribute{\glscategory{#1}}{#2}% +} +\newcommand*{\glshasattribute}[4]{% + \ifglsentryexists{#1}% + {\glshascategoryattribute{\glscategory{#1}}{#2}{#3}{#4}}% + {#4}% +} +\newcommand{\glsifcategoryattribute}[5]{% + \ifcsundef{@glsxtr@categoryattr@@#1@#2}% + {#5}% + {\ifcsstring{@glsxtr@categoryattr@@#1@#2}{#3}{#4}{#5}}% +} +\newcommand{\glsifattribute}[5]{% + \ifglsentryexists{#1}% + {\glsifcategoryattribute{\glscategory{#1}}{#2}{#3}{#4}{#5}}% + {#5}% +} +\glssetcategoryattribute{general}{regular}{true} +\glssetcategoryattribute{acronym}{regular}{true} +\newcommand*{\glssetregularcategory}[1]{% + \glssetcategoryattribute{#1}{regular}{true}% +} +\newcommand{\glsifregularcategory}[3]{% + \glsifcategoryattribute{#1}{regular}{true}{#2}{#3}% +} +\newcommand{\glsifnotregularcategory}[3]{% + \glsifcategoryattribute{#1}{regular}{false}{#2}{#3}% +} +\newcommand{\glsifregular}[3]{% + \glsifregularcategory{\glscategory{#1}}{#2}{#3}% +} +\newcommand{\glsifnotregular}[3]{% + \glsifnotregularcategory{\glscategory{#1}}{#2}{#3}% +} +\newcommand{\glsforeachincategory}[5][\@glo@types]{% + \forallglossaries[#1]{#3}% + {% + \forglsentries[#3]{#4}% + {% + \glsifcategory{#4}{#2}{#5}{}% + }% + }% +} +\newcommand{\glsforeachwithattribute}[6][\@glo@types]{% + \forallglossaries[#1]{#4}% + {% + \forglsentries[#4]{#5}% + {% + \glsifattribute{#5}{#2}{#3}{#6}{}% + }% + }% +} +\ifdef\newterm +{% + \renewcommand*{\newterm}[2][]{% + \newglossaryentry{#2}% + {type={index},category=index,name={#2},% + description={\glsxtrpostdescription\nopostdesc},#1}% + } + \glssetcategoryattribute{index}{regular}{true} + \newcommand*{\glsxtrpostdescindex}{} +} +{} +\ifdef\printsymbols +{% + \newcommand*{\glsxtrnewsymbol}[3][]{% + \newglossaryentry{#2}{name={#3},sort={#2},type=symbols,category=symbol,#1}% + } + \glssetcategoryattribute{symbol}{regular}{true} + \newcommand*{\glsxtrpostdescsymbol}{} +} +{} +\ifdef\printnumbers +{% +\ifdef\printnumbers + \newcommand*{\glsxtrnewnumber}[3][]{% + \newglossaryentry{#2}{name={#3},sort={#2},type=numbers,category=number,#1}% + } + \glssetcategoryattribute{number}{regular}{true} + \newcommand*{\glsxtrpostdescnumber}{} +} +{} +\newcommand*{\glsxtrsetcategory}[2]{% + \@for\@glsxtr@label:=#1\do + {% + \glsfieldxdef{\@glsxtr@label}{category}{#2}% + }% +} +\newcommand*{\glsxtrsetcategoryforall}[2]{% + \forallglossaries[#1]{\@glsxtr@type}{% + \forglsentries[\@glsxtr@type]{\@glsxtr@label}% + {% + \glsfieldxdef{\@glsxtr@label}{category}{#2}% + }% + }% +} +\newcommand*{\glsxtrfieldtitlecase}[2]{% + \expandafter\glsxtrfieldtitlecasecs\expandafter + {\csname glo@\glsdetoklabel{#1}@#2\endcsname}% +} +\ifdef\glscapitalisewords +{ + \newcommand*{\glsxtrfieldtitlecasecs}[1]{% + \expandafter\glscapitalisewords\expandafter{#1}} +} +{ + \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}} +} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\glossentrydesc}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossdescfont}% + {% + \protected@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}% + {% + \protected@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}}% + }% + }% + }% + } +} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \protected@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 + {% + \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}% + }% + }% + }% + \glsxtrpostnamehook{#1}% + }% + } +} +{ + \renewcommand*{\glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \protected@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}% + {% + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}% + }% + {% + \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}% + \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}% + }% + }% + }% + \glsxtrpostnamehook{#1}% + }% + } +} +\@ifpackageloaded{glossaries-accsupp} +{ + \renewcommand*{\Glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \protected@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}% + \glsxtrpostnamehook{#1}% + }% + } +} +{ + \renewcommand*{\Glossentryname}[1]{% + \@glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \protected@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}}% + \glsxtrpostnamehook{#1}% + }% + } +} +\newcommand*{\glsxtrpostnamehook}[1]{% + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \glsxtrdoautoindexname{#1}{indexname}% + \glsextrapostnamehook{#1}% + \csuse{glsxtrpostname\glscategory{#1}}% +} +\newcommand*{\glsextrapostnamehook}[1]{}% +\newcommand*{\glsdefpostname}[2]{% + \csdef{glsxtrpostname#1}{#2}% +} +\@ifpackageloaded{glossaries-accsupp} +{ + \newcommand*{\glsxtr@setaccessdisplay}[1]{% + \ifcsdef{gls#1accessdisplay}% + {\letcs\@glsxtr@accessdisplay{gls#1accessdisplay}}% + {% + \protected@edef\@gls@thisval{#1}% + \@for\@gls@map:=\@gls@keymap\do{% + \protected@edef\@this@key{\expandafter\@secondoftwo\@gls@map}% + \ifdefequal{\@this@key}{\@gls@thisval}% + {% + \protected@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} +} +\newrobustcmd*{\glossentrynameother}[2]{% + \@glsdoifexistsorwarn{#1}% + {% + \glsxtr@setaccessdisplay{#2}% + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glossnamefont}% + {% + \protected@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}% + }% + }% + }% + \glsxtrpostnamehook{#1}% + }% +} +\newif\if@glsxtr@format@override +\@glsxtr@format@overridefalse +\@ifpackageloaded{hyperref} +{ + \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 +\newcommand*{\glsxtrdoautoindexname}[2]{% + \glshasattribute{#1}{#2}% + {% + \@glsxtr@autoindex@setname{#1}% + \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{#2}}% + \if@glsxtr@format@override + \ifx\@glsnumberformat\@glsxtr@defaultnumberformat + \else + \let\@glsxtr@attrval\@glsnumberformat + \fi + \fi + \ifdefstring{\@glsxtr@attrval}{true}% + {}% + {\protected@eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}% + \expandafter\glsxtrautoindex\expandafter{\@glo@name}% + }% + {}% +} +\newcommand*{\glsxtrautoindex}{\index} +\newcommand{\glsxtrautoindexesc}{% + \@gls@checkmkidxchars\@glo@sort + \@glsxtr@autoindex@doextra@esc\@glo@sort +} +\newcommand*{\@glsxtr@autoindex@setname}[1]{% + \protected@edef\@glo@name{\glsxtrautoindexentry{#1}}% + \glsxtrautoindexassignsort{\@glo@sort}{#1}% + \glsxtrautoindexesc + \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}% +} +\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}} +\newcommand*{\glsxtrautoindexassignsort}[2]{% + \glsletentryfield{#1}{#2}{sort}% +} +\newcommand*{\@glsxtr@autoindex@doextra@esc}[1]{% + \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 + \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 + \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 + \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 +} +\newcommand*{\@glsxtr@autoindex@at}{} +\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 +\newcommand*{\@glsxtr@autoindex@encap}{} +\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 +\newcommand*{\@glsxtr@autoindex@level}{} +\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 +\newcommand*{\@glsxtr@autoindex@esc}{"} +\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 +\ifdef\actualchar + {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}} + {} +\ifdef\quotechar + {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}} + {} +\ifdef\levelchar + {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}} + {} +\ifdef\encapchar + {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}} + {} +\def\@glsxtr@gobbleto@endescspch#1\@glsxtr@endescspch{} +\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 +} +\renewcommand*{\Glossentrydesc}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \Glsaccessdesc{#1}% + }% +} +\ifdef\texorpdfstring +{ + \renewcommand*{\glossentrysymbol}[1]{% + \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% + } +} +{ + \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}} +} +\newcommand{\glsentrypdfsymbol}[1]{\glsentrysymbol{#1}} +\newrobustcmd*{\@glossentrysymbol}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \begingroup + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glosssymbolfont}% + {% + \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{glosssymbolfont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glosssymbolfont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glosssymbolfont attribute + for entry `#1'. Ignoring}% + \let\@glsxtr@glosssymbolfont\@firstofone + }% + }% + {\let\@glsxtr@glosssymbolfont\@firstofone}% + \@glsxtr@glosssymbolfont{\glsaccesssymbol{#1}}% + \endgroup + }% +} +\renewcommand*{\Glossentrysymbol}[1]{% + \glsdoifexistsorwarn{#1}% + {% + \glssetabbrvfmt{\glscategory{#1}}% + \Glsaccesssymbol{#1}% + }% +} +\newcommand*{\GlsXtrEnableInitialTagging}{% + \@ifstar\s@glsxtr@enabletagging\@glsxtr@enabletagging +} +\@onlypreamble\GlsXtrEnableInitialTagging +\newcommand*{\s@glsxtr@enabletagging}[2]{% + \undef#2% + \@glsxtr@enabletagging{#1}{#2}% +} +\newcommand*{\@glsxtr@enabletagging}[2]{% + \@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}}% + {}% +} +\ifundef\mfu@checkword@do +{ + \newcommand*{\mfu@checkword@do}[1]{% + \ifdefstring{\mfu@checkword@arg}{#1}% + {% + \let\@mfu@domakefirstuc\@firstofone + \listbreak + }% + {}% + } + \ifundef\mfu@checkword + { + \newcommand{\@glsxtr@do@titlecaps@warn}{% + \GlossariesExtraWarning{mfirstuc.sty too old. Title Caps + support not available}% + \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 +\newcommand*{\@glsxtr@do@titlecaps@warn}{} +\newcommand*\@glsxtr@activate@initialtagging{} +\newrobustcmd*{\@glsxtr@tag}[1]{% + \glsifattribute{\glscurrententrylabel}{tagging}{true}% + {\glsxtrtagfont{#1}}{#1}% +} +\newcommand*{\glsxtrtagfont}[1]{\underline{#1}} +\ifdef\@gls@preglossaryhook +{ + \renewcommand*{\@gls@preglossaryhook}{% + \@glsxtr@activate@initialtagging + \ifundef\@glsxtr@org@postdescription + {% + \let\@glsxtr@org@postdescription\glspostdescription + \renewcommand*{\glspostdescription}{% + \ifglsentryexists{\glscurrententrylabel}% + {% + \glsxtrpostdescription + \@glsxtr@org@postdescription + }% + {}% + }% + }% + {}% + \glossxtrsetpopts + }% +} +{} +\newcommand*{\glsxtrpostdescription}{% + \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}% +} +\newcommand*{\glsxtrpostdescgeneral}{} +\newcommand*{\glsxtrpostdescterm}{} +\newcommand*{\glsxtrpostdescacronym}{} +\newcommand*{\glsxtrpostdescabbreviation}{} +\newcommand*{\glsdefpostdesc}[2]{% + \csdef{glsxtrpostdesc#1}{#2}% +} +\renewcommand*{\glspostlinkhook}{% + \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}% +} +\newcommand*{\glsxtrpostlinkhook}{% + \glsxtrdiscardperiod{\glslabel}% + {\glsxtrpostlinkendsentence}% + {\glsxtrifcustomdiscardperiod + {\glsxtrifperiod{\glsxtrpostlinkendsentence}{\glsxtrpostlink}}% + {\glsxtrpostlink}% + }% +} +\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2} +\newcommand*{\glsxtrpostlink}{% + \csuse{glsxtrpostlink\glscategory{\glslabel}}% +} +\newcommand*{\glsdefpostlink}[2]{% + \ifthenelse{\equal{#1}{}}% + {\PackageError{glossaries-extra} + {Invalid empty category label in \string\glsdefpostlink}{}}% + {\csdef{glsxtrpostlink#1}{#2}}% +} +\newcommand*{\glsxtrpostlinkendsentence}{% + \ifcsdef{glsxtrpostlink\glscategory{\glslabel}} + {% + \csuse{glsxtrpostlink\glscategory{\glslabel}}% + .\spacefactor\sfcode`\. \relax + }% + {% + \spacefactor\sfcode`\. \relax + }% +} +\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{% + \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}% +} +\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{% + \glsxtrifwasfirstuse + {% + \ifglshassymbol{\glslabel}% + {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}% + {}% + }% + {}% +} +\newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{% + \glsxtrifwasfirstuse + {% + \space\glsxtrparen + {% + \ifglshassymbol{\glslabel}% + {\glsaccesssymbol{\glslabel}, }% + {}% + \glsaccessdesc{\glslabel}% + }% + }% + {}% +} +\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}% + }% +} +\newcommand*{\glsxtrifperiod}[1]{\new@ifnextchar.{\@firstoftwo{#1}}} +\newcommand*{\glsxtr@punclist}{.,:;?!} +\newcommand*{\glsxtraddpunctuationmark}[1]{\appto\glsxtr@punclist{#1}} +\newcommand*{\glsxtrsetpunctuationmarks}[1]{\def\glsxtr@punclist{#1}} +\newcommand*{\glsxtrifnextpunc}[2]{% + \def\reserved@a{#1}% + \def\reserved@b{#2}% + \futurelet\@glspunc@token\glsxtr@ifnextpunc +} +\newcommand*{\glsxtr@ifnextpunc}{% + \glsxtr@ifpunctoken{\@glspunc@token}{\let\reserved@b\reserved@a}{}% + \reserved@b +} +\newcommand*{\glsxtr@ifpunctoken}[1]{% + \expandafter\@glsxtr@ifpunctoken\expandafter#1\glsxtr@punclist\@nnil +} +\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% +} +\def\@glsxtr@foundinlist#1\@nnil{\@firstoftwo} +\def\@glsxtr@notfoundinlist#1{\@secondoftwo} +\newcommand{\glsxtrdopostpunc}[1]{% + \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}% +} +\newcommand{\@glsxtr@swaptwo}[2]{#2#1} +\define@key{glsxtrabbrv}{category}{% + \protected@edef\glscategorylabel{#1}% +} +\define@key{glsxtrabbrv}{shortplural}{% + \def\@gls@shortpl{#1}% +} +\define@key{glsxtrabbrv}{longplural}{% + \def\@gls@longpl{#1}% +} +\newtoks\glsshortpltok +\newtoks\glslongpltok +\newcommand*{\@glsxtr@insertdots}[2]{% + \def#1{}% + \@glsxtr@insert@dots#1#2\@nnil +} +\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% +} +\newcommand*{\glsxtrwordsep}{\space} +\newcommand*{\glsxtrword}[1]{#1} +\newcommand*{\@glsxtr@markwordseps}[2]{% + \def#1{}% + \@glsxtr@mark@wordseps#1#2 \@nnil +} +\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 +} +\newcommand*{\newabbreviation}[4][]{% + \glsxtr@newabbreviation{#1}{#2}{#3}{#4}% +} +\newcommand*{\glsxtr@newabbreviation}[4]{% + \glskeylisttok{#1}% + \glslabeltok{#2}% + \glsshorttok{#3}% + \glslongtok{#4}% + \def\glsxtrorgshort{#3}% + \def\glsxtrorglong{#4}% + \def\ExtraCustomAbbreviationFields{}% + \@gls@initaccesskeys + \def\glscategorylabel{abbreviation}% + \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% + \ifcsdef{@glsabbrv@current@\glscategorylabel}% + {% + \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle + \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo + \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@\glscategorylabel\endcsname}% + \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep + }% + {% + \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% + }% + \def\@gls@longpl{#4\glspluralsuffix}% + \let\@gls@default@longpl\@gls@longpl + \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% + {% + \@glsxtr@markwordseps\@gls@long{#4}% + \expandafter\def\expandafter\@gls@longpl\expandafter + {\@gls@long\glspluralsuffix}% + \let\@gls@default@longpl\@gls@longpl + \expandafter\glslongtok\expandafter{\@gls@long}% + }% + {}% + \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}% + {% + \@glsxtr@markwordseps\@gls@short{#3}% + }% + {% + \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% + {% + \@glsxtr@insertdots\@gls@short{#3}% + \appto\@gls@short{\@}% + }% + {\def\@gls@short{#3}}% + }% + \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}% + {% + \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short + '\abbrvpluralsuffix}% + }% + {% + \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}% + {% + \let\@gls@shortpl\@gls@short + }% + {% + \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short + \abbrvpluralsuffix}% + }% + }% + \expandafter\glsshorttok\expandafter{\@gls@short}% + \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}% + \setkeys*{glsxtrabbrv}[category]{#1}% + \let\@gls@org@longpl\@gls@longpl + \let\@gls@org@shortpl\@gls@shortpl + \ifx\@gls@default@longpl\@gls@longpl + \else + \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% + {% + \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter + {\@gls@longpl}% + }% + {}% + \fi + \expandafter\glsshortpltok\expandafter{\@gls@shortpl}% + \expandafter\glslongpltok\expandafter{\@gls@longpl}% + \@gls@setup@default@access + \newabbreviationhook + \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,% + \ExtraCustomAbbreviationFields + \the\glskeylisttok + }% + }% + \@do@newglossaryentry + \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}% + \GlsXtrPostNewAbbreviation +} +\newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{} +\newcommand*{\GlsXtrPostNewAbbreviation}{} +\newcommand*{\newabbreviationhook}{} +\newcommand*{\CustomAbbreviationFields}{} +\newcommand*{\glsxtrparen}[1]{(#1)} +\newcommand*{\glsxtrfullformat}[2]{% + \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% +} +\newcommand*{\Glsxtrfullformat}[2]{% + \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}% +} +\newcommand*{\glsxtrfullplformat}[2]{% + \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% +} +\newcommand*{\Glsxtrfullplformat}[2]{% + \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}% + \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}% +} +\newcommand*{\glsxtrfullsep}[1]{\space} +\newcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat} +\newcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat} +\newcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat} +\newcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat} +\renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}} +\renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}} +\renewcommand*{\glsentryfullpl}[1]{\glsxtrinlinefullplformat{#1}{}} +\renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}} +\newcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{#1}} +\newcommand*{\glsfirstabbrvdefaultfont}[1]{\glsabbrvdefaultfont{#1}} +\newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}} +\newcommand*{\glsabbrvdefaultfont}[1]{#1} +\newcommand*{\glslongfont}[1]{\glslongdefaultfont{#1}} +\newcommand*{\glslongdefaultfont}[1]{#1} +\newcommand*{\glsfirstlongfont}[1]{\glslongfont{#1}} +\newcommand*{\glsfirstlongdefaultfont}[1]{\glslongdefaultfont{#1}} +\newcommand*{\glsxtrabbrvpluralsuffix}{\glspluralsuffix} +\newcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix} +\newrobustcmd*{\glsxtrfull}{\@gls@hyp@opt\ns@glsxtrfull} +\newcommand*\ns@glsxtrfull[2][]{% + \new@ifnextchar[{\@glsxtr@full{#1}{#2}}% + {\@glsxtr@full{#1}{#2}[]}% +} +\def\@glsxtr@full#1#2[#3]{% + \@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}}% + \glsxtrsetupfulldefs + \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}% + }% + \glspostlinkhook +} +\newcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@firstoftwo +} +\newrobustcmd*{\Glsxtrfull}{\@gls@hyp@opt\ns@Glsxtrfull} +\newcommand*\ns@Glsxtrfull[2][]{% + \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}% + {\@Glsxtr@full{#1}{#2}[]}% +} +\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 +} +\newrobustcmd*{\GLSxtrfull}{\@gls@hyp@opt\ns@GLSxtrfull} +\newcommand*\ns@GLSxtrfull[2][]{% + \new@ifnextchar[{\@GLSxtr@full{#1}{#2}}% + {\@GLSxtr@full{#1}{#2}[]}% +} +\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 +} +\newrobustcmd*{\glsxtrfullpl}{\@gls@hyp@opt\ns@glsxtrfullpl} +\newcommand*\ns@glsxtrfullpl[2][]{% + \new@ifnextchar[{\@glsxtr@fullpl{#1}{#2}}% + {\@glsxtr@fullpl{#1}{#2}[]}% +} +\def\@glsxtr@fullpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\Glsxtrfullpl}{\@gls@hyp@opt\ns@Glsxtrfullpl} +\newcommand*\ns@Glsxtrfullpl[2][]{% + \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}% + {\@Glsxtr@fullpl{#1}{#2}[]}% +} +\def\@Glsxtr@fullpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\GLSxtrfullpl}{\@gls@hyp@opt\ns@GLSxtrfullpl} +\newcommand*\ns@GLSxtrfullpl[2][]{% + \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}% + {\@GLSxtr@fullpl{#1}{#2}[]}% +} +\def\@GLSxtr@fullpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\glsxtrshort}{\@gls@hyp@opt\ns@glsxtrshort} +\newcommand*{\ns@glsxtrshort}[2][]{% + \new@ifnextchar[{\@glsxtrshort{#1}{#2}}{\@glsxtrshort{#1}{#2}[]}% +} +\def\@glsxtrshort#1#2[#3]{% + \@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\@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 +} +\newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort} +\newcommand*{\ns@Glsxtrshort}[2][]{% + \new@ifnextchar[{\@Glsxtrshort{#1}{#2}}{\@Glsxtrshort{#1}{#2}[]}% +} +\def\@Glsxtrshort#1#2[#3]{% + \@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 +} +\newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort} +\newcommand*{\ns@GLSxtrshort}[2][]{% + \new@ifnextchar[{\@GLSxtrshort{#1}{#2}}{\@GLSxtrshort{#1}{#2}[]}% +} +\def\@GLSxtrshort#1#2[#3]{% + \@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 +} +\newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong} +\newcommand*{\ns@glsxtrlong}[2][]{% + \new@ifnextchar[{\@glsxtrlong{#1}{#2}}{\@glsxtrlong{#1}{#2}[]}% +} +\def\@glsxtrlong#1#2[#3]{% + \@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 +} +\newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong} +\newcommand*{\ns@Glsxtrlong}[2][]{% + \new@ifnextchar[{\@Glsxtrlong{#1}{#2}}{\@Glsxtrlong{#1}{#2}[]}% +} +\def\@Glsxtrlong#1#2[#3]{% + \@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 +} +\newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong} +\newcommand*{\ns@GLSxtrlong}[2][]{% + \new@ifnextchar[{\@GLSxtrlong{#1}{#2}}{\@GLSxtrlong{#1}{#2}[]}% +} +\def\@GLSxtrlong#1#2[#3]{% + \@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 +} +\newrobustcmd*{\glsxtrshortpl}{\@gls@hyp@opt\ns@glsxtrshortpl} +\newcommand*{\ns@glsxtrshortpl}[2][]{% + \new@ifnextchar[{\@glsxtrshortpl{#1}{#2}}{\@glsxtrshortpl{#1}{#2}[]}% +} +\def\@glsxtrshortpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl} +\newcommand*{\ns@Glsxtrshortpl}[2][]{% + \new@ifnextchar[{\@Glsxtrshortpl{#1}{#2}}{\@Glsxtrshortpl{#1}{#2}[]}% +} +\def\@Glsxtrshortpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl} +\newcommand*{\ns@GLSxtrshortpl}[2][]{% + \new@ifnextchar[{\@GLSxtrshortpl{#1}{#2}}{\@GLSxtrshortpl{#1}{#2}[]}% +} +\def\@GLSxtrshortpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\glsxtrlongpl}{\@gls@hyp@opt\ns@glsxtrlongpl} +\newcommand*{\ns@glsxtrlongpl}[2][]{% + \new@ifnextchar[{\@glsxtrlongpl{#1}{#2}}{\@glsxtrlongpl{#1}{#2}[]}% +} +\def\@glsxtrlongpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl} +\newcommand*{\ns@Glsxtrlongpl}[2][]{% + \new@ifnextchar[{\@Glsxtrlongpl{#1}{#2}}{\@Glsxtrlongpl{#1}{#2}[]}% +} +\def\@Glsxtrlongpl#1#2[#3]{% + \@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 +} +\newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl} +\newcommand*{\ns@GLSxtrlongpl}[2][]{% + \new@ifnextchar[{\@GLSxtrlongpl{#1}{#2}}{\@GLSxtrlongpl{#1}{#2}[]}% +} +\def\@GLSxtrlongpl#1#2[#3]{% + \@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 +} +\newcommand*{\glssetabbrvfmt}[1]{% + \ifcsdef{@glsabbrv@current@#1}% + {\glsxtr@applyabbrvfmt{\csname @glsabbrv@current@#1\endcsname}}% + {\glsxtr@applyabbrvfmt{\@glsabbrv@current@abbreviation}}% +} +\newrobustcmd*{\glsuseabbrvfont}[2]{{\glssetabbrvfmt{#2}\glsabbrvfont{#1}}} +\newrobustcmd*{\glsuselongfont}[2]{{\glssetabbrvfmt{#2}\glslongfont{#1}}} +\newcommand*{\glsxtrgenabbrvfmt}{% + \ifdefempty\glscustomtext + {% + \ifglsused\glslabel + {% + \glsifplural + {% + \glscapscase + {% + \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + }% + {% + \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}% + }% + {% + \mfirstucMakeUppercase + {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}% + }% + }% + {% + \glscapscase + {% + \glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + }% + {% + \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}% + }% + {% + \mfirstucMakeUppercase + {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}% + }% + }% + }% + {% + \glsifplural + {% + \glscapscase + {% + \glsxtrfullplformat{\glslabel}{\glsinsert}% + }% + {% + \Glsxtrfullplformat{\glslabel}{\glsinsert}% + }% + {% + \mfirstucMakeUppercase + {\glsxtrfullplformat{\glslabel}{\glsinsert}}% + }% + }% + {% + \glscapscase + {% + \glsxtrfullformat{\glslabel}{\glsinsert}% + }% + {% + \Glsxtrfullformat{\glslabel}{\glsinsert}% + }% + {% + \mfirstucMakeUppercase + {\glsxtrfullformat{\glslabel}{\glsinsert}}% + }% + }% + }% + }% + {% + \glscustomtext + }% +} +\newcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt +\newcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt +\newcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt +\newcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}% + \ifglsxtrinsertinside \else#2\fi +} +\let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt +\newcommand*{\setabbreviationstyle}[2][abbreviation]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#2} + {% + \PackageError{glossaries-extra}{Undefined abbreviation style `#2'}{}% + }% + {% + \ifcsstring{@glsabbrv@current@#1}{#2}% + {% + }% + {% + \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 + \csdef{@glsabbrv@current@#1}{#2}% + \protected@edef\glscategorylabel{#1}% + \glsxtr@applyabbrvstyle{#2}% + }% + }% +} +\newcommand*{\glsxtr@applyabbrvstyle}[1]{% + \csuse{@glsabbrv@dispstyle@setup@#1}% + \csuse{@glsabbrv@dispstyle@fmts@#1}% +} +\newcommand*{\glsxtr@applyabbrvfmt}[1]{% + \csuse{@glsabbrv@dispstyle@fmts@#1}% +} +\newcommand*{\newabbreviationstyle}[3]{% + \ifcsdef{@glsabbrv@dispstyle@setup@#1} + {% + \PackageError{glossaries-extra}{Abbreviation style `#1' already + defined}{}% + }% + {% + \csdef{@glsabbrv@dispstyle@setup@#1}{% + \renewcommand*{\GlsXtrPostNewAbbreviation}{}% + #2}% + \csdef{@glsabbrv@dispstyle@fmts@#1}{% + \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% + \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% + \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% + \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt + \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt + \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt + \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt + #3}% + }% +} +\newcommand*{\renewabbreviationstyle}[3]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#1} + {% + \PackageError{glossaries-extra}{Abbreviation style `#1' not defined}{}% + }% + {% + \csdef{@glsabbrv@dispstyle@setup@#1}{% + \renewcommand*{\GlsXtrPostNewAbbreviation}{}% + #2}% + \csdef{@glsabbrv@dispstyle@fmts@#1}{% + \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}% + \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}% + \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}% + \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}% + #3}% + }% +} +\newcommand*{\letabbreviationstyle}[2]{% + \csletcs{@glsabbrv@dispstyle@setup@#1}{@glsabbrv@dispstyle@setup@#2}% + \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}% +} +\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}% +} +\newcommand*{\GlsXtrWarnDeprecatedAbbrStyle}[2]{% + \GlossariesExtraWarning{Deprecated abbreviation style name `#1', + use `#2' instead}% +} +\newcommand*{\GlsXtrUseAbbrStyleSetup}[1]{% + \ifcsundef{@glsabbrv@dispstyle@setup@#1}% + {% + \PackageError{glossaries-extra}% + {Unknown abbreviation style definitions `#1'}{}% + }% + {% + \csname @glsabbrv@dispstyle@setup@#1\endcsname + }% +} +\newcommand*{\GlsXtrUseAbbrStyleFmts}[1]{% + \ifcsundef{@glsabbrv@dispstyle@fmts@#1}% + {% + \PackageError{glossaries-extra}% + {Unknown abbreviation style formats `#1'}{}% + }% + {% + \csname @glsabbrv@dispstyle@fmts@#1\endcsname + }% +} +\newif\ifglsxtrinsertinside +\glsxtrinsertinsidefalse +\newcommand*{\glsxtrlongshortname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{long-short}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \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]{% + \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}}}% + }% +} +\setabbreviationstyle{long-short} +\newcommand*{\glsxtrlongshortdescsort}{% + \expandonce\glsxtrorglong\space (\expandonce\glsxtrorgshort)% +} +\newcommand*{\glsxtrlongshortdescname}{% + \protect\glslongfont{\the\glslongtok} + \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}% +} +\newabbreviationstyle{long-short-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short}% +} +\newcommand*{\glsxtrshortlongname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{short-long}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \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}}}% + }% +} +\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok} +\newcommand*{\glsxtrshortlongdescname}{% + \protect\glsabbrvfont{\the\glsshorttok} + \glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +\newabbreviationstyle{short-long-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-long}% +} +\newcommand*{\glsfirstlongfootnotefont}[1]{\glslongfootnotefont{#1}}% +\newcommand*{\glslongfootnotefont}[1]{\glslongdefaultfont{#1}}% +\newcommand*{\glsxtrabbrvfootnote}[2]{\footnote{#2}} +\newcommand*{\glsxtrfootnotename}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{footnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##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}}}% + }% + \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*{\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}}}% + }% +} +\letabbreviationstyle{short-footnote}{footnote} +\newcommand*{\glsxtrfootnotedescname}{% + \protect\glsabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +\newcommand*{\glsxtrfootnotedescsort}{\the\glsshorttok} +\newabbreviationstyle{short-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{footnote}% +} +\letabbreviationstyle{footnote-desc}{short-footnote-desc} +\newabbreviationstyle{postfootnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \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 + }% + \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}}}% + }% +} +\letabbreviationstyle{short-postfootnote}{postfootnote} +\newabbreviationstyle{short-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{postfootnote}% +} +\letabbreviationstyle{postfootnote-desc}{short-postfootnote-desc} +\newcommand*{\glsxtrshortnolongname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{short}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, + text={\protect\glsabbrvfont{\the\glsshorttok}}, + plural={\protect\glsabbrvfont{\the\glsshortpltok}}, + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{regular}{true}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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*{\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 + }% +} +\setabbreviationstyle[acronym]{short} +\letabbreviationstyle{short-nolong}{short} +\newabbreviationstyle{short-nolong-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong}% +} +\newcommand*{\glsxtrshortdescname}{% + \protect\glsabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +\newabbreviationstyle{short-desc}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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*{\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 + }% +} +\letabbreviationstyle{short-nolong-desc}{short-desc} +\newabbreviationstyle{short-nolong-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong-desc}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong-desc}% +} +\newabbreviationstyle{nolong-short}% +{% + \GlsXtrUseAbbrStyleSetup{short-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-nolong}% + \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}}}% + }% +} +\newabbreviationstyle{nolong-short-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{nolong-short}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{nolong-short}% +} +\newcommand*{\glsxtrlongnoshortdescname}{% + \protect\glslongfont{\the\glslongtok}% +} +\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}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\letabbreviationstyle{long-noshort-desc}{long-desc} +\newabbreviationstyle{long-noshort-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-noshort-desc}% +} +\newcommand*{\glsxtrlongnoshortname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{long}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \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}% +} +\letabbreviationstyle{long-noshort}{long} +\newabbreviationstyle{long-noshort-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-noshort}% +} +\newcommand*{\glsxtrscfont}[1]{\textsc{#1}} +\newcommand*{\glsabbrvscfont}{\glsxtrscfont} +\newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}} +\newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont} +\newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}} +\newabbreviationstyle{long-short-sc}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% + description={\the\glslongtok}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{long-short-sc-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short-sc}% +} +\newabbreviationstyle{short-sc-long}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{short-sc-long-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-long}% +} +\newabbreviationstyle{short-sc}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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}}}% + }% + \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}}}% + }% + \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 + }% +} +\letabbreviationstyle{short-sc-nolong}{short-sc} +\newabbreviationstyle{short-sc-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \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}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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*{\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 + }% +} +\letabbreviationstyle{short-sc-nolong-desc}{short-sc-desc} +\newabbreviationstyle{nolong-short-sc}% +{% + \GlsXtrUseAbbrStyleSetup{short-sc-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-nolong}% + \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}}}% + }% +} +\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}}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-sc}{long-noshort-sc} +\newabbreviationstyle{long-noshort-sc-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc} +\newabbreviationstyle{short-sc-footnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##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}}}% + }% + \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*{\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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote} +\newabbreviationstyle{short-sc-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-footnote}% +} +\newabbreviationstyle{short-sc-postfootnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \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 + }% + \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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote} +\newabbreviationstyle{short-sc-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}% +} +\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} +\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} +\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} +\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont} +\newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix} +\newabbreviationstyle{long-short-sm}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + 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}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{long-short-sm-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short-sm}% +} +\newabbreviationstyle{short-sm-long}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{short-sm-long-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-long}% +} +\newabbreviationstyle{short-sm}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \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}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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}}}% + }% + \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}}}% + }% + \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 + }% +} +\letabbreviationstyle{short-sm-nolong}{short-sm} +\newabbreviationstyle{short-sm-desc}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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*{\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 + }% +} +\letabbreviationstyle{short-sm-nolong-desc}{short-sm-desc} +\newabbreviationstyle{nolong-short-sm}% +{% + \GlsXtrUseAbbrStyleSetup{short-sm-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-nolong}% + \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}}}% + }% +} +\newabbreviationstyle{long-noshort-sm}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \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}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-sm}{long-noshort-sm} +\newabbreviationstyle{long-noshort-sm-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc} +\newabbreviationstyle{short-sm-footnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##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}}}% + }% + \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*{\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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote} +\newabbreviationstyle{short-sm-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-footnote}% +} +\newabbreviationstyle{short-sm-postfootnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \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 + }% + \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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote} +\newabbreviationstyle{short-sm-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}% +} +\newcommand*{\glsabbrvemfont}[1]{\emph{#1}}% +\newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}% +\newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix} +\newcommand*{\glsfirstlongemfont}[1]{\glslongemfont{#1}}% +\newcommand*{\glslongemfont}[1]{\emph{#1}}% +\newabbreviationstyle{long-short-em}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + 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}{\glsxtremsuffix}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{long-short-em-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short-em}% +} +\newabbreviationstyle{long-em-short-em}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% + description={\protect\glslongemfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{long-em-short-em-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-short-em}% +} +\newabbreviationstyle{short-em-long}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{short-em-long-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-long}% +} +\newabbreviationstyle{short-em-long-em}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##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}}}% + }% + \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}}}% + }% +} +\newabbreviationstyle{short-em-long-em-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-long-em}% +} +\newabbreviationstyle{short-em}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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}}}% + }% + \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}}}% + }% + \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 + }% +} +\letabbreviationstyle{short-em-nolong}{short-em} +\newabbreviationstyle{short-em-desc}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##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}}}% + }% + \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*{\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 + }% +} +\letabbreviationstyle{short-em-nolong-desc}{short-em-desc} +\newabbreviationstyle{nolong-short-em}% +{% + \GlsXtrUseAbbrStyleSetup{short-em-nolong}% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-nolong}% + \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}}}% + }% +} +\newabbreviationstyle{long-noshort-em}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \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}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em} +\newabbreviationstyle{long-em-noshort-em}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \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}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\newabbreviationstyle{long-em-noshort-em-noreg}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-noshort-em}% +} +\newabbreviationstyle{long-noshort-em-desc}% +{% + \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\@glsxtr@deprecated@abbrstyle{long-desc-em}{long-noshort-em-desc} +\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}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}% + \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 + }% + \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}}}% + }% + \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 + }% +} +\newabbreviationstyle{long-em-noshort-em-desc-noreg}% +{% + \GlsXtrUseAbbrStyleSetup{long-em-noshort-em-desc}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-em-noshort-em-desc}% +} +\newabbreviationstyle{short-em-footnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##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}}}% + }% + \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*{\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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote} +\newabbreviationstyle{short-em-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-footnote}% +} +\newabbreviationstyle{short-em-postfootnote}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotename}, + sort={\the\glsshorttok}, + description={\the\glslongtok},% + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% + \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 + }% + \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}}}% + }% +} +\@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote} +\newabbreviationstyle{short-em-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}% +} +\newcommand*{\glsxtruserfield}{useri} +\ifdef\glscurrentfieldvalue +{ + \newcommand*{\glsxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}% + } +} +{ + \newcommand*{\glsxtruserparen}[2]{% + \glsxtrfullsep{#2}% + \glsxtrparen + {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}% + } +} +\newcommand*{\glsabbrvuserfont}[1]{\glsabbrvdefaultfont{#1}} +\newcommand*{\glsfirstabbrvuserfont}[1]{\glsabbrvuserfont{#1}} +\newcommand*{\glslonguserfont}[1]{\glslongdefaultfont{#1}} +\newcommand*{\glsfirstlonguserfont}[1]{\glslonguserfont{#1}} +\newcommand*{\glsxtrusersuffix}{\glsxtrabbrvpluralsuffix} +\newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}} +\newabbreviationstyle{long-short-user}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##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}% + }% + \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}% + }% +} +\newabbreviationstyle{long-postshort-user}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% + \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 + }% + \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}% + }% +} +\newcommand*{\glsabbrvscuserfont}{\glsabbrvscfont}% +\newcommand*{\glsfirstabbrvscuserfont}{\glsabbrvscuserfont}% +\newcommand*{\glsxtrscusersuffix}{\glsxtrscsuffix} +\newcommand*{\glsxtrlongshortscusername}{% + \protect\glsabbrvscuserfont{\the\glsshorttok}% +} +\newabbreviationstyle{long-postshort-sc-user}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortscusername}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvscuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvscuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvscuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% + \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 + }% + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshort{##1}}}{##1}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtruserparen{\glsfirstabbrvscuserfont{\glsaccessshortpl{##1}}}{##1}% + }% +} +\newcommand*{\glsxtrlongshortuserdescname}{% + \protect\glslonguserfont{\the\glslongtok}% + \protect\glsxtruserparen + {\protect\glsabbrvuserfont{\the\glsshorttok}}{\the\glslabeltok}% +} +\newabbreviationstyle{long-postshort-user-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortuserdescname}, + sort={\the\glslongtok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + 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}% +} +\newcommand*{\glsxtrlongshortscuserdescname}{% + \protect\glslonguserfont{\the\glslongtok}% + \protect\glsxtruserparen + {\protect\glsabbrvscuserfont{\the\glsshorttok}}{\the\glslabeltok}% +} +\newabbreviationstyle{long-postshort-sc-user-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortscuserdescname}, + sort={\the\glslongtok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvscuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscuserfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstabbrvscuserfont{\glsentryshort{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-postshort-sc-user}% +} +\newabbreviationstyle{short-postlong-user}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% + description={\protect\glsuserdescription{\the\glslongtok}% + {\the\glslabeltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtruserparen + {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}% + {\glslabel}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}% + \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 + }% + \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}% + }% +} +\newcommand*{\glsxtrshortlonguserdescname}{% + \protect\glsabbrvuserfont{\the\glsshorttok}% + \protect\glsxtruserparen + {\protect\glslonguserfont{\the\glslongpltok}}% + {\the\glslabeltok}% +} +\newabbreviationstyle{short-postlong-user-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlonguserdescname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonguserfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + 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}% +} +\newabbreviationstyle{long-short-user-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortuserdescname}, + sort={\glsxtrlongshortdescsort},% + 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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-short-user}% +} +\newabbreviationstyle{short-long-user}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% + plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvuserfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonguserfont{##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}% + }% + \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}% + }% +} +\newabbreviationstyle{short-long-user-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlonguserdescname}, + sort={\glsxtrshortlongdescsort},% + 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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-long-user}% +} +\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 +} +\def\@glsxtrifhyphenstart#1#2\@end@glsxtrifhyphenstart#3#4{% + \ifx-#1\relax#3\else #4\fi +} +\newcommand*{\glsxtrlonghyphenshort}[4]{% + {% + \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}% + }% +} +\newcommand*{\glsabbrvhyphenfont}{\glsabbrvdefaultfont}% +\newcommand*{\glsfirstabbrvhyphenfont}{\glsabbrvhyphenfont}% +\newcommand*{\glslonghyphenfont}{\glslongdefaultfont}% +\newcommand*{\glsfirstlonghyphenfont}{\glslonghyphenfont}% +\newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix} +\newabbreviationstyle{long-hyphen-short-hyphen}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \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}}% + \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}% + }% +} +\newabbreviationstyle{long-hyphen-short-hyphen-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% +} +\newcommand*{\glsxtrlonghyphennoshort}[3]{% + {% + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}% + \ifglsxtrinsertinside\else{#3}\fi + }% +} +\newabbreviationstyle{long-hyphen-noshort-desc-noreg}% +{% + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongnoshortdescname}, + sort={\expandonce\glsxtrorglong}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glslonghyphenfont{\the\glslongtok}},% + plural={\protect\glslonghyphenfont{\the\glslongpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% + \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}% + }% + \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}}}% + }% + \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}% + }% +} +\newabbreviationstyle{long-hyphen-noshort-noreg}% +{% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel + \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}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-noshort-desc-noreg}% +} +\newcommand*{\glsxtrlonghyphen}[3]{% + {% + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstlonghyphenfont{#1}% + }% +} +\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 + }% + }% +} +\newcommand*{\glsxtrposthyphensubsequent}[2]{% + \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}% + \ifglsxtrinsertinside \else{#2}\fi +} +\newabbreviationstyle{long-hyphen-postshort-hyphen}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrlongshortname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenshort{\glslabel}{\glsinsert}% + }% + {% + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{##1}}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{##1}}% + }% + \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}% + }% + \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 + }% +} +\newabbreviationstyle{long-hyphen-postshort-hyphen-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}% + }% + {% + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-hyphen-postshort-hyphen}% +} +\newcommand*{\glsxtrshorthyphenlong}[4]{% + {% + \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}% + }% +} +\newabbreviationstyle{short-hyphen-long-hyphen}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \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}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \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}}% + \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}% + }% +} +\newabbreviationstyle{short-hyphen-long-hyphen-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-hyphen-long-hyphen}% +} +\newcommand*{\glsxtrshorthyphen}[3]{% + {% + \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}% + \glsfirstabbrvhyphenfont{#1}% + }% +} +\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 + }% + }% +} +\newabbreviationstyle{short-hyphen-postlong-hyphen}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortlongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% + plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% + description={\protect\glslonghyphenfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrposthyphenlong{\glslabel}{\glsinsert}% + }% + {% + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}% + \renewcommand*{\glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\glsaccessshort{##1}}% + }% + \renewcommand*{\glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\glsaccessshortpl{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentfmt}[2]{% + \glsabbrvfont{\Glsaccessshort{##1}}% + }% + \renewcommand*{\Glsxtrsubsequentplfmt}[2]{% + \glsabbrvfont{\Glsaccessshortpl{##1}}% + }% + \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}% + }% + \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 + }% +} +\newabbreviationstyle{short-hyphen-postlong-hyphen-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}% + }% + {% + \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}% + }% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-hyphen-postlong-hyphen}% +} +\newcommand*{\glsabbrvonlyfont}{\glsabbrvdefaultfont}% +\newcommand*{\glsfirstabbrvonlyfont}{\glsabbrvonlyfont}% +\newcommand*{\glslongonlyfont}{\glslongdefaultfont}% +\newcommand*{\glsfirstlongonlyfont}{\glslongonlyfont}% +\newcommand*{\glsxtronlysuffix}{\glsxtrabbrvpluralsuffix} +\newcommand*{\glsxtronlyname}{% + \protect\glsabbrvonlyfont{\the\glsshorttok}% +} +\newabbreviationstyle{long-only-short-only}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtronlyname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% + plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% + description={\protect\glslongonlyfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtronlysuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% + \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 + }% + \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}}}% + }% +} +\newcommand*{\glsxtronlydescsort}{\the\glslongtok} +\newcommand*{\glsxtronlydescname}{% + \protect\glslongfont{\the\glslongtok}% +} +\newabbreviationstyle{long-only-short-only-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \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}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-only-short-only}% +} +\newcommand*{\glsabbrvsconlyfont}{\glsabbrvscfont}% +\newcommand*{\glsfirstabbrvsconlyfont}{\glsabbrvsconlyfont}% +\newcommand*{\glsxtrsconlysuffix}{\glsxtrscsuffix} +\newcommand*{\glsxtrsconlyname}{% + \protect\glsabbrvsconlyfont{\the\glsshorttok}% +} +\newabbreviationstyle{long-only-short-sc-only}% +{% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrsconlyname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}},% + description={\protect\glslongonlyfont{\the\glslongtok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsconlysuffix}% + \renewcommand*{\glsabbrvfont}[1]{\glsabbrvsconlyfont{##1}}% + \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvsconlyfont{##1}}% + \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% + \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}% + \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 + }% + \renewcommand*{\glsxtrinlinefullformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshort{##1}}}% + }% + \renewcommand*{\glsxtrinlinefullplformat}[2]{% + \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\glsaccessshortpl{##1}}}% + }% + \renewcommand*{\Glsxtrinlinefullplformat}[2]{% + \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}% + \ifglsxtrinsertinside\else##2\fi + \glsxtrfullsep{##1}% + \glsxtrparen{\protect\glsfirstabbrvsconlyfont{\Glsaccessshortpl{##1}}}% + }% +} +\newcommand*{\glsxtrsconlydescsort}{\glsxtronlydescsort} +\newcommand*{\glsxtrsconlydescname}{\glsxtronlydescname} +\newabbreviationstyle{long-only-short-sc-only-desc}% +{% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrsconlydescname}, + sort={\glsxtrsconlydescsort},% + first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% + firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvsconlyfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsconlyfont{\the\glsshortpltok}}% + }% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{long-only-short-sc-only}% +} +\let\@glsxtr@org@markright\markright +\renewcommand*{\markright}[1]{% + \glsxtrmarkhook + \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}% + \glsxtrrestoremarkhook +} +\let\@glsxtr@org@markboth\markboth +\renewcommand*{\markboth}[2]{% + \glsxtrmarkhook + \@glsxtr@org@markboth + {\@glsxtrinmark#1\@glsxtrnotinmark}% + {\@glsxtrinmark#2\@glsxtrnotinmark}% + \glsxtrrestoremarkhook +} +\let\@glsxtr@org@@starttoc\@starttoc +\renewcommand*{\@starttoc}[1]{% + \glsxtrmarkhook + \@glsxtrinmark + \@glsxtr@org@@starttoc{#1}% + \@glsxtrnotinmark + \glsxtrrestoremarkhook +} +\newcommand*{\glsxtrRevertMarks}{% + \let\markright\@glsxtr@org@markright + \let\markboth\@glsxtr@org@markboth + \let\@starttoc\@glsxtr@org@@starttoc +} +\newcommand*{\glsxtrRevertTocMarks}{% + \let\@starttoc\@glsxtr@org@@starttoc +} +\newcommand*{\glsxtrifinmark}[2]{#2} +\newrobustcmd*{\@glsxtrinmark}{% + \let\glsxtrifinmark\@firstoftwo +} +\newrobustcmd*{\@glsxtrnotinmark}{% + \let\glsxtrifinmark\@secondoftwo +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}} +} +{ + \newcommand*{\glsxtrtitleorpdforheading}[3]{#1} +} +\newcommand*{\glsxtrmarkhook}{% + \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 + \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 +} +\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 +} +\newcommand*{\glsxtrheadshort}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshort[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrshort[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitleshort}[1]{% + \glsxtrshort[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadshortpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrshortpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitleshortpl}[1]{% + \glsxtrshortpl[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadshort}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshort[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrshort[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitleshort}[1]{% + \Glsxtrshort[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitleshort}[1]{% + \GLSxtrshort[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadshortpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrshortpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitleshortpl}[1]{% + \Glsxtrshortpl[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitleshortpl}[1]{% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadname}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSname[noindex,hyper=false]{#1}[]% + }% + {% + \glsname[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlename}[1]{% + \glsname[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadname}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSname[noindex,hyper=false]{#1}[]% + }% + {% + \Glsname[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlename}[1]{% + \Glsname[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlename}[1]{% + \GLSname[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadtext}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLStext[noindex,hyper=false]{#1}[]% + }% + {% + \glstext[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitletext}[1]{% + \glstext[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadtext}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLStext[noindex,hyper=false]{#1}[]% + }% + {% + \Glstext[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitletext}[1]{% + \Glstext[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitletext}[1]{% + \GLStext[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSplural[noindex,hyper=false]{#1}[]% + }% + {% + \glsplural[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitleplural}[1]{% + \glsplural[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSplural[noindex,hyper=false]{#1}[]% + }% + {% + \Glsplural[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitleplural}[1]{% + \Glsplural[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitleplural}[1]{% + \GLSplural[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadfirst}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirst[noindex,hyper=false]{#1}[]% + }% + {% + \glsfirst[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlefirst}[1]{% + \glsfirst[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadfirst}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirst[noindex,hyper=false]{#1}[]% + }% + {% + \Glsfirst[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlefirst}[1]{% + \Glsfirst[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlefirst}[1]{% + \GLSfirst[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadfirstplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirstplural[noindex,hyper=false]{#1}[]% + }% + {% + \glsfirstplural[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlefirstplural}[1]{% + \glsfirstplural[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadfirstplural}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSfirstplural[noindex,hyper=false]{#1}[]% + }% + {% + \Glsfirstplural[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{% + \Glsfirstplural[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% + \GLSfirstplural[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadlong}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlong[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrlong[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlelong}[1]{% + \glsxtrlong[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadlongpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrlongpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlelongpl}[1]{% + \glsxtrlongpl[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadlong}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlong[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrlong[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlelong}[1]{% + \Glsxtrlong[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlelong}[1]{% + \GLSxtrlong[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadlongpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrlongpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlelongpl}[1]{% + \Glsxtrlongpl[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlelongpl}[1]{% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadfull}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfull[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrfull[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlefull}[1]{% + \glsxtrfull[noindex,hyper=false]{#1}[]% +} +\newcommand*{\glsxtrheadfullpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% + }% + {% + \glsxtrfullpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\glsxtrtitlefullpl}[1]{% + \glsxtrfullpl[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadfull}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfull[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrfull[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlefull}[1]{% + \Glsxtrfull[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlefull}[1]{% + \GLSxtrfull[noindex,hyper=false]{#1}[]% +} +\newcommand*{\Glsxtrheadfullpl}[1]{% + \protect\NoCaseChange + {% + \glsifattribute{#1}{headuc}{true}% + {% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% + }% + {% + \Glsxtrfullpl[noindex,hyper=false]{#1}[]% + }% + }% +} +\newrobustcmd*{\Glsxtrtitlefullpl}[1]{% + \Glsxtrfullpl[noindex,hyper=false]{#1}[]% +} +\newrobustcmd*{\GLSxtrtitlefullpl}[1]{% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtshort}[1]{% + \texorpdfstring + {\glsxtrtitleshort{#1}}% + {\glsentryshort{#1}}% + } +} +{ + \newcommand*{\glsfmtshort}[1]{% + \glsxtrtitleshort{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtshortpl}[1]{% + \texorpdfstring + {\glsxtrtitleshortpl{#1}}% + {\glsentryshortpl{#1}}% + } +} +{ + \newcommand*{\glsfmtshortpl}[1]{% + \glsxtrtitleshortpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtshort}[1]{% + \texorpdfstring + {\Glsxtrtitleshort{#1}}% + {\glsentryshort{#1}}% + } +} +{ + \newcommand*{\Glsfmtshort}[1]{% + \Glsxtrtitleshort{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtshortpl}[1]{% + \texorpdfstring + {\Glsxtrtitleshortpl{#1}}% + {\glsentryshortpl{#1}}% + } +} +{ + \newcommand*{\Glsfmtshortpl}[1]{% + \Glsxtrtitleshortpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtname}[1]{% + \texorpdfstring + {\glsxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\glsfmtname}[1]{% + \glsxtrtitlename{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtname}[1]{% + \texorpdfstring + {\Glsxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\Glsfmtname}[1]{% + \Glsxtrtitlename{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtname}[1]{% + \texorpdfstring + {\GLSxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\GLSfmtname}[1]{% + \GLSxtrtitlename{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmttext}[1]{% + \texorpdfstring + {\glsxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\glsfmttext}[1]{% + \glsxtrtitletext{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmttext}[1]{% + \texorpdfstring + {\Glsxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\Glsfmttext}[1]{% + \Glsxtrtitletext{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmttext}[1]{% + \texorpdfstring + {\GLSxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\GLSfmttext}[1]{% + \GLSxtrtitletext{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtplural}[1]{% + \texorpdfstring + {\glsxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\glsfmtplural}[1]{% + \glsxtrtitleplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtplural}[1]{% + \texorpdfstring + {\Glsxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\Glsfmtplural}[1]{% + \Glsxtrtitleplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtplural}[1]{% + \texorpdfstring + {\GLSxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtplural}[1]{% + \GLSxtrtitleplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfirst}[1]{% + \texorpdfstring + {\glsxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\glsfmtfirst}[1]{% + \glsxtrtitlefirst{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfirst}[1]{% + \texorpdfstring + {\Glsxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\Glsfmtfirst}[1]{% + \Glsxtrtitlefirst{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirst}[1]{% + \texorpdfstring + {\GLSxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirst}[1]{% + \Glsxtrtitlefirst{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfirstpl}[1]{% + \texorpdfstring + {\glsxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\glsfmtfirstpl}[1]{% + \glsxtrtitlefirstplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfirstpl}[1]{% + \texorpdfstring + {\Glsxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\Glsfmtfirstpl}[1]{% + \Glsxtrtitlefirstplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \GLSxtrtitlefirstplural{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtlong}[1]{% + \texorpdfstring + {\glsxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\glsfmtlong}[1]{% + \glsxtrtitlelong{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtlong}[1]{% + \texorpdfstring + {\Glsxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\Glsfmtlong}[1]{% + \Glsxtrtitlelong{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlong}[1]{% + \texorpdfstring + {\GLSxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\GLSfmtlong}[1]{% + \GLSxtrtitlelong{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtlongpl}[1]{% + \texorpdfstring + {\glsxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\glsfmtlongpl}[1]{% + \glsxtrtitlelongpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtlongpl}[1]{% + \texorpdfstring + {\Glsxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\Glsfmtlongpl}[1]{% + \Glsxtrtitlelongpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \texorpdfstring + {\GLSxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \GLSxtrtitlelongpl{#1}} +} +\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% +\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfull}[1]{% + \texorpdfstring + {\glsxtrtitlefull{#1}}% + {\glspdffmtfull{#1}}% + } +} +{ + \newcommand*{\glsfmtfull}[1]{% + \glsxtrtitlefull{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfull}[1]{% + \texorpdfstring + {\Glsxtrtitlefull{#1}}% + {\glspdffmtfull{#1}{}}% + } +} +{ + \newcommand*{\Glsfmtfull}[1]{% + \Glsxtrtitlefull{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfull}[1]{% + \texorpdfstring + {\GLSxtrtitlefull{#1}}% + {\glspdffmtfull{#1}}% + } +} +{ + \newcommand*{\GLSfmtfull}[1]{% + \GLSxtrtitlefull{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\glsfmtfullpl}[1]{% + \texorpdfstring + {\glsxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}}% + } +} +{ + \newcommand*{\glsfmtfullpl}[1]{% + \glsxtrtitlefullpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\Glsfmtfullpl}[1]{% + \texorpdfstring + {\Glsxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}{}}% + } +} +{ + \newcommand*{\Glsfmtfullpl}[1]{% + \Glsxtrtitlefullpl{#1}} +} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}{}}% + } +} +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \GLSxtrtitlefullpl{#1}} +} +\newcommand*{\multiglossaryentrysetup}[1]{\setkeys{glsxtrcombined}{#1}} +\newcommand*{\@gls@combined@indexmain}{1} +\define@choicekey{glsxtrcombined}{indexmain}% + [\@gls@combined@indexmain@val\@gls@combined@indexmain] + {false,true,first}[true]{} +\newcommand*{\@gls@combined@indexothers}{2} +\define@choicekey{glsxtrcombined}{indexothers}% + [\@gls@combined@indexothers@val\@gls@combined@indexothers] + {false,true,first}[true]{} +\newcommand*{\@gls@combined@hyper}{3} +\define@choicekey{glsxtrcombined}{hyper}% + [\@gls@combined@hyper@val\@gls@combined@hyper] + {none,allmain,mainonly,individual,otheronly,notmainfirst,nototherfirst,notfirst}{} +\newcommand*{\@gls@combined@encapmain}{glsnumberformat} +\define@key{glsxtrcombined}{encapmain}{% + \renewcommand*{\@gls@combined@encapmain}{#1}% +} +\newcommand*{\@gls@combined@encapothers}{glsnumberformat} +\define@key{glsxtrcombined}{encapothers}{% + \renewcommand*{\@gls@combined@encapothers}{#1}% +} +\newcommand*{\@gls@combined@textformat}{@firstofone} +\define@key{glsxtrcombined}{textformat}{% + \renewcommand*{\@gls@combined@textformat}{#1}% +} +\newcommand*{\@gls@combined@category}{} +\define@key{glsxtrcombined}{category}{% + \renewcommand*{\@gls@combined@category}{#1}% +} +\define@key{glsxtrcombinedpreopts}{category}{% + \renewcommand*{\@gls@combined@category}{#1}% +} +\newcommand*{\@gls@combined@mglsopts}{} +\define@key{glsxtrcombined}{mglsopts}{% + \renewcommand*{\@gls@combined@mglsopts}{#1}% +} +\define@key{glsxtrcombinedpreopts}{mglsopts}{% + \@gls@combined@mglsopts@do + {% + \renewcommand*{\@gls@combined@mglsopts}{#1}% + }% +} +\newcommand*{\@gls@combined@mglsopts@do}[1]{#1} +\newcommand*{\mgls@disable@mglsopts}{% + \let\@gls@combined@mglsopts@do\@gls@combined@mglsopts@do@not +} +\newcommand*{\mgls@enable@mglsopts}{% + \let\@gls@combined@mglsopts@do\@firstofone +} +\newcommand*{\@gls@combined@mglsopts@do@not}[1]{% + \PackageError{glossaries-extra}{`mglsopts' key not permitted inside + `setup' value}{}% +} +\newcommand*{\@gls@combined@firstprefix}{} +\define@key{glsxtrcombined}{firstprefix}{% + \renewcommand*{\@gls@combined@firstprefix}{#1}% +} +\newcommand*{\@gls@combined@usedprefix}{} +\define@key{glsxtrcombined}{usedprefix}{% + \renewcommand*{\@gls@combined@usedprefix}{#1}% +} +\newcommand*{\@gls@combined@firstsuffix}{} +\define@key{glsxtrcombined}{firstsuffix}{% + \renewcommand*{\@gls@combined@firstsuffix}{#1}% +} +\newcommand*{\@gls@combined@usedsuffix}{} +\define@key{glsxtrcombined}{usedsuffix}{% + \renewcommand*{\@gls@combined@usedsuffix}{#1}% +} +\define@boolkey{glsxtrcombined}{firstskipmain}[true]{} +\KV@glsxtrcombined@firstskipmainfalse +\define@boolkey{glsxtrcombined}{firstskipothers}[true]{} +\KV@glsxtrcombined@firstskipothersfalse +\define@boolkey{glsxtrcombined}{usedskipmain}[true]{} +\KV@glsxtrcombined@usedskipmainfalse +\define@boolkey{glsxtrcombined}{usedskipothers}[true]{} +\KV@glsxtrcombined@usedskipothersfalse +\newcommand*{\@gls@combined@postlinks@nr}{0} +\define@choicekey{glsxtrcombined}{postlinks}% + [\@gls@combined@postlinks@val\@gls@combined@postlinks@nr] + {none,all,notlast,mainnotlast,mainonly,othernotlast,otheronly}{} +\newcommand*{\@gls@combined@mpostlink@nr}{1} +\define@choicekey{glsxtrcombined}{mpostlink}% + [\@gls@combined@mpostlink@val\@gls@combined@mpostlink@nr] + {false,true,firstonly,usedonly}[true]{} +\newcommand*{\@gls@combined@mpostlinkelement@nr}{0} +\define@choicekey{glsxtrcombined}{mpostlinkelement}% + [\@gls@combined@mpostlinkelement@val\@gls@combined@mpostlinkelement@nr] + {last,main,custom}{} +\newcommand*{\glsxtrifmulti}[3]{\ifcsdef{@gls@combined@#1@main}{#2}{#3}} +\newcommand*{\glsxtrmultimain}[1]{\csuse{@gls@combined@#1@main}} +\newcommand*{\glsxtrmultilist}[1]{\csuse{@gls@combined@#1@list}} +\newcommand*{\glsxtrmultitotalelements}[1]{\csuse{@gls@combined@#1@total}} +\newcommand*{\glsxtrmultimainindex}[1]{\csuse{@gls@combined@#1@mainindex}} +\newcommand*{\glsxtrmultilastotherindex}[1]{\csuse{@gls@combined@#1@lastotherindex}} +\newif\ifmultiglossaryentryglobal +\multiglossaryentryglobalfalse +\newcount\mglselementindex +\newrobustcmd{\multiglossaryentry}[1][]{% + \def\@gls@combined@current@opts{#1}% + \ifnum\@glsxtr@docdefval=1\relax + \let\@multi@glossentry@donext\@defmultiglossaryentry + \else + \let\@multi@glossentry@donext\@multiglossaryentry + \fi + \@multi@glossentry@donext +} +\newcommand*{\@multiglossaryentry}[1]{% + \def\@gls@combined@current@label{#1}% + \@multi@glossaryentry +} +\newcommand*{\@multi@glossaryentry}[2][]{% + \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% + {\PackageError{glossaries-extra}% + {Multi-entry label `\@gls@combined@current@label' already defined}% + {}% + }% + {% + \@multi@glossary@entry{#1}{#2}% + }% +} +\newcommand*{\@defmultiglossaryentry}[1]{% + \def\@gls@combined@current@label{#1}% + \@def@multi@glossaryentry +} +\newcommand*{\@def@multi@glossaryentry}[2][]{% + \let\@def@multi@glossaryentry@do\@multi@glossary@entry + \ifundef\@glsxtr@docdefs@multilist + {% + \gdef\@glsxtr@docdefs@multilist{}% + \listxadd + {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% + }% + {% + \xifinlist{\@gls@combined@current@label}{\@glsxtr@docdefs@multilist}% + {% + \PackageError{glossaries-extra}% + {Multi-entry label `\@gls@combined@current@label' already defined}% + {}% + \let\@def@multi@glossaryentry@do\@gobbletwo + }% + {% + \listxadd + {\@glsxtr@docdefs@multilist}{\expandonce\@gls@combined@current@label}% + }% + }% + \@def@multi@glossaryentry@do{#1}{#2}% +} +\newcommand*{\@multi@glossary@doifexists}{\glsdoifexists} +\newrobustcmd{\providemultiglossaryentry}[2][]{% + \def\@gls@combined@current@opts{#1}% + \def\@gls@combined@current@label{#2}% + \ifcsdef{@gls@combined@\@gls@combined@current@label @main}% + {\def\@multi@glossentry@donext{\@provide@multi@glossaryentry@noop}}% + {% + \ifnum\@glsxtr@docdefval=1\relax + \def\@multi@glossentry@donext{\@def@multi@glossaryentry}% + \else + \def\@multi@glossentry@donext{\@multi@glossaryentry}% + \fi + }% + \@multi@glossentry@donext +} +\newcommand*{\@provide@multi@glossaryentry@noop}[2][]{} +\newcommand*{\@multi@glossaryentry@list}{} +\newcommand*{\@multi@glossary@entry}[2]{% + \protected@edef\@gls@combined@current@main{#1}% + \protected@edef\@gls@combined@currentlist{#2}% + \mglselementindex=0\relax + \@for\@gls@tmp:=\@gls@combined@currentlist\do{% + \advance\mglselementindex by 1\relax + \@multi@glossary@doifexists{\@gls@tmp}{}% + \let\@gls@combined@finalitem\@gls@tmp + \ifdefvoid\@gls@combined@current@main + {}% + {% + \ifx\@gls@combined@current@main\@gls@tmp + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@current@main + \csxdef{@gls@combined@\@gls@combined@current@label @mainindex}% + {\the\mglselementindex}% + \else + \cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@current@main + \csedef{@gls@combined@\@gls@combined@current@label @mainindex}% + {\the\mglselementindex}% + \fi + \else + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\mglselementindex}% + \else + \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\mglselementindex}% + \fi + \fi + }% + }% + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@\@gls@combined@current@label @total}% + {\the\mglselementindex}% + \else + \csedef{@gls@combined@\@gls@combined@current@label @total}% + {\the\mglselementindex}% + \fi + \ifnum\mglselementindex<2\relax + \PackageError{glossaries-extra}{At least 2 labels required in + multi-entry element list (\number\mglselementindex\space found)}{}% + \else + \ifdefvoid\@gls@combined@current@main + {}% + {% + \ifcsundef{@gls@combined@\@gls@combined@current@label @main}% + {\PackageError{glossaries-extra}% + {Main element `\@gls@combined@current@main' not found in list}% + {The final element `\@gls@combined@finalitem' will be used instead} + \let\@gls@combined@current@main\@empty + }% + {}% + }% + \ifdefvoid\@gls@combined@current@main + {% + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@finalitem + \global\csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% + {@gls@combined@\@gls@combined@current@label @total}% + \csxdef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\numexpr\mglselementindex-1 }% + \else + \cslet{@gls@combined@\@gls@combined@current@label @main}% + \@gls@combined@finalitem + \csletcs{@gls@combined@\@gls@combined@current@label @mainindex}% + {@gls@combined@\@gls@combined@current@label @total}% + \csedef{@gls@combined@\@gls@combined@current@label @lastotherindex}% + {\the\numexpr\mglselementindex-1 }% + \fi + }% + {}% + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@\@gls@combined@current@label @list}% + \@gls@combined@currentlist + \protected@csxdef{@gls@combined@\@gls@combined@current@label @options}% + {\@gls@combined@current@opts}% + \expandafter\@ifdefinable + \csname if@gls@combined@\@gls@combined@current@label @flag\endcsname + {\expandafter\global\expandafter + \newif\csname if@gls@combined@\@gls@combined@current@label @flag\endcsname}% + \expandafter\global + \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname + \else + \cslet{@gls@combined@\@gls@combined@current@label @list}% + \@gls@combined@currentlist + \protected@csedef{@gls@combined@\@gls@combined@current@label @options}% + {\@gls@combined@current@opts}% + \newboolean{@gls@combined@\@gls@combined@current@label @flag}% + \csname @gls@combined@\@gls@combined@current@label @flagfalse\endcsname + \fi + \fi + \writemultiglossentry + {\@gls@combined@current@opts}{\@gls@combined@current@label}% + {\csuse{@gls@combined@\@gls@combined@current@label @main}}{#2}% + \ifmultiglossaryentryglobal + \ifdefempty\@multi@glossaryentry@list + {\let\@multi@glossaryentry@list\@gls@combined@current@label}% + {% + \eappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% + }% + \else + \ifdefempty\@multi@glossaryentry@list + {\global\let\@multi@glossaryentry@list\@gls@combined@current@label}% + {% + \xappto\@multi@glossaryentry@list{,\expandonce\@gls@combined@current@label}% + }% + \fi +} +\newcommand*{\@glsxtr@multientry}[4]{% + \ifnum\@glsxtr@docdefval=1\relax + \bgroup + \def\@gls@combined@current@opts{#1}% + \def\@gls@combined@current@label{#2}% + \let\@multi@glossary@doifexists\@secondoftwo + \let\writemultiglossentry\@gobblefour + \multiglossaryentryglobaltrue + \@multi@glossary@entry{#3}{#4}% + \egroup + \fi +} +\newcommand*{\writemultiglossentry}[4]{% + \protected@write\@auxout{}{\string\@glsxtr@multientry{#1}{#2}{#3}{#4}}% +} +\newcommand*{\ifmglsused}[3]{% + \ifbool{@gls@combined@#1@flag}{#2}{#3}% +} +\newcommand*{\mglsunset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglsunset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +\newcommand*{\@mglsunset}[1]{% + \expandafter\global\csname @gls@combined@#1@flagtrue\endcsname +} +\newcommand*{\mglsreset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglsreset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +\newcommand*{\@mglsreset}[1]{% + \expandafter\global\csname @gls@combined@#1@flagfalse\endcsname +} +\newcommand*{\mglslocalunset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglslocalunset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +\newcommand*{\@mglslocalunset}[1]{% + \csname @gls@combined@#1@flagtrue\endcsname +} +\newcommand*{\mglslocalreset}[1]{% + \gls@ifnotmeasuring + {% + \glsxtrifmulti{#1}{\@mglslocalreset{#1}}% + {% + \glsxtrundefaction{Multi entry `#1' hasn't been defined}% + {You need to define `#1' with \string\multiglossaryentry}% + }% + }% +} +\newcommand*{\@mglslocalreset}[1]{% + \csname @gls@combined@#1@flagfalse\endcsname +} +\newcommand*{\mglsunsetall}{% + \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsunset\@mgls@thislabel}% +}% +\newcommand*{\mglsresetall}{% + \@for\@mgls@thislabel:=\@multi@glossaryentry@list\do{\mglsreset\@mgls@thislabel}% +}% +\newrobustcmd{\mglsSetMain}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \protected@edef\@gls@combined@current@main{#2}% + \letcs\@gls@combined@currentlist{@gls@combined@#1@list}% + \mglselementindex=0\relax + \count@=0\relax + \@for\@gls@tmp:=\@gls@combined@currentlist\do{% + \advance\mglselementindex by 1\relax + \ifx\@gls@combined@current@main\@gls@tmp + \count@=\mglselementindex\relax + \let\@gls@combined@finalitem\@gls@tmp + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@#1@main}\@gls@combined@current@main + \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \else + \cslet{@gls@combined@#1@main}\@gls@combined@current@main + \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \fi + \else + \ifmultiglossaryentryglobal + \csxdef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% + \else + \csedef{@gls@combined@#1@lastotherindex}{\the\mglselementindex}% + \fi + \fi + }% + \ifnum\count@=0\relax + \PackageError{glossaries-extra}{Label `#2' is not in `#1' set + (\@gls@combined@currentlist)}{}% + \ifmultiglossaryentryglobal + \global\cslet{@gls@combined@#1@main}\@gls@combined@finalitem + \csxdef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \csxdef{@gls@combined@#1@lastotherindex}{% + \number\numexpr\mglselementindex-1 }% + \else + \cslet{@gls@combined@#1@main}\@gls@combined@finalitem + \csedef{@gls@combined@#1@mainindex}{\the\mglselementindex}% + \csedef{@gls@combined@#1@lastotherindex}{% + \number\numexpr\mglselementindex-1 }% + \fi + \fi + }% +} +\newrobustcmd{\mglsSetOptions}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \csdef{@gls@combined@#1@options}{#2}% + }% +} +\newrobustcmd{\mglsAddOptions}[2]{% + \ifcsundef{@gls@combined@#1@main}% + {\PackageError{glossaries-extra}{Multi-entry label `#1' not defined}{}}% + {% + \ifcsempty{@gls@combined@#1@options}% + {\csdef{@gls@combined@#1@options}{#2}}% + {\csappto{@gls@combined@#1@options}{,#2}}% + }% +} +\newcommand*{\@mgls@all}{} +\define@key{mgls}{all}{\renewcommand*{\@mgls@all}{#1}} +\newcommand*{\@mgls@main}{} +\define@key{mgls}{main}{\renewcommand*{\@mgls@main}{#1}} +\newcommand*{\@mgls@others}{} +\define@key{mgls}{others}{\renewcommand*{\@mgls@others}{#1}} +\newcommand*{\@mgls@setup}{} +\define@key{mgls}{setup}{% + \@mgls@setup@do{\renewcommand*{\@mgls@setup}{#1}}% +} +\newcommand*{\@mgls@setup@do}[1]{#1} +\newcommand*{\@mgls@setup@do@not}[1]{% + \PackageError{glossaries-extra}{`setup' key not permitted inside + `mglsopts' value}{}% +} +\newcommand*{\mgls@disable@setup}{% + \let\@mgls@setup@do\@mgls@setup@do@not +} +\newcommand*{\mgls@enable@setup}{% + \let\@mgls@setup@do\@firstofone +} +\newcommand\@mgls@unsetaction{0} +\define@choicekey{mgls}{multiunset}[\@mgls@unsetaction@val\@mgls@unsetaction]% + {global,local,none}{} +\define@boolkey{mgls}{presetlocal}[true]{} +\KV@mgls@presetlocalfalse +\newcommand*{\@mgls@hyper}{} +\define@choicekey{mgls}{hyper}[\@mgls@hyper@val\@mgls@hyper@nr]{true,false}[true]% +{% + \renewcommand*{\@mgls@hyper}{hyper=#1}% + \ifnum\@mgls@hyper@nr=1\relax + \let\@mgls@hyperlink\@secondoftwo + \else + \let\@mgls@hyperlink\@@mgls@hyperlink + \fi +} +\newcommand*{\@@mgls@hyperlink}[2]{% + \ifx\@glslink\glsdonohyperlink + #2% + \else + \glsxtr@org@dohyperlink{\glolinkprefix#1}{#2}% + \fi +} +\let\@mgls@hyperlink\@@mgls@hyperlink +\newcommand*{\mglsforelements}[3]{% + \expandafter\@for\expandafter#2\expandafter:\expandafter + =\csname @gls@combined@#1@list\endcsname\do{#3}% +} +\newcommand*{\mglsforotherelements}[3]{% + \expandafter\@for\expandafter#2\expandafter:\expandafter + =\csname @gls@combined@#1@list\endcsname\do + {\expandafter\ifdefequal\csname @gls@combined@#1@main\endcsname{#2}{}{#3}}% +} +\newcommand*{\mglsunsetothers}[1]{% + \mglsforotherelements{#1}{\@gls@tmp}{\glsunset{\@gls@tmp}}% +} +\newcommand*{\mglslocalunsetothers}[1]{% + \mglsforotherelements{#1}{\@gls@tmp}{\glslocalunset{\@gls@tmp}}% +} +\newcommand*{\mglselementreset}[1]{% + \ifKV@mgls@presetlocal + \glslocalreset{#1}% + \else + \glsreset{#1}% + \fi +} +\newcommand*{\mglselementunset}[1]{% + \ifKV@mgls@presetlocal + \glslocalunset{#1}% + \else + \glsunset{#1}% + \fi +} +\newcommand*{\@mgls@resetall}{} +\define@choicekey{mgls}{resetall}% +[\@mgls@resetall@val\@mgls@resetall@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetall@nr\relax + \renewcommand*{\@mgls@resetall}{}% + \or + \renewcommand*{\@mgls@resetall}{% + \@for\@gls@resetlabel:=\mglscurrentlist\do{\mglselementreset\@gls@resetlabel}}% + \renewcommand*{\@mgls@unsetall}{}% + \fi +} +\newcommand*{\@mgls@resetmain}{} +\define@choicekey{mgls}{resetmain} +[\@mgls@resetmain@val\@mgls@resetmain@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetmain@nr\relax + \renewcommand*{\@mgls@resetmain}{}% + \or + \renewcommand*{\@mgls@resetmain}{\mglselementreset\mglscurrentmainlabel}% + \renewcommand*{\@mgls@unsetmain}{}% + \fi +} +\newcommand*{\@mgls@resetothers}{} +\define@choicekey{mgls}{resetothers} +[\@mgls@resetothers@val\@mgls@resetothers@nr]{false,true}[true]% +{% + \ifcase\@mgls@resetothers@nr\relax + \renewcommand*{\@mgls@resetothers}{}% + \or + \renewcommand*{\@mgls@resetothers}{% + \@for\@gls@resetlabel:=\mglscurrentlist\do{% + \ifx\@gls@resetlabel\mglscurrentmainlabel + \else + \mglselementreset\@gls@resetlabel + \fi + }% + }% + \renewcommand*{\@mgls@unsetothers}{}% + \fi +} +\newcommand*{\@mgls@unsetall}{} +\define@choicekey{mgls}{unsetall}% +[\@mgls@unsetall@val\@mgls@unsetall@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetall@nr\relax + \renewcommand*{\@mgls@unsetall}{}% + \or + \renewcommand*{\@mgls@unsetall}{% + \@for\@gls@unsetlabel:=\mglscurrentlist\do{\mglselementunset\@gls@unsetlabel}}% + \renewcommand*{\@mgls@resetall}{}% + \fi +} +\newcommand*{\@mgls@unsetmain}{} +\define@choicekey{mgls}{unsetmain} +[\@mgls@unsetmain@val\@mgls@unsetmain@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetmain@nr\relax + \renewcommand*{\@mgls@unsetmain}{}% + \or + \renewcommand*{\@mgls@unsetmain}{\mglselementunset\mglscurrentmainlabel}% + \renewcommand*{\@mgls@resetmain}{}% + \fi +} +\newcommand*{\@mgls@unsetothers}{} +\define@choicekey{mgls}{unsetothers} +[\@mgls@unsetothers@val\@mgls@unsetothers@nr]{false,true}[true]% +{% + \ifcase\@mgls@unsetothers@nr\relax + \renewcommand*{\@mgls@unsetothers}{}% + \or + \renewcommand*{\@mgls@unsetothers}{% + \@for\@gls@unsetlabel:=\mglscurrentlist\do{% + \ifx\@gls@unsetlabel\mglscurrentmainlabel + \else + \mglselementunset\@gls@unsetlabel + \fi + }% + }% + \renewcommand*{\@mgls@resetothers}{}% + \fi +} +\newcommand{\glsxtr@setup@docurrent}{% + \ifx\mglscurrentlabel\mglscurrentmainlabel + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipmain + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipmain + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + \else + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipothers + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipothers + \let\@mgls@do@current@element\@gobble + \else + \let\@mgls@do@current@element\@firstofone + \fi + }% + \fi +} +\newcommand*{\glsxtr@mgls@checklastelement}[2]{% + \ifbool{KV@glsxtrcombined@#1skipmain}% + {% + \ifbool{KV@glsxtrcombined@#1skipothers}% + {% + }% + {% + \ifnum\mglselementindex=\glsxtrmultilastotherindex{#2}\relax + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo + \fi + }% + }% + {% + \ifbool{KV@glsxtrcombined@#1skipothers}% + {% + \ifnum\mglselementindex=\glsxtrmultimainindex{#2}\relax + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo + \fi + }% + {% + \let\mglsiflast\@secondoftwo + }% + }% +} +\newcommand{\glsxtrmglsWarnAllSkipped}[3]{% + \GlossariesExtraWarning{#1}% + #3{#2}% +} +\newcommand*{\glsxtr@mgls@applyopts}[1]{% + \edef\@mgls@dooptions{\noexpand\setkeys*{mgls}{\expandonce#1}}% + \@mgls@dooptions + \ifdefvoid\XKV@rm{}{\eappto\@mgls@all{,\expandonce\XKV@rm}}% + \ifdefvoid\@mgls@setup + {}% + {% + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@setup}}% + \mgls@disable@mglsopts + \@mgls@dooptions + \mgls@enable@mglsopts + \ifx\@mgls@setupoptions\@empty + \let\@mgls@setupoptions\XKV@rm + \else + \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% + \fi + }% + \@mgls@resetall + \@mgls@unsetall + \@mgls@resetmain + \@mgls@unsetmain + \@mgls@resetothers + \@mgls@unsetothers + \let\@mgls@resetall\@empty + \let\@mgls@resetmain\@empty + \let\@mgls@resetothers\@empty + \let\@mgls@unsetall\@empty + \let\@mgls@unsetmain\@empty + \let\@mgls@unsetothers\@empty + \ifmglsused\mglscurrentmultilabel + {\let\mglsisfirstuse\@secondoftwo}% + {\let\mglsisfirstuse\@firstoftwo}% +} +\providecommand{\@firstofthree}[3]{#1} +\providecommand{\@secondofthree}[3]{#2} +\providecommand{\@thirdofthree}[3]{#3} +\newcommand*{\glsxtr@mgls@inner}[7]{% + \let\mglslastmainlabel\@empty + \let\mglsiflastmainwasfirstuse\@firstoftwo + \let\mglsiflastmainwasplural\@secondoftwo + \let\mglsiflastmaincapscase\@firstofthree + \let\mglsiflastmainskipped\@firstoftwo + \bgroup + \ifcsundef{@gls@combined@#2@main}% + {% + \glsxtrundefaction{Multi entry `#2' hasn't been defined}% + {You need to define `#2' with \string\multiglossaryentry}% + \gdef\@mgls@post@hookdefs{% + \protected@edef\mglslastmultilabel{#2}% + \let\mglswasfirstuse\@firstoftwo + \let\mglslastcategory\@empty + \let\mglsiflastelementskipped\@firstoftwo + \let\mglsiflastelementwasfirstuse\@firstoftwo + \let\mglsiflastelementwasplural\@secondoftwo + \let\mglsiflastelementcapscase\@firstofthree + \let\mglslastelementlabel\@empty + \let\mgls@do@postlinkhook\relax + }% + }% + {% + \protected@edef\mglscurrentmultilabel{#2}% + \letcs\mglscurrentmainlabel{@gls@combined@#2@main}% + \letcs\mglscurrentlist{@gls@combined@#2@list}% + \letcs\mglscurrentoptions{@gls@combined@#2@options}% + \ifmglsused\mglscurrentmultilabel + {\let\mglsisfirstuse\@secondoftwo}% + {\let\mglsisfirstuse\@firstoftwo}% + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\mglscurrentoptions}}% + \@mgls@dooptions + \let\@mgls@setupoptions\XKV@rm + \mgls@disable@setup + \ifdefvoid\@gls@combined@mglsopts + {}% + {\glsxtr@mgls@applyopts\@gls@combined@mglsopts}% + \mgls@enable@setup + \ifstrempty{#1}{}{\def\@mgls@options{#1}\glsxtr@mgls@applyopts\@mgls@options}% + \ifx\@gls@combined@category\empty + \else + \glshascategoryattribute{\@gls@combined@category}{multioptions}% + {% + \letcs\@mgls@attroptions{@glsxtr@categoryattr@@\@gls@combined@category + @multioptions}% + \let\@gls@combined@mglsopts\@empty + \edef\@mgls@dooptions{% + \noexpand\setkeys*{glsxtrcombinedpreopts}{\expandonce\@mgls@attroptions}}% + \@mgls@dooptions + \eappto\@mgls@setupoptions{,\expandonce\XKV@rm}% + \ifx\@gls@combined@mglsopts\@empty + \else + \let\@mgls@setup\@empty + \mgls@disable@setup + \glsxtr@mgls@applyopts\@gls@combined@mglsopts + \mgls@enable@setup + \fi + }% + {}% + \fi + \edef\@mgls@dooptions{% + \noexpand\setkeys{glsxtrcombined}{\expandonce\@mgls@setupoptions}}% + \@mgls@dooptions + \let\mglscurrentcategory\@gls@combined@category + \ifnum\@gls@combined@hyper=1\relax + \def\@mgls@combinedlink{\@mgls@hyperlink{\mglscurrentmainlabel}}% + \else + \def\@mgls@combinedlink{\@firstofone}% + \fi + \def\@gls@combined@encapsulator##1{% + \@mgls@combinedlink{\csuse{\@gls@combined@textformat}{##1}}}% + \let\@mgls@do@current@element\@firstofone + \mglsisfirstuse + {% + \ifKV@glsxtrcombined@firstskipmain + \ifKV@glsxtrcombined@firstskipothers + \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator + \def\@gls@combined@encapsulator##1{% + \glsxtrmglsWarnAllSkipped{All elements skipped for + first use of multi-entry `#2'}{#3}% + {\@gls@org@combined@encapsulator}% + }% + \let\@mgls@do@current@element\@gobble + \fi + \fi + }% + {% + \ifKV@glsxtrcombined@usedskipmain + \ifKV@glsxtrcombined@usedskipothers + \let\@gls@org@combined@encapsulator\@gls@combined@encapsulator + \def\@gls@combined@encapsulator##1{% + \glsxtrmglsWarnAllSkipped{All elements skipped for + subsequent use of multi-entry `#2'}{#3}% + {\@gls@org@combined@encapsulator}% + }% + \let\@mgls@do@current@element\@gobble + \fi + \fi + }% + \mglsisfirstuse + {% + \let\mglscurrentprefix\@gls@combined@firstprefix + \let\mglscurrentsuffix\@gls@combined@firstsuffix + }% + {% + \let\mglscurrentprefix\@gls@combined@usedprefix + \let\mglscurrentsuffix\@gls@combined@usedsuffix + }% + \xdef\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastmultilabel{\expandonce\mglscurrentmultilabel}% + \noexpand\def\noexpand\mglslastcategory{\mglscurrentcategory}% + }% + \ifx\@mgls@do@current@element\@gobble + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementskipped\@firstoftwo + \let\mglslastelementlabel\@empty + \let\mglsiflastelementwasfirstuse\@firstoftwo + \let\mglsiflastelementwasplural\@secondoftwo + \let\mglsiflastelementcapscase\@firstofthree + }% + \fi + \mglsisfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@firstoftwo}% + \ifcase\@gls@combined@mpostlink@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \fi + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglswasfirstuse\@secondoftwo}% + \ifcase\@gls@combined@mpostlink@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\relax}% + \or + \ifcase\@gls@combined@mpostlinkelement@nr\relax + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastelementpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglslastmainpostlinkhook}% + \or + \gappto\@mgls@post@hookdefs{\let\mgls@do@postlinkhook\mglscustompostlinkhook}% + \fi + \fi + }% + \let\mgls@org@postlinkhook\glspostlinkhook + \mglsprefix + \let\mglslastelementlabel\@empty + \@gls@combined@encapsulator + {% + \def\@mgls@previouslabel{}% + \mglselementindex=0\relax + \@for\mglscurrentlabel:=\mglscurrentlist\do{% + \advance\mglselementindex by 1\relax + \glsxtr@setup@docurrent + \ifx\@xfor@nextelement\@nnil + \let\mglsiflast\@firstoftwo + \else + \let\mglsiflast\@secondoftwo + \mglsisfirstuse + {% + \glsxtr@mgls@checklastelement{first}{#2}% + }% + {% + \glsxtr@mgls@checklastelement{used}{#2}% + }% + \fi + \ifcase\@gls@combined@postlinks@nr\relax + \let\glspostlinkhook\relax + \or + \let\glspostlinkhook\mgls@org@postlinkhook + \or + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \or + \ifx\mglscurrentlabel\mglscurrentmainlabel + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \else + \let\glspostlinkhook\relax + \fi + \or + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\mgls@org@postlinkhook + \else + \let\glspostlinkhook\relax + \fi + \or + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\relax + \else + \mglsiflast + {% + \let\glspostlinkhook\relax + }% + {% + \let\glspostlinkhook\mgls@org@postlinkhook + }% + \fi + \or + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\glspostlinkhook\relax + \else + \let\glspostlinkhook\mgls@org@postlinkhook + \fi + \fi + \mglsiflast + {% + \xappto\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastelementlabel + {\expandonce\mglscurrentlabel}}% + }% + {}% + \@mgls@do@current@element + {% + \mglselementprehook + \GlsXtrIfUnusedOrUndefined{\mglscurrentlabel}% + {\let\@mgls@current@iffirstuse\@firstoftwo}% + {\let\@mgls@current@iffirstuse\@secondoftwo}% + \ifx\mglscurrentlabel\mglscurrentmainlabel + \edef\@mgls@current@options{format=\@gls@combined@encapmain}% + \ifcase\@gls@combined@indexmain + \appto\@mgls@current@options{,noindex}% + \or + \appto\@mgls@current@options{,noindex=false}% + \or + \@mgls@current@iffirstuse + {\appto\@mgls@current@options{,noindex=false}}% + {\appto\@mgls@current@options{,noindex}}% + \fi + \ifcase\@gls@combined@hyper\relax + \appto\@mgls@current@options{,hyper=false}% none + \or + \appto\@mgls@current@options{,hyper=false}% allmain + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% mainonly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% individual + \or + \appto\@mgls@current@options{,hyper=false}% otheronly + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notmainfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst + }% + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst + }% + \fi + \eappto\@mgls@current@options{,\@mgls@all,\@mgls@main}% + \else + \edef\@mgls@current@options{format=\@gls@combined@encapothers}% + \ifcase\@gls@combined@indexothers\relax + \appto\@mgls@current@options{,noindex}% + \or + \appto\@mgls@current@options{,noindex=false}% + \or + \@mgls@current@iffirstuse + {\appto\@mgls@current@options{,noindex=false}}% + {\appto\@mgls@current@options{,noindex}}% + \fi + \ifcase\@gls@combined@hyper\relax + \appto\@mgls@current@options{,hyper=false}% none + \or + \appto\@mgls@current@options{,hyper=false}% allmain + \or + \appto\@mgls@current@options{,hyper=false}% mainonly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% individual + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% otheronly + \or + \eappto\@mgls@current@options{,\@mgls@hyper}% notmainfirst + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% nototherfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% nototherfirst + }% + \or + \mglsisfirstuse + {% + \appto\@mgls@current@options{,hyper=false}% notfirst + }% + {% + \eappto\@mgls@current@options{,\@mgls@hyper}% notfirst + }% + \fi + \eappto\@mgls@current@options{,\@mgls@all,\@mgls@others}% + \fi + \ifx\@mgls@previouslabel\empty + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\@mgls@cs#6\relax + \else + \let\@mgls@cs#4\relax + \fi + \else + \@mgls@previous@iffirstuse + {% + \@mgls@current@iffirstuse + {\glscombinedfirstsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% + {\glscombinedfirstsep{\@mgls@previouslabel}{\mglscurrentlabel}}% + }% + {% + \@mgls@current@iffirstuse + {\glscombinedsepfirst{\@mgls@previouslabel}{\mglscurrentlabel}}% + {\glscombinedsep{\@mgls@previouslabel}{\mglscurrentlabel}}% + }% + \ifx\mglscurrentlabel\mglscurrentmainlabel + \let\@mgls@cs#7\relax + \else + \let\@mgls@cs#5\relax + \fi + \fi + \mglsiflast + {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[#3]}% + {\expandafter\@mgls@cs\expandafter{\@mgls@current@options}{\mglscurrentlabel}[]}% + \ifx\mglscurrentlabel\mglscurrentmainlabel + \xappto\@mgls@post@hookdefs{% + \noexpand\def\noexpand\mglslastmainlabel + {\expandonce\mglscurrentmainlabel}% + }% + \glsxtrifwasfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasfirstuse\@secondoftwo}% + }% + \glsifplural + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainwasplural\@secondoftwo}% + }% + \glscapscase + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@firstofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@secondofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastmaincapscase\@thirdofthree + }% + }% + \fi + \let\@mgls@previouslabel\mglscurrentlabel + \let\@mgls@previous@iffirstuse\@mgls@current@iffirstuse + }% + \mglselementposthook + }% + \ifx\mglslastmainlabel\@empty + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@firstoftwo}% + \else + \gappto\@mgls@post@hookdefs{\let\mglsiflastmainskipped\@secondoftwo}% + \fi + \ifx\@mgls@do@current@element\@gobble + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@firstoftwo}% + \else + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementskipped\@secondoftwo}% + \fi + \glsxtrifwasfirstuse + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasfirstuse\@secondoftwo}% + }% + \glsifplural + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@firstoftwo}% + }% + {% + \gappto\@mgls@post@hookdefs{\let\mglsiflastelementwasplural\@secondoftwo}% + }% + \glscapscase + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@firstofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@secondofthree + }% + }% + {% + \gappto\@mgls@post@hookdefs{% + \let\mglsiflastelementcapscase\@thirdofthree + }% + }% + }% + \@mgls@post@hookdefs + \mglssuffix + \ifcase\@mgls@unsetaction\relax + \xappto\@mgls@post@hookdefs{% + \noexpand\mglsunset{\expandonce\mglscurrentmultilabel}}% + \or + \xappto\@mgls@post@hookdefs{% + \noexpand\mglslocalunset{\expandonce\mglscurrentmultilabel}}% + \fi + }% + \glsxtrmglswrite{#2}% + \egroup + \@mgls@post@hookdefs + \mgls@do@postlinkhook +} +\newcommand*{\mglscustompostlinkhook}{} +\newcommand*{\mglslastelementpostlinkhook}{% + \let\glsxtrifwasfirstuse\mglsiflastelementwasfirstuse + \let\glsifplural\mglsiflastelementwasplural + \let\glscapscase\mglsiflastelementcapscase + \let\glslabel\mglslastelementlabel + \glspostlinkhook +} +\newcommand*{\mglslastmainpostlinkhook}{% + \let\glsxtrifwasfirstuse\mglsiflastmainwasfirstuse + \let\glsifplural\mglsiflastmainwasplural + \let\glscapscase\mglsiflastmaincapscase + \let\glslabel\mglslastmainlabel + \glspostlinkhook +} +\newcommand*{\mglsdefcategoryprefix}[2]{% + \csdef{mglsprefix@#1}{#2}% +} +\newcommand*{\mglshascategoryprefix}[3]{% + \ifcsdef{mglsprefix@#1}{#2}{#3}% +} +\newcommand*{\mglsusecategoryprefix}[1]{% + \csuse{mglsprefix@#1}% +} +\newcommand*{\mglsprefix}{% + \ifdefempty\mglscurrentcategory + {\mglscurrentprefix}% + {% + \mglshascategoryprefix{\mglscurrentcategory}% + {\mglsusecategoryprefix{\mglscurrentcategory}}% + {\mglscurrentprefix}% + }% +} +\newcommand*{\mglsdefcategorysuffix}[2]{% + \csdef{mglssuffix@#1}{#2}% +} +\newcommand*{\mglshascategorysuffix}[3]{% + \ifcsdef{mglssuffix@#1}{#2}{#3}% +} +\newcommand*{\mglsusecategorysuffix}[1]{% + \csuse{mglssuffix@#1}% +} +\newcommand*{\mglssuffix}{% + \ifdefempty\mglscurrentcategory + {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% + {% + \mglshascategorysuffix{\mglscurrentcategory}% + {\mglsusecategorysuffix{\mglscurrentcategory}}% + {\ifdefempty{\mglscurrentsuffix}{}{\space(\mglscurrentsuffix)}}% + }% +} +\newcommand*{\mglselementprehook}{} +\newcommand*{\mglselementposthook}{} +\newcommand*{\glscombinedsep}[2]{% + \glshasattribute{#1}{combinedsep}% + {\glsgetattribute{#1}{combinedsep}}% + { }% +} +\newcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{#1}{combinedfirstsepfirst}% + {\glsgetattribute{#1}{combinedfirstsepfirst}}% + {\glscombinedsep{#1}{#2}}% +} +\newcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{#1}{combinedfirstsep}% + {\glsgetattribute{#1}{combinedfirstsep}}% + {\glscombinedsep{#1}{#2}}% +} +\newcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{#1}{combinedsepfirst}% + {\glsgetattribute{#1}{combinedsepfirst}}% + {\glscombinedsep{#1}{#2}}% +} +\newcommand*{\glssetcombinedsepabbrvnbsp}{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {\ifhasshort{##1}{~}{ }}% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {\ifhasshort{##1}{~}{ }}% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + { }% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + { }% + }% +} +\newcommand*{\glssetcombinedsepabbrvnone}{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {\ifhasshort{##1}{}{\ifhasshort{##2}{}{ }}}% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {\ifhasshort{##1}{}{ }}% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + {\ifhasshort{##2}{}{ }}% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + { }% + }% +} +\newcommand*{\glssetcombinedsepnarrow}[2]{% + \renewcommand*{\glscombinedsep}[2]{% + \glshasattribute{##1}{combinedsep}% + {\glsgetattribute{##1}{combinedsep}}% + {% + \ifhasshort{##1}% + {\settowidth{\dimen@}{\glsentryshort{##1}}}% + {\settowidth{\dimen@}{\glsentrytext{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhasshort{##2}% + {\settowidth{\dimen@}{\glsentryshort{##2}}}% + {\settowidth{\dimen@}{\glsentrytext{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedsepfirst}[2]{% + \glshasattribute{##1}{combinedsepfirst}% + {\glsgetattribute{##1}{combinedsepfirst}}% + {% + \ifhasshort{##1}% + {\settowidth{\dimen@}{\glsentryshort{##1}}}% + {\settowidth{\dimen@}{\glsentrytext{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhaslong{##2}% + {\settowidth{\dimen@}{\glsentrylong{##2}}}% + {\settowidth{\dimen@}{\glsentryfirst{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedfirstsep}[2]{% + \glshasattribute{##1}{combinedfirstsep}% + {\glsgetattribute{##1}{combinedfirstsep}}% + {% + \ifhaslong{##1}% + {\settowidth{\dimen@}{\glsentrylong{##1}}}% + {\settowidth{\dimen@}{\glsentryfirst{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhasshort{##2}% + {\settowidth{\dimen@}{\glsentryshort{##2}}}% + {\settowidth{\dimen@}{\glsentrytext{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% + \renewcommand*{\glscombinedfirstsepfirst}[2]{% + \glshasattribute{##1}{combinedfirstsepfirst}% + {\glsgetattribute{##1}{combinedfirstsepfirst}}% + {% + \ifhaslong{##1}% + {\settowidth{\dimen@}{\glsentrylong{##1}}}% + {\settowidth{\dimen@}{\glsentryfirst{##1}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \ifhaslong{##2}% + {\settowidth{\dimen@}{\glsentrylong{##2}}}% + {\settowidth{\dimen@}{\glsentryfirst{##2}}}% + \ifdim\dimen@<#1\relax + #2% + \else + \space + \fi + \fi + }% + }% +} +\newcommand{\glsxtrmglswrite}[1]{% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off + \else + \protected@edef\@glsxtr@mglslabel{#1}% + \ifdef\@glsxtr@mglsreflist + {% + \expandafter\DTLifinlist\expandafter{\@glsxtr@mglslabel}% + {\@glsxtr@mglsreflist}{}% + {% + \xappto\@glsxtr@mglsreflist{,\expandonce\@glsxtr@mglslabel}% + \if@mgls@writeseparaterefs + \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% + \fi + }% + }% + {% + \global\let\@glsxtr@mglsreflist\@glsxtr@mglslabel + \if@mgls@writeseparaterefs + \protected@write\@auxout{}{\string\@glsxtr@mglsrefs{#1}}% + \else + \AtEndDocument{\immediate\protected@write\@auxout{}% + {\string\@glsxtr@mglsrefs{\@glsxtr@mglsreflist}}}% + \fi + \@mgls@disable@writeseparateref@cond + }% + \fi +} +\newcommand{\@glsxtr@mglsrefs}[1]{} +\newif\if@mgls@writeseparaterefs \@mgls@writeseparaterefsfalse +\newcommand{\mglsWriteSeparateRefsTrue}{\global\@mgls@writeseparaterefstrue} +\newcommand{\mglsWriteSeparateRefsFalse}{\global\@mgls@writeseparaterefsfalse} +\newcommand*{\@mgls@disable@writeseparateref@cond}{% + \gdef\mglsWriteSeparateRefsTrue{\PackageError{glossaries-extra}% + {Too late to use \string\mglsWriteSeparateRefsTrue}% + {\string\mglsWriteSeparateRefsTrue\space can only be used before + the first instance of any \string\mgls-like command}}% + \gdef\mglsWriteSeparateRefsFalse{\PackageError{glossaries-extra}% + {Too late to use \string\mglsWriteSeparateRefsFalse}% + {\string\mglsWriteSeparateRefsFalse\space can only be used before + the first instance of any \string\mgls-like command}}% +} +\newcommand{\glsxtr@newmgls}[5]{% + \edef\@glsxr@newmgls@do{% + \noexpand\newrobustcmd*{\expandonce{\csname #1\endcsname}}% + {\noexpand\@gls@hyp@opt\expandonce{\csname ns@glsxtr@#1\endcsname}}% + \noexpand\newcommand*{\expandonce{\csname ns@glsxtr@#1\endcsname}}[2][]{% + \noexpand\new@ifnextchar[% + {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}}% + {\expandonce{\csname glsxtr@#1\endcsname}{####1}{####2}[]}% + }% + \noexpand\def\expandonce{\csname glsxtr@#1\endcsname}####1####2[####3]{% + \noexpand\def\noexpand\glsxtrcurrentmglscsname{#1}% + \noexpand\glsxtr@mgls@inner{####1}{####2}{####3}% + {\noexpand#2}{\noexpand#3}{\noexpand#4}{\noexpand#5}% + }% + }% + \@glsxr@newmgls@do + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@off + \else + \ifdef\@glsxtr@mglslikelist + {\xappto\@glsxtr@mglslikelist{,#1}}% + {% + \gdef\@glsxtr@mglslikelist{#1}% + \AtEndDocument{\immediate\protected@write\@auxout{}% + {\string\@glsxtr@mglslike{\@glsxtr@mglslikelist}}}% + }% + \fi +} +\newcommand*{\@glsxtr@mglslike}[1]{} +\newcommand*{\GlsXtrMglsOrGls}[2]{% + \def\@glsxtr@mgls@or@gls@mcs{#1}% + \def\@glsxtr@mgls@or@gls@gcs{#2}% + \@ifstar{\s@GlsXtrMglsOrGls}% + {% + \@ifnextchar+{\PLUS\@firstoftwo{\p@GlsXtrMglsOrGls}}% + {% + \ifdefempty\@gls@alt@hyp@opt@char\@GlsXtrMglsOrGls\alt@GlsXtrMglsOrGls + }% + }% +} +\newcommand*{\alt@GlsXtrMglsOrGls}{ + \expandafter\@ifnextchar\@gls@alt@hyp@opt@char + {\@firstoftwo{\@alt@GlsXtrMglsOrGls}}{\@GlsXtrMglsOrGls}% +} +\newcommand*{\@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs[#1]{#2}}% +} +\newcommand*{\s@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs*[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs*[#1]{#2}}% +} +\newcommand*{\p@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\@glsxtr@mgls@or@gls@mcs+[#1]{#2}}% + {\@glsxtr@mgls@or@gls@gcs+[#1]{#2}}% +} +\newcommand*{\@alt@GlsXtrMglsOrGls}[2][]{% + \glsxtrifmulti{#2}% + {\expandafter\@glsxtr@mgls@or@gls@mcs\@gls@alt@hyp@opt@char[#1]{#2}}% + {\expandafter\@glsxtr@mgls@or@gls@gcs\@gls@alt@hyp@opt@char[#1]{#2}}% +} +\glsxtr@newmgls{mgls}{\@gls@}{\@gls@}{\@gls@}{\@gls@}% +\glsxtr@newmgls{mglspl}{\@glspl@}{\@glspl@}{\@glspl@}{\@glspl@}% +\glsxtr@newmgls{mglsmainpl}{\@gls@}{\@gls@}{\@glspl@}{\@glspl@}% +\glsxtr@newmgls{Mgls}{\@Gls@}{\@gls@}{\@Gls@}{\@gls@}% +\glsxtr@newmgls{Mglspl}{\@Glspl@}{\@glspl@}{\@Glspl@}{\@glspl@}% +\glsxtr@newmgls{Mglsmainpl}{\@Gls@}{\@gls@}{\@Glspl@}{\@glspl@}% +\glsxtr@newmgls{MGls}{\@Gls@}{\@Gls@}{\@Gls@}{\@Gls@}% +\glsxtr@newmgls{MGlspl}{\@Glspl@}{\@Glspl@}{\@Glspl@}{\@Glspl@}% +\glsxtr@newmgls{MGlsmainpl}{\@Gls@}{\@Gls@}{\@Glspl@}{\@Glspl@}% +\glsxtr@newmgls{MGLS}{\@GLS@}{\@GLS@}{\@GLS@}{\@GLS@}% +\glsxtr@newmgls{MGLSpl}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}{\@GLSpl@}% +\glsxtr@newmgls{MGLSmainpl}{\@GLS@}{\@GLS@}{\@GLSpl@}{\@GLSpl@}% +\def\@glslongortext#1#2[#3]{% + \ifglshaslong{#2}{\@glsxtrlong{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% +} +\def\@glsshortortext#1#2[#3]{% + \ifglshasshort{#2}{\@glsxtrshort{#1}{#2}[#3]}{\@glstext@{#1}{#2}[#3]}% +} +\def\@glsfullorfirst#1#2[#3]{% + \ifglshasshort{#2}{\@glsxtr@full{#1}{#2}[#3]}{\@glsfirst@{#1}{#2}[#3]}% +} +\def\@Glslongortext#1#2[#3]{% + \ifglshaslong{#2}{\@Glsxtrlong{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% +} +\def\@Glsshortortext#1#2[#3]{% + \ifglshasshort{#2}{\@Glsxtrshort{#1}{#2}[#3]}{\@Glstext@{#1}{#2}[#3]}% +} +\def\@Glsfullorfirst#1#2[#3]{% + \ifglshasshort{#2}{\@Glsxtr@full{#1}{#2}[#3]}{\@Glsfirst@{#1}{#2}[#3]}% +} +\glsxtr@newmgls{mglsshort}% +{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}{\@glsshortortext}% +\glsxtr@newmgls{mglslong}% +{\@glslongortext}{\@glslongortext}{\@glslongortext}{\@glslongortext}% +\glsxtr@newmgls{mglsfull}% +{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}{\@glsfullorfirst}% +\glsxtr@newmgls{Mglsshort}% +{\@Glsshortortext}{\@glsshortortext}{\@Glsshortortext}{\@glsshortortext}% +\glsxtr@newmgls{Mglslong}% +{\@Glslongortext}{\@glslongortext}{\@Glslongortext}{\@glslongortext}% +\glsxtr@newmgls{Mglsfull}% +{\@Glsfullorfirst}{\@glsfullorfirst}{\@Glsfullorfirst}{\@glsfullorfirst}% +\glsxtr@newmgls{mglsname}% + {\@glsname@}{\@glsname@}{\@glsname@}{\@glsname@}% +\glsxtr@newmgls{Mglsname}% + {\@Glsname@}{\@glsname@}{\@Glsname@}{\@glsname@}% +\glsxtr@newmgls{MGlsname}% + {\@Glsname@}{\@Glsname@}{\@Glsname@}{\@Glsname@}% +\def\@glssymbolorgls#1#2[#3]{% + \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@gls@{#1}{#2}[#3]}% +} +\def\@glssymbolorGls#1#2[#3]{% + \ifglshassymbol{#2}{\@glssymbol@{#1}{#2}[#3]}{\@Gls@{#1}{#2}[#3]}% +} +\glsxtr@newmgls{mglssymbol}% + {\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}{\@glssymbolorgls}% +\glsxtr@newmgls{Mglssymbol}% + {\@glssymbolorGls}{\@glssymbolorgls}{\@glssymbolorGls}{\@glssymbolorgls}% +\glsxtr@newmgls{MGlssymbol}% + {\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}{\@glssymbolorGls}% +\newcommand{\mglsfield}{useri} +\def\@glsfieldorgls#1#2[#3]{% + \glsxtrifhasfield{\mglsfield}{#2}% + {\@glsdisp[#1]{#2}{\glscurrentfieldvalue#3}}% + {\@gls@{#1}{#2}[#3]}% +} +\def\@Glsfieldorgls#1#2[#3]{% + \glsxtrifhasfield{\mglsfield}{#2}% + {\@glsdisp[#1]{#2}{\xmakefirstuc\glscurrentfieldvalue#3}}% + {\@Gls@{#1}{#2}[#3]}% +} +\glsxtr@newmgls{mglsusefield}% + {\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}{\@glsfieldorgls}% +\glsxtr@newmgls{Mglsusefield}% + {\@Glsfieldorgls}{\@glsfieldorgls}{\@Glsfieldorgls}{\@glsfieldorgls}% +\glsxtr@newmgls{MGlsusefield}% + {\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}{\@Glsfieldorgls}% +\newcommand*{\mpglsWarning}{% + \GlossariesExtraWarning{glossaries-prefix.sty is required for + \string\mpgls\space family of commands (either load after + glossaries-extra.sty or use the `prefix' package option)}% +} +\def\@pglsorgls#1#2[#3]{% + \ifdef\@pgls@{\@pgls@{#1}{#2}[#3]}{\mpglsWarning\@gls@{#1}{#2}[#3]}% +} +\def\@pglsorglspl#1#2[#3]{% + \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% +} +\def\@Pglsorgls#1#2[#3]{% + \ifdef\@Pgls@{\@Pgls@{#1}{#2}[#3]}{\mpglsWarning\@Gls@{#1}{#2}[#3]}% +} +\def\@pglsorglspl#1#2[#3]{% + \ifdef\@pglspl@{\@pglspl@{#1}{#2}[#3]}{\mpglsWarning\@glspl@{#1}{#2}[#3]}% +} +\def\@Pglsorglspl#1#2[#3]{% + \ifdef\@Pglspl@{\@Pglspl@{#1}{#2}[#3]}{\mpglsWarning\@Glspl@{#1}{#2}[#3]}% +} +\def\@PGLSorgls#1#2[#3]{% + \ifdef\@PGLS@{\@PGLS@{#1}{#2}[#3]}{\mpglsWarning\@GLS@{#1}{#2}[#3]}% +} +\def\@PGLSorglspl#1#2[#3]{% + \ifdef\@PGLSpl@{\@PGLSpl@{#1}{#2}[#3]}{\mpglsWarning\@GLSpl@{#1}{#2}[#3]}% +} +\glsxtr@newmgls{mpgls}{\@pglsorgls@}{\@gls@}{\@pglsorgls@}{\@gls@}% +\glsxtr@newmgls{mpglspl}{\@pglsorglspl@}{\@glspl@}{\@pglsorglspl@}{\@glspl@}% +\glsxtr@newmgls{mpglsmainpl}{\@pglsorgls@}{\@gls@}{\@pglsorglspl@}{\@glspl@}% +\glsxtr@newmgls{Mpgls}{\@Pglsorgls@}{\@gls@}{\@Pglsorgls@}{\@gls@}% +\glsxtr@newmgls{Mpglspl}{\@Pglsorglspl@}{\@glspl@}{\@Pglsorglspl@}{\@glspl@}% +\glsxtr@newmgls{Mpglsmainpl}{\@Pglsorgls@}{\@gls@}{\@Pglsorglspl@}{\@glspl@}% +\glsxtr@newmgls{MPGls}{\@Pglsorgls@}{\@Gls@}{\@Pglsorgls@}{\@Gls@}% +\glsxtr@newmgls{MPGlspl}{\@Pglsorglspl@}{\@Glspl@}{\@Pglsorglspl@}{\@Glspl@}% +\glsxtr@newmgls{MPGlsmainpl}{\@Pglsorgls@}{\@Gls@}{\@Pglsorglspl@}{\@Glspl@}% +\glsxtr@newmgls{MPGLS}{\@PGLSorgls@}{\@GLS@}{\@PGLSorgls@}{\@GLS@}% +\glsxtr@newmgls{MPGLSpl}{\@PGLSorglspl@}{\@GLSpl@}{\@PGLSorglspl@}{\@GLSpl@}% +\glsxtr@newmgls{MPGLSmainpl}{\@PGLSorgls@}{\@GLS@}{\@PGLSorglspl@}{\@GLSpl@}% +\newcommand*{\RequireGlossariesExtraLang}[1]{% + \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}% +} +\newcommand*{\ProvidesGlossariesExtraLang}[1]{% + \ProvidesFile{glossariesxtr-#1.ldf}% +} +\newcommand{\glsxtr@loaddialect}{% + \IfTrackedLanguageFileExists{\this@dialect}% + {glossariesxtr-}% prefix + {.ldf}% + {% + \RequireGlossariesExtraLang{\CurrentTrackedTag}% + }% + {}% not found + \@glsxtrdialecthook +} +\@ifpackageloaded{tracklang} {% + \AnyTrackedLanguages + {% + \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}% + }% + {}% +} {} +\@glsxtr@redefstyles +\@glsxtr@do@style +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra-2021-11-22.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossaries-extra-bib2gls-2021-11-22.sty> +% \end{macrocode} +%\fi +%\subsection{Rollback v1.48 (glossaries-extra-bib2gls-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra-bib2gls}[2021/11/22 v1.48 (NLCT)] +\ifglsacronym + \providecommand*{\printunsrtacronyms}[1][]{% + \printunsrtglossary[type=\acronymtype,#1]}% +\fi +\ifglossaryexists{index} +{ + \providecommand*{\printunsrtindex}[1][]{% + \printunsrtglossary[type=index,#1]}% +}{} +\ifglossaryexists{symbols} +{ + \providecommand*{\printunsrtsymbols}[1][]{% + \printunsrtglossary[type=symbols,#1]}% +}{} +\ifglossaryexists{numbers} +{ + \providecommand*{\printunsrtnumbers}[1][]{% + \printunsrtglossary[type=numbers,#1]}% +}{} +\ifglossaryexists{abbreviations} +{ + \providecommand*{\printunsrtabbreviations}[1][]{% + \printunsrtglossary[type=abbreviations,#1]}% +}{} +\renewcommand*{\glsdisplaynumberlist}[1]{% + \glsdoifexists{#1}% + {% + {\let\bibglsdelimN\glsnumlistsep + \let\bibglslastDelimN\glsnumlistlastsep + \glsxtrusefield{#1}{location}% + }% + }% +} +\robustify\glsdisplaynumberlist +\renewcommand*{\glsentrynumberlist}[1]{\glsxtrusefield{#1}{location}} +\newcommand*{\glshex}{\string\u} +\newcommand*{\glscapturedgroup}{\string\$} +\newcommand*{\GlsXtrIfHasNonZeroChildCount}{% + \@ifstar\s@GlsXtrIfHasNonZeroChildCount\@GlsXtrIfHasNonZeroChildCount +} +\newcommand*{\@GlsXtrIfHasNonZeroChildCount}[3]{% + \@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% +} +\newcommand*{\s@GlsXtrIfHasNonZeroChildCount}[3]{% + \s@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% +} +\newcommand*{\glsxtrprovidecommand}{\providecommand} +\newcommand*{\glsrenewcommand}{\@star@or@long\glsxtr@renewcommand} +\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% +} +\newcommand*{\glsxtr@wrglossarylocation}[2]{#1} +\ifdef\hyperref +{% + \newcommand*{\GlsXtrIndexCounterLink}[2]{% + \glsxtrifhasfield{indexcounter}{#2}% + {\hyperref[wrglossary.\glscurrentfieldvalue]{#1}}% + {#1}% + } +} +{ + \newcommand*{\GlsXtrIndexCounterLink}[2]{#1} +} +\newcommand*{\GlsXtrDualField}{dual} +\newcommand*{\GlsXtrDualBackLink}[2]{% + \glsxtrifhasfield{\GlsXtrDualField}{#2}% + {\glshyperlink[#1]{\glscurrentfieldvalue}}% + {#2}% +} +\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 +} +\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}% +} +\newcommand*{\glsxtrmultisupplocation}[3]{% + {% + \def\glsxtrsupplocationurl{#2}% + \glshypernumber{#1}% + }% +} +\newcommand*\glsxtrdisplaysupploc[5]{% + \setentrycounter[#1]{#2}% + \glsxtrmultisupplocation{#5}{#4}{#3}% +} +\ifundef\hyperlink +{ + \newcommand*{\glsxtrdisplaylocnameref}[8]{% + \glsnoidxdisplayloc{#1}{#2}{#3}{#4}% + } +} +{ + \newcommand*{\glsxtrdisplaylocnameref}[8]{% + \ifcsdef{glsxtr#2locfmt}% + {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#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}}% + }% + }% + } +} +\newcommand*{\glsxtrequationlocfmt}[2]{(#1)} +\newcommand*{\glsxtrnamereflink}[4]{% + \begingroup + \let\glshypernumber\@firstofone + \ifstrempty{#4}% + {\glsxtrfmtinternalnameref{#3}{#1}{#2}}% + {\glsxtrfmtexternalnameref{#3}{#1}{#2}{#4}}% + \endgroup +} +\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 +} +\def\@glsxtr@bibgls@removespaces#1 #2\@nil{% + \toks@=\expandafter{\the\toks@#1}% + \ifx\\#2\\% + \edef\@glo@tmp{\the\toks@}% + \ifx\@glo@tmp\empty + \else + \protected@edef\@glo@tmp{\glsentrycounter\@glo@counterprefix\the\toks@}% + \ifdefvoid\glsxtrsupplocationurl + {% + \expandafter\glsxtrfmtinternalnameref\expandafter{\@glo@tmp}% + {\@glsnumberformat}{\glsxtr@locationhypertext}% + }% + {% + \expandafter\glsxtrfmtexternalnameref\expandafter{\@glo@tmp}% + {\@glsnumberformat}{\glsxtr@locationhypertext}{\glsxtrsupplocationurl}% + }% + \fi + \else + \@gls@ReturnAfterFi{% + \@glsxtr@bibgls@removespaces#2\@nil + }% + \fi +} +\newcommand*{\glsxtrfmtinternalnameref}[3]{% + \csuse{#2}{\glsdohyperlink{#1}{#3}}% +} +\newcommand*{\glsxtrfmtexternalnameref}[4]{% + \csuse{#2}{\hyperref{#4}{}{#1}{#3}}% +} +\newcommand*{\glsxtrSetWidest}[3]{% + \ifdef\glsupdatewidest + {% + \ifdef\glslongextraUpdateWidest + {% + \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 + }% + }% + {% + \ifstrempty{#1} + {% + \glsupdatewidest[#2]{#3}% + }% + {% + \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}% + }% + }% + }% + {% + \ifdef\glssetwidest + {% + \ifdef\glslongextraUpdateWidest + {% + \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 + }% + }% + {% + \ifstrempty{#1} + {% + \glssetwidest[#2]{#3}% + }% + {% + \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}% + }% + }% + }% + {% + \ifdef\glslongextraUpdateWidest + {% + \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 + }% + }% + {}% + }% + }% +} +\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 +} +\newcommand*{\@glsxtr@labelprefixes}{} +\newcommand*{\glsxtrclearlabelprefixes}{% + \renewcommand*{\@glsxtr@labelprefixes}{}% +} +\newcommand*{\glsxtraddlabelprefix}[1]{% + \ifstrempty{#1}% + {\glsxtraddlabelprefix{\empty}}% + {% + \ifdefempty\@glsxtr@labelprefixes + {\def\@glsxtr@labelprefixes{#1}}% + {\appto\@glsxtr@labelprefixes{,#1}}% + }% +} +\newcommand*{\glsxtrprependlabelprefix}[1]{% + \ifstrempty{#1}% + {\glsxtrprependlabelprefix{\empty}}% + {% + \ifdefempty\@glsxtr@labelprefixes + {\def\@glsxtr@labelprefixes{#1}}% + {\preto\@glsxtr@labelprefixes{#1,}}% + }% +} +\newcommand*{\glsxtrifinlabelprefixlist}[3]{% + \ifstrempty{#1}% + {\glsxtrifinlabelprefixlist{\empty}{#2}{#3}}% + {% + \DTLifinlist{#1}{\@glsxtr@labelprefixes}{#2}{#3}% + }% +} +\AtBeginDocument{% + \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}% + \protected@write\@auxout{}{\string\@glsxtr@prefixlabellist{\@glsxtr@labelprefixes}}% +} +\newcommand*{\@glsxtr@get@prefixedlabel}[1]{% + \begingroup + \protected@edef\@gls@thislabel{#1}% + \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do + {% + \protected@edef\@gls@thislabel{\@glsxtr@prefix#1}% + \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}% + }% + \edef\@glo@tmp{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\@glo@tmp +} +\newrobustcmd*{\dgls}{\@gls@hyp@opt\@dgls} +\newcommand*{\@dgls}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@gls@{#1}{\@gls@thislabel}}{\@gls@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dglspl}{\@gls@hyp@opt\@dglspl} +\newcommand*{\@dglspl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@glspl@{#1}{\@gls@thislabel}}{\@glspl@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls} +\newcommand*{\@dGls}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@Gls@{#1}{\@gls@thislabel}}{\@Gls@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl} +\newcommand*{\@dGlspl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@Glspl@{#1}{\@gls@thislabel}}{\@Glspl@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS} +\newcommand*{\@dGLS}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@GLS@{#1}{\@gls@thislabel}}{\@GLS@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl} +\newcommand*{\@dGLSpl}[2][]{% + \@glsxtr@get@prefixedlabel{#2}% + \new@ifnextchar[{\@GLSpl@{#1}{\@gls@thislabel}}{\@GLSpl@{#1}{\@gls@thislabel}[]}% +} +\newrobustcmd*{\dglslink}[3][]{% + \@glsxtr@get@prefixedlabel{#2}% + \glslink[#1]{\@gls@thislabel}{#3}% +} +\newrobustcmd*{\dglsdisp}[3][]{% + \@glsxtr@get@prefixedlabel{#2}% + \glsdisp[#1]{\@gls@thislabel}{#3}% +} +\newrobustcmd*{\glsxtrmultientryadjustedname}[4]{% + \bgroup + \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep + \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep + \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep + \let\@glsxtrmultientryadjustednameother\glsxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefmt\glsxtrmultientryadjustednamefmt + \let\@glsxtrmultientryadjustednamefirstother\glsxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefirstfmt\glsxtrmultientryadjustednamefmt + \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% + \egroup +} +\newrobustcmd*{\Glsxtrmultientryadjustedname}[4]{% + \bgroup + \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep + \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep + \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep + \let\@glsxtrmultientryadjustednameother\glsxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefmt\glsxtrmultientryadjustednamefmt + \let\@glsxtrmultientryadjustednamefirstother\Glsxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefirstfmt\Glsxtrmultientryadjustednamefmt + \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% + \egroup +} +\newrobustcmd*{\GlsXtrmultientryadjustedname}[4]{% + \bgroup + \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep + \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep + \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep + \let\@glsxtrmultientryadjustednameother\GlsXtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefmt\GlsXtrmultientryadjustednamefmt + \let\@glsxtrmultientryadjustednamefirstother\GlsXtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefirstfmt\GlsXtrmultientryadjustednamefmt + \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% + \egroup +} +\newrobustcmd*{\GLSxtrmultientryadjustedname}[4]{% + \bgroup + \let\@glsxtrmultientryadjustednamesep\glsxtrmultientryadjustednamesep + \let\@glsxtrmultientryadjustednamepresep\glsxtrmultientryadjustednamepresep + \let\@glsxtrmultientryadjustednamepostsep\glsxtrmultientryadjustednamepostsep + \let\@glsxtrmultientryadjustednameother\GLSxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefmt\GLSxtrmultientryadjustednamefmt + \let\@glsxtrmultientryadjustednamefirstother\GLSxtrmultientryadjustednameother + \let\@glsxtrmultientryadjustednamefirstfmt\GLSxtrmultientryadjustednamefmt + \@glsxtrmultientryadjustedname{#1}{#2}{#3}{#4}% + \egroup +} +\newcommand*{\@glsxtrmultientryadjustedname}[4]{% + \letcs\mglscurrentmainlabel{@gls@combined@#4@main}% + \letcs\mglscurrentmainlist{@gls@combined@#4@list}% + \letcs\mglscurrentmainoptions{@gls@combined@#4@options}% + \ifblank{#1}% + {% + \@glsxtrmultientryadjustednamefirstfmt{#2}% + }% + {% + \def\@mgls@previouslabel{}% + \let\@gls@xtradjustedother\@glsxtrmultientryadjustednamefirstother + \@for\mglscurrentlabel:=#1\do{% + \ifx\@mgls@previouslabel\empty + \else + \@glsxtrmultientryadjustednamesep{\@mgls@previouslabel}{\mglscurrentlabel}% + \fi + \@gls@xtradjustedother{\mglscurrentlabel}% + \let\@mgls@previouslabel\mglscurrentlabel + \let\@gls@xtradjustedother\@glsxtrmultientryadjustednameother + }% + \@glsxtrmultientryadjustednamepresep{\@mgls@previouslabel}{\mglscurrentmainlabel}% + \@glsxtrmultientryadjustednamefmt{#2}% + }% + \ifblank{#3}% + {}% + {% + \let\@mgls@previouslabel\mglscurrentmainlabel + \let\@gls@xtrmultientryadjustednamesep\@glsxtrmultientryadjustednamepostsep + \@for\mglscurrentlabel:=#3\do{% + \@gls@xtrmultientryadjustednamesep{\@mgls@previouslabel}{\mglscurrentlabel}% + \@glsxtrmultientryadjustednameother{\mglscurrentlabel}% + \let\@mgls@previouslabel\mglscurrentlabel + \let\@gls@xtrmultientryadjustednamesep\@glsxtrmultientryadjustednamesep + }% + }% +} +\newcommand*{\glsxtrmultientryadjustednamesep}{\glscombinedfirstsepfirst} +\newcommand*{\glsxtrmultientryadjustednamepresep}{\glsxtrmultientryadjustednamesep} +\newcommand*{\glsxtrmultientryadjustednamepostsep}{\glsxtrmultientryadjustednamesep} +\newcommand*{\glsxtrmultientryadjustednamefmt}[1]{#1} +\newcommand*{\glsxtrmultientryadjustednameother}[1]{\glsentryname{#1}} +\newcommand*{\Glsxtrmultientryadjustednamefmt}[1]{\makefirstuc{#1}} +\newcommand*{\Glsxtrmultientryadjustednameother}[1]{\Glsentryname{#1}} +\newcommand*{\GlsXtrmultientryadjustednameother}[1]{% + \glsentrytitlecase{#1}{name}} +\ifdef\glscapitalisewords +{% + \newcommand*{\GlsXtrmultientryadjustednamefmt}[1]{\glscapitalisewords{#1}} +} +{ + \newcommand*{\GlsXtrmultientryadjustednamefmt}[1]{\capitalisewords{#1}} +} +\newcommand*{\GLSxtrmultientryadjustednameother}[1]{% + \mfirstucMakeUppercase{\glsentryname{#1}}} +\newcommand*{\GLSxtrmultientryadjustednamefmt}[1]{\mfirstucMakeUppercase{#1}} +\providecommand*{\Alpha}{\mathrm{A}} +\providecommand*{\Beta}{\mathrm{B}} +\providecommand*{\Epsilon}{\mathrm{E}} +\providecommand*{\Zeta}{\mathrm{Z}} +\providecommand*{\Eta}{\mathrm{H}} +\providecommand*{\Iota}{\mathrm{I}} +\providecommand*{\Kappa}{\mathrm{K}} +\providecommand*{\Mu}{\mathrm{M}} +\providecommand*{\Nu}{\mathrm{N}} +\providecommand*{\Omicron}{\mathrm{O}} +\providecommand*{\Rho}{\mathrm{P}} +\providecommand*{\Tau}{\mathrm{T}} +\providecommand*{\Chi}{\mathrm{X}} +\providecommand*{\Digamma}{\mathrm{F}} +\providecommand*{\omicron}{\mathit{o}} +\@ifpackageloaded{upgreek}% +{ + \providecommand*{\Upalpha}{\mathrm{A}} + \providecommand*{\Upbeta}{\mathrm{B}} + \providecommand*{\Upepsilon}{\mathrm{E}} + \providecommand*{\Upzeta}{\mathrm{Z}} + \providecommand*{\Upeta}{\mathrm{H}} + \providecommand*{\Upiota}{\mathrm{I}} + \providecommand*{\Upkappa}{\mathrm{K}} + \providecommand*{\Upmu}{\mathrm{M}} + \providecommand*{\Upnu}{\mathrm{N}} + \providecommand*{\Upomicron}{\mathrm{O}} + \providecommand*{\Uprho}{\mathrm{P}} + \providecommand*{\Uptau}{\mathrm{T}} + \providecommand*{\Upchi}{\mathrm{X}} + \providecommand*{\upomicron}{\mathrm{o}} +}% +{}% upgreek.sty not loaded +\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 +} +\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' +} +\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' +} + +\newcommand*{\glsxtrcombiningdiacriticrules}{% + \glsxtrcombiningdiacriticIrules\string; + \glsxtrcombiningdiacriticIIrules\string; + \glsxtrcombiningdiacriticIIIrules\string; + \glsxtrcombiningdiacriticIVrules +} +\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 +} +\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 +} +\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 +} +\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 +} +\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 +} +\newcommand*{\glsxtrgeneralpuncrules}{% + \glsxtrgeneralpuncIrules + \string<\glsxtrcurrencyrules + \string<\glsxtrgeneralpuncIIrules +} +\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 +} +\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 +} +\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 +} +\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 +} +\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% +} +\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% +} +\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% +} +\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% +} +\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% +} +\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% +} +\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% +} +\newcommand*{\glsxtrLatinA}{% + a\string=\glshex 00AA\string=\glshex 2090,A +} +\newcommand*{\glsxtrLatinE}{% + e\string=\glshex 2091,E +} +\newcommand*{\glsxtrLatinH}{% + h\string=\glshex 2095,H +} +\newcommand*{\glsxtrLatinI}{% + i\string=\glshex 2071,I +} +\newcommand*{\glsxtrLatinK}{% + k\string=\glshex 2096,K +} +\newcommand*{\glsxtrLatinL}{% + l\string=\glshex 2097,L +} +\newcommand*{\glsxtrLatinM}{% + m\string=\glshex 2098,M +} +\newcommand*{\glsxtrLatinN}{% + n\string=\glshex 207F\string=\glshex 2099,N +} +\newcommand*{\glsxtrLatinO}{% + o\string=\glshex 00BA\string=\glshex 2092,O +} +\newcommand*{\glsxtrLatinP}{% + p\string=\glshex 209A,P +} +\newcommand*{\glsxtrLatinS}{% + s\string=\glshex 209B,S +} +\newcommand*{\glsxtrLatinT}{% + t\string=\glshex 209C,T +} +\newcommand*{\glsxtrLatinX}{% + x\string=\glshex 2093,X +} +\newcommand*{\glsxtrLatinSchwa}{% + \glshex 0259\string=\glshex 2094,\glshex 018F +} +\newcommand*{\glsxtrLatinEszettSs}{% + \glshex 00DF% eszett + \string=\glshex 017Fs % long S s +} +\newcommand*{\glsxtrLatinEszettSz}{% + \glshex 00DF% eszett + \string= \glshex 017Fz % long S z +} +\newcommand*{\glsxtrLatinEth}{% + \glshex 00F0,\glshex 00D0% eth +} +\newcommand*{\glsxtrLatinThorn}{% + \glshex 00FE,\glshex 00DE% thorn +} +\newcommand*{\glsxtrLatinAELigature}{% + \glshex 00E6,\glshex 00C6% AE-ligature +} +\newcommand*{\glsxtrLatinOELigature}{% + \glshex 0153,\glshex 0152% OE-ligature +} +\newcommand*{\glsxtrLatinAA}{% + \glshex 00E5=a\glshex 030A,% \aa + \glshex 00C5=A\glshex 030A% \AA +} +\newcommand*{\glsxtrLatinWynn}{% + \glshex 01BF,\glshex 01F7% wynn +} +\newcommand*{\glsxtrLatinInsularG}{% + \glshex 1D79,\glshex A77D% insular G + \string; g, G +} +\newcommand*{\glsxtrLatinOslash}{% + \glshex 00F8,\glshex 00D8% \o, \O +} +\newcommand*{\glsxtrLatinLslash}{% + \glshex 0142,\glshex 0141% \l, \L +} +\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 +} +\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 +} +\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 +} +\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 +} +\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) +} +\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) +} +\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) +} +\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) +} +\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 +} +\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 +} +\newcommand*{\glsxtrUpAlpha}{% + \glshex 03B1,% lower case alpha + \glshex 0391% upper case alpha +} +\newcommand*{\glsxtrUpBeta}{% + \glshex 03B2,% lower case beta + \glshex 0392% upper case beta +} +\newcommand*{\glsxtrUpGamma}{% + \glshex 03B3,% lower case gamma + \glshex 0393% upper case gamma +} +\newcommand*{\glsxtrUpDelta}{% + \glshex 03B4,% lower case delta + \glshex 0394% upper case delta +} +\newcommand*{\glsxtrUpEpsilon}{% + \glshex 03B5% lower case epsilon + \string=\glshex 03F5,% lower case epsilon variant + \glshex 0395% upper case epsilon +} +\newcommand*{\glsxtrUpDigamma}{% + \glshex 03DD,% lower case digamma + \glshex 03DC% upper case digamma +} +\newcommand*{\glsxtrUpZeta}{% + \glshex 03B6,% lower case zeta + \glshex 0396% upper case zeta +} +\newcommand*{\glsxtrUpEta}{% + \glshex 03B7,% lower case eta + \glshex 0397% upper case eta +} +\newcommand*{\glsxtrUpTheta}{% + \glshex 03B8% lower case theta + \string=\glshex 03D1,% lower case theta variant + \glshex 0398% upper case theta +} +\newcommand*{\glsxtrUpIota}{% + \glshex 03B9,% lower case iota + \glshex 0399% upper case iota +} +\newcommand*{\glsxtrUpKappa}{% + \glshex 03BA% lower case kappa + \string=\glshex 03F0,% lower case kappa variant + \glshex 039A% upper case kappa +} +\newcommand*{\glsxtrUpLambda}{% + \glshex 03BB,% lower lambda + \glshex 039B% upper case lambda +} +\newcommand*{\glsxtrUpMu}{% + \glshex 03BC,% lower case mu + \glshex 039C% upper case mu +} +\newcommand*{\glsxtrUpNu}{% + \glshex 03BD,% lower case nu + \glshex 039D% upper case nu +} +\newcommand*{\glsxtrUpXi}{% + \glshex 03BE,% lower case xi + \glshex 039E% upper case xi +} +\newcommand*{\glsxtrUpOmicron}{% + \glshex 03BF,% lower case omicron + \glshex 039F% upper case omicron +} +\newcommand*{\glsxtrUpPi}{% + \glshex 03C0% lower case pi + \string=\glshex 03D6,% lower case pi variant + \glshex 03A0% upper case pi +} +\newcommand*{\glsxtrUpRho}{% + \glshex 03C1% lower case rho + \string=\glshex 03F1,% lower case rho variant + \glshex 03A1% upper case rho +} +\newcommand*{\glsxtrUpSigma}{% + \glshex 03C2% lower case sigma + \string=\glshex 03C3,% lower case sigma + \glshex 03A3% upper case sigma +} +\newcommand*{\glsxtrUpTau}{% + \glshex 03C4,% lower case tau + \glshex 03A4% upper case tau +} +\newcommand*{\glsxtrUpUpsilon}{% + \glshex 03C5,% lower case upsilon + \glshex 03A5% upper case upsilon +} +\newcommand*{\glsxtrUpPhi}{% + \glshex 03C6% lower case phi + \string=\glshex 03D5,% lower case phi variant + \glshex 03A6% upper case phi +} +\newcommand*{\glsxtrUpChi}{% + \glshex 03C7,% lower case chi + \glshex 03A7% upper case chi +} +\newcommand*{\glsxtrUpPsi}{% + \glshex 03C8,% lower case psi + \glshex 03A8% upper case psi +} +\newcommand*{\glsxtrUpOmega}{% + \glshex 03C9,% lower case omega + \glshex 03A9% upper case omega +} +\newcommand*{\glsxtrMathItalicAlpha}{% + \glshex 1D6FC,% lower case alpha (maths italic) + \glshex 1D6E2% upper case alpha (maths italic) +} +\newcommand*{\glsxtrMathItalicBeta}{% + \glshex 1D6FD,% lower case beta (maths italic) + \glshex 1D6E3% upper case beta (maths italic) +} +\newcommand*{\glsxtrMathItalicGamma}{% + \glshex 1D6FE,% lower case gamma (maths italic) + \glshex 1D6E4% upper case gamma (maths italic) +} +\newcommand*{\glsxtrMathItalicDelta}{% + \glshex 1D6FF,% lower case delta (maths italic) + \glshex 1D6E5% upper case delta (maths italic) +} +\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) +} +\newcommand*{\glsxtrMathItalicZeta}{% + \glshex 1D701,% lower case zeta (maths italic) + \glshex 1D6E7% upper case zeta (maths italic) +} +\newcommand*{\glsxtrMathItalicEta}{% + \glshex 1D702,% lower case eta (maths italic) + \glshex 1D6E8% upper case eta (maths italic) +} +\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) +} +\newcommand*{\glsxtrMathItalicIota}{% + \glshex 1D704,% lower case iota (maths italic) + \glshex 1D6EA% upper case iota (maths italic) +} +\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) +} +\newcommand*{\glsxtrMathItalicLambda}{% + \glshex 1D706,% lower case lambda (maths italic) + \glshex 1D6EC% upper case lambda (maths italic) +} +\newcommand*{\glsxtrMathItalicMu}{% + \glshex 1D707,% lower case mu (maths italic) + \glshex 1D6ED% upper case mu (maths italic) +} +\newcommand*{\glsxtrMathItalicNu}{% + \glshex 1D708,% lower case nu (maths italic) + \glshex 1D6EE% upper case nu (maths italic) +} +\newcommand*{\glsxtrMathItalicXi}{% + \glshex 1D709,% lower case xi (maths italic) + \glshex 1D6EF% upper case xi (maths italic) +} +\newcommand*{\glsxtrMathItalicOmicron}{% + \glshex 1D70A,% lower case omicron (maths italic) + \glshex 1D6F0% upper case omicron (maths italic) +} +\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) +} +\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) +} +\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) +} +\newcommand*{\glsxtrMathItalicTau}{% + \glshex 1D70F,% lower case tau (maths italic) + \glshex 1D6F5% upper case tau (maths italic) +} +\newcommand*{\glsxtrMathItalicUpsilon}{% + \glshex 1D710,% lower case upsilon (maths italic) + \glshex 1D6F6% upper case upsilon (maths italic) +} +\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) +} +\newcommand*{\glsxtrMathItalicChi}{% + \glshex 1D712,% lower case chi (maths italic) + \glshex 1D6F8% upper case chi (maths italic) +} +\newcommand*{\glsxtrMathItalicPsi}{% + \glshex 1D713,% lower case psi (maths italic) + \glshex 1D6F9% upper case psi (maths italic) +} +\newcommand*{\glsxtrMathItalicOmega}{% + \glshex 1D714,% lower case omega (maths italic) + \glshex 1D6FA% upper case omega (maths italic) +} +\newcommand*{\glsxtrMathItalicPartial}{% + \glshex 1D715% partial differential (maths italic) +} +\newcommand*{\glsxtrMathItalicNabla}{% + \glshex 1D6FB% nabla (maths italic) +} +\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 +} +\newcommand*{\glsxtrBasicDigitrules}{% + 0\string<1\string<2\string<3\string<4% + \string<5\string<6\string<7\string<8\string<9% +} +\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 +} +\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 +} +\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) +} +\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 + }% + {}% +} +\ifdef\glsxtr@loaddialect +{% + \@ifpackageloaded{tracklang} + {% + \AnyTrackedLanguages + {% + \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}% + }% + {}% + } + {} +} +{} +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra-bib2gls-2021-11-22.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossaries-extra-stylemods-2021-11-22.sty> +% \end{macrocode} +%\fi +%\subsection{Rollback v1.48 (glossaries-extra-stylemods-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossaries-extra-stylemods}[2021/11/22 v1.48 (NLCT)] +\newcommand*{\@glsxtr@loadstyles}{} +\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}[=v1.48]% + \RequirePackage{glossary-longextra}[=v1.48]% + \RequirePackage{glossary-topic}[=v1.48]% + } +} +\DeclareOption*{% + \IfFileExists{glossary-\CurrentOption.sty} + {\eappto\@glsxtr@loadstyles{% + \noexpand\RequirePackage{glossary-\CurrentOption}}% + }% + {% + \PackageError{glossaries-extra-styles}% + {Unknown option `\CurrentOption'}{}% + }% +} +\ProcessOptions +\@glsxtr@loadstyles +\providecommand*{\glsxtrprelocation}{\space} +\providecommand{\renewglossarystyle}[2]{% + \ifcsundef{@glsstyle@#1}% + {% + \PackageError{glossaries-extra}{Glossary style `#1' isn't already defined}{}% + }% + {% + \csdef{@glsstyle@#1}{#2}% + }% +} +\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}% + } +} +{% +} +\ifdef{\@glsstyle@list} +{% + \newcommand{\glslistprelocation}{\glsxtrprelocation} + \newcommand{\glslistchildprelocation}{\glslistprelocation} + \newcommand{\glslistchildpostlocation}{.} + \newcommand{\glslistdesc}[1]{\glossentrydesc{#1}\glspostdescription} + \newcommand{\glslistgroupskip}{\nobreak\indexspace\nobreak} + \newcommand{\glslistitem}[1]{% + \item[\glsentryitem{#1}% + \glstarget{#1}{\glossentryname{#1}}]% + } + \providecommand{\glslistinit}{% + \ifdef\GetTitleStringDisableCommands + {% + \GetTitleStringSetup{expand}% + \GetTitleStringDisableCommands{% + \let\glsentryitem\@gobble + \let\glstarget\@secondoftwo + \let\glossentryname\glslistexpandedname + \let\glslistgroupheaderfmt\@firstofone + \let\glsgetgrouptitle\@firstofone + \let\glsnavhypertarget\@secondoftwo + \let\glsnavigation\relax + }% + }% + {}% + } + \providecommand{\glslistexpandedname}[1]{% + \ifcsname glo@\glsdetoklabel{#1}@name\endcsname + \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\expandafter\endcsname + \fi + } + \renewglossarystyle{list}{% + \renewenvironment{theglossary}% + {\glslistinit\begin{description}}{\end{description}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossentry}[2]{% + \glslistitem{##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}% + } +} +{} +\ifdef{\@glsstyle@altlist} +{% + \newcommand{\glsaltlistitem}[1]{% + \glslistitem{#1}% + \mbox{}\par\nobreak\@afterheading + } + \renewglossarystyle{altlist}{% + \setglossarystyle{list}% + \renewcommand*{\glossentry}[2]{% + \glsaltlistitem{##1}% + \glslistdesc{##1}\glslistprelocation ##2}% + \renewcommand{\subglossentry}[3]{% + \par + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glslistdesc{##2}% + \glslistchildprelocation ##3}% + } +} +{} +\ifdef{\@glsstyle@listgroup} +{% + \newcommand{\glslistgroupheaderitem}[2]{\item[{#2}]} + \newcommand{\glslistgroupafterheader}{% + \mbox{}\par\nobreak\@afterheading + } + \renewglossarystyle{listgroup}{% + \setglossarystyle{list}% + \renewcommand*{\glsgroupheading}[1]{% + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}% + \glslistgroupafterheader + }% + } +} +{} +\ifdef{\@glsstyle@listhypergroup} +{% + \renewglossarystyle{listhypergroup}{% + \setglossarystyle{list}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}% + \glslistgroupafterheader + }% + } +} +{} +\ifdef{\@glsstyle@altlistgroup} +{% + \renewglossarystyle{altlistgroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glsgroupheading}[1]{% + \glslistgroupheaderitem{##1}% + {\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}% + \glslistgroupafterheader + }% + } +} +{} +\ifdef{\@glsstyle@altlisthypergroup} +{% + \renewglossarystyle{altlisthypergroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}% + \glslistgroupafterheader + }% + } +} +{} +\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 + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +\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 + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +\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 + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +\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 + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi + } +} +{} +\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 + }% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi + } +} +{} +\ifdef{\@glsstyle@inline} +{% + \renewcommand*{\glspostinline}{.\spacefactor\sfcode`\.} + \renewcommand*{\glsinlinedescformat}[3]{% + \space#1\glsxtrpostdescription} + \renewcommand*{\glsinlinesubdescformat}[3]{% + #1\glsxtrpostdescription} +} +{} +\ifdef\glstreenamefmt +{ + \newcommand{\glstreedefaultnamefmt}[1]{\textbf{#1}} + \renewcommand{\glstreenamefmt}[1]{\glstreedefaultnamefmt{#1}} + \def\glstreegroupheaderfmt#1{\glstreedefaultnamefmt{#1}} + \def\glstreenavigationfmt#1{\glstreedefaultnamefmt{#1}} + \newcommand{\glstreePreHeader}[2]{} +} +{} +\ifdef{\@glsstyle@index} +{ + \newcommand*{\glstreeprelocation}{\glsxtrprelocation} + \newcommand*{\glstreechildprelocation}{\glstreeprelocation} + \newcommand{\glstreegroupskip}{\indexspace} + \newcommand{\glstreegroupheaderskip}{\nopagebreak\glstreegroupskip\nobreak} + \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}% + } +} +{} +\ifdef{\@glsstyle@indexgroup} +{% + \renewglossarystyle{indexgroup}{% + \setglossarystyle{index}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@indexhypergroup} +{% + \renewglossarystyle{indexhypergroup}{% + \setglossarystyle{index}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading}% + }% +} +{} +\ifdef{\@glsstyle@tree} +{% +\newcommand{\glsxtrtreepredesc}{\glstreepredesc} +\newcommand{\glsxtrtreechildpredesc}{\glstreechildpredesc} + \newcommand{\glstreedesc}[1]{% + \glsxtrtreepredesc\glossentrydesc{#1}\glspostdescription + } + \newcommand{\glstreeDescLoc}[2]{% + \ifglshasdesc{#1}% + {\glstreedesc{#1}\glstreeprelocation}% + {\ifglshassymbol{#1}{\glstreeprelocation}{\glstreeNoDescSymbolPreLocation}}% + #2% + } + \newcommand{\glstreeNoDescSymbolPreLocation}{\space} + \newcommand{\glstreesymbol}[1]{% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% + }% + \newcommand{\glstreechilddesc}[1]{% + \glsxtrtreechildpredesc\glossentrydesc{#1}\glspostdescription + }% + \newcommand{\glstreeChildDescLoc}[2]{% + \ifglshasdesc{#1}% + {\glstreechilddesc{#1}\glstreechildprelocation}% + {\ifglshassymbol{#1}{\glstreechildprelocation}% + {\glstreeNoDescSymbolPreLocation}% + }% + #2% + }% + \newcommand{\glstreechildsymbol}[1]{% + \glstreesymbol{#1}% + }% + \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}% + }% +} +{} +\ifdef{\@glsstyle@treegroup} +{% + \renewglossarystyle{treegroup}{% + \setglossarystyle{tree}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading}% + } +} +{} +\ifdef{\@glsstyle@treehypergroup} +{% + \renewglossarystyle{treehypergroup}{% + \setglossarystyle{tree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading}% + } +} +{} +\ifdef{\@glsstyle@treenoname} +{% + \newcommand{\glstreenonamedesc}[1]{% + \glstreepredesc\glossentrydesc{#1}\glspostdescription + }% + \newcommand{\glstreenonamesymbol}[1]{% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% + }% + \newcommand{\glstreenonameDescLoc}[2]{% + \glstreenonamedesc{#1}\glstreeprelocation#2% + } + \newcommand{\glstreenonamechilddesc}[1]{% + \glossentrydesc{#1}\glspostdescription + }% + \newcommand{\glstreenonameChildDescLoc}[2]{% + \glstreenonamechilddesc{#1}\glstreechildprelocation#2% + } + \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}% + \glstreenonameDescLoc{##1}{##2}\par + }% + \renewcommand{\subglossentry}[3]{% + \hangindent##1\glstreeindent\relax + \parindent##1\glstreeindent\relax + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \glstarget{##2}{\strut}% + \glstreenonameChildDescLoc{##2}{##3}\par + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}% + } +} +{} +\ifdef{\@glsstyle@treenonamegroup} +{% + \renewglossarystyle{treenonamegroup}{% + \setglossarystyle{treenoname}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@treenonamehypergroup} +{% + \renewglossarystyle{treenonamehypergroup}{% + \setglossarystyle{treenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip\@afterheading}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading}% + } +} +{} +\ifdef{\@glsstyle@alttree} +{% +\newcommand{\glsalttreepredesc}{} +\newcommand{\glsalttreechildpredesc}{\glsalttreepredesc} + \newcommand{\glsxtralttreeSymbolDescLocation}[2]{% + {% + \let\par\glsxtrAltTreePar + \let\glsxtrtreepredesc\glsalttreepredesc + \let\glsxtrtreechildpredesc\glsalttreechildpredesc + \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}% + \glstreeDescLoc{#1}{#2}\par + }% + } + \newlength\glsxtrAltTreeIndent + \newcommand{\glsxtrAltTreePar}{% + \@@par + \glsxtrAltTreeSetHangIndent + \setlength{\parindent}{\dimexpr\hangindent+\glsxtrAltTreeIndent}% + } + \newcommand{\glsxtralttreeSubSymbolDescLocation}[3]{% + \glsxtralttreeSymbolDescLocation{#2}{#3}% + } + \newlength\glsxtrtreetopindent + \newcommand*{\glsxtralttreeInit}{% + \settowidth{\glsxtrtreetopindent}{\glstreenamefmt{\glsgetwidestname\space}}% + \glsxtrAltTreeIndent=\parindent + } + \newcommand*{\gglssetwidest}[2][0]{% + \csgdef{@glswidestname\romannumeral#1}{#2}% + } + \newcommand*{\eglssetwidest}[2][0]{% + \protected@csedef{@glswidestname\romannumeral#1}{#2}% + } + \newcommand*{\xglssetwidest}[2][0]{% + \protected@csxdef{@glswidestname\romannumeral#1}{#2}% + } + \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 + }% + } + \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 + }% + } + \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 + }% + } + \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 + }% + } + \newcommand*{\glsgetwidestname}{\@glswidestname} + \newcommand*{\glsgetwidestsubname}[1]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {\@glswidestname}% + {\csuse{@glswidestname\romannumeral#1}}% + } + \let\glsFindWidestTopLevelName\glsfindwidesttoplevelname + \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 + }% + }% + {}% + }% + }% + } + \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 + }% + {}% + }% + }% + } + \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 + }% + }% + } + \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}% + {% + \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}% + \ifglshasparent{\@glo@parent}% + {% + \protected@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 + }% + }% + {}% + }% + }% + } + \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}% + {% + \protected@edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}% + \ifglshasparent{\@glo@parent}% + {% + \protected@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 + }% + }% + }% + } + \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 + }% + {}% + }% + }% + } + \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 + }% + }% + } + \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 + }% + {}% + }% + }% + } + \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 + }% + }% + } + \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 + }% + {}% + }% + }% + } + \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 + }% + }% + } + \newcommand*{\glsxtrComputeTreeIndent}[1]{% + \glstreeindent=\glsxtrtreetopindent\relax + } + \newcommand*{\glsxtrComputeTreeSubIndent}[3]{% + \ifcsundef{@glswidestname\romannumeral#1}% + {% + \settowidth{#3}{\glstreenamefmt{\@glswidestname\space}}% + }% + {% + \settowidth{#3}{\glstreenamefmt{% + \csname @glswidestname\romannumeral#1\endcsname\space}}% + }% + } + \newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent} + \newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent} + \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}% + } +}% +{% +} +\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}% + \glstreegroupheaderskip + }% + }% +}% +{% +} +\ifdef{\@glsstyle@alttreehypergroup} +{% + \renewglossarystyle{alttreehypergroup}{% + \setglossarystyle{alttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip + }% + \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}}% + \glstreegroupheaderskip + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolindexgroup} +{% + \renewglossarystyle{mcolindexgroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolindexhypergroup} +{% + \renewglossarystyle{mcolindexhypergroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip\@afterheading + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\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}}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreegroup} +{% + \renewglossarystyle{mcoltreegroup}{% + \setglossarystyle{mcoltree}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreehypergroup} +{% + \renewglossarystyle{mcoltreehypergroup}{% + \setglossarystyle{mcoltree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\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}}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreenonamegroup} +{% + \renewglossarystyle{mcoltreenonamegroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% + \glstreegroupheaderskip\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreenonamehypergroup} +{% + \renewglossarystyle{mcoltreenonamehypergroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip + }% + \renewcommand*{\glsgroupheading}[1]{% + \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% + \glstreePreHeader{##1}{\glsxtr@grptitle}% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% + \glstreegroupheaderskip\@afterheading}% + } +}% +{% +} +\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}}% + \glstreegroupheaderskip\@afterheading}% + } +}% +{% +} +\ifdef{\@glsstyle@mcolalttree} +{% + \renewglossarystyle{mcolalttree}{% + \setglossarystyle{alttree}% + \renewenvironment{theglossary}% + {% + \glsxtralttreeInit + \def\@gls@prevlevel{-1}% + \begin{multicols}{\glsmcols}% + }% + {\par\end{multicols}}% + } +}% +{% +} +\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}% + \glstreegroupheaderskip + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolalttreehypergroup} +{% + \renewglossarystyle{mcolalttreehypergroup}{% + \setglossarystyle{mcolalttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}% + \glstreegroupheaderskip + }% + \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}}% + \glstreegroupheaderskip + }% + } +}% +{% +} +\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}}% + \glstreegroupheaderskip + }% + } +}% +{% +} +\ifx\@glossary@default@style\relax +\else + \setglossarystyle{\@glsxtr@current@style} +\fi +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossaries-extra-stylemods-2021-11-22.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-bookindex-2021-11-22.sty> +% \end{macrocode} +%\fi +%\subsection{Rollback v1.48 (glossary-bookindex-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-bookindex}[2021/11/22 v1.48 (NLCT)] +\RequirePackage{multicol} +\RequirePackage{glossary-tree} +\newcommand{\glsxtrbookindexcols}{2} +\newcommand*{\glsxtrbookindexname}[1]{\glossentryname{#1}} +\newcommand*{\glsxtrbookindexsubname}[1]{\glsxtrbookindexname{#1}} +\providecommand*{\glsxtrprelocation}{\space} + +\newcommand*{\glsxtrbookindexprelocation}[1]{% + \glsxtrifhasfield{location}{#1}% + {,\glsxtrprelocation}% + {\glsxtrprelocation}% +} +\newcommand*{\glsxtrbookindexsubprelocation}[1]{% + \glsxtrbookindexprelocation{#1}% +} +\newcommand*{\glsxtrbookindexlocation}[2]{#2} +\newcommand*{\glsxtrbookindexsublocation}{\glsxtrbookindexlocation} +\newcommand{\glsxtrbookindexparentchildsep}{\nopagebreak} +\newcommand{\glsxtrbookindexparentsubchildsep}{\glsxtrbookindexparentchildsep} +\newcommand{\glsxtrbookindexbetween}[2]{} +\newcommand{\glsxtrbookindexsubbetween}[2]{} +\newcommand{\glsxtrbookindexsubsubbetween}[2]{} +\newcommand{\glsxtrbookindexatendgroup}[1]{} +\newcommand{\glsxtrbookindexsubatendgroup}[1]{} +\newcommand{\glsxtrbookindexsubsubatendgroup}[1]{} +\newcommand{\glsxtrbookindexgroupskip}{\ifglsnogroupskip\else\indexspace\fi} +\newcommand*{\glsxtrbookindexformatheader}[1]{% + \par{\centering\glstreegroupheaderfmt{#1}\par}% +} +\ifdef\pdfbookmark +{% + \newcommand*{\glsxtrbookindexbookmark}[2]{% + \ifdefstring{\@@glossarysec}{chapter}% + {\pdfbookmark[1]{#1}{#2}}% + {\pdfbookmark[2]{#1}{#2}}% + } +} +{% + \newcommand*{\glsxtrbookindexbookmark}[2]{} +} +\newcommand*{\glsxtrbookindexbookmarkprefix}{\currentglossary.} +\newcommand*{\glsxtrbookindexcolspread}{} +\newcommand*{\glsxtrbookindexmulticolsenv}{multicols} +\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 + }% + {% + \@glsxtr@bookindex@subsubatendgroup + \@glsxtr@bookindex@subatendgroup + \@glsxtr@bookindex@atendgroup + \ifnum\glsxtrbookindexcols>1\relax + \edef\glsxtr@endbookindex{% + \noexpand\end{\glsxtrbookindexmulticolsenv}% + }% + \else + \def\glsxtr@endbookindex{}% + \fi + \glsxtr@endbookindex + }% + \renewcommand*{\glossaryheader}{\raggedright}% + \renewcommand*{\glossentry}[2]{% + \@glsxtr@bookindex@between{##1}% + \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 + \glstreeitem + \glsentryitem{##1}% + \glstarget{##1}{\glsxtrbookindexname{##1}}% + \glsxtrbookindexprelocation{##1}% + \glsxtrbookindexlocation{##1}{##2}% + }% + \renewcommand{\subglossentry}[3]{% + \ifcase##1\relax + \glstreeitem + \or + \@glsxtr@bookindex@sep + \@glsxtr@bookindex@subbetween{##2}% + \let\@glsxtr@bookindex@sep\relax + \let\@glsxtr@bookindex@subsubbetween\@gobble + \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep + \edef\@glsxtr@bookindex@subbetween{% + \noexpand\glsxtrbookindexsubbetween{##2}% + }% + \edef\@glsxtr@bookindex@atsubendgroup{% + \noexpand\glsxtrbookindexatsubendgroup{##1}% + }% + \glstreesubitem + \glssubentryitem{##2}% + \else + \@glsxtr@bookindex@subsep + \@glsxtr@bookindex@subsubbetween{##2}% + \let\@glsxtr@bookindex@subsep\relax + \edef\@glsxtr@bookindex@subsubbetween{% + \noexpand\glsxtrbookindexsubsubbetween{##2}% + }% + \edef\@glsxtr@bookindex@atsubsubendgroup{% + \noexpand\glsxtrbookindexatsubsubendgroup{##1}% + }% + \glstreesubsubitem + \fi + \glstarget{##2}{\glsxtrbookindexsubname{##2}}% + \glsxtrbookindexsubprelocation{##2}% + \glsxtrbookindexsublocation{##2}{##3}% + }% + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glsgroupheading}[1]{% + \@glsxtr@bookindex@subsubatendgroup + \@glsxtr@bookindex@subatendgroup + \@glsxtr@bookindex@atendgroup + \@glsxtr@bookindexgroupskip + \let\@glsxtr@bookindexgroupskip\glsxtrbookindexgroupskip + \let\@glsxtr@bookindex@between\@gobble + \let\@glsxtr@bookindex@atendgroup\relax + \let\@glsxtr@bookindex@subatendgroup\relax + \let\@glsxtr@bookindex@subsubatendgroup\relax + \glsxtrgetgrouptitle{##1}{\glsxtrcurrentgrptitle}% + \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{\glsxtrbookindexbookmarkprefix##1}% + \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}% + \nopagebreak\indexspace\nopagebreak\@afterheading + }% +} +\newcommand{\glsxtrbookindexthepage}{% + \ifdef\currentglossary{\currentglossary.\arabic{page}}{\arabic{page}}% +} +\newcommand*{\glsxtrbookindexmarkentry}[1]{% + \protected@write\@auxout + {\let\glsxtrbookindexthepage\relax}% + {\string\glsxtr@setbookindexmark{\glsxtrbookindexthepage}{#1}}% +} +\newcommand*{\glsxtr@setbookindexmark}[2]{% + \ifcsundef{glsxtr@idxfirstmark@#1}% + {\csgdef{glsxtr@idxfirstmark@#1}{#2}}% + {}% + \csgdef{glsxtr@idxlastmark@#1}{#2}% +} +\newcommand*{\glsxtrbookindexfirstmarkfmt}[1]{% + \glsentryname{#1}% +} +\newcommand*{\glsxtrbookindexfirstmark}{% + \letcs{\glsxtr@label}{glsxtr@idxfirstmark@\glsxtrbookindexthepage}% + \ifdef\glsxtr@label + {\glsxtrbookindexfirstmarkfmt{\glsxtr@label}}% + {}% +} +\newcommand*{\glsxtrbookindexlastmarkfmt}[1]{% + \glsentryname{#1}% +} +\newcommand*{\glsxtrbookindexlastmark}{% + \letcs{\glsxtr@label}{glsxtr@idxlastmark@\glsxtrbookindexthepage}% + \ifdef\glsxtr@label + {\glsxtrbookindexlastmarkfmt{\glsxtr@label}}% + {}% +} +% \end{macrocode} +%\iffalse +% \begin{macrocode} +%</glossary-bookindex-2021-11-22.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-longextra-2021-11-22.sty> +% \end{macrocode} +%\fi +%\subsection{Rollback v1.48 (glossary-longextra-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-longextra}[2021/11/22 v1.48 (NLCT)] +\RequirePackage{glossary-longbooktabs} +\newcommand{\glslongextraNameFmt}[1]{% + \glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}% +} +\newcommand{\glslongextraDescFmt}[1]{% + \glossentrydesc{#1}\glspostdescription +} +\newcommand{\glslongextraSymbolFmt}[1]{\glossentrysymbol{#1}} +\newcommand{\glslongextraLocationFmt}[2]{#2} +\newcommand{\glslongextraSubNameFmt}[2]{% + \glssubentryitem{#2}\glstarget{#2}{\strut}% +} +\newcommand{\glslongextraSubDescFmt}[2]{% + \glslongextraDescFmt{#2}% +} +\newcommand{\glslongextraSubSymbolFmt}[2]{% + \glslongextraSymbolFmt{#2}% +} +\newcommand{\glslongextraSubLocationFmt}[3]{#3} +\newcommand{\glslongextraNameAlign}{l} +\newcommand{\glslongextraDescAlign}{>{\raggedright}p{\glsdescwidth}} +\newcommand{\glslongextraSymbolAlign}{c} +\newcommand{\glslongextraLocationAlign}{>{\raggedright}p{\glspagelistwidth}} +\newcommand{\glslongextraGroupHeading}[2]{} +\newcommand{\glslongextraHeaderFmt}[1]{\textbf{#1}} +\newcommand{\glslongextraNameDescHeader}{% + \glslongextraNameDescTabularHeader\endhead + \glslongextraNameDescTabularFooter\endfoot +} +\newcommand{\glslongextraNameDescTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameDescTabularFooter}{% + \bottomrule +} +\newcommand*{\glslongextraSetWidest}[1]{% + \def\@glslongextrawidestname{#1}% +} +\newcommand*{\@glslongextrawidestname}{\csuse{@glswidestname}} +\newcommand*{\glslongextraUpdateWidest}[1]{% + \ifundef\@glslongextrawidestname + {\def\@glslongextrawidestname{#1}}% + {% + \settowidth{\dimen@}{\@glslongextrawidestname}% + \settowidth{\dimen@ii}{#1}% + \ifdim\dimen@ii>\dimen@ + \def\@glslongextrawidestname{#1}% + \fi + }% +} +\newcommand*{\glslongextraUpdateWidestChild}[2]{} +\newcommand{\glslongextraSetDescWidth}{% + \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\entryname}% + \settowidth{\dimen@}{\glsnamefont{\@glslongextrawidestname}}% + \ifdim\dimen@>\gls@tmplen + \gls@tmplen=\dimen@ + \fi + \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}% +} +\newcommand{\glslongextraSymSetDescWidth}{% + \glslongextraSetDescWidth + \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\symbolname}% + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\gls@tmplen}% +} +\newcommand{\glslongextraLocSetDescWidth}{% + \glslongextraSetDescWidth + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}% +} +\newcommand{\glslongextraSymLocSetDescWidth}{% + \glslongextraSymSetDescWidth + \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}% +} +\newif\ifGlsLongExtraUseTabular +\GlsLongExtraUseTabularfalse +\newcommand*{\glslongextraTabularVAlign}{c} +\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 +} +\newcommand{\glslongextraNameDescLocationHeader}{% + \glslongextraNameDescLocationTabularHeader\endhead + \glslongextraNameDescLocationTabularFooter\endfoot +} +\newcommand{\glslongextraNameDescLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameDescLocationTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraDescNameHeader}{% + \glslongextraDescNameTabularHeader\endhead + \glslongextraDescNameTabularFooter\endfoot +} +\newcommand{\glslongextraDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\descriptionname& + \glslongextraHeaderFmt\entryname \tabularnewline + \midrule +} +\newcommand{\glslongextraDescNameTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraLocationDescNameHeader}{% + \glslongextraLocationDescNameTabularHeader\endhead + \glslongextraLocationDescNameTabularFooter\endfoot +} +\newcommand{\glslongextraLocationDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname& + \glslongextraHeaderFmt\descriptionname& + \glslongextraHeaderFmt\entryname \tabularnewline + \midrule +} +\newcommand{\glslongextraLocationDescNameTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraNameDescSymHeader}{% + \glslongextraNameDescSymTabularHeader\endhead + \glslongextraNameDescSymTabularFooter\endfoot +} +\newcommand{\glslongextraNameDescSymTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameDescSymTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraNameDescSymLocationHeader}{% + \glslongextraNameDescSymLocationTabularHeader\endhead + \glslongextraNameDescSymLocationTabularFooter\endfoot +} +\newcommand{\glslongextraNameDescSymLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameDescSymLocationTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraNameSymDescHeader}{% + \glslongextraNameSymDescTabularHeader\endhead + \glslongextraNameSymDescTabularFooter\endfoot +} +\newcommand{\glslongextraNameSymDescTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameSymDescTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraNameSymDescLocationHeader}{% + \glslongextraNameSymDescLocationTabularHeader\endhead + \glslongextraNameSymDescLocationTabularFooter\endfoot +} +\newcommand{\glslongextraNameSymDescLocationTabularHeader}{% + \toprule + \glslongextraHeaderFmt\entryname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\pagelistname\tabularnewline + \midrule +} +\newcommand{\glslongextraNameSymDescLocationTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraSymDescNameHeader}{% + \glslongextraSymDescNameTabularHeader\endhead + \glslongextraSymDescNameTabularFooter\endfoot +} +\newcommand{\glslongextraSymDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +\newcommand{\glslongextraSymDescNameTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraLocationSymDescNameHeader}{% + \glslongextraLocationSymDescNameTabularHeader\endhead + \glslongextraLocationSymDescNameTabularFooter\endfoot +} +\newcommand{\glslongextraLocationSymDescNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +\newcommand{\glslongextraLocationSymDescNameTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraDescSymNameHeader}{% + \glslongextraDescSymNameTabularHeader\endhead + \glslongextraDescSymNameTabularFooter\endfoot +} +\newcommand{\glslongextraDescSymNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +\newcommand{\glslongextraDescSymNameTabularFooter}{% + \bottomrule +} +\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 +} +\newcommand{\glslongextraLocationDescSymNameHeader}{% + \glslongextraLocationDescSymNameTabularHeader\endhead + \glslongextraLocationDescSymNameTabularFooter\endfoot +} +\newcommand{\glslongextraLocationDescSymNameTabularHeader}{% + \toprule + \glslongextraHeaderFmt\pagelistname & + \glslongextraHeaderFmt\descriptionname & + \glslongextraHeaderFmt\symbolname & + \glslongextraHeaderFmt\entryname\tabularnewline + \midrule +} +\newcommand{\glslongextraLocationDescSymNameTabularFooter}{% + \bottomrule +} +\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} +%\iffalse +% \begin{macrocode} +%</glossary-longextra-2021-11-22.sty> +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*glossary-topic-2021-11-22.sty> +% \end{macrocode} +%\fi +%\subsection{Rollback v1.48 (glossary-topic-2021-11-22.sty)} +% Version 1.48 preserved for rollback. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-topic}[2021/11/22 v1.48 (NLCT)] +\RequirePackage{multicol} +\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}% + \ifglshasdesc{##1}% + {% + \def\glstopic@prechildren{}% + }% + {% + \def\glstopic@prechildren{\nopagebreak}% + }% + }% + \renewcommand{\subglossentry}[3]{% + \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi + \def\glstopic@prevlevel{##1}% + \begingroup + \glstopicAssignSubIndent{##1}% + \glstopicSubItem{##1}{##2}{##3}% + \par + \endgroup + }% + \renewcommand*{\glsgroupskip}{}% +} +\newcommand*{\glstopicGroupHeading}[1]{} +\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}% +} +\newcommand*{\glstopicMarker}[1]{} +\newcommand*{\glstopicTitle}[1]{\Glossentryname{#1}% + \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% +} +\newcommand*{\glstopicTitleFont}[1]{\textbf{\large #1}} +\newcommand*{\glstopicDesc}[1]{\Glossentrydesc{#1}\glspostdescription} +\newcommand*{\glstopicLoc}[2]{} +\newlength\glstopicParIndent +\setlength\glstopicParIndent{20pt} +\newlength\glstopicSubIndent +\setlength\glstopicSubIndent{20pt} +\newcommand{\glstopicInit}{} +\newcommand*{\glstopicAssignSubIndent}[1]{% + \par + \parindent\dimexpr#1\glstopicSubIndent-\glstopicSubIndent\relax + \glstopicAssignWidest{#1}% + \glstopicsubitemhangindent=\dimexpr\parindent+\glstopicwidest\relax + \hangindent\glstopicsubitemhangindent\relax + \everypar{\hangindent\glstopicsubitemhangindent\relax + \parindent\dimexpr\glstopicSubItemParIndent+\glstopicsubitemhangindent\relax}% +} +\newlength\glstopicsubitemhangindent +\newlength\glstopicSubItemParIndent +\glstopicSubItemParIndent\parindent +\newlength\glstopicwidest +\newcommand*{\glstopicAssignWidest}[1]{% + \ifcsundef{@glswidestlength\romannumeral#1}% + {% + \ifcsdef{@glswidestname\romannumeral#1}% + {% + \settowidth{\glstopicwidest}{% + \glstopicSubNameFont{\csuse{@glswidestname\romannumeral#1}}% + \glstopicSubItemSep + }% + }% + {\setlength{\glstopicwidest}{0pt}}% + \csedef{@glswidestlength\romannumeral#1}{\the\glstopicwidest}% + }% + {\setlength{\glstopicwidest}{\csuse{@glswidestlength\romannumeral#1}}}% +} +\newcommand*{\glstopicPreSkip}{\medskip} +\newcommand*{\glstopicMidSkip}{\smallskip} +\newcommand*{\glstopicPostSkip}{\smallskip} +\newcommand*{\glstopicSubItem}[3]{% + \glstopicSubItemBox{#1}{\glstopicSubNameFont{\glsentryitem{#2}% + \glstarget{#2}{\glossentryname{#2}}}% + \glstopicSubItemSep + }% + \ifglshassymbol{#2}{(\glossentrysymbol{#2})\space}{}% + \ifglshasdesc{#2}% + {\glossentrydesc{#2}\glspostdescription\glstopicSubPreLocSep}{}% + \glstopicSubLoc{#2}{#3}% +} +\newcommand*{\glstopicSubItemSep}{\quad} +\newcommand*{\glstopicSubItemBox}[2]{% + \ifdim\glstopicwidest>0pt\relax\makebox[\glstopicwidest][l]{#2}\else#2\fi +} +\newcommand*{\glstopicSubNameFont}[1]{\textbf{#1}} +\newcommand*{\glstopicSubPreLocSep}{\space} +\newcommand*{\glstopicSubLoc}[2]{#2} +\newcommand*{\glstopicCols}{2} +\newcommand*{\glstopicColsEnv}{multicols} +\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 + \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} +%\iffalse +% \begin{macrocode} +%</glossary-topic-2021-11-22.sty> +% \end{macrocode} +%\fi %\Finale \endinput |