From e4d8f7684792e7652b447e6ad94b82ca72886fe3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 3 Nov 2017 21:38:07 +0000 Subject: glossaries-extra (3nov17) git-svn-id: svn://tug.org/texlive/trunk@45682 c570f23f-e606-0410-a88d-b1316a301751 --- .../glossaries-extra/example-glossaries-xr.tex | 2 +- .../glossaries-extra-stylemods.sty | 738 +++++++++- .../latex/glossaries-extra/glossaries-extra.sty | 1413 +++++++++++++++----- .../latex/glossaries-extra/glossary-bookindex.sty | 210 +++ 4 files changed, 2027 insertions(+), 336 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty (limited to 'Master/texmf-dist/tex/latex/glossaries-extra') diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex index d9e3d5b5806..0e041579df0 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex +++ b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. +%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty index a2bd79b1a12..67146a59603 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. +%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -39,17 +39,35 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2017/09/11 v1.20 (NLCT)] +\ProvidesPackage{glossaries-extra-stylemods}[2017/11/03 v1.21 (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}% + } +} \DeclareOption*{% \IfFileExists{glossary-\CurrentOption.sty} {\eappto\@glsxtr@loadstyles{% - \noexpand\RequirePackage{glossary-\CurrentOption}}}% - {\PackageError{glossaries-extra-styles}% - {Unknown option `\CurrentOption'}{}} + \noexpand\RequirePackage{glossary-\CurrentOption}}% + }% + {% + \PackageError{glossaries-extra-styles}% + {Unknown option `\CurrentOption'}{}% + }% } \ProcessOptions \@glsxtr@loadstyles +\providecommand*{\glsxtrprelocation}{\space} \providecommand{\renewglossarystyle}[2]{% \ifcsundef{@glsstyle@#1}% {% @@ -77,6 +95,124 @@ \glossentrydesc{##2}\glspostdescription}% } } +{% +} +\ifdef{\@glsstyle@list} +{% + \newcommand{\glslistprelocation}{\glsxtrprelocation} + \newcommand{\glslistchildprelocation}{\glslistprelocation} + \newcommand{\glslistchildpostlocation}{.} + \renewglossarystyle{list}{% + \renewenvironment{theglossary}% + {\begin{description}}{\end{description}}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossentry}[2]{% + \item[\glsentryitem{##1}% + \glstarget{##1}{\glossentryname{##1}}] + \glossentrydesc{##1}\glspostdescription\glslistprelocation ##2}% + \renewcommand*{\subglossentry}[3]{% + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\space + \glossentrydesc{##2}\glspostdescription + \glslistchildprelocation ##3\glslistchildpostlocation}% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}% + } +} +{} +\ifdef{\@glsstyle@altlist} +{% + \renewglossarystyle{altlist}{% + \setglossarystyle{list}% + \renewcommand*{\glossentry}[2]{% + \item[\glsentryitem{##1}% + \glstarget{##1}{\glossentryname{##1}}]% + \mbox{}\par\nobreak\@afterheading + \glossentrydesc{##1}\glspostdescription\glslistprelocation ##2}% + \renewcommand{\subglossentry}[3]{% + \par + \glssubentryitem{##2}% + \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription + \glslistchildprelocation ##3}% + } +} +{} +\ifdef{\@glsstyle@listgroup} +{% + \renewglossarystyle{listgroup}{% + \setglossarystyle{list}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@listhypergroup} +{% + \renewglossarystyle{listhypergroup}{% + \setglossarystyle{list}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@altlistgroup} +{% + \renewglossarystyle{altlistgroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@altlisthypergroup} +{% + \renewglossarystyle{altlisthypergroup}{% + \setglossarystyle{altlist}% + \renewcommand*{\glossaryheader}{% + \glslistnavigationitem{\glsnavigation}}% + \renewcommand*{\glsgroupheading}[1]{% + \item[\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% + \mbox{}\par\nobreak\@afterheading + }% + } +} +{} +\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} {% @@ -96,8 +232,11 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & &\tabularnewline\fi}% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi } } {} @@ -121,8 +260,39 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & \glossentrysymbol{##2} & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & & &\tabularnewline\fi}% + \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 } } {} @@ -145,8 +315,11 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & &\tabularnewline\fi}% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& &\tabularnewline}% + \fi } } {} @@ -170,8 +343,39 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & \glossentrysymbol{##2} & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & & &\tabularnewline\fi}% + \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 } } {} @@ -194,8 +398,11 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & &\tabularnewline\fi}% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi } } {} @@ -219,8 +426,40 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & \glossentrysymbol{##2} & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{% - \ifglsnogroupskip\else & & &\tabularnewline\fi}% + \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 } } {} @@ -245,8 +484,11 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else & - &\tabularnewline\fi}% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{ & &\tabularnewline}% + \fi } } {} @@ -270,8 +512,11 @@ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription & \glossentrysymbol{##2} & ##3\tabularnewline }% - \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else & & - &\tabularnewline\fi}% + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& & &\tabularnewline}% + \fi } } {} @@ -284,13 +529,194 @@ #1\glsxtrpostdescription} } {} +\ifdef{\@glsstyle@index} +{ + \newcommand*{\glstreeprelocation}{\glsxtrprelocation} + \newcommand*{\glstreechildprelocation}{\glstreeprelocation} + \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}}}% + \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}% + \glstreepredesc \glossentrydesc{##1}\glspostdescription + \glstreeprelocation ##2% + }% + \renewcommand{\subglossentry}[3]{% + \ifcase##1\relax + \item + \or + \subitem + \glssubentryitem{##2}% + \else + \subsubitem + \fi + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}% + \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}% + \glstreechildpredesc\glossentrydesc{##2}\glspostdescription + \glstreechildprelocation ##3% + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}% + } +} +{} +\ifdef{\@glsstyle@indexgroup} +{% + \renewglossarystyle{indexgroup}{% + \setglossarystyle{index}% + \renewcommand*{\glsgroupheading}[1]{% + \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace + \nobreak\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@indexhypergroup} +{% + \renewglossarystyle{indexhypergroup}{% + \setglossarystyle{index}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \nobreak\@afterheading\indexspace}% + \renewcommand*{\glsgroupheading}[1]{% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace + \nobreak\@afterheading}% + }% +} +{} +\ifdef{\@glsstyle@tree} +{% + \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}}}% + \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}% + \glstreepredesc\glossentrydesc{##1}\glspostdescription + \glstreeprelocation##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}}}% + \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}% + \glstreechildpredesc\glossentrydesc{##2}\glspostdescription + \glstreechildprelocation ##3\par + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}% + }% +} +{} +\ifdef{\@glsstyle@treegroup} +{% + \renewglossarystyle{treegroup}{% + \setglossarystyle{tree}% + \renewcommand{\glsgroupheading}[1]{\par + \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par + \nopagebreak\indexspace\nobreak\@afterheading}% + } +} +{} +\ifdef{\@glsstyle@treehypergroup} +{% + \renewglossarystyle{treehypergroup}{% + \setglossarystyle{tree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}\par + \nobreak\@afterheading\indexspace}% + \renewcommand*{\glsgroupheading}[1]{% + \par\noindent + \glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par + \nopagebreak\indexspace\nobreak\@afterheading}% + } +} +{} +\ifdef{\@glsstyle@treenoname} +{% + \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}}}% + \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}% + \glstreepredesc\glossentrydesc{##1}\glspostdescription + \glstreeprelocation##2\par + }% + \renewcommand{\subglossentry}[3]{% + \hangindent##1\glstreeindent\relax + \parindent##1\glstreeindent\relax + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \glstarget{##2}{\strut}% + \glossentrydesc{##2}\glspostdescription\glstreechildprelocation##3\par + }% + \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}% + } +} +{} +\ifdef{\@glsstyle@treenonamegroup} +{% + \renewglossarystyle{treenonamegroup}{% + \setglossarystyle{treenoname}% + \renewcommand{\glsgroupheading}[1]{\par + \noindent\glstreegroupheaderfmt + {\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +} +{} +\ifdef{\@glsstyle@treenonamehypergroup} +{% + \renewglossarystyle{treenonamehypergroup}{% + \setglossarystyle{treenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}\par + \nobreak\@afterheading\indexspace}% + \renewcommand*{\glsgroupheading}[1]{% + \par\noindent + \glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@afterheading}% + } +} +{} \ifdef{\@glsstyle@alttree} {% \newcommand{\glsxtralttreeSymbolDescLocation}[2]{% {% \let\par\glsxtrAltTreePar \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}% - \glossentrydesc{#1}\glspostdescription \space #2\par + \glossentrydesc{#1}\glspostdescription\glstreeprelocation #2\par }% } \newlength\glsxtrAltTreeIndent @@ -307,6 +733,9 @@ \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}% } @@ -643,8 +1072,8 @@ \csname @glswidestname\romannumeral#1\endcsname\space}}% }% } -\newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent} -\newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent} + \newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent} + \newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent} \renewglossarystyle{alttree}{% \renewenvironment{theglossary}% {% @@ -704,6 +1133,267 @@ }% {% } +\ifdef{\@glsstyle@alttreegroup} +{% + \renewglossarystyle{alttreegroup}{% + \setglossarystyle{alttree}% + \renewcommand{\glsgroupheading}[1]{\par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nopagebreak + }% + }% +}% +{% +} +\ifdef{\@glsstyle@alttreehypergroup} +{% + \renewglossarystyle{alttreehypergroup}{% + \setglossarystyle{alttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}\par\indexspace + }% + \renewcommand*{\glsgroupheading}[1]{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par + \nopagebreak\indexspace\nopagebreak + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolindexgroup} +{% + \renewglossarystyle{mcolindexgroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glsgroupheading}[1]{% + \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolindexhypergroup} +{% + \renewglossarystyle{mcolindexhypergroup}{% + \setglossarystyle{mcolindex}% + \renewcommand*{\glossaryheader}{% + \item\glstreenavigationfmt{\glsnavigation}% + \indexspace + }% + \renewcommand*{\glsgroupheading}[1]{% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@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]{% + \item\glstreegroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreegroup} +{% + \renewglossarystyle{mcoltreegroup}{% + \setglossarystyle{mcoltree}% + \renewcommand{\glsgroupheading}[1]{\par + \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreehypergroup} +{% + \renewglossarystyle{mcoltreehypergroup}{% + \setglossarystyle{mcoltree}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace + }% + \renewcommand*{\glsgroupheading}[1]{% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@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]{% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreenonamegroup} +{% + \renewglossarystyle{mcoltreenonamegroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand{\glsgroupheading}[1]{\par + \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nobreak\@afterheading + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcoltreenonamehypergroup} +{% + \renewglossarystyle{mcoltreenonamehypergroup}{% + \setglossarystyle{mcoltreenoname}% + \renewcommand*{\glossaryheader}{% + \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}% + \renewcommand*{\glsgroupheading}[1]{% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@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]{% + \par\noindent + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nobreak\@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]{\par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}% + \nopagebreak\indexspace\nopagebreak + }% + } +}% +{% +} +\ifdef{\@glsstyle@mcolalttreehypergroup} +{% + \renewglossarystyle{mcolalttreehypergroup}{% + \setglossarystyle{mcolalttree}% + \renewcommand*{\glossaryheader}{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreenavigationfmt{\glsnavigation}% + \par\indexspace + }% + \renewcommand*{\glsgroupheading}[1]{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nopagebreak + }% + } +}% +{% +} +\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]{% + \par + \def\@gls@prevlevel{-1}% + \hangindent0pt\relax + \parindent0pt\relax + \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}% + \nopagebreak\indexspace\nopagebreak + }% + } +}% +{% +} \ifx\@glossary@default@style\relax \else \setglossarystyle{\@glsxtr@current@style} diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty index 6cef1c74f7c..22e40c389af 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. +%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2017/09/11 v1.20 (NLCT)] +\ProvidesPackage{glossaries-extra}[2017/11/03 v1.21 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{etoolbox} \@ifpackageloaded{glossaries} @@ -120,23 +120,13 @@ \newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{% \renewcommand*{\@glsxtr@defaultnumberformat}{#1}% }% -\newcommand*{\@@glsxtr@record}[3]{% +\newcommand*{\@glsxtr@do@record@wrglossary}[1]{% \begingroup - \let\@glsnumberformat\@glsxtr@defaultnumberformat - \def\@glsxtr@thevalue{}% - \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% - \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue - \ifcsdef{glo@#2@counter}% - {% - \edef\@gls@counter{\csname glo@#2@counter\endcsname}% - }% - {% - \def\@gls@counter{page}% - }% - \setkeys{#3}{#1}% \ifKV@glslink@noindex \else - \glswriteentry{#2}% + \edef\@gls@label{\glsdetoklabel{#1}}% + \let\glslabel\@gls@label + \glswriteentry{#1}% {% \ifdefempty{\@glsxtr@thevalue}% {% @@ -153,15 +143,61 @@ \let\@@do@@wrglossary\@glsxtr@dorecordnodefer }% \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex - \glsxtr@@do@wrglossary{#2}% + \glsxtr@@do@wrglossary{#1}% \else - \edef\@gls@label{\glsdetoklabel{#2}}% + \@@glsxtrwrglossmark \@@do@@wrglossary \fi }% \fi \endgroup } +\newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{% + \glsxtr@@do@wrglossary{#1}% + \@glsxtr@do@record@wrglossary{#1}% +} +\newcommand*{\@@glsxtr@record}[3]{% + \ifglsentryexists{#2}{}% + {% + \@@glsxtrwrglossmark + \begingroup + \edef\@gls@label{\glsdetoklabel{#2}}% + \let\glslabel\@gls@label + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue + \def\@gls@counter{page}% + \@gls@setdefault@glslink@opts + \setkeys{#3}{#1}% + \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@dorecord{% \global\let\@glsrecordlocref\theglsentrycounter \let\@glsxtr@orgprefix\@glo@counterprefix @@ -206,6 +242,7 @@ \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}}% @@ -213,7 +250,7 @@ \newcommand{\printunsrtglossaryunit}{% \print@noop@unsrtglossaryunit } -\newcommand*{\glsxtr@setup@record}{} +\newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary} \newcommand*{\glsxtr@indexonly@saveentrycounter}{% \ifKV@glslink@noindex \else @@ -257,6 +294,8 @@ } \newcommand*{\@glsxtr@record@setting}{off} \newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex} +\newcommand*{\@glsxtr@record@setting@only}{only} +\newcommand*{\@glsxtr@record@setting@off}{off} \define@choicekey{glossaries-extra.sty}{record}[\val\nr]% {off,only,alsoindex}% [only]% @@ -264,7 +303,7 @@ \let\@glsxtr@record@setting\val \ifcase\nr\relax \def\glsxtr@setup@record{% - \renewcommand*{\@do@seeglossary}{\@glsxtr@org@doseeglossary}% + \renewcommand*{\@do@seeglossary}{\@glsxtr@doseeglossary}% \renewcommand*{\@glsxtr@record}[3]{}% \let\@@do@wrglossary\glsxtr@@do@wrglossary \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter @@ -279,7 +318,7 @@ \@glsxtr@autoseeindexfalse \let\@do@seeglossary\@glsxtr@recordsee \let\@glsxtr@record\@@glsxtr@record - \let\@@do@wrglossary\@gobble + \let\@@do@wrglossary\@glsxtr@do@record@wrglossary \let\@gls@saveentrycounter\relax \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo @@ -292,9 +331,9 @@ }% \or \def\glsxtr@setup@record{% - \renewcommand*{\@do@seeglossary}{\@glsxtr@org@doseeglossary}% + \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}% \let\@glsxtr@record\@@glsxtr@record - \let\@@do@wrglossary\glsxtr@@do@wrglossary + \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \let\glsxtrundefaction\@glsxtr@warn@undefaction \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo @@ -338,8 +377,52 @@ \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}{} @@ -433,7 +516,7 @@ \newcommand*{\@glsxtr@setupshortcuts}{} \newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}% \define@choicekey{glossaries-extra.sty}{shortcuts}[\val\nr]% - {acronyms,acro,abbreviations,abbr,other,all,true,none,false,ac}[true]{% + {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{% \let\@glsxtr@shortcutsval\val \ifcase\nr\relax % acronyms \renewcommand*{\@glsxtr@setupshortcuts}{% @@ -460,24 +543,24 @@ \or % all \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue - \DefineAcronymSynonyms + \GlsXtrDefineAcShortcuts \GlsXtrDefineAbbreviationShortcuts \GlsXtrDefineOtherShortcuts }% \or % true \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue - \DefineAcronymSynonyms + \GlsXtrDefineAcShortcuts \GlsXtrDefineAbbreviationShortcuts \GlsXtrDefineOtherShortcuts }% - \or % none, false - \renewcommand*{\@glsxtr@setupshortcuts}{}% \or % ac \renewcommand*{\@glsxtr@setupshortcuts}{% \glsacrshortcutstrue \GlsXtrDefineAcShortcuts }% + \else % none, false + \renewcommand*{\@glsxtr@setupshortcuts}{}% \fi } \newcommand*{\@glsxtr@doaccsupp}{} @@ -506,23 +589,32 @@ \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}% + \ifstrequal{#1}{all}% + {% + \renewcommand*{\@glsxtr@redefstyles}{% + \PassOptionsToPackage{all}{glossaries-extra-stylemods}% + \RequirePackage{glossaries-extra-stylemods}% }% }% - \appto\@glsxtr@redefstyles{\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}}% + } }% } \newcommand*{\@glsxtr@do@style}{} @@ -532,12 +624,62 @@ \setglossarystyle{#1}% }% } +\newcommand*{\@glsxtrwrglossmark}{} +\newcommand*{\@@glsxtrwrglossmark}{} +\AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}} +\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}} +\define@choicekey{glossaries-extra.sty}{debug}[\val\nr]% + {true,false,showtargets,showwrgloss,all}[true]{% + \ifcase\nr\relax % true + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \or % false + \glsxtr@dooption{debug=false}% + \renewcommand*{\@glsxtrwrglossmark}{}% + \or % showtargets + \glsxtr@dooption{debug=showtargets}% + \or % showwrgloss + \glsxtr@dooption{debug=true}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \or % all + \glsxtr@dooption{debug=showtargets}% + \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \fi + } \DeclareOptionX*{% \expandafter\glsxtr@dooption\expandafter{\CurrentOption}} \ProcessOptionsX \RequirePackage{glossaries} \@glsxtr@doaccsupp +\@glsxtr@defpostpunc +\def\glsshowtarget#1{% + \glsxtrtitleorpdforheading + {% + \ifmmode + \texttt{\small [#1]}% + \else + \ifinner + \texttt{\small [#1]}% + \else + \marginpar{\texttt{\small #1}}% + \fi + \fi + }% + {[#1]}% + {\texttt{\small [#1]}}% +} \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 @@ -573,7 +715,11 @@ \glsxtr@setup@record \@glsxtr@redef@forglsentries } -\let\glsxtr@@do@wrglossary\@@do@wrglossary +\let\glsxtr@org@@do@wrglossary\@@do@wrglossary +\newcommand*{\glsxtr@@do@wrglossary}[1]{% + \@@glsxtrwrglossmark + \glsxtr@org@@do@wrglossary{#1}% +} \let\glsxtr@saveentrycounter\@gls@saveentrycounter \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter \glsxtr@setup@record @@ -699,11 +845,11 @@ } \newcommand{\s@glsxtrifhasfield}[4]{% \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}% - \ifdef\glscurrentfieldvalue + \ifundef\glscurrentfieldvalue + {#4}% {% \ifdefempty\glscurrentfieldvalue{#4}{#3}% }% - {#4}% } \newcommand*{\glsxtrusefield}[2]{% \@gls@entry@field{#1}{#2}% @@ -742,6 +888,13 @@ \glsxtrsetfieldifexists{#1}{#2}% {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}% } +\newrobustcmd*{\GlsXtrIfFieldEqStr}[5]{% + \glsxtrifhasfield{#1}{#2}% + {% + \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}% + }% + {#5}% +} \ifglsentrycounter \newcommand*{\glsxtrpageref}[1]{\pageref{glsentry-\glsdetoklabel{#1}}} \else @@ -1038,6 +1191,9 @@ \newcommand*{\glsxtruseseeformat}[2]{% \glsseeformat[#1]{#2}{}% } +\renewcommand*{\glsseeitemformat}[1]{% + \glsifregular{#1}{\glsaccessname{#1}}{\glsaccesstext{#1}}% +} \newcommand*{\glsxtruseseealso}[1]{% \glsdoifexists{#1}% {% @@ -1068,15 +1224,22 @@ } \appto\@xdylocationclassorder{\space\string"seealso\string"} \newrobustcmd*{\glsxtrindexseealso}[2]{% - \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" + ) + }% }% } } @@ -1198,22 +1361,44 @@ \newcommand*{\glsxtrunusedformat}[1]{\unskip} \let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries \renewcommand{\makenoidxglossaries}{% - \glsxtr@orgmakenoidxglossaries - \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}% + \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off + {% + \glsxtr@orgmakenoidxglossaries + \renewcommand{\@do@seeglossary}[2]{% + \@@glsxtrwrglossmark + \edef\@gls@label{\glsdetoklabel{##1}}% + \protected@write\@auxout{}{% + \string\@gls@reference + {\csname glo@\@gls@label @type\endcsname}% + {\@gls@label}% + {% + \string\glsseeformat##2{}% + }% + }% }% - \else - \@glsxtrdocdeffalse - \fi - \disable@keys{glossaries-extra.sty}{docdef}% + \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 @@ -1600,6 +1785,17 @@ } \define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}} \define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}} +\define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{} +\glsxtr@hyperoutsidetrue +\newcommand*{\glsxtrinithyperoutside}{% + \glsifattribute{\glslabel}{hyperoutside}{false}% + {% + \glsxtr@hyperoutsidefalse + }% + {% + \glsxtr@hyperoutsidetrue + }% +} \def\@gls@link[#1]#2#3{% \leavevmode \edef\glslabel{\glsdetoklabel{#2}}% @@ -1612,6 +1808,7 @@ \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% \glsxtrinitwrgloss + \glsxtrinithyperoutside \@gls@setdefault@glslink@opts \do@glsdisablehyperinlist \do@gls@link@checkfirsthyper @@ -1626,13 +1823,38 @@ \def\theHglsentrycounter{\@glsxtr@theHvalue}% }% \@gls@setsort{\glslabel}% + \glshasattribute{\glslabel}{textformat}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{\glslabel}{textformat}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in textformat attribute + for entry `\glslabel'. Reverting to default \string\glstextformat}% + \let\@glsxtr@textformat\glstextformat + }% + }% + {% + \let\@glsxtr@textformat\glstextformat + }% \ifglsxtrinitwrglossbefore \@do@wrglossary{#2}% \fi \ifKV@glslink@hyper - \@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}% + \ifglsxtr@hyperoutside + \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \else + \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}% + \fi \else - \glsdonohyperlink{\glolinkprefix\glslabel}{\glstextformat{#3}}% + \ifglsxtr@hyperoutside + \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}% + \else + \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}% + \fi \fi \ifglsxtrinitwrglossbefore \else @@ -1643,24 +1865,28 @@ \define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}} \define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}} \renewrobustcmd*{\glsadd}[2][]{% - \@gls@adjustmode - \@glsxtr@record{#1}{#2}{glossadd}% - \glsdoifexists{#2}% + \glsxtrifinmark + {}% {% - \let\@glsnumberformat\@glsxtr@defaultnumberformat - \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% - \def\@glsxtr@thevalue{}% - \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% - \setkeys{glossadd}{#1}% - \ifdefempty{\@glsxtr@thevalue}% - {% - \@gls@saveentrycounter - }% + \@gls@adjustmode + \@glsxtr@record{#1}{#2}{glossadd}% + \glsdoifexists{#2}% {% - \let\theglsentrycounter\@glsxtr@thevalue - \def\theHglsentrycounter{\@glsxtr@theHvalue}% + \let\@glsnumberformat\@glsxtr@defaultnumberformat + \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \setkeys{glossadd}{#1}% + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \@@do@wrglossary{#2}% }% - \@@do@wrglossary{#2}% }% } \newcommand*{\@glsxtr@field@linkdefs}{% @@ -2248,7 +2474,7 @@ \KV@glslink@noindextrue } \newcommand*{\@glsxtrsetaliasnoindex}{% - \ifglshasfield{alias}{\glslabel}% + \glsxtrifhasfield{alias}{\glslabel}% {% \let\glsxtrindexaliased\@glsxtrindexaliased \glsxtrsetaliasnoindex @@ -2332,6 +2558,18 @@ \def\@gls@alt@hyp@opt@char{#1}% \def\@gls@alt@hyp@opt@keys{#2}% } +\let\glsxtr@org@dohyperlink\glsdohyperlink +\ifdef\glsnavhyperlink +{ + \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{% + \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}% + {% + \let\glsdohyperlink\glsxtr@org@dohyperlink + \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% + }% + }% +} +{} \renewcommand*{\glsdohyperlink}[2]{% \glshasattribute{\glslabel}{targeturl}% {% @@ -2381,26 +2619,30 @@ \newcommand{\glsxtrhyperlink}[2]{\hyperlink{#1}{#2}}% } \renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{% - \def\@glo@label{#2}% - {\edef\glslabel{#2}% - \@glslink{\glolinkprefix\glslabel}{#1}}% + \glsdoifexists{#2}% + {% + \def\@glo@label{#2}% + {\edef\glslabel{#2}% + \@glslink{\glolinkprefix\glslabel}{#1}}% + }% } -\ifundef\glsdonohyperlink -{% - \renewcommand{\glsdisablehyper}{% - \KV@glslink@hyperfalse - \let\@glslink\glsdonohyperlink - \let\@glstarget\@secondoftwo - } +\renewcommand{\glsdisablehyper}{% + \KV@glslink@hyperfalse + \def\@glslink{\glsdonohyperlink}% + \let\@glstarget\@secondoftwo +} +\renewcommand{\glsenablehyper}{% + \KV@glslink@hypertrue + \def\@glslink{\glsdohyperlink}% + \def\@glstarget{\glsdohypertarget}% } -{} \def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}} \ifcsundef{hyperlink}% {% - \let\@glslink\glsdonohyperlink + \def\@glslink{\glsdonohyperlink} }% {% - \let\@glslink\glsdohyperlink + \def\@glslink{\glsdohyperlink} } \newcommand*{\glsxtrprotectlinks}{% \KV@glslink@hyperfalse @@ -3296,127 +3538,145 @@ \newcommand*{\@glsxtr@reg@glosslist}{} \let\@glsxtr@org@makeglossaries\makeglossaries \renewcommand*{\makeglossaries}[1][]{% - \ifblank{#1}% - {\@glsxtr@org@makeglossaries}% - {% - \edef\@glsxtr@reg@glosslist{#1}% - \ifundef{\glswrite}{\newwrite\glswrite}{}% - \protected@write\@auxout{}{\string\providecommand - \string\@glsorder[1]{}} - \protected@write\@auxout{}{\string\providecommand - \string\@istfilename[1]{}} - \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% - \protected@write\@auxout{}{\string\@glsorder{\glsorder}} - \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} - \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% - \@for\@glo@type:=#1\do{% - \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% - }% - \renewcommand*\newglossary[4][]{% - \PackageError{glossaries}{New glossaries - must be created before \string\makeglossaries}{You need - to move \string\makeglossaries\space after all your - \string\newglossary\space commands}}% - \let\@makeglossary\relax - \let\makeglossary\relax - \renewcommand\makeglossaries[1][]{}% - \@disable@onlypremakeg - \let\gls@checkseeallowed\relax - \renewcommand*{\@do@seeglossary}[2]{% - \edef\@gls@label{\glsdetoklabel{##1}}% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@org@doseeglossary{##1}{##2}}% - {% - \protected@write\@auxout{}{% - \string\@gls@reference - {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only + \PackageError{glossaries-extra}{\string\makeglossaries\space + not permitted\MessageBreak with record=only package option}% + {You may only use \string\makeglossaries\space with + record=off or record=alsoindex options}% + \else + \ifblank{#1}% + {\@glsxtr@org@makeglossaries}% + {% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space + not permitted\MessageBreak with record=alsoindex package option}% + {You may only use the hybrid \string\makeglossaries[...]\space with + record=off option}% + \else + \edef\@glsxtr@reg@glosslist{#1}% + \ifundef{\glswrite}{\newwrite\glswrite}{}% + \protected@write\@auxout{}{\string\providecommand + \string\@glsorder[1]{}} + \protected@write\@auxout{}{\string\providecommand + \string\@istfilename[1]{}} + \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% + \protected@write\@auxout{}{\string\@glsorder{\glsorder}} + \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} + \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% + \@for\@glo@type:=#1\do{% + \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% + }% + \renewcommand*\newglossary[4][]{% + \PackageError{glossaries}{New glossaries + must be created before \string\makeglossaries}{You need + to move \string\makeglossaries\space after all your + \string\newglossary\space commands}}% + \let\@makeglossary\relax + \let\makeglossary\relax + \renewcommand\makeglossaries[1][]{}% + \@disable@onlypremakeg + \let\gls@checkseeallowed\relax + \renewcommand*{\@do@seeglossary}[2]{% + \glsdoifexists{##1}% + {% + \edef\@gls@label{\glsdetoklabel{##1}}% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@org@doseeglossary{##1}{##2}}% + {% + \@@glsxtrwrglossmark + \protected@write\@auxout{}{% + \string\@gls@reference + {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + }% + }% + }% }% - }% - }% - \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary - \def\@@do@@wrglossary{% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@@do@@wrglossary}% - {\gls@noidxglossary}% - }% - \let\warn@nomakeglossaries\relax - \def\warn@noprintglossary{% - \GlossariesWarningNoLine{No \string\printglossary\space - or \string\printglossaries\space - found.^^J(Remove \string\makeglossaries\space if you don't want - any glossaries.)^^JThis document will not have a glossary}% - }% - \renewcommand{\@gls@noref@warn}[1]{% - \edef\@gls@type{##1}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {% - \GlossariesExtraWarning{Can't use - \string\printnoidxglossary[type={\@gls@type}] - when `\@gls@type' is listed in the optional argument of + \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary + \def\@@do@@wrglossary{% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@@do@@wrglossary}% + {\gls@noidxglossary}% + }% + \let\warn@nomakeglossaries\relax + \def\warn@noprintglossary{% + \GlossariesWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found.^^J(Remove \string\makeglossaries\space if you don't want + any glossaries.)^^JThis document will not have a glossary}% + }% + \renewcommand{\@gls@noref@warn}[1]{% + \edef\@gls@type{##1}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {% + \GlossariesExtraWarning{Can't use + \string\printnoidxglossary[type={\@gls@type}] + when `\@gls@type' is listed in the optional argument of + \string\makeglossaries}% + }% + {% + \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}% - }% - {% - \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}{}% - }% + \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 + }% + \fi } \newcommand{\@glsxtr@orgprintglossary}[2]{% \def\@glo@type{\glsdefaulttype}% @@ -3919,8 +4179,9 @@ \GlsXtrNoGlsWarningTail } \newcommand*{\glsxtrresourcefile}[2][]{% + \disable@keys{glossaries-extra.sty}{record}% \glsxtr@writefields - \protected@write\@auxout{}{\string\glsxtr@resource{#1}{#2}}% + \protected@write\@auxout{\glsxtrresourceinit}{\string\glsxtr@resource{#1}{#2}}% \let\@glsxtr@org@see@noindex\@gls@see@noindex \let\@gls@see@noindex\relax \IfFileExists{#2.glstex}% @@ -4015,6 +4276,30 @@ \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 + \edef\glscurrententrylabel{\glsdetoklabel{#1}}% + \edef\currentglossary{\glsentrytype{\glscurrententrylabel}}% + \ifglshasparent{#1}% + {\glssubentryitem{#1}}% + {\glsentryitem{#1}}% + \glstarget{#1}{\glossentryname{#1}}% + \endgroup + }% + }% + {\glsentryname{#1}}% + {\glsxtrheadname{#1}}% +} \newcommand*{\printunsrtglossary}{% \@ifstar\s@printunsrtglossary\@printunsrtglossary } @@ -4052,14 +4337,39 @@ :\expandafter=\csname glolist@\@glo@type\endcsname\do{% \ifdefempty{\glscurrententrylabel} {}% - {\eappto\@glsxtr@doglossary{% - \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}}% + {% + \let\glsxtr@process\@firstofone + \let\printunsrtglossaryskipentry + \@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% + \glsxtr@process + {% + \ifglshasparent{\glscurrententrylabel}{}% + {% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% + }% + \eappto\@glsxtr@doglossary{% + \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% + }% + }% }% \appto\@glsxtr@doglossary{\end{theglossary}}% + \printunsrtglossarypredoglossary \@glsxtr@doglossary }% \glossarypostamble } +\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]{% \xdef\glscurrententrylabel{#1}% \printunsrtglossaryhandler\glscurrententrylabel @@ -4067,100 +4377,362 @@ \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}}% - {}% +\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}}% + \eappto\@glsxtr@groupheading{% + \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}% + }% + }% + \let\@gls@currentlettergroup\@glo@thislettergrp +} +\newcommand{\@glsxtr@noidx@do}[1]{% + \ifglsentryexists{#1}% + {% + \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% + \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@location}% + \ifglshasparent{#1}% + {% + \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist}% + {% + \subglossentry{\gls@level}{#1}{}% + }% + {% + \subglossentry{\gls@level}{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \subglossentry{\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}% + }% + }% + {% + \ifdefvoid{\@gls@location}% + {% + \ifdefvoid{\@gls@loclist} + {% + \glossentry{#1}{}% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% + }% + }% + }% + {% + \glossentry{#1}% + {% + \glossaryentrynumbers{\@gls@location}% + }% + }% + }% + }% + {}% +} +\newcommand*{\glshex}{\string\u} +\newcommand*{\glsxtrresourceinit}{} +\newcount\@glsxtrnewgls@inner +\newcommand*{\@glsxtrnewgls}[4]{% + \ifdef{#3}% + {% + \PackageError{glossaries-extra}{Command \string#3\space already +defined}{}% + }% + {% + \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]{% + \edef\glslabel{\glsdetoklabel{#2}}% + \let\@gls@link@label\glslabel + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \def\@glsnumberformat{glstriggerrecordformat}% + \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}% + \edef\glstype{\csname glo@\glslabel @type\endcsname}% + \def\@glsxtr@thevalue{}% + \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% + \glsxtrinitwrgloss + \setkeys{glslink}{#1}% + \glslinkpostsetkeys + \ifdefempty{\@glsxtr@thevalue}% + {% + \@gls@saveentrycounter + }% + {% + \let\theglsentrycounter\@glsxtr@thevalue + \def\theHglsentrycounter{\@glsxtr@theHvalue}% + }% + \ifglsxtrinitwrglossbefore + \@do@wrglossary{#2}% + \fi + #3% + \ifglsxtrinitwrglossbefore + \else + \@do@wrglossary{#2}% + \fi + \ifKV@glslink@local + \glslocalunset{#2}% + \else + \glsunset{#2}% + \fi +} +\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}}% }% - \ifcsundef{theH#1}% {% - \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{the#1}.\@gobble}% + \@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}}% }% {% - \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}% + \@Gls@{#1}{#2}[#3]% }% - \renewcommand*{\glossarysection}[2][]{}% - \appto\glossarypostamble{\glspar\medskip\glspar}% +}% +\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl} +\newcommand*{\@rGlspl}[2][]{% + \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}% } -\newcommand{\print@noop@unsrtglossaryunit}[2][]{% - \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space - requires the record=only or record=alsoindex package option}{}% +\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}[]}% } -\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}}% +\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}[]}% } -\newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do} -\newcommand{\@glsxtr@noidx@do}[1]{% - \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}% - \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@location}% - \ifglshasparent{#1}% +\def\@rGLSpl@#1#2[#3]{% + \glsxtrifrecordtrigger{#2}% {% - \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax - \ifdefvoid{\@gls@location}% - {% - \ifdefvoid{\@gls@loclist}% - {% - \subglossentry{\gls@level}{#1}{}% - }% - {% - \subglossentry{\gls@level}{#1}% - {% - \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% - }% - }% - }% - {% - \subglossentry{\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}% - }% + \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}% }% {% - \key@ifundefined{glossentry}{group}% - {% - \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}% - \expandafter\glo@grabfirst\@gls@sort{}{}\@nil - }% - {% - \protected@xdef\@glo@thislettergrp{% - \csuse{glo@\glsdetoklabel{#1}@group}}% - }% - \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}% - {}% - {% - \ifdefempty{\@gls@currentlettergroup}{}{\glsgroupskip}% - \expandafter\glsgroupheading\expandafter - {\@glo@thislettergrp}% - }% - \global\let\@gls@currentlettergroup\@glo@thislettergrp - \ifdefvoid{\@gls@location}% - {% - \ifdefvoid{\@gls@loclist} - {% - \glossentry{#1}{}% - }% - {% - \glossentry{#1}% - {% - \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}% - }% - }% - }% - {% - \glossentry{#1}% - {% - \glossaryentrynumbers{\@gls@location}% - }% - }% + \@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}}% } \@ifpackageloaded{glossaries-accsupp} { @@ -5770,6 +6342,8 @@ {\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 {% @@ -6428,6 +7002,51 @@ {% \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}% +} \newabbreviationstyle{long-desc}% {% \renewcommand*{\CustomAbbreviationFields}{% @@ -6733,16 +7352,16 @@ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstabbrvscfont{\glsaccessshort{##1}% + \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslong{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}% + \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% @@ -6819,6 +7438,37 @@ }% } \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}{% @@ -7289,16 +7939,16 @@ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}% + \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslong{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}% + \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% @@ -7375,6 +8025,37 @@ }% } \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}% {% \renewcommand*{\CustomAbbreviationFields}{% @@ -7994,16 +8675,16 @@ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\Glsxtrinlinefullformat}[2]{% - \protect\glsfirstabbrvemfont{\glsaccessshort{##1}% + \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslong{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}% }% \renewcommand*{\Glsxtrinlinefullplformat}[2]{% - \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}% + \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}% \ifglsxtrinsertinside##2\fi}% \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - \glsxtrparen{\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}}}% + \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}% }% \renewcommand*{\glsxtrfullformat}[2]{% \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% @@ -8080,6 +8761,37 @@ }% } \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}% {% \renewcommand*{\CustomAbbreviationFields}{% @@ -9535,9 +10247,18 @@ {\@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*{\glsxtrifinmark}[2]{#2} \newrobustcmd*{\@glsxtrinmark}{% @@ -9546,12 +10267,22 @@ \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 @@ -9570,10 +10301,13 @@ \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 @@ -9594,10 +10328,13 @@ \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 @@ -9675,6 +10412,36 @@ \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}[]% +} \newcommand*{\glsxtrheadtext}[1]{% \protect\NoCaseChange {% @@ -9964,6 +10731,30 @@ \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*{\glsfmttext}[1]{% \texorpdfstring diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty new file mode 100644 index 00000000000..ccc4bb32f57 --- /dev/null +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty @@ -0,0 +1,210 @@ +%% +%% This is file `glossary-bookindex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% glossaries-extra.dtx (with options: `glossary-bookindex.sty,package') +%% +%% glossaries-extra.dtx +%% Copyright 2017 Nicola Talbot +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Nicola Talbot. +%% +%% This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{glossary-bookindex}[2017/11/03 v1.21 (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}% + {\ifglsnopostdot,\fi\glsxtrprelocation}% + {\glsxtrprelocation}% +} +\newcommand*{\glsxtrbookindexsubprelocation}[1]{% + \glsxtrbookindexprelocation{#1}% +} +\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*{\glsxtrbookindexcolspread}{} +\newglossarystyle{bookindex}{% + \setglossarystyle{index}% + \renewenvironment{theglossary}% + {% + \ifdefempty\glsxtrbookindexcolspread + {\begin{multicols}{\glsxtrbookindexcols}}% + {\begin{multicols}{\glsxtrbookindexcols}[\glsxtrbookindexcolspread]}% + \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 + \end{multicols}% + }% + \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}##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}##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}{\thisgrptitle}% + \glsxtrbookindexbookmark{\thisgrptitle}{index.##1}% + \glsxtrbookindexformatheader{\thisgrptitle}% + \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}}% + {}% +} +\endinput +%% +%% End of file `glossary-bookindex.sty'. -- cgit v1.2.3