summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty')
-rw-r--r--Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty203
1 files changed, 180 insertions, 23 deletions
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 7e0c7fa69b0..1b905fc93a8 100644
--- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
+++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty
@@ -39,7 +39,7 @@
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-extra}[2020/02/28 v1.43 (NLCT)]
+\ProvidesPackage{glossaries-extra}[2020/03/23 v1.44 (NLCT)]
\RequirePackage{xkeyval}
\RequirePackage{etoolbox}
\@ifpackageloaded{glossaries}
@@ -920,6 +920,19 @@
{\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}%
{%
@@ -1622,7 +1635,7 @@
\ifdef\doifglossarynoexistsordo
{%
\renewcommand{\doifglossarynoexistsordo}[3]{%
- \ifglossaryexists{#1}%
+ \ifglossaryexists*{#1}%
{%
\glsxtrundefaction{Glossary type `#1' already exists}{}%
#3%
@@ -1633,7 +1646,7 @@
{%
\glsxtr@warnonexistsordo\doifglossarynoexistsordo
\newcommand{\doifglossarynoexistsordo}[3]{%
- \ifglossaryexists{#1}%
+ \ifglossaryexists*{#1}%
{%
\glsxtrundefaction{Glossary type `#1' already exists}{}%
#3%
@@ -3201,15 +3214,15 @@
\glsxtrifindexing
{%
\ifglsindexonlyfirst
- \ifglsused{#1}
- {\glsxtrdoautoindexname{#1}{dualindex}}%
+ \GlsXtrIfUnusedOrUndefined{#1}
{#2}%
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
\else
\glsifattribute{#1}{indexonlyfirst}{true}%
{%
- \ifglsused{#1}%
- {\glsxtrdoautoindexname{#1}{dualindex}}%
+ \GlsXtrIfUnusedOrUndefined{#1}%
{#2}%
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
}%
{#2}%
\fi
@@ -4499,6 +4512,9 @@
}%
}%
}
+\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{%
@@ -4544,7 +4560,7 @@
\gls@org@glossarysubentryfield{##1}{##2}%
}%
\@gls@preglossaryhook
- #2%
+ \glsxtr@printgloss@checkexists{\@glo@type}{#2}%
\egroup
\global\let\glossaryentrynumbers\@org@glossaryentrynumbers
\global\let\warn@noprintglossary\relax
@@ -4611,6 +4627,20 @@
\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}%
@@ -5002,7 +5032,7 @@
}
\newcommand{\GlsXtrRecordWarning}[1]{%
\texttt{\string\printglossary} doesn't work
- with the \texttt{record=only} package option
+ with the \texttt{record=\@glsxtr@record@setting} package option
use\par\texttt{\string\printunsrtglossary[type=#1]}\par
instead (or change the package option).%
}
@@ -5072,7 +5102,7 @@
}
\newcommand*{\@glsxtr@record@noglossarywarning}[1]{%
\GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak
- with record=only package option\MessageBreak(use
+ with record=\@glsxtr@record@setting\space package option\MessageBreak(use
\string\printunsrtglossary[type=#1])\MessageBreak
instead (or change the package option)}%
\glossarysection[\glossarytoctitle]{\glossarytitle}
@@ -5290,8 +5320,17 @@
\newcommand*{\GlsXtrStandaloneEntryOther}[2]{%
\glstarget{#1}{\glossentrynameother{#1}{#2}}%
}
-\newcommand*{\printunsrtglossary}{%
- \@ifstar\s@printunsrtglossary\@printunsrtglossary
+\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}%
@@ -5334,12 +5373,14 @@
\printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
\glsxtr@process
{%
- \ifglshasparent{\glscurrententrylabel}{}%
- {%
- \@glsxtr@checkgroup\glscurrententrylabel
- \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
- {\@glsxtr@groupheading}%
- }%
+ \ifglsxtr@printgloss@groups
+ \ifglshasparent{\glscurrententrylabel}{}%
+ {%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
+ }%
+ \fi
\eappto\@glsxtr@doglossary{%
\noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}%
}%
@@ -5351,6 +5392,116 @@
}%
\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]{%
+ \xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \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
+ \eappto\@glsxtr@doglossary{%
+ \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}%
+ }%
+ }%
+ }%
+ \printunsrtglossarypredoglossary
+ \@glsxtr@doglossary
+ }%
+}
\newcommand*{\printunsrtglossaryentryprocesshook}[1]{}
\newcommand*{\printunsrtglossaryskipentry}{%
\PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space
@@ -5433,24 +5584,30 @@ can only be used within \string\printunsrtglossaryentryprocesshook}{}%
{%
\global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
\global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}%
- \ifglshasparent{#1}%
+ \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
{%
- \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax
\ifdefvoid{\@gls@location}%
{%
\ifdefvoid{\@gls@loclist}%
{%
- \subglossentry{\gls@level}{#1}{}%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}{}%
}%
{%
- \subglossentry{\gls@level}{#1}%
+ \expandafter\subglossentry\expandafter{\number\gls@level}{#1}%
{%
\glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
}%
}%
}%
{%
- \subglossentry{\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}%
+ \expandafter\subglossentry\expandafter
+ {\number\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}%
}%
}%
{%