From e9af7499b89170ca5c737240b0cdb9563dcf6c5a Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 24 Mar 2020 03:02:47 +0000 Subject: CTAN sync 202003240302 --- macros/latex/contrib/babel-contrib/greek/README | 1 + .../latex/contrib/babel-contrib/greek/README.html | 4 + .../contrib/babel-contrib/greek/babel-greek.dtx | 13 +- .../contrib/babel-contrib/greek/babel-greek.pdf | Bin 253662 -> 254869 bytes .../contrib/babel-contrib/greek/test-greek.pdf | Bin 233658 -> 233964 bytes .../contrib/babel-contrib/greek/test-greek.tex | 20 +- .../babel-contrib/greek/test-unicode-greek.pdf | Bin 42911 -> 42751 bytes .../babel-contrib/greek/test-unicode-lgr.pdf | Bin 43798 -> 43607 bytes macros/latex/contrib/babel-contrib/greek/usage.pdf | Bin 175483 -> 175483 bytes .../biblatex-gb7714-2015/biblatex-gb7714-2015.pdf | Bin 2452077 -> 2454501 bytes .../biblatex-gb7714-2015/biblatex-gb7714-2015.tex | 4 +- .../biblatex-gb7714-2015/gb7714-2015.bbx | 123 +- .../biblatex-gb7714-2015/gb7714-2015.cbx | 2 +- .../biblatex-gb7714-2015/gb7714-2015ay.bbx | 117 +- .../biblatex-gb7714-2015/gb7714-2015ay.cbx | 9 +- .../biblatex-gb7714-2015/gb7714-2015ms.bbx | 51 +- .../biblatex-gb7714-2015/gb7714-2015ms.cbx | 2 +- .../biblatex-gb7714-2015/gb7714-2015mx.bbx | 97 +- .../biblatex-gb7714-2015/gb7714-2015mx.cbx | 2 +- macros/latex/contrib/glossaries-extra/CHANGES | 19 + macros/latex/contrib/glossaries-extra/README | 2 +- .../glossaries-extra/glossaries-extra-code.pdf | Bin 1358716 -> 1374903 bytes .../glossaries-extra/glossaries-extra-manual.html | 12213 ++++++++++--------- .../glossaries-extra/glossaries-extra-manual.pdf | Bin 784773 -> 801554 bytes .../glossaries-extra/glossaries-extra-manual.tex | 361 +- .../contrib/glossaries-extra/glossaries-extra.dtx | 423 +- .../contrib/glossaries-extra/glossaries-extra.ins | 2 +- .../samples/sample-abbr-styles.pdf | Bin 537720 -> 537720 bytes .../glossaries-extra/samples/sample-abbrv.pdf | Bin 44741 -> 44741 bytes .../glossaries-extra/samples/sample-accsupp.pdf | Bin 82831 -> 82831 bytes .../samples/sample-acronym-desc.pdf | Bin 50351 -> 50351 bytes .../glossaries-extra/samples/sample-acronym.pdf | Bin 36728 -> 36728 bytes .../glossaries-extra/samples/sample-alias.pdf | Bin 43857 -> 43857 bytes .../samples/sample-altmodifier.pdf | Bin 35289 -> 35289 bytes .../samples/sample-alttree-marginpar.pdf | Bin 90983 -> 90983 bytes .../samples/sample-alttree-sym.pdf | Bin 69521 -> 69521 bytes .../glossaries-extra/samples/sample-alttree.pdf | Bin 55733 -> 54908 bytes .../samples/sample-autoindex-hyp.pdf | Bin 141872 -> 141502 bytes .../glossaries-extra/samples/sample-autoindex.pdf | Bin 161424 -> 161049 bytes .../glossaries-extra/samples/sample-crossref.pdf | Bin 41274 -> 41274 bytes .../glossaries-extra/samples/sample-crossref2.pdf | Bin 41603 -> 41603 bytes .../glossaries-extra/samples/sample-docdef.pdf | Bin 45244 -> 45244 bytes .../glossaries-extra/samples/sample-entrycount.pdf | Bin 54604 -> 54604 bytes .../glossaries-extra/samples/sample-external.pdf | Bin 34170 -> 34170 bytes .../glossaries-extra/samples/sample-fmt.pdf | Bin 75247 -> 75247 bytes .../glossaries-extra/samples/sample-footnote.pdf | Bin 63214 -> 63214 bytes .../glossaries-extra/samples/sample-header.pdf | Bin 125901 -> 125901 bytes .../glossaries-extra/samples/sample-indexhook.pdf | Bin 42710 -> 42710 bytes .../samples/sample-initialisms.pdf | Bin 81573 -> 81573 bytes .../glossaries-extra/samples/sample-linkcount.pdf | Bin 38218 -> 38218 bytes .../samples/sample-mixed-abbrv-styles.pdf | Bin 57809 -> 57809 bytes .../glossaries-extra/samples/sample-mixedsort.pdf | Bin 45142 -> 45142 bytes .../glossaries-extra/samples/sample-mixture.pdf | Bin 159850 -> 159470 bytes .../glossaries-extra/samples/sample-name-font.pdf | Bin 224726 -> 224726 bytes .../glossaries-extra/samples/sample-nested.pdf | Bin 67720 -> 67720 bytes .../samples/sample-noidx-restricteddocdefs.pdf | Bin 47573 -> 47573 bytes .../glossaries-extra/samples/sample-onelink.pdf | Bin 44500 -> 44500 bytes .../samples/sample-onthefly-utf8.pdf | Bin 106052 -> 106052 bytes .../samples/sample-onthefly-xetex.pdf | Bin 19642 -> 19640 bytes .../glossaries-extra/samples/sample-onthefly.pdf | Bin 43470 -> 43470 bytes .../glossaries-extra/samples/sample-pages.pdf | Bin 38791 -> 38791 bytes .../glossaries-extra/samples/sample-postdot.pdf | Bin 37045 -> 37045 bytes .../glossaries-extra/samples/sample-postlink.pdf | Bin 67872 -> 67872 bytes .../glossaries-extra/samples/sample-prefix.pdf | Bin 33107 -> 33107 bytes .../samples/sample-record-nameref.pdf | Bin 71295 -> 71295 bytes .../glossaries-extra/samples/sample-record.pdf | Bin 50214 -> 50214 bytes .../samples/sample-restricteddocdefs.pdf | Bin 47883 -> 47883 bytes .../glossaries-extra/samples/sample-suppl-hyp.pdf | Bin 34925 -> 34925 bytes .../samples/sample-suppl-main-hyp.pdf | Bin 46383 -> 46383 bytes .../glossaries-extra/samples/sample-suppl-main.pdf | Bin 31596 -> 31596 bytes .../glossaries-extra/samples/sample-suppl.pdf | Bin 13411 -> 13411 bytes .../glossaries-extra/samples/sample-trans.pdf | Bin 49436 -> 49436 bytes .../glossaries-extra/samples/sample-undef.pdf | Bin 33215 -> 33215 bytes .../samples/sample-unitentrycount.pdf | Bin 61037 -> 61037 bytes .../contrib/glossaries-extra/samples/sample.pdf | Bin 45727 -> 45727 bytes .../latex/contrib/nicematrix/nicematrix-french.pdf | Bin 340142 -> 343652 bytes .../latex/contrib/nicematrix/nicematrix-french.tex | 65 +- macros/latex/contrib/nicematrix/nicematrix.dtx | 735 +- macros/latex/contrib/nicematrix/nicematrix.pdf | Bin 780740 -> 793498 bytes macros/luatex/generic/luatexja/README | 16 +- macros/luatex/generic/luatexja/doc/luatexja-en.pdf | Bin 531826 -> 528742 bytes macros/luatex/generic/luatexja/doc/luatexja-ja.pdf | Bin 939144 -> 938795 bytes macros/luatex/generic/luatexja/doc/luatexja.dtx | 218 +- .../luatexja/src/addons/luatexja-preset.sty | 4 +- macros/luatex/generic/luatexja/src/ltj-plain.sty | 6 +- macros/luatex/generic/luatexja/src/luatexja.sty | 2 +- .../generic/luatexja/src/patches/lltjdefs.sty | 8 +- .../generic/luatexja/src/patches/lltjfont.sty | 112 +- macros/luatex/latex/arabluatex/arabluatex.dtx | 138 +- macros/luatex/latex/arabluatex/arabluatex.pdf | Bin 654486 -> 658172 bytes .../luatex/latex/arabluatex/samples/al-Jahiz.pdf | Bin 112383 -> 112383 bytes .../luatex/latex/arabluatex/samples/exporting.pdf | Bin 63544 -> 63544 bytes .../latex/arabluatex/samples/template-01.pdf | Bin 64015 -> 63921 bytes 93 files changed, 8261 insertions(+), 6508 deletions(-) (limited to 'macros') diff --git a/macros/latex/contrib/babel-contrib/greek/README b/macros/latex/contrib/babel-contrib/greek/README index 1dc2b61686..d1f2f3eb1c 100644 --- a/macros/latex/contrib/babel-contrib/greek/README +++ b/macros/latex/contrib/babel-contrib/greek/README @@ -64,6 +64,7 @@ News 1.9h 2019-07-11 Move breathing composite commands to textalpha_. 1.9i 2020-02-28 Update test for Unicode fonts. Fix accent in ``\seename`` and ``\alsoname``. +1.9j 2020/03/17 Fix ampersand in math. ===== ============ ============================================================ diff --git a/macros/latex/contrib/babel-contrib/greek/README.html b/macros/latex/contrib/babel-contrib/greek/README.html index 481515c75b..bcc2df90d5 100644 --- a/macros/latex/contrib/babel-contrib/greek/README.html +++ b/macros/latex/contrib/babel-contrib/greek/README.html @@ -752,6 +752,10 @@ and fixed \latinencoding.

Update test for Unicode fonts. Fix accent in \seename and \alsoname.

+

1.9j

+

2020/03/17

+

Fix ampersand in math.

+ diff --git a/macros/latex/contrib/babel-contrib/greek/babel-greek.dtx b/macros/latex/contrib/babel-contrib/greek/babel-greek.dtx index 38d9a23d50..0949097961 100644 --- a/macros/latex/contrib/babel-contrib/greek/babel-greek.dtx +++ b/macros/latex/contrib/babel-contrib/greek/babel-greek.dtx @@ -26,7 +26,7 @@ % and covered by LPPL is defined by the unpacking script (babel-greek.ins) % which is part of the package. % \fi -% \CheckSum{1543} +% \CheckSum{1550} % % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the @@ -37,7 +37,7 @@ %\ProvidesLanguage{greek} %\fi %\ProvidesFile{babel-greek.dtx} - [2020/02/27 v1.9i Greek support for the babel system] + [2020/03/17 v1.9j Greek support for the babel system] %\iffalse %% File `babel-greek.dtx' %% Greek language Definition File @@ -127,6 +127,7 @@ % to textalpha.} % \changes{babel-greek-1.9i}{2020/02/28}{Update test for Unicode fonts. % Fix accent in seename and alsoname.} +% \changes{babel-greek-1.9j}{2020/03/17}{Fix ampersand in math.} % % \title{Babel support for the Greek language} % \author{Apostolos Syropoulos, Günter Milde} @@ -527,6 +528,8 @@ % We redefine a few commands in the LGR encoding to work around problems % because LGR is no \emph{standard text encoding} but has Greek letters in % the places of Latin ones. +% The ampersand must work in text and math mode. We provide the text +% command |\textampersand| and re-define |\&| to use it in text mode. % \changes{greekfdd-2.2c}{1999/04/05}{Fixed typos, \cs{textrademark} % misses a `t', \cs{copyright} should be \cs{textcopyright}} % \changes{greekfdd-2.2d}{1999/04/25}{removed redefinition of \cs{\&}} @@ -536,14 +539,16 @@ % \changes{greek-1.5}{2013/05/27}{enable use of "textcomp" characters % for "textcopyright" and "textregistered" macros} % \changes{greek-1.5}{2013/06/15}{\textbackslash & made TextCommand} +% \changes{babel-greek-1.9j}{2020/03/17}{Fix ampersand in math.} % % \begin{macrocode} \ProvideTextCommand{\textcopyright}{LGR}{\ensureascii{\textcopyright}} \ProvideTextCommand{\textregistered}{LGR}{\ensureascii{\textregistered}} \ProvideTextCommand{\texttrademark}{LGR}{\ensureascii{\texttrademark}} \let\ltx@amp\& - \DeclareTextCommandDefault{\&}{\ltx@amp} - \DeclareTextCommand{\&}{LGR}{\ensureascii{\ltx@amp}} + \ProvideTextCommandDefault{\textampersand}{\ltx@amp} + \ProvideTextCommand{\textampersand}{LGR}{\ensureascii{\ltx@amp}} + \DeclareRobustCommand{\&}{\ifmmode\ltx@amp\else\textampersand\fi} \ProvideTextCommand{\SS}{LGR}{\ensureascii{\SS}} % \end{macrocode} % diff --git a/macros/latex/contrib/babel-contrib/greek/babel-greek.pdf b/macros/latex/contrib/babel-contrib/greek/babel-greek.pdf index cba57427b7..e0e0e741cd 100644 Binary files a/macros/latex/contrib/babel-contrib/greek/babel-greek.pdf and b/macros/latex/contrib/babel-contrib/greek/babel-greek.pdf differ diff --git a/macros/latex/contrib/babel-contrib/greek/test-greek.pdf b/macros/latex/contrib/babel-contrib/greek/test-greek.pdf index 0751ed7c9f..c4526611d8 100644 Binary files a/macros/latex/contrib/babel-contrib/greek/test-greek.pdf and b/macros/latex/contrib/babel-contrib/greek/test-greek.pdf differ diff --git a/macros/latex/contrib/babel-contrib/greek/test-greek.tex b/macros/latex/contrib/babel-contrib/greek/test-greek.tex index 5498dfc96b..4e5618cf87 100644 --- a/macros/latex/contrib/babel-contrib/greek/test-greek.tex +++ b/macros/latex/contrib/babel-contrib/greek/test-greek.tex @@ -101,7 +101,7 @@ argument using this encoding. Switching to a font encoding supporting the Greek script is possible without switching the Babel language using the declarations \verb|\greekscript| (no switch if the current encoding supports Greek script (e.g. the Unicode font -encodings EU1, EU2)) or \verb|\greektext| (always switch to LGR) and the +encoding TU)) or \verb|\greektext| (always switch to LGR) and the corresponding macros \verb|\ensuregreek| or \verb|\textgreek|. These commands do not start a new paragraph: @@ -109,28 +109,30 @@ commands do not start a new paragraph: \latintext Friends (\ensuregreek{F\'ilwn}) of TeX. \texttt{greek.ldf} has some workarounds, so that macros relying on Latin -characters in the ``right'' positions keep working. We test, that these +characters in standard positions keep working. We test, that these definitions do not overwrite the selection of pre-composed characters for -``copyright'' and ``registered trade mark'' by ``textcomp'' (try copy and +``copyright'' and ``registered trade mark'' by \emph{textcomp} (try copy and paste from the PDF output): -Greek (LGR): \ensuregreek{Α \& Ω, \textcopyright{} \textregistered{} -\texttrademark{}, © ® ™ } \\ -Latin: A \& O. +Latin: A \& O, © ® ™ \\ +Greek (LGR): \ensuregreek{Α \textampersand{} Ω, +\textcopyright{} \textregistered{} \texttrademark{}, \& © ® ™ }. + +The ampersand should also work in mathematical mode: $ 1 \& 2 $ To prevent Roman numerals being typeset in Greek letters we need to adopt the internal LaTeX commands. Note that this may cause errors when roman numerals are used in a situation where the macros need to be expanded: \makeatletter -Greek: \ensuregreek{ +Latin: \@roman{1}, \@roman{2}, \@roman{3}, \@roman{4}, \ldots, \@roman{1975} \@Roman{1}, \@Roman{2}, \@Roman{3}, \@Roman{4}, \ldots, \@Roman{1975} -} -Latin: +Greek: \ensuregreek{ \@roman{1}, \@roman{2}, \@roman{3}, \@roman{4}, \ldots, \@roman{1975} \@Roman{1}, \@Roman{2}, \@Roman{3}, \@Roman{4}, \ldots, \@Roman{1975} +} \makeatother \section{MakeUppercase, MakeLowercase} diff --git a/macros/latex/contrib/babel-contrib/greek/test-unicode-greek.pdf b/macros/latex/contrib/babel-contrib/greek/test-unicode-greek.pdf index 4a0204a05c..7033176e1a 100644 Binary files a/macros/latex/contrib/babel-contrib/greek/test-unicode-greek.pdf and b/macros/latex/contrib/babel-contrib/greek/test-unicode-greek.pdf differ diff --git a/macros/latex/contrib/babel-contrib/greek/test-unicode-lgr.pdf b/macros/latex/contrib/babel-contrib/greek/test-unicode-lgr.pdf index cdbfbb0fee..532e132c78 100644 Binary files a/macros/latex/contrib/babel-contrib/greek/test-unicode-lgr.pdf and b/macros/latex/contrib/babel-contrib/greek/test-unicode-lgr.pdf differ diff --git a/macros/latex/contrib/babel-contrib/greek/usage.pdf b/macros/latex/contrib/babel-contrib/greek/usage.pdf index 769d3ddb3a..67c6fa3699 100644 Binary files a/macros/latex/contrib/babel-contrib/greek/usage.pdf and b/macros/latex/contrib/babel-contrib/greek/usage.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf index a0dae26ec4..c6a841b307 100644 Binary files a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf and b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf differ diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex index d0513bffb8..dc81acdede 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.tex @@ -1255,7 +1255,7 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 对于顺序编码制文献表,由于存在数字标签,且其宽度与参考文献数量相关,所以这个宽度是动态变的,无能提前设定的,而是在文献表生成时给出,所以调整缩进需要在文献表输出环境中调整。由于顺序编码样式使用了两类输出环境,所以需要根据设定的选项区分处理: -一是采用list环境的文献表,即设置gbalign=left、right、center时(即顺序编码标签是左对齐、右对齐和居中对齐的情况),在重定义的文献表环境中,调整bibitemindent和bibhang两个尺寸,默认情况下bibhang+labelnumberwidth的长度是页边到各行起始位置的距离。 +一是采用list环境的文献表,即设置gbalign=left、right、center时(即顺序编码标签是左对齐、右对齐和居中对齐的情况),在重定义的文献表环境中,调整bibitemindent和bibhang两个尺寸,默认情况下bibhang+labelnumberwidth的长度是页边到各行起始位置的距离。当采用某些字体导致计算计算的标签宽度不足时,可以设置biblabelextend尺寸,来增加labelnumberwidth的宽度,避免缩进格式产生问题,默认情况下biblabelextend尺寸为0pt。 二是采用正常段落环境的文献表,即设置gbalign=gb7714-2015时(即项对齐情况,就是各条文献是自身对齐的情况),在重定义的命令中通过调整lengthid尺寸来设置每条参考文献第二行开始的缩进距离。 调整方法见例\ref{eg:biblist:hspace}。 @@ -1590,7 +1590,7 @@ leftrule=0pt,rightrule=0pt,toprule=0.4pt,bottomrule=0.4pt] 对于西方语言, biblatex基于 babel/polyglossia宏包,结合autolang/language等选项和langid/langidopt等域,提供了一套多语言解决方案。 \begin{itemize} -\item 首先,对不同语言的文献,设置langid域为文献所用语言,比如英文文献则设置langid域等于english,俄文文献则设置等于rassian。 +\item 首先,对不同语言的文献,设置langid域为文献所用语言,比如英文文献则设置langid域等于english,俄文文献则设置等于russian。 \item 其次,在biblatex加载时设置 autolang选项,等于none则不做多语言处理,等于hyphen则仅做不同语言的断词处理,等于other或other*则处理不同语言的断词和本地化字符串,other*选项等价于使用babel的otherlanguage*环境,与other的差别在于不忽略环境后的空白。从实践看,当要使用条目集时,使用other*选项更为合适。 diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx index 2178050a45..f7aee9c42c 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -1152,10 +1152,6 @@ \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1171,14 +1167,14 @@ \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userd,fieldvalue={korean}]%韩语 } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } \map{%将没有设置userd,且存在title域的默认设置为英文 \step[fieldsource=title,final] \step[fieldset=userd,fieldvalue={english}] } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1194,14 +1190,14 @@ \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userf,fieldvalue={korean}]%韩语 } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } \map{%将没有设置userf,且存在author域的默认设置为英文 \step[fieldsource=author,final] \step[fieldset=userf,fieldvalue={english}] } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1217,14 +1213,14 @@ \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=usere,fieldvalue={korean}]%韩语 } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } \map{%将没有设置usere,且存在translator域的默认设置为英文 \step[fieldsource=translator,final] \step[fieldset=usere,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1240,14 +1236,14 @@ \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userc,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=editor,final] \step[fieldset=userc,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1263,6 +1259,10 @@ \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userb,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=bookauthor,final] \step[fieldset=userb,fieldvalue={english}] @@ -1680,12 +1680,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort{ + \field{sortkey} + } \sort{%[direction=descending] \field{sortname} \field{author} @@ -1711,12 +1714,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort[direction=descending]{ + \field{sortkey} + } \sort[direction=descending]{ \field{sortname} \field{author} @@ -1742,9 +1748,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } @@ -1752,6 +1758,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{ \field{sortname} \field{author} @@ -1773,9 +1782,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } @@ -1783,6 +1792,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{ \field{sortname} \field{author} @@ -1809,12 +1821,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort{ + \field{sortkey} + } \sort{%[direction=descending] \field{sortname} \field{author} @@ -1840,12 +1855,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } + \sort[direction=descending]{ + \field{sortkey} + } \sort[direction=descending]{% \field{sortname} \field{author} @@ -1871,9 +1889,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1881,6 +1899,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} @@ -1902,9 +1923,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1912,6 +1933,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} @@ -1946,9 +1970,12 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 % % 增加一个\bibitemindent尺寸用于控制list环境的itemindent % v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 \setlength{\bibhang}{\biblabelsep}% \newlength{\bibitemindent} \setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} \defbibenvironment{bibliography} @@ -1956,7 +1983,8 @@ test {\iftoggle{iftlseven}}%biblatex<=3.7 {\printtext[labelnumberwidth]{% \printfield{labelprefix}% \printfield{labelnumber}}} - {\setlength{\labelwidth}{\labelnumberwidth}% + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% \setlength{\labelsep}{\biblabelsep}% \setlength{\leftmargin}{\bibhang}% \addtolength{\leftmargin}{\labelnumberwidth}% @@ -3473,7 +3501,8 @@ incollection,proceedings,inproceedings]{number}{% \usebibmacro{note+pages}% \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}}%带括号的修改或更新日期, + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 \newunit\newblock \iftoggle{bbx:isbn} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx index a62ca688b3..740b23d9a1 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015.cbx @@ -7,7 +7,7 @@ %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \ProvidesFile{gb7714-2015.cbx}[\versionofgbtstyle biblatex citation style] % diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx index d6d9a84174..2e54a40149 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.bbx @@ -10,7 +10,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ay.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -1124,10 +1124,6 @@ \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1143,14 +1139,14 @@ \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userd,fieldvalue={korean}]%韩语 } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } \map{%将没有设置userd,且存在title域的默认设置为英文 \step[fieldsource=title,final] \step[fieldset=userd,fieldvalue={english}] } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1166,14 +1162,14 @@ \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userf,fieldvalue={korean}]%韩语 } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } \map{%将没有设置userf,且存在author域的默认设置为英文 \step[fieldsource=author,final] \step[fieldset=userf,fieldvalue={english}] } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1189,14 +1185,14 @@ \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=usere,fieldvalue={korean}]%韩语 } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } \map{%将没有设置usere,且存在translator域的默认设置为英文 \step[fieldsource=translator,final] \step[fieldset=usere,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1212,14 +1208,14 @@ \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userc,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=editor,final] \step[fieldset=userc,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1235,6 +1231,10 @@ \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userb,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=bookauthor,final] \step[fieldset=userb,fieldvalue={english}] @@ -1529,12 +1529,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort{ + \field{sortkey} + } \sort{%[direction=descending] \field{sortname} \field{author} @@ -1560,12 +1563,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort[direction=descending]{ + \field{sortkey} + } \sort[direction=descending]{ \field{sortname} \field{author} @@ -1591,9 +1597,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } @@ -1601,6 +1607,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{ \field{sortname} \field{author} @@ -1622,9 +1631,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } @@ -1632,6 +1641,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{ \field{sortname} \field{author} @@ -1658,12 +1670,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort{ + \field{sortkey} + } \sort{%[direction=descending] \field{sortname} \field{author} @@ -1689,12 +1704,15 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } + \sort[direction=descending]{ + \field{sortkey} + } \sort[direction=descending]{% \field{sortname} \field{author} @@ -1720,9 +1738,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1730,6 +1748,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} @@ -1751,9 +1772,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1761,6 +1782,9 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} @@ -3459,7 +3483,8 @@ test {\ifentrytype{conference}} \usebibmacro{note+pages}% \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}}%带括号的修改或更新日期, + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 \newunit\newblock \iftoggle{bbx:isbn} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx index 9b9adf9b14..11fa65d16e 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ay.cbx @@ -7,7 +7,7 @@ %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \ProvidesFile{gb7714-2015ay.cbx}[\versionofgbtstyle biblatex citation style] % @@ -61,7 +61,12 @@ test {\iftoggle{iftlseven}}%3.7=biblatex }{\newbibmacro{cite:labeldate+extradate}{\usebibmacro{cite:labelyear+extrayear}}}{}%else: biblatex>3.7 %textcite标注命令中的标点设置,注意只针对textcite命令。 -\DeclareDelimFormat[textcite]{nameyeardelim}{}%\addcomma\space +% v-old +% v1.0t,20200320,hzz,修改如下 +% 在cbx中增加标注中的nameyeardelim标点定义,避免bbx使用其它样式时出现问题 +% 同时设置textcite的nameyeardelim为一个短空格,似乎原来直接连上去的不够美观 +\DeclareDelimFormat[cite,parencite,pagescite]{nameyeardelim}{\addcomma\space}%\addcomma\space +\DeclareDelimFormat[textcite]{nameyeardelim}{\addthinspace}%\addcomma\space \DeclareDelimFormat[textcite]{andothersdelim}{\iffieldequalstr{userf}{chinese}{\addthinspace}{\addspace}}% \AtEveryCitekey{% \iffieldequalstr{userf}{chinese}{\renewcommand*{\andothersdelim}{\addthinspace}}%\addthinspace diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx index 0efdddd18d..012a468c0b 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015ms.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -913,10 +913,6 @@ \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -932,14 +928,14 @@ \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userd,fieldvalue={korean}]%韩语 } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } \map{%将没有设置userd,且存在title域的默认设置为英文 \step[fieldsource=title,final] \step[fieldset=userd,fieldvalue={english}] } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -955,14 +951,14 @@ \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userf,fieldvalue={korean}]%韩语 } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } \map{%将没有设置userf,且存在author域的默认设置为英文 \step[fieldsource=author,final] \step[fieldset=userf,fieldvalue={english}] } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -978,14 +974,14 @@ \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=usere,fieldvalue={korean}]%韩语 } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } \map{%将没有设置usere,且存在translator域的默认设置为英文 \step[fieldsource=translator,final] \step[fieldset=usere,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1001,14 +997,14 @@ \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userc,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=editor,final] \step[fieldset=userc,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1024,6 +1020,10 @@ \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userb,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=bookauthor,final] \step[fieldset=userb,fieldvalue={english}] @@ -1197,9 +1197,12 @@ % % 增加一个\bibitemindent尺寸用于控制list环境的itemindent % v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 \setlength{\bibhang}{\biblabelsep}% \newlength{\bibitemindent} \setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} \defbibenvironment{bibliography} @@ -1207,7 +1210,8 @@ {\printtext[labelnumberwidth]{% \printfield{labelprefix}% \printfield{labelnumber}}} - {\setlength{\labelwidth}{\labelnumberwidth}% + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% \setlength{\labelsep}{\biblabelsep}% \setlength{\leftmargin}{\bibhang}% \addtolength{\leftmargin}{\labelnumberwidth}% @@ -2383,7 +2387,8 @@ incollection,proceedings,inproceedings]{number}{% \usebibmacro{note+pages}% \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}}%带括号的修改或更新日期, + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 \newunit\newblock \iftoggle{bbx:isbn} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx index 8c19244e17..cb2f092213 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015ms.cbx @@ -7,7 +7,7 @@ %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \ProvidesFile{gb7714-2015ms.cbx}[\versionofgbtstyle biblatex citation style] % diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx index 81cf2b95b8..0ff11167a2 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.bbx @@ -11,7 +11,7 @@ % % 版本和时间信息 % -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \def\versionofbiblatex{\abx@version} \ProvidesFile{gb7714-2015mx.bbx}[\versionofgbtstyle biblatex bibliography style] %\RequireBiber[3]%显式指定用biber后端,当用bibtex时会报错,但其实不会影响编译,只是采用bibtex后无法达成格式需求 @@ -964,10 +964,6 @@ \step[fieldsource=entrykey] \step[fieldset=keywords, origfieldval] } - \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 - \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% - \step[fieldset=userd, fieldvalue={chinese}] - } \map{\step[fieldsource=title,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userd,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -983,14 +979,14 @@ \step[fieldsource=title,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userd,fieldvalue={korean}]%韩语 } + \map{%文献题名的中文判断,将信息保存到userd中,避免因为标签生成原因导致title域被清除而产生问题 + \step[fieldsource=title, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]% + \step[fieldset=userd, fieldvalue={chinese}] + } \map{%将没有设置userd,且存在title域的默认设置为英文 \step[fieldsource=title,final] \step[fieldset=userd,fieldvalue={english}] } - \map{%作者的中文判断 - \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=userf, fieldvalue={chinese}] - } \map{\step[fieldsource=author,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userf,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1006,14 +1002,14 @@ \step[fieldsource=author,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userf,fieldvalue={korean}]%韩语 } + \map{%作者的中文判断 + \step[fieldsource=author, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=userf, fieldvalue={chinese}] + } \map{%将没有设置userf,且存在author域的默认设置为英文 \step[fieldsource=author,final] \step[fieldset=userf,fieldvalue={english}] } - \map{%译者的中文判断 - \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] - \step[fieldset=usere, fieldvalue={chinese}] - } \map{\step[fieldsource=translator,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=usere,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1029,14 +1025,14 @@ \step[fieldsource=translator,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=usere,fieldvalue={korean}]%韩语 } + \map{%译者的中文判断 + \step[fieldsource=translator, match=\regexp{[\x{2FF0}-\x{9FA5}]},final] + \step[fieldset=usere, fieldvalue={chinese}] + } \map{%将没有设置usere,且存在translator域的默认设置为英文 \step[fieldsource=translator,final] \step[fieldset=usere,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userc, fieldvalue={chinese}] - } \map{\step[fieldsource=editor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userc,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1052,14 +1048,14 @@ \step[fieldsource=editor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userc,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=editor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userc, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=editor,final] \step[fieldset=userc,fieldvalue={english}] } - \map{%编者的中文判断 - \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 - \step[fieldset=userb, fieldvalue={chinese}] - } \map{\step[fieldsource=bookauthor,match=\regexp{[\x{0100}-\x{017F}]},final]%\x80-\xFF \step[fieldset=userb,fieldvalue={french}]%法语,0080开始到00ff的字符没法匹配有点奇怪 } @@ -1075,6 +1071,10 @@ \step[fieldsource=bookauthor,match=\regexp{[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]},final] \step[fieldset=userb,fieldvalue={korean}]%韩语 } + \map{%编者的中文判断 + \step[fieldsource=bookauthor, match=\regexp{[\x{2FF0}-\x{9FA5}]},final]%直接匹配cjk字符,unicode编码位置从2FF0到9FA5 + \step[fieldset=userb, fieldvalue={chinese}] + } \map{%将没有设置userc,且存在editor域的默认设置为英文 \step[fieldsource=bookauthor,final] \step[fieldset=userb,fieldvalue={english}] @@ -1346,23 +1346,24 @@ % % 排序格式,用降序,及userb域,针对biblatex3.8及以上版本 % - \DeclareSortingTemplate{gb7714-2015}{ +\DeclareSortingTemplate{gb7714-2015}{ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } + %\sort[final]{ + %\field{sortkey} + %} \sort{ \field{lansortorder}%language } + \sort{ + \field{sortkey} + } \sort{%[direction=descending] \field{sortname} \field{author} \field{editor} \field{translator} - \field{sorttitle} - \field{title} } \sort{ \field{sortyear} @@ -1383,19 +1384,20 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } + \sort[direction=descending]{ + \field{sortkey} + } \sort[direction=descending]{% \field{sortname} \field{author} \field{editor} \field{translator} - \field{sorttitle} - \field{title} } \sort{ \field{sortyear} @@ -1416,9 +1418,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1426,13 +1428,14 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} \field{editor} \field{translator} - \field{sorttitle} - \field{title} } \sort{ \field{sorttitle} @@ -1449,9 +1452,9 @@ \sort{ \field{presort} } - \sort[final]{ - \field{sortkey} - } +% \sort[final]{ +% \field{sortkey} +% } \sort{ \field{lansortorder}%language } @@ -1459,13 +1462,14 @@ \field{sortyear} \field{year} } + \sort{ + \field{sortkey} + } \sort{% \field{sortname} \field{author} \field{editor} \field{translator} - \field{sorttitle} - \field{title} } \sort{ \field{sorttitle} @@ -1485,9 +1489,12 @@ % % 增加一个\bibitemindent尺寸用于控制list环境的itemindent % v1.0l,20180615,hzz +% v1.0t,20200319,hzz,增加尺寸\biblabelextend使某些字体下标签宽度不足时可增加标签宽度 \setlength{\bibhang}{\biblabelsep}% \newlength{\bibitemindent} \setlength{\bibitemindent}{0pt} +\newlength{\biblabelextend} +\setlength{\biblabelextend}{0pt} \defbibenvironment{bibliography} @@ -1495,7 +1502,8 @@ {\printtext[labelnumberwidth]{% \printfield{labelprefix}% \printfield{labelnumber}}} - {\setlength{\labelwidth}{\labelnumberwidth}% + {\addtolength{\labelnumberwidth}{\biblabelextend}% + \setlength{\labelwidth}{\labelnumberwidth}% \setlength{\labelsep}{\biblabelsep}% \setlength{\leftmargin}{\bibhang}% \addtolength{\leftmargin}{\labelnumberwidth}% @@ -2765,7 +2773,8 @@ incollection,proceedings,inproceedings]{number}{% \usebibmacro{note+pages}% \iffieldequalstr{note}{news}{}{%当是新闻时不输出修改或更新日期 \iffieldundef{url}{}{%当没有网址时也不输出 - \usebibmacro{modifydate}}}%带括号的修改或更新日期, + \iftoggle{bbx:url}{%当url选项为false时,也不输出 + \usebibmacro{modifydate}}{}}}%带括号的修改或更新日期, \usebibmacro{doi+eprint+url}%从后面移上来,调整url和页码之间的位置 \newunit\newblock \iftoggle{bbx:isbn} diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx index bf2e591f0c..ab1dfcb1b9 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-gb7714-2015/gb7714-2015mx.cbx @@ -7,7 +7,7 @@ %% Released under the LaTeX Project Public License v1.3c or later %% --------------------------------------------------------------- %% -\def\versionofgbtstyle{2019/08/28 v1.0s} +\def\versionofgbtstyle{2020/03/20 v1.0u} \ProvidesFile{gb7714-2015mx.cbx}[\versionofgbtstyle biblatex citation style] % diff --git a/macros/latex/contrib/glossaries-extra/CHANGES b/macros/latex/contrib/glossaries-extra/CHANGES index 90ce1e53f5..3972b207c4 100644 --- a/macros/latex/contrib/glossaries-extra/CHANGES +++ b/macros/latex/contrib/glossaries-extra/CHANGES @@ -1,3 +1,22 @@ +1.44 (2020-03-23): + + * glossaries-extra.sty: + + - New command \printunsrtinnerglossary + + - Added 'leveloffset' and 'groups' keys to \printunsrtglossary options. + + - Added check for \@printgloss@checkexists (new to glossaries.sty v4.46) + This will restore the glossary existence check for \printglossary and + \printnoidxglossary + + - \glswriteentry now uses \GlsXtrIfUnusedOrUndefined instead of + \ifglsused to allow 'indexonlyfirst' to work with bib2gls + + * glossaries-extra-stylemods.sty: + + - Bug fix: removed duplication of description in alttree style + 1.43 (2020-02-28): Bug fix: corrected bug in \glsxtrentryfmt that caused an infinite loop diff --git a/macros/latex/contrib/glossaries-extra/README b/macros/latex/contrib/glossaries-extra/README index d5f2c1f781..6710e081c8 100644 --- a/macros/latex/contrib/glossaries-extra/README +++ b/macros/latex/contrib/glossaries-extra/README @@ -1,4 +1,4 @@ -LaTeX Package : glossaries-extra v1.43 (2020-02-28) +LaTeX Package : glossaries-extra v1.44 (2020-03-23) Author : Nicola Talbot https://www.dickimaw-books.com/contact diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf index 098f3ba4b9..48d6bff21e 100644 Binary files a/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf and b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html index 55a9a28769..d0813adde4 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html @@ -219,7 +219,7 @@ a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;} >

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

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

2020-02-28

+class="cmr-12">2020-03-23

@@ -307,11 +307,11 @@ class="cmss-10">datatool-base and amsgen. These packages are all available in the -current TeX Live and MikTeX distributions. If any of them are missing, please -update your TeX distribution using your update manager. (For help on this see, for +current TeX Live and MikTeX distributions. If any of them are missing, please +update your TeX distribution using your update manager. (For help on this see, for example, How do I update my TeX distribution? or Updating TeX on Linux.) +href="http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution" >How do I update my TeX distribution? or Updating TeX on Linux.)

Additional resources:

@@ -351,74 +351,74 @@ class="cmss-10">glossaries package.
1 Introduction -
1.1  1.1 Package Defaults -
1.2  1.2 New or Modified Package Options
2 Modifications to Existing Commands and Styles -
2.1  2.1 Defining Entries -
2.2  2.2 Entry Indexing -
2.3  2.3 Cross-References (“see” and “see also”) -
2.4  2.4 Entry Display Style Modifications -
2.5  2.5 Entry Counting Modifications -
2.6  2.6 First Use Flag -
2.7  2.7 Plurals -
2.8  2.8 Nested Links -
2.9  2.9 Acronym Style Modifications -
2.10  2.10 Glossaries -
  2.10.1   2.10.1 Glossary Style Modifications
3 New Glossary Styles -
3.1  3.1 glossary-bookindex package -
3.2  3.2 glossary-longextra package -
3.3  3.3 glossary-topic package
4 Abbreviations -
4.1  4.1 Tagging Initials -
4.2  4.2 Abbreviation Styles -
4.3  4.3 Shortcut Commands -
4.4  4.4 Predefined Abbreviation Styles -
  4.4.1   4.4.1 Predefined Abbreviation Styles that Set the Regular Attribute -
  4.4.2   4.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute -
4.5  4.5 Defining New Abbreviation Styles
5 Entries in Sectioning Titles, Headers, Captions and Contents -
5.1  5.1 Simplistic Approach -
5.2  5.2 New Commands Designed for Chapter/Section Headings
6 Categories
7 Counting References -
7.1  7.1 Entry Counting (First Use Flag) -
7.2  7.2 Link Counting
8 Auto-Indexing @@ -428,45 +428,51 @@ href="#sec:autoindex" id="QQ2-1-41">Auto-Indexing
9 bib2gls: Managing Reference Databases -
9.1  9.1 Selection -
9.2  9.2 Sorting and Displaying the Glossary -
9.3  9.3 The glossaries-extra-bib2gls package -
  9.3.1   9.3.1 Supplemental Locations -
  9.3.2   9.3.2 Nameref Record -
  9.3.3   9.3.3 Helper Commands for Resource Options -
9.4  9.4 Supplementary Commands -
9.5  9.5 Record Counting
10 Miscellaneous New Commands -
10.1  10.1 Entry Fields -
10.2  10.2 Display All Entries Without Sorting or Indexing -
10.3 Standalone Entry Items -
10.4 Entry Aliases +
  10.2.1 Hooks +
  10.2.2 Filtering +
 10.3 Partial Glossaries +
 10.4 Standalone Entry Items +
 10.5 Entry Aliases
11 On-the-Fly Document Definitions +href="#sec:onthefly" id="QQ2-1-59">On-the-Fly Document Definitions
12 Supplemental Packages -
12.1 Prefixes or Determiners -
12.2 Accessibility Support +href="#sec:supplemental" id="QQ2-1-60">Supplemental Packages +
 12.1 Prefixes or Determiners +
 12.2 Accessibility Support
13 Sample Files +href="#sec:samples" id="QQ2-1-63">Sample Files
14 Multi-Lingual Support +href="#sec:lang" id="QQ2-1-64">Multi-Lingual Support
Glossary
@@ -711,8 +717,8 @@ following: \documentclass{article}  
\usepackage[acronym]{glossaries}  
\makeglossaries - 
\newacronym{laser}{laser}{light amplification by stimulated - 
emission of radiation} + 
\newacronym{laser}{laser}{light amplification by stimulated + 
emission of radiation}  
\begin{document}  
\gls{laser}  
\printglossaries @@ -734,10 +740,10 @@ class="cmtt-10">makeglossaries, you’ll get the warning message:

-Warning: File 'test.glo' is empty. - 
Have you used any entries defined in glossary 'main'? - 
Remember to use package option 'nomain' if you - 
don't want to use the main glossary. +Warning: File 'test.glo' is empty. + 
Have you used any entries defined in glossary 'main'? + 
Remember to use package option 'nomain' if you + 
don't want to use the main glossary.

(where the original file is called test.tex) but if you simply call

This doesn’t occur with nomain\usepackage[nomain,acronym,postdot]{glossaries-extra}  
\makeglossaries  
\setabbreviationstyle[acronym]{long-short} - 
\newacronym{laser}{laser}{light amplification by stimulated - 
emission of radiation} + 
\newacronym{laser}{laser}{light amplification by stimulated + 
emission of radiation}  
\begin{document}  
\gls{laser}  
\printglossaries @@ -971,7 +977,7 @@ class="cmss-10">=dot
- \renewcommand{\glspostdescription}{.\spacefactor\sfcode`\. } + \renewcommand{\glspostdescription}{.\spacefactor\sfcode`\. }

@@ -997,7 +1003,7 @@ class="cmss-10">=none
\newcommand*{\glspostdescription}{% -  
  \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi +  
  \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi  
}

where the conditional is determined by the myDoc.tex):

- pdflatex myDoc -  
bib2gls myDoc -  
pdflatex myDoc + pdflatex myDoc +  
bib2gls myDoc +  
pdflatex myDoc

Note that myDoc.tex):

- pdflatex myDoc -  
bib2gls myDoc -  
pdflatex myDoc -  
makeglossaries myDoc -  
pdflatex myDoc + pdflatex myDoc +  
bib2gls myDoc +  
pdflatex myDoc +  
makeglossaries myDoc +  
pdflatex myDoc

With the recording on (\glsadd after the caption (not before). For

@@ -1695,9 +1701,9 @@ class="cmss-10">equation

@@ -1810,7 +1816,7 @@ class="cmss-10">document environment, it uses the .glsdefs temporary file to store the entry definitions so - that on the next LaTeX run the entries are defined at the beginning + that on the next LaTeX run the entries are defined at the beginning of the documentdocument\newglossaryentry. (For example, when the glossary is displayed in the front matter.) This method of saving the definitions for the - next LaTeX run has drawbacks that are detailed in the glossaries user manual.

Remember that if name={symbol},
 sort={ sort={label},type=symbols,category=symbol,optionsname={number},
 sort={ sort={label},type=numbers,category=number,options\glsxtractivatenopost and \glspostdescription, see
§10.3 +class="tcrm-1000">§10.4 Standalone Entry Items).

The commands used by Categories for furt class="cmss-10">alias, which allows an entry to be alias to another entry. See §10.4 §10.5 Entry Aliases for further details. @@ -2836,13 +2842,13 @@ class="cmtt-10">\glsxtrinitwrgloss


\newcommand*{\glsxtrinitwrgloss}{% -  
 \glsifattribute{\glslabel}{wrgloss}{after}% -  
 {% -  
   \glsxtrinitwrglossbeforefalse -  
 }% -  
 {% -  
   \glsxtrinitwrglossbeforetrue -  
 }% +  
 \glsifattribute{\glslabel}{wrgloss}{after}% +  
 {% +  
   \glsxtrinitwrglossbeforefalse +  
 }% +  
 {% +  
   \glsxtrinitwrglossbeforetrue +  
 }%  
}

This sets the conditional @@ -2882,7 +2888,7 @@ class="cmtt-10">}{\glstextformat{link text text}} @@ -2901,7 +2907,7 @@ class="cmtt-10">\hyperlink{⟨target}{link text text}} @@ -2944,7 +2950,7 @@ class="cmtt-10">\hyperlink{⟨target}{link text text}} @@ -3077,7 +3083,7 @@ class="cmti-10">char⟩ is the character used as the modifier and &# class="cmti-10">options⟩ is the default set of options (which may be overridden). Note that ⟨char⟩ must be a single character (not a -UTF-8 character, unless you are using XƎLATEX or LuaLATEX). +UTF-8 character, unless you are using XƎLATEX or LuaLATEX).

When choosing the character ⟨char⟩ take care of any changes in category code.
@@ -3152,9 +3158,9 @@ class="cmss-10">equation
\renewcommand{\glslinkpresetkeys}{% - 
 \ifmmode \setkeys{glslink}{counter=equation}\fi} + 
 \ifmmode \setkeys{glslink}{counter=equation}\fi}  
\renewcommand{\glsaddpresetkeys}{% - 
 \ifmmode \setkeys{glossadd}{counter=equation}\fi} + 
 \ifmmode \setkeys{glossadd}{counter=equation}\fi}

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

As from version 1.14, there are two new keys for num⟩⟨sep⟩]*⟨num⟩ where ⟨num⟩ is an arabic number (0, 1, …), roman numeral (i, ii, … or I, II, …) or a +class="cmti-10">num⟩ is an arabic number (0, 1, …), roman numeral (i, ii, … or I, II, …) or a character from a, …, z or A, …, Z, and [⟨num⟩⟨sep⟩]* indicates zero or more @@ -3233,7 +3239,7 @@ example,

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

This location value will be accepted by suppl.tex contains:

Next you need to add glsxtrsupphypernumber as the format: @@ -3595,7 +3601,7 @@ as:

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

(Note that as from

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

Now the cross-references can appear even though the

@@ -3869,7 +3875,7 @@ class="cmtt-10">\glssee[\seealsoname]{⟨label}{xr list list} @@ -4052,7 +4058,7 @@ category:

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

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

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

As from version 1.21, it’s simpler to just do, for example: @@ -4159,7 +4165,7 @@ href="#sec:nested">Nested Links) instead. class="cmtt-10">\glsxtrpostlink just does \glsxtrpostlinkcategory if + id="dx1-9036"> if it exists, where ⟨category⟩ is the category label for the current entry. (For example, for the

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

or, as from v1.31, you can use @@ -4205,12 +4211,12 @@ class="cmtt-10">} \glsxtrpostlinkcategory is defined the hook will do that and then insert a + id="dx1-9039"> is defined the hook will do that and then insert a full stop with the space factor adjusted to match the end of sentence. If \glsxtrpostlinkcategory hasn’t been defined, the space factor is adjusted to match + id="dx1-9040"> hasn’t been defined, the space factor is adjusted to match the end of sentence. This means that if you have, for example, an entry that ends with a full stop, a redundant following full stop will be discarded and the space factor adjusted (in case the entry is in uppercase) unless the entry is followed by additional @@ -4238,7 +4244,7 @@ class="cmss-10">symbol

@@ -4325,7 +4331,7 @@ class="cmss-10">general

@@ -4501,7 +4507,7 @@ the commands provided with the

This causes the confusing error: @@ -4509,7 +4515,7 @@ the commands provided with the

The simplest workaround is to put \gls{html} inside the argument of

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

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

-! Package soul Error: Reconstruction failed. +! Package soul Error: Reconstruction failed.

The glossaries-extra package provides a way of temporarily switching off \usepackage[T1]{fontenc}  
\usepackage{soul}  
\usepackage{glossaries-extra} - 
\newabbreviation{html}{HTML}{hypertext markup language} + 
\newabbreviation{html}{HTML}{hypertext markup language}  
\begin{document}  
\GlsXtrStartUnsetBuffering - 
\ul{Some text about \mbox{\gls{html}}.} + 
\ul{Some text about \mbox{\gls{html}}.}  
\GlsXtrStopUnsetBuffering - 
Next use: \gls{html}. + 
Next use: \gls{html}.  
\end{document}

Before you stop the unset buffering, you can iterate over the current buffer @@ -4612,7 +4618,7 @@ class="cmtt-10">\protect:

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

but the formatting (underlining in this example) won’t be applied. Another @@ -4625,17 +4631,17 @@ possibility is: \usepackage[T1]{fontenc}  
\usepackage{soul}  
\usepackage{glossaries-extra} - 
\newabbreviation{html}{HTML}{hypertext markup language} + 
\newabbreviation{html}{HTML}{hypertext markup language}  
\newrobustcmd{\gul}[1]{% - 
  {% - 
   \def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% - 
   \def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% - 
   #1% - 
  }% + 
  {% + 
   \def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + 
   \def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}% + 
   #1% + 
  }%  
}  
\begin{document} - 
\ul{Some text about }\gls[textformat=gul]{html}. - 
Next use: \gls{html}. + 
\ul{Some text about }\gls[textformat=gul]{html}. + 
Next use: \gls{html}.  
\end{document}

This moves glossaries package:

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

The main problems are: @@ -4887,7 +4893,7 @@ href="#glo:firstuse">first use if the long form is displayed before the shor

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

which just doesn’t work. Grouping the \gls{ssi} doesn’t work either as this @@ -4897,7 +4903,7 @@ class="cmtt-10">\gls{ssi} doesn’t work either as this

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

This will upper case the label ssi so the entry won’t be recognised. @@ -4938,7 +4944,7 @@ class="cmtt-10">shtml. For example:

- This section discusses \gls{ssi}, \gls{html} and \gls{shtml}. + This section discusses \gls{ssi}, \gls{html} and \gls{shtml}.

This produces:

@@ -4959,8 +4965,8 @@ class="cmtt-10">shtml entry, for example:

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

This produces:

@@ -4980,7 +4986,7 @@ class="cmtt-10">shtml entry is used before (or without) the other two

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

This produces:

@@ -5024,7 +5030,7 @@ class="cmtt-10">shtml

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

The next use of shtml produces “Shypertext markup language (HTML)”, @@ -5076,8 +5082,8 @@ like:

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

with glossaries or: @@ -5087,8 +5093,8 @@ class="cmss-10">glossaries or:

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

with glossaries-extra. This fixes all the above listed problems (as long as you don’t @@ -5110,9 +5116,9 @@ class="cmtt-10">\glsabbrvfont:

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

This will pick up the font style setting of the outer entry (shtml, in the above case). @@ -5140,7 +5146,7 @@ form

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

is treated as @@ -5148,7 +5154,7 @@ form

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

This overcomes problems shtml entry had instead been defined as:

then (using the first use will be like

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

whereas if the entry is defined as: @@ -5225,7 +5231,7 @@ href="#glo:firstuse">first use will be like

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

then the first use will be like:

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

Note that the first optional argument of \acrshort or field⟩ is the field label and corresponds to a command in the form \glsfield⟩ -(e.g. \glstext) or in the form \glsxtrfield⟩ (e.g. field⟩ (e.g. \glsxtrshort).

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


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

in the main body of the document or @@ -5375,7 +5381,7 @@ glossary. For example:

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

inside the glossary. (Note the post-link hook is locally disabled.) @@ -5446,7 +5452,7 @@ class="cmti-10">really need nested commands, the safest method is

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

but be aware that it may have some unexpected results occasionally. @@ -5464,19 +5470,19 @@ class="cmti-10">really need nested commands, the safest method is  
\usepackage[nopostdot=false]{glossaries-extra}  
\makeglossaries  
\setabbreviationstyle{long-short-sc} - 
\newabbreviation{ssi}{ssi}{server-side includes} - 
\newabbreviation{html}{html}{hypertext markup language} - 
\newabbreviation{shtml}{shtml}{{}\glsps{ssi} enabled {}\glsps{html}} + 
\newabbreviation{ssi}{ssi}{server-side includes} + 
\newabbreviation{html}{html}{hypertext markup language} + 
\newabbreviation{shtml}{shtml}{{}\glsps{ssi} enabled {}\glsps{html}}  
\pagestyle{headings}  
\glssetcategoryattribute{abbreviation}{headuc}{true}  
\glssetcategoryattribute{abbreviation}{glossdesc}{title}  
\begin{document}  
\tableofcontents  
\chapter{\glsfmtfull{shtml}} - 
First use: \gls{shtml}, \gls{ssi} and \gls{html}. - 
Next use: \gls{shtml}, \gls{ssi} and \gls{html}. + 
First use: \gls{shtml}, \gls{ssi} and \gls{html}. + 
Next use: \gls{shtml}, \gls{ssi} and \gls{html}.  
\newpage - 
Next page. + 
Next page.  
\printglossaries  
\end{document}

@@ -5555,7 +5561,7 @@ class="cmss-10">glossaries  
\usepackage[acronym,nopostdot,toc]{glossaries}  
\makeglossaries  
\setacronymstyle{long-short} - 
\newacronym{html}{HTML}{hypertext markup language} + 
\newacronym{html}{HTML}{hypertext markup language}  
\begin{document}  
\gls{html}  
\printglossaries @@ -5572,7 +5578,7 @@ class="cmss-10">glossaries-extra:  
\usepackage[acronym]{glossaries-extra}  
\makeglossaries  
\setabbreviationstyle[acronym]{long-short} - 
\newacronym{html}{HTML}{hypertext markup language} + 
\newacronym{html}{HTML}{hypertext markup language}  
\begin{document}  
\gls{html}  
\printglossaries @@ -6046,13 +6052,64 @@ class="cmtt-10">\glsxtrsetglossarylabel{⟨label}

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

-

-

-

+

  • groups. This is a boolean key (new to v1.44) designed for use with + \printunsrtglossary (and other \printunsrtvariations). It has no effect + with \printglossary and \printnoidxglossary. +

    If true (default), group formation (group header and group skip) will be + attempted if the group key has been defined and set. Note that some styles + ignore the header and group skip commands so there may not be a noticeable + difference in those cases. If this key is set to false, no group formation will + occur so there won’t be any group markup to separate letter groups so + there will be no visual separation regardless of style or the group skip + setting. +

  • +
  • leveloffset. This key (new to v1.44) is designed for use with \printunsrtglossary + (and other \printunsrtvariations). It has no effect with \printglossary + and \printnoidxglossary. +

    The value may either be a simple integer ⟨n⟩ to indicate assignment or in the + form ++n⟩ to indicate an increment. This will locally assign or increment the + level offset. The default value is 0. This will cause entries to be displayed as + though their hierarchical level is N more than it would normally be (where N is + the level offset). For example, a top-level entry (that is, an entry without a + parent) would normally have a hierarchical level of 0. With a level offset of 1, + it would be treated by the glossary style as though it was actually a + level 1 entry. (Remember that some styles don’t support hierarchical + glossaries.) +

    Note that the group formation (if supported) will still occur between entries + that don’t have a parent, regardless of the level offset. This can cause odd + results.

  • + + + +

    +

    +

    Top

    2.10.1 Glossary Style Modifications

    -

    The

    The glossaries-extra-stylemods package (more conveniently loaded through the §2.10.1 The glossaries-extra-stylemods Package. -

    The

    The glossaries package tries to determine the group title from its label by first checking if \glsxtr@grouptitle@label⟩ which shouldn’t clash with another package. You can set the group title using -



    \glsxtrsetgrouptitle{label}{title}

    -

    +

    For example:

    -\glsxtrsetgrouptitle{A}{A (a)} +\glsxtrsetgrouptitle{A}{A (a)}
    -

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

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



    \glsxtrlocalsetgrouptitle{label}{title}

    -

    -

    +

    +

    Style Hooks
    -

    The commands

    The commands \glossentryname and \glossentrydesc§6 Categories). This means you can make simple font or case-changing modifications to the name and description without defining a new glossary style. -

    (New to version 1.42.) The command

    (New to version 1.42.) The command \glossentrysymbol is modified to take into account the \texorpdfstring{TeX code code}{PDF}

    The ⟨TeX code⟩ part is robust and deals with the actual typesetting of the symbol. +class="cmti-10"> code⟩ part is robust and deals with the actual typesetting of the symbol. The ⟨PDF⟩ part is simply: -


    -

    Alternatively, if you are using

    Alternatively, if you are using bib2gls you can use the TeX parser library to +class="cmtt-10">bib2gls you can use the TeX parser library to interpret a copy of the symbol field and use that. For example, with the resource @@ -6214,10 +6271,10 @@ options:

    -  replicate-fields={symbol=user1}, - 
      interpret-fields={user1} +  replicate-fields={symbol=user1}, + 
      interpret-fields={user1}
    -

    This stores the interpreted value of the symbol in the

    This stores the interpreted value of the symbol in the user1 field, so you can then do: @@ -6228,21 +6285,21 @@ do:

    \renewcommand{\glsentrypdfsymbol}[1]{\glsentryuseri{#1}}
    -

    (You may need XƎLATEX or LuaLATEX with this method.) This allows +

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

    If you want to adapt a style to use another field instead of

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



    \glossentrynameother{label}{field}

    -

    +

    This behaves just like \glossentryname (that is, it obeys description). See the key to field mappings table in the glossaries user manual. -

    There is a hook after

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



    \glsxtrpostnamehook{label}

    -

    +

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



    \glsxtrdoautoindexname{}{indexname}

    -

    +

    See §8 Auto-Indexing for further details. -

    As from version 1.04, the post-name hook

    As from version 1.04, the post-name hook \glsxtrpostnamehook will also use \glsxtrpostname

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

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


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


    \glsdefpostname{category}{definition}

    -

    +

    This is simply a shortcut for:

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

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


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


    \glsextrapostnamehook{label}

    -

    +

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

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

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



    \glsxtrpostdescription

    -

    +

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

    This new command will do

    This new command will do \glsxtrpostdesccategory⟩ if it exists, where ⟨\glsxtrpostdescacronym for entries with the category set class="cmss-10">acronym. For convenience, as from v1.31, you can use -



    \glsdefpostdesc{category}{definition}

    -

    +

    This is simply a shortcut for:

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

    Since both

    Since both \glossentry and \subglossentry set -



    \glscurrententrylabel

    -

    +

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

    For example, suppose you want to insert the plural form in brackets after the +

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

    \renewcommand{\glsxtrpostdescgeneral}{\space - 
     (plural: \glsentryplural{\glscurrententrylabel})} + 
     (plural: \glsentryplural{\glscurrententrylabel})}
    -

    This means you don’t have to define a custom glossary style, which you may find +

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

    This feature can’t be used for glossary styles that ignore

    This feature can’t be used for glossary styles that ignore \glspostdescription or if you redefine \glspostdescription without including glossaries-extra-stylemods Package

    -

    +

    +

    Number List
    -

    The

    The number list is now placed inside the argument of -



    \GlsXtrFormatLocationList{number list}

    -

    +

    This is internally used by \glossaryentrynumbers. The \glossaryentrynumbers so that it doesn’t display th id="dx1-18004">number list, but it still saves the number list in case it’s required. -

    If you want to suppress the

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

    -

    For example, to change the font for the entire

    +

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

    Sometimes users like to insert “page” or “pages” in front of the

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



    \GlsXtrEnablePreLocationTag{page}{pages}

    -

    +

    where ⟨page⟩ is the text to display if the number list only contains a single location and @@ -6503,27 +6560,27 @@ class="cmti-10">pages⟩ is the text to display otherwise. For examp

    -\GlsXtrEnablePreLocationTag{Page: }{Pages: } +\GlsXtrEnablePreLocationTag{Page: }{Pages: }
    -

    An extra run is required when using this command. -

    Use

    An extra run is required when using this command. +

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

    -

    See the accompanying sample file

    +

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

    Note that

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

    Location lists displayed with \printnoidxglossary internally use -



    \glsnoidxdisplayloc{prefixformat}{location}

    -

    +

    This command is provided by glossaries, but is modified by glossaries-extra to check @@ -6543,42 +6600,42 @@ class="cmtt-10">( and ) which are discarded to obtain the actual control sequence name that forms the location formatting command. -

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


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


    \glsxtrdisplaysingleloc{format}{location}

    -

    +

    otherwise it uses -



    \glsxtrdisplaystartloc{format}{location}

    -

    +

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



    \glsxtrdisplayendloc{format}{location}

    -

    +

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

    By default the start range command saves the format in -


    By default the start range command saves the format in +


    \glsxtrlocrangefmt

    -

    +

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

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

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



    \glsxtrdisplayendlochook{format}{location}

    -

    +

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

    This means that the list +

    This means that the list @@ -6622,7 +6679,7 @@ class="cmtt-10">\glsxtrlocrangefmt to empty.  
    \glsnoidxdisplayloc{}{page}{textbf}{1},  
    \glsnoidxdisplayloc{}{page}{)textbf}{1}.

    -

    doesn’t display any differently from +

    doesn’t display any differently from @@ -6632,14 +6689,14 @@ class="cmtt-10">\glsxtrlocrangefmt to empty.  
    \glsnoidxdisplayloc{}{page}{textbf}{1},  
    \glsnoidxdisplayloc{}{page}{textbf}{1}.

    -

    but it does make it easier to define your own custom list handler that can +

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

    +

    The glossaries-extra-stylemods Package
    -

    As from v1.02,

    As from v1.02, glossaries-extra now includes the package glossaries-extra-stylemods that @@ -6656,7 +6713,7 @@ class="cmss-10">glossaries-extra. For example:  
    \usepackage{glossary-longragged}  
    \usepackage{glossaries-extra-stylemods}

    -

    Alternatively you can load

    Alternatively you can load glossary-name.sty at the same time by passing ⟨glossaries-extra-stylemods\usepackage[longragged]{glossaries-extra-stylemods}

    -

    Another option is to use the

    Another option is to use the stylemods key when you load long3col \usepackage[style=long3col,stylemods]{glossaries-extra}

    -

    Or the value of

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

    \usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra}
    -

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

    Remember to group the value if it contains any commas: @@ -6709,8 +6766,8 @@ identifiers. For example:

    \usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra}
    -

    -

    Note that the

    +

    Note that the inline style is dealt with slightly differently. The original definition provided by the nopostdot option, but the post-description category hook can still be used. -

    The

    The tabular-like styles, such as \printglossary, \printnoidxglossary or \printunsrtglossary, you must also reset the glossary style. -

    As from version 1.21, the hard-coded

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



    \glsxtrprelocation

    -

    +

    This just defaults to \space but may be redefined as required. For example: @@ -6780,30 +6837,30 @@ class="cmtt-10">\space but may be redefined as required. For example:

    \renewcommand{\glsxtrprelocation}{\dotfill}
    -

    -

    The

    +

    The list styles use -



    \glslistprelocation

    -

    +

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



    \glslistchildprelocation

    -

    +

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

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

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



    \glslistdesc{label}

    -

    +

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

    For just the

    For just the list style and its letter group variations (not the altlistlistdottednumber list for child entries is followed by -



    \glslistchildpostlocation

    -

    +

    which defaults to a full stop. -

    The default value of

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

    The separator between groups (if not

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



    \glslistgroupskip

    -

    +

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

    The

    The glossary-tree package introduced new commands in v4.22, \glstreegroupheaderfmt\glstreenamefmt has been defined, as from v1.31 glossaries-extra-stylemods defines: -



    \glstreedefaultnamefmt{text}

    -

    +

    which simply does \textbf{text\glstreegroupheaderfmt and \glstreenavigationfmt all in terms of \glstreedefaultnamefmt. -

    This means that if you want to change all three to use a particular style you only +

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

    The separator between groups without headers is given by: -


    The separator between groups without headers is given by: +


    \glstreegroupskip

    -

    +

    This defaults to just \indexspace without penalties. This command isn’t @@ -6910,24 +6967,24 @@ class="cmss-10">nogroupskip\glstreeheadergroupskip in v1.42 as they are inappropriate when there’s no header.) -

    The separator between groups with headers is now given by (as from +

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



    \glstreegroupheaderskip

    -

    +

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

    The styles that display the group titles now use: -


    The styles that display the group titles now use: +


    \glstreePreHeader{label}{title}

    -

    +

    where ⟨label⟩ is the group label and ⟨title⟩ is the group title. This does nothing by @@ -6941,61 +6998,61 @@ then:

    \renewcommand{\glstreePreHeader}[2]{% - 
     \pdfbookmark[1]{#2}{\currentglossary.#1}% + 
     \pdfbookmark[1]{#2}{\currentglossary.#1}%  
    }
    -

    will insert section-level bookmarks. The use of

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

    The

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



    \glstreeprelocation

    -

    +

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



    \glstreechildprelocation

    -

    +

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

    As from version 1.31, the

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



    \glstreenonamedesc{label}

    -

    +

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



    \glstreenonamesymbol{label}

    -

    +

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



    \glstreenonamechilddesc{label}

    -

    -

    For the

    +

    For the tree styles (but not the treenonametreenonamealttree styles), the description is displayed using: -



    \glstreedesc{label}

    -

    +

    and the symbol with: -



    \glstreesymbol{label}

    -

    +

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



    \glstreechilddesc{label}

    -

    +

    for the description and -



    \glstreechildsymbol{label}

    -

    +

    for the symbol. As from version 1.41, there are now wrapper commands for \glstreedesc and \glstreechilddesc that check for the description and symbol to determine what separator to use before the page list. These are: -



    \glstreeDescLoc{label}{location}

    -

    +

    for top-level entries and -



    \glstreeChildDescLoc{label}{location}

    -

    +

    for sub-entries. -

    If either the symbol or description is present these will use

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



    \glstreeNoDescSymbolPreLocation

    -

    +

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

    Note that version 1.42 has corrected an error that was introduced to v1.41 that +

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

    As from version 1.05, the

    As from version 1.05, the glossaries-extra-stylemods package provides some additional commands for use with the alttreenotree option has been used when loading glossaries. -



    \gglssetwidest[level]{name}

    -

    +

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



    \eglssetwidest[level]{name}

    -

    +

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



    \xglssetwidest[level]{name}

    -

    +

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



    \glsupdatewidest[level]{name}

    -

    +

    Global update: -



    \gglsupdatewidest[level]{name}

    -

    +

    Locale update (expands ⟨name⟩): -



    \eglsupdatewidest[level]{name}

    -

    +

    Global update (expands ⟨name⟩): -



    \xglsupdatewidest[level]{name}

    -

    -

    The widest entry value can later be retrieved using -


    +

    The widest entry value can later be retrieved using +


    \glsgetwidestname

    -

    +

    for the top-level entries and -



    \glsgetwidestsubname{level}

    -

    +

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

    Note that if you are using

    Note that if you are using bib2gls, you can use the resource option bib2gls can’t replicate, but it should be suitable for names that just consist of text, and can be more efficient than iterating over all the defined entries using TeX. -

    The command

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



    \glsFindWidestTopLevelName[glossary list]

    -

    +

    Similar commands are also provided: -



    \glsFindWidestUsedTopLevelName[glossary list]

    -

    +

    This has an additional check that the entry has been used. Naturally this is only useful if the glossaries that use the alttreealttree



    \glsFindWidestUsedAnyName[glossary list]

    -

    +

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



    \glsFindWidestAnyName[glossary list]

    -

    +

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



    \glsFindWidestUsedLevelTwo[glossary list]

    -

    +

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



    \glsFindWidestLevelTwo[glossary list]

    -

    +

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



    \glsFindWidestUsedAnyNameSymbol[glossary list} -

    +

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



    \glsFindWidestAnyNameSymbol[glossary list]{register}

    -

    +

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



    \glsFindWidestUsedAnyNameSymbolLocation[glossary listregister}{location register}

    -

    +

    This is like \glsFindWidestUsedAnyNameSymbol but also measures the symbol register⟩ and the length of the widest number list is stored in ⟨location register⟩. -



    \glsFindWidestAnyNameSymbolLocation[glossary listregister}{location register}

    -

    +

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



    \glsFindWidestUsedAnyNameLocation[glossary list]{register}

    -

    +

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



    \glsFindWidestAnyNameLocation[glossary list]{register}

    -

    +

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

    The layout of the symbol, description and

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



    \glsxtralttreeSymbolDescLocation{label}{number list}

    -

    +

    for top-level entries and -



    \glsxtralttreeSubSymbolDescLocation{label}{number list}

    -

    +

    for sub-entries. -

    There is now a user level command that performs the initialisation for the

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



    \glsxtralttreeInit

    -

    -

    The paragraph indent for subsequent paragraphs in multi-paragraph descriptions +

    +

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



    \glsxtrAltTreeIndent

    -

    +

    -

    For additional commands that are available with the

    For additional commands that are available with the alttree style, see the documented code (sample-alttree-marginpar.tex.

    -

    -

    +

    Top

    3. New Glossary Styles

    -

    The

    The glossaries-extra package comes with some new styles. The associated style package needs to be loaded. This can be done with \usepackage but it’s simpler to @@ -7403,11 +7460,11 @@ href="#styopt.stylemods">stylemods option.

    -

    Top

    3.1 glossary-bookindex package

    -

    As from v1.21,

    As from v1.21, glossaries-extra has a new supplementary package glossary-bookindex @@ -7428,7 +7485,7 @@ style:  
    \usepackage{glossary-bookindex}  
    \setglossarystyle{bookindex}

    -

    or use both the

    or use both the stylemods and style \usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra}

    -

    The

    The bookindex style only supports a maximum hierarchical level of 2 (top-level, level 1 and level 2). It’s primarily designed for use with record package option.) -

    The number of columns is given by -


    The number of columns is given by +


    \glsxtrbookindexcols

    -

    +

    which defaults to 2. -

    This style uses the

    This style uses the multicols environment. If the command -



    \glsxtrbookindexcolspread

    -

    +

    isn’t empty then it’s supplied as the optional argument following \begin{multicols} multicolsmulticols* by redefining -



    \glsxtrbookindexmulticolsenv

    -

    +

    For example @@ -7497,14 +7554,14 @@ For example

    \renewcommand{\glsxtrbookindexmulticolsenv}{multicols*}
    -

    -

    Each top-level entry is displayed using -


    +

    Each top-level entry is displayed using +


    \glsxtrbookindexname{label}

    -

    +

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

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

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

    or if you want the description (if set):

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

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

    Alternatively you can use the

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

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

    Sub-entries are displayed using -


    Sub-entries are displayed using +


    \glsxtrbookindexsubname{label}

    -

    +

    which just defaults to \glsxtrbookindexname{label}. -

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

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



    \glsxtrbookindexprelocation{label}

    -

    +

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

    ,\glsxtrprelocation
    -

    otherwise it just does

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

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


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


    \glsxtrbookindexsubprelocation{label}

    -

    +

    which defaults to \glsxtrbookindexprelocation{label}. -

    The actual location list is encapsulated with: -


    The actual location list is encapsulated with: +


    \glsxtrbookindexlocation{label}{location list}

    -

    +

    for top-level entries and -



    \glsxtrbookindexsublocation{label}{location list}

    -

    +

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

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

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



    \glsxtrbookindexparentchildsep

    -

    +

    This defaults to \nopagebreak. -

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

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



    \glsxtrbookindexparentsubchildsep

    -

    +

    This defaults to \glsxtrbookindexparentchildsep. -

    The separator between top-level entries is given by -


    The separator between top-level entries is given by +


    \glsxtrbookindexbetween{label1}{label2}

    -

    +

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

    The separator between two level 1 entries is given by -


    The separator between two level 1 entries is given by +


    \glsxtrbookindexsubbetween{label1}{label2}

    -

    -

    The separator between two level 2 entries is given by -


    +

    The separator between two level 2 entries is given by +


    \glsxtrbookindexsubsubbetween{label1}{label2}

    -

    +

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



    \glsxtrbookindexsubsubatendgroup{sub-sub-label}

    -

    -


    +


    \glsxtrbookindexsubatendgroup{sub-label}

    -

    -


    +


    \glsxtrbookindexatendgroup{label}

    -

    +

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

    For example, the resource option

    For example, the resource option seealso=omit instructs

    -

    This uses

    This uses \glstreesubitem and \glstreesubsubitem to indent the cross-reference according to the next level down, so the cross-reference for a top-level entry is aligned @@ -7730,7 +7787,7 @@ indented a bit further (but it won’t be aligned with any deeper level as t class="cmss-10">bookindex style only supports a maximum of two sub-levels). -

    The

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



    \glsxtrbookindexbookmark{group title}{name}

    -

    +

    If \pdfbookmark has been defined, this will use that command to bookmark the group title. If \pdfbookmark hasn’t been defined, this command does nothin. -

    The group heading is formatted according to -


    The group heading is formatted according to +


    \glsxtrbookindexformatheader{group title}

    -

    +

    which is defined as @@ -7772,17 +7829,17 @@ which is defined as

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

    where

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

    The

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



    \glsxtrbookindexmarkentry{label}

    -

    +

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

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


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


    \glsxtrbookindexfirstmark

    -

    +

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



    \glsxtrbookindexlastmark

    -

    +

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

    The entry is formatted using: -


    The entry is formatted using: +


    \glsxtrbookindexfirstmarkfmt{label}

    -

    +

    for the first instance and -



    \glsxtrbookindexlastmarkfmt{label}

    -

    +

    for the last. -

    These commands are designed for use in page headers or footers where the page +

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

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

    If you only want to mark the top-level entries, remember to redefine +

    If you only want to mark the top-level entries, remember to redefine \glsxtrbookindexsubname as it defaults to \glsxtrbookindexname: @@ -7850,11 +7907,11 @@ class="cmtt-10">\glsxtrbookindexname:

    \renewcommand{\glsxtrbookindexsubname}[1]{% - 
      \glossentryname{#1}% + 
      \glossentryname{#1}%  
    }
    -

    -

    Then if you’re using

    +

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

    -  \pagestyle{fancy}% - 
      \lhead{\thepage}% - 
      \lfoot{\glsxtrbookindexfirstmark}% - 
      \cfoot{}% - 
      \rfoot{\glsxtrbookindexlastmark}% +  \pagestyle{fancy}% + 
      \lhead{\thepage}% + 
      \lfoot{\glsxtrbookindexfirstmark}% + 
      \cfoot{}% + 
      \rfoot{\glsxtrbookindexlastmark}%
    -

    -

    +

    +

    -

    Top

    3.2 glossary-longextra package

    -

    As from version 1.37, the

    As from version 1.37, the glossaries-extra package comes with the supplementary package glossary-longextratabular instead. In order to do this you must use -



    \GlsLongExtraUseTabulartrue

    -

    +

    before the style is set. For example: @@ -7908,7 +7965,7 @@ class="cmti-10">before the style is set. For example: \GlsLongExtraUseTabulartrue  
    \setglossarystyle{long-name-desc}

    -

    or +

    or @@ -7917,52 +7974,52 @@ class="cmti-10">before the style is set. For example: \GlsLongExtraUseTabulartrue  
    \printunsrtglossary[style={long-name-desc}]

    -

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


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


    \glslongextraTabularVAlign

    -

    +

    The default definition is c. -

    The column titles are formatted according to: -


    The column titles are formatted according to: +


    \glslongextraHeaderFmt{text}

    -

    +

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

    The name column has the title given by

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



    \glslongextraNameAlign

    -

    +

    which expands to l (left) by default. -

    The symbol column (where applicable) has the title given by

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



    \glslongextraSymbolAlign

    -

    +

    which expands to c (centred) by default. -

    The location list column (where applicable) has the title given by

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



    \glslongextraLocationAlign

    -

    +

    which expands to @@ -7971,20 +8028,20 @@ which expands to

    >{\raggedright}p{\glspagelistwidth}
    -

    by default. (Ragged-right paragraph,

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

    The description column has the title given by

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



    \glslongextraDescAlign

    -

    +

    which expands to @@ -7993,22 +8050,22 @@ which expands to

    >{\raggedright}p{\glsdescwidth}
    -

    by default. (Ragged-right paragraph,

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

    Unlike the long styles provided by the base

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



    \glslongextraSetDescWidth

    -

    +

    This is used by the styles that have a name and description column. The value of \glsdescwidth is computed as: @@ -8023,7 +8080,7 @@ class="cmtt-10">\tabcolsep- W -

    +

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

    @@ -8038,14 +8095,14 @@ class="cmsy-10">}
    If any names in that column are larger than this, then you need to specify the widest name using: -



    \glslongextraSetWidest{widest name}

    -

    +

    or -



    \glslongextraUpdateWidest{text}

    -

    +

    These work like the analogous commands \glssetwidest and \glsupdatewidest @@ -8070,7 +8127,7 @@ class="cmtt-10">bib2gls’s set-widest option. If you have the entry counter enabled, you will need to include this with the name for the extra material to be taken into account. -

    The name isn’t shown for child entries by default, but if you change this and you +

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



    \glslongextraUpdateWidestChild{level}{text}

    -

    +

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

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

    -

    If you prefer to set an explicit width for the description column then you need to +

    +

    If you prefer to set an explicit width for the description column then you need to redefine \glslongextraSetDescWidth. For example: @@ -8108,17 +8165,17 @@ class="cmtt-10">\glslongextraSetDescWidth. For example:

    \renewcommand{\glslongextraSetDescWidth}{% - 
      \setlength{\glsdescwidth}{0.6\linewidth}% + 
      \setlength{\glsdescwidth}{0.6\linewidth}%  
    }
    -

    -

    The styles that have a name, symbol and description,

    +

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



    \glslongextraSymSetDescWidth

    -

    +

    This first uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and @@ -8132,28 +8189,28 @@ you can redefine this command. For example:

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

    or +

    or

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

    -

    For the styles that have a name, description and location column,

    +

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



    \glslongextraLocSetDescWidth

    -

    +

    This uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and @@ -8163,13 +8220,13 @@ class="cmtt-10">\glsdescwidth. You can redefine this command to set both \glsdescwidth and \glspagelistwidth if appropriate. -

    For the styles that have a name, description, symbol and location column, +

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



    \glslongextraSymLocSetDescWidth

    -

    +

    This uses \glslongextraSymSetDescWidth and then subtracts 2\tabcolsep and @@ -8177,13 +8234,13 @@ class="cmtt-10">\tabcolsep and class="cmtt-10">\glspagelistwidth from \glsdescwidth. Again, you can redefine this command to explicitly set both lengths. -

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


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


    \glslongextraNameFmt{label}

    -

    +

    This does

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

    The top-level description is formatted according to: -


    The top-level description is formatted according to: +


    \glslongextraDescFmt{label}

    -

    +

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

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


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


    \glslongextraSymbolFmt{label}

    -

    +

    This just does \glossentrysymbol{label}. -

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


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


    \glslongextraLocationFmt{label}{locations}

    -

    +

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

    The child entries have their name formatted according to: -


    The child entries have their name formatted according to: +


    \glslongextraSubNameFmt{level}{label}

    -

    +

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

    @@ -8260,34 +8317,34 @@ class="cmsy-10">}
    This includes the sub-entry counter (if enabled) and the target but doesn’t show the name. The child description is formatted according to: -



    \glslongextraSubDescFmt{level}{label}

    -

    +

    which defaults to just \glslongextraDescFmt{label} -

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


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


    \glslongextraSubSymbolFmt{level}{label}

    -

    +

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

    The styles that have a location list column format the list for child entries +

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



    \glslongextraSubLocationFmtlevellabel}{locations}

    -

    +

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

    The letter group headings are formatted according to: -


    The letter group headings are formatted according to: +


    \glslongextraGroupHeading{n}{label}

    -

    +

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

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

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

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

    This ignores the first argument and just puts the group title in the first column +

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

    Remember that you can also adjust the styles through category attributes. The +

    Remember that you can also adjust the styles through category attributes. The name column’s title is given by \entryname, the description column’s title is given by nonumberlist option). The name is shown in the first column and the description in the second. -

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


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


    \glslongextraNameDescHeader

    -

    +

    This essentially uses the same code as for longragged-booktabs but makes it @@ -8367,16 +8424,16 @@ class="cmss-10">longragged-booktabs\glslongextraNameDescTabularFooter\endfoot

    -

    where: -


    where: +


    \glslongextraNameDescTabularHeader

    -

    +

    sets up the header and -



    \glslongextraNameDescTabularFooter

    -

    +

    sets up the footer. If you have setup the tabulartabular environment (and \glslongextraNameDescHeader isn’t used). -

    For example, to simply remove the header and footer (for the default

    For example, to simply remove the header and footer (for the default longtable @@ -8399,7 +8456,7 @@ class="cmss-10">longtable \renewcommand{\glslongextraNameDescHeader}{}

    -

    Or to change the name alignment to centred: +

    Or to change the name alignment to centred: @@ -8407,7 +8464,7 @@ class="cmss-10">longtable \renewcommand{\glslongextraNameAlign}{c}

    -

    +

    long-name-desclongtable header is given by: -



    \glslongextraNameDescLocationHeader

    -

    +

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



    \glslongextraNameDescLocationTabularHeader

    -

    +

    and -



    \glslongextraNameDescLocationTabularFooter

    -

    +

    longtable header is formatted according to: -



    \glslongextraDescNameHeader

    -

    +

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



    \glslongextraDescNameTabularHeader

    -

    +

    and -



    \glslongextraDescNameTabularFooter

    -

    +

    longtable



    \glslongextraLocationDescNameHeader

    -

    +

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



    \glslongextraLocationDescNameTabularHeader

    -

    +

    and -



    \glslongextraLocationDescNameTabularFooter

    -

    +

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

    The

    The longtable header row is produced with: -



    \glslongextraNameDescSymHeader

    -

    +

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



    \glslongextraNameDescSymTabularHeader

    -

    +

    and -



    \glslongextraNameDescSymTabularFooter

    -

    +

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

    The

    The longtable header row is produced with: -



    \glslongextraNameDescSymLocationHeader

    -

    +

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



    \glslongextraNameDescSymLocationTabularHeader

    -

    +

    and -



    \glslongextraNameDescSymLocationTabularFooter

    -

    +

    @@ -8570,24 +8627,24 @@ class="cmss-10">long-name-desc-symlongtable header row is given by: -



    \glslongextraNameSymDescHeader

    -

    +

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



    \glslongextraNameSymDescTabularHeader

    -

    +

    and -



    \glslongextraNameSymDescTabularFooter

    -

    +

    long-name-desc-sym-loclongtable header row is given by: -



    \glslongextraNameSymDescLocationHeader

    -

    +

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



    \glslongextraNameSymDescLocationTabularHeader

    -

    +

    and -



    \glslongextraNameSymDescLocationTabularFooter

    -

    +

    longtable header row is given by: -



    \glslongextraSymDescNameHeader

    -

    +

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



    \glslongextraSymDescNameTabularHeader

    -

    +

    and -



    \glslongextraSymDescNameTabularFooter

    -

    +

    @@ -8658,24 +8715,24 @@ class="cmss-10">long-loc-sym-desc-namelongtable header row is given by: -



    \glslongextraLocationSymDescNameHeader

    -

    +

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



    \glslongextraLocationSymDescNameTabularHeader

    -

    +

    and -



    \glslongextraLocationSymDescNameTabularFooter

    -

    +

    longtable header row is given by: -



    \glslongextraDescSymNameHeader

    -

    +

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



    \glslongextraDescSymNameTabularHeader

    -

    +

    and -



    \glslongextraDescSymNameTabularFooter

    -

    +

    long-loc-desc-sym-namelongtable header row is given by: -



    \glslongextraLocationDescSymNameHeader

    -

    +

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



    \glslongextraLocationDescSymNameTabularHeader

    -

    +

    and -



    \glslongextraLocationDescSymNameTabularFooter

    -

    +

    -

    +

    -

    Top

    3.3 glossary-topic package

    -

    As from version 1.40, the

    As from version 1.40, the glossaries-extra package comes with the supplementary package glossary-topicmulticols environment. The environment name is supplied in the value of the command: -



    \glstopicColsEnv

    -

    +

    You can change this to the starred form. For example: @@ -8799,24 +8856,24 @@ class="cmtt-10">\glstopicColsEnv


    \renewcommand{\glstopicColsEnv}{multicols*}
    -

    The number of columns is given by the command: -


    The number of columns is given by the command: +


    \glstopicCols

    -

    +

    The default value is 2.

    -

    Both styles use the following commands. -


    Both styles use the following commands. +


    \glstopicParIndent

    -

    +

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



    \glstopicSubIndent

    -

    +

    This command is a length that’s used to calculate the hanging indentation for sub-entries. The level 1 sub-entries don’t indent the name. Level n sub-entries have @@ -8826,20 +8883,20 @@ class="cmsy-10">- 1)×\glstopicSubIndent. The hanging indent depends on whether or not a widest name has been set for the level. -



    \glstopicInit

    -

    +

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

    Although the styles don’t support letter groups by default, if you have many +

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



    \glstopicGroupHeading{group label}

    -

    +

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

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

    Remember that if you use

    Remember that if you use bib2gls, you will need the --group (or -g) switch to support this. -



    \glstopicItem{label}{location list}

    -

    +

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



    \glstopicPreSkip

    -

    +

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



    \glstopicMarker{label}

    -

    +

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



    \glstopicTitle{label}

    -

    +

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



    \glstopicTitleFont{text}

    -

    +

    This uses a bold, large font by default. -

    If the entry has the description key set (tested with

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



    \glstopicMidSkip

    -

    +

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



    \glstopicDesc{label}

    -

    +

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

    A paragraph break followed by: -


    A paragraph break followed by: +


    \glstopicPostSkip

    -

    +

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



    \glstopicLoc{label}{location list}

    -

    +

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

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


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


    \glstopicAssignSubIndent{level}

    -

    +

    This uses: -



    \glstopicAssignWidest{level}

    -

    +

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

    The sub-entry has its information displayed using: -


    The sub-entry has its information displayed using: +


    \glstopicSubItem{levellabel}{location}

    -

    +

    This encapsulates the name with: -



    \glstopicSubNameFont{text}

    -

    +

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



    \glstopicSubItemSep

    -

    +

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



    \glstopicSubItemBox{level}{text}

    -

    +

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

    This is followed by the symbol in parentheses if set. Then, if the description is set, +

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



    \glstopicSubPreLocSep

    -

    +

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

    Finally the location list is displayed using: -


    Finally the location list is displayed using: +


    \glstopicSubLoc{label}{location}

    -

    +

    which just does ⟨location⟩ by default.

    -

    -

    +

    Top

    4. Abbreviations

    -

    The new abbreviation system provided by

    The new abbreviation system provided by glossaries-extra is more flexible than the acronym handling provided by the base glossaries package. The @@ -9039,7 +9096,7 @@ class="cmtt-10">\gls (and its variants) displays the desired output. See the file sample-abbr-styles.pdf for samples of all provided abbreviation styles. -

    -

    The

    The first use \gls has the footnote marker after the inserted material “EX’spostfootnote\footnote is in the post-link hook. -

    There are some instances where

    There are some instances where \glstext can be useful. It’s used internally by \glsfmttext\glsfmttext. -

    Abbreviations include acronyms (words formed from initial letters, such as +

    Abbreviations include acronyms (words formed from initial letters, such as “laser”), initialisms (initial letters of a phrase, such as “html”, that aren’t pronounced as words) and contractions (where parts of words are omitted, often replaced by an apostrophe, such as “don’t”). The “acronym” code provided by the @@ -9118,10 +9175,10 @@ to be described for readers unfamiliar with the term). They are therefore more like a regular term, which may or may not require a description in the glossary. -

    The

    The glossaries-extra package corrects this misnomer, and provides better abbreviation handling, with -



    \newabbreviation[optionsshort}{long}

    -

    -

    This sets the

    +

    This sets the category key to abbreviation by default, but that value may be @@ -9156,7 +9213,7 @@ href="#sec:categories">§6 Categories for further details. -

    See

    See §2.8 Nested Links regarding the pitfalls of using commands like long⟩. -

    Make sure that you set the category attributes before defining new abbreviations +

    Make sure that you set the category attributes before defining new abbreviations or they may not be correctly applied.
    -

    -

    The

    +

    The \newacronym command provided by the glossaries package is redefined by @@ -9187,7 +9244,7 @@ class="cmtt-10">acronym (see also href="#sec:acronymmods">§2.9 Acronym Style Modifications) so -



    \newacronym[optionsshort}{long}

    -

    +

    is now equivalent @@ -9221,7 +9278,7 @@ class="cmtt-10">{⟨long}
    -

    The

    The \newabbreviation command is superficially similar to the glossaries package’s abbreviationglossaries package, although they may produce similar results.) -

    The way the abbreviations are displayed by commands like

    The way the abbreviations are displayed by commands like \gls varies according to the abbreviation style. The styles are set according to the entry’s category so, unlike the base glossaries package, you can have different abbreviation styles within the same glossary. -

    There are two types of full forms. The display full form, which is used on +

    There are two types of full forms. The display full form, which is used on first use by commands like short-footnote, the display and inline full forms are different. -

    These formatting commands aren’t stored in the

    These formatting commands aren’t stored in the short, shortplural\glsxtrlong and the case-changing variants don’t use \glsfirstlongfont. -

    You can apply the formatting command used for the short form to some arbitrary +

    You can apply the formatting command used for the short form to some arbitrary text using -



    \glsuseabbrvfont{text}

    -

    +

    where ⟨category⟩ is the category label that identifies the abbreviation style. Similarly for the formatting command use by the long form: -



    \glsuselongfont{text}{category}

    -

    -

    You can’t use the acronym commands provided by the base package with the new +

    +

    You can’t use the acronym commands provided by the base package with the new abbreviations provided by the glossaries-extra package. The style commands that replace acronymlists\forallacronyms command, which iterates over all acronym lists, should be replaced with: -



    \forallabbreviationlists{cs}{body}

    -

    +

    -

    Top

    4.1 Tagging Initials

    -

    If you would like to tag the initial letters in the long form such that those letters are +

    If you would like to tag the initial letters in the long form such that those letters are underlined in the glossary but not in the main part of the document, you can use -



    \GlsXtrEnableInitialTagging{categories}{cs}

    -

    +

    before you define your abbreviations. -

    This command (robustly) defines ⟨

    This command (robustly) defines ⟨cs⟩ (a control sequence) to accept a single argument, which is the letter (or letters) that needs to be tagged. The normal behaviour of this command within the document is to simply do its argument, but in @@ -9361,19 +9418,19 @@ href="#catattr.tagging">tagging attribute set to “true”. For those cases it will use -



    \glsxtrtagfont{text}

    -

    +

    This command defaults to \underline{text} but may be redefined as required. -

    The control sequence ⟨

    The control sequence ⟨cs⟩ can’t already be defined when used with the unstarred version of \GlsXtrEnableInitialTagging for safety reasons. The starred @@ -9382,7 +9439,7 @@ class="cmti-10">cs⟩. As with redefining any commands, ensure that you don’t redefine something important. In fact, just forget the existence of the starred version and let’s pretend I didn’t mention it. -

    The first argument of

    The first argument of \GlsXtrEnableInitialTagging is a comma-separated list of category names. The §6 Categories) but this must be done before the glossary is displayed. -

    The accompanying sample file

    The accompanying sample file sample-mixtures.tex uses initial tagging for both the acronymabbreviation \GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}

    -

    This defines the command

    This defines the command \itag which can be used in the definitions. For example: @@ -9416,35 +9473,35 @@ example:

    \newacronym - 
     [description={a system for detecting the location and - 
     speed of ships, aircraft, etc, through the use of radio - 
     waves}% description of this term - 
     ] - 
     {radar}% identifying label - 
     {radar}% short form (i.e. the word) - 
     {\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging} + 
     [description={a system for detecting the location and + 
     speed of ships, aircraft, etc, through the use of radio + 
     waves}% description of this term + 
     ] + 
     {radar}% identifying label + 
     {radar}% short form (i.e. the word) + 
     {\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging}  
    \newabbreviation{xml}{XML} - 
     {e\itag{x}tensible \itag{m}arkup \itag{l}anguage} + 
     {e\itag{x}tensible \itag{m}arkup \itag{l}anguage}
    -

    The underlining of the tagged letters only occurs in the glossary and then only for +

    The underlining of the tagged letters only occurs in the glossary and then only for entries with the tagging attribute set. -

    +

    -

    Top

    4.2 Abbreviation Styles

    -

    The abbreviation style must be set before abbreviations are defined using: -


    The abbreviation style must be set before abbreviations are defined using: +


    \setabbreviationstyle[category]{style-name}

    -

    +

    where ⟨style-name⟩ is the name of the style and ⟨category⟩ is the category label @@ -9466,11 +9523,11 @@ class="cmss-10">regular attribute to true. -

    If you want to apply different styles to groups of abbreviations, assign a +

    If you want to apply different styles to groups of abbreviations, assign a different category to each group and set the style for the given category.
    -

    -

    Note that

    +

    Note that \setacronymstyle is disabled by glossaries-extra. Use

    @@ -9491,7 +9548,7 @@ href="#sec:acronymmods">§2.9 Acronym Style Modifications). However the original acronym interface is incompatible with all the commands described here. -

    Abbreviations can be used with the standard

    Abbreviations can be used with the standard glossaries commands, such as \gls, @@ -9501,7 +9558,7 @@ class="cmtt-10">\acrshort\acronymfont). The short form can be produced with: -



    \glsxtrshort[optionslabel}[insert]

    -

    +

    (Use this instead of \acrshort.) -

    The long form can be produced with -


    The long form can be produced with +


    \glsxtrlong[optionslabel}[insert]

    -

    +

    (Use this instead of \acrlong.) -

    The

    The inline full form can be produced with -



    \glsxtrfull[optionslabel}[insert]

    -

    +

    (This this instead of \acrfull.) -

    In general, it’s best not to use commands like

    In general, it’s best not to use commands like \glsfirst for abbreviations, especially if you use the ⟨insert⟩ optional argument. Use either \gls (possibly with a reset) or \glsxtrfull.
    -

    -

    As mentioned earlier, the inline full form may not necessarily match the format +

    +

    As mentioned earlier, the inline full form may not necessarily match the format used on first use with short-nolongfirst use, but the full form will display the long form followed by the short form in parentheses. -

    If you want to use an abbreviation in a chapter or section title, use the +

    If you want to use an abbreviation in a chapter or section title, use the commands described in §5 Entries in Sectioning Titles, Headers, Captions and Contents instead.
    -

    -

    The arguments ⟨

    +

    The arguments ⟨options⟩, ⟨label⟩ and ⟨insert⟩ are the same as for commands such as \glstext. There are also analogous case-changing commands: -

    First letter upper case short form: -


    First letter upper case short form: +


    \Glsxtrshort[optionslabel}[insert]

    -

    -

    First letter upper case long form: -


    +

    First letter upper case long form: +


    \Glsxtrlong[optionslabel}[insert]

    -

    -

    First letter upper case inline full form: -


    +

    First letter upper case inline full form: +


    \Glsxtrfull[optionslabel}[insert]

    -

    -

    All upper case short form: +

    +

    All upper case short form: -



    \GLSxtrshort[optionslabel}[insert]

    -

    -

    All upper case long form: -


    +

    All upper case long form: +


    \GLSxtrlong[optionslabel}[insert]

    -

    -

    All upper case inline full form: -


    +

    All upper case inline full form: +


    \GLSxtrfull[optionslabel}[insert]

    -

    -

    Plural forms are also available. -

    Short form plurals: -


    +

    Plural forms are also available. +

    Short form plurals: +


    \glsxtrshortpl[optionslabel}[insert]

    -

    -


    +


    \Glsxtrshortpl[optionslabel}[insert]

    -

    -


    +


    \GLSxtrshortpl[optionslabel}[insert]

    -

    -

    Long form plurals: -


    +

    Long form plurals: +


    \glsxtrlongpl[optionslabel}[insert]

    -

    -


    +


    \Glsxtrlongpl[optionslabel}[insert]

    -

    -


    +


    \GLSxtrlongpl[optionslabel}[insert]

    -

    -

    Full form plurals: -


    +

    Full form plurals: +


    \glsxtrfullpl[optionslabel}[insert]

    -

    -


    +


    \Glsxtrfullpl[optionslabel}[insert]

    -

    -


    +


    \GLSxtrfullpl[optionslabel}[insert]

    -

    -

    Be careful about using

    +

    Be careful about using \glsentryfull, \Glsentryfull, \glsentryfullpl and @@ -9754,13 +9811,13 @@ class="cmtt-10">\glsentryshort etc.
    -

    -

    +

    +

    -

    Top

    4.3 Shortcut Commands

    -

    The abbreviation shortcut commands can be enabled using the

    The abbreviation shortcut commands can be enabled using the shortcuts=abbreviationstable 4.1. -


    @@ -9798,7 +9855,7 @@ id="TBL-3-2" />Shortcut Shortcut Shortcut (shortcuts=abbreviation=abbreviations)) style="vertical-align:baseline;" id="TBL-3-3-">\ab \ac \cgls\abp \acp \cglspl\as \acs \glsxtrshort\asp \acsp \glsxtrshortpl\al \acl \glsxtrlong\alp \aclp \glsxtrlongpl\af \acf \glsxtrfull\afp \acfp \glsxtrfullpl\Ab \Ac \cgls\Abp \Acp \cglspl\As \Acs \Glsxtrshort\Asp \Acsp \Glsxtrshortpl\Al \Acl \Glsxtrlong\Alp \Aclp \Glsxtrlongpl\Af \Acf \Glsxtrfull\Afp \Acfp \Glsxtrfullpl\AB \AC \cGLS\ABP \ACP \cGLSpl\AS \ACS \GLSxtrshort\ASP \ACSP \GLSxtrshortpl\AL \ACL \GLSxtrlong\ALP \ACLP \GLSxtrlongpl\AF \ACF \GLSxtrfull\AFP \ACFP \GLSxtrfullpl\newabbr \newabbr \newabbreviation
    -

    Top

    4.4 Predefined Abbreviation Styles

    -

    There are two types of abbreviation styles: those that treat the abbreviation as a +

    There are two types of abbreviation styles: those that treat the abbreviation as a regular entry (so that \gls uses \gls uses \glsxtrgenabbrvfmt). -

    The regular entry abbreviation styles set the

    The regular entry abbreviation styles set the regular attribute to “true” for the @@ -10138,7 +10195,7 @@ class="cmss-10">long\glsxtrshort. -

    The other abbreviation styles don’t modify the

    The other abbreviation styles don’t modify the regular attribute. The \glsxtrfullformat that are defined by the style). -

    In both cases, the

    In both cases, the first use of \gls may not match the text produced by \glsfirst (and likewise for the plural and case-changing versions). -

    The sample file

    The sample file sample-abbr-styles.tex demonstrates all predefined styles described here. -

    For the “sc” styles that use

    For the “sc” styles that use \textsc, be careful about your choice of fonts as some only have limited support. For example, you may not be able to combine bold @@ -10177,8 +10234,8 @@ class="cmss-10">fontenc package with the T1 option or something similar.
    -

    -

    Many of the styles have helper commands in the form

    +

    Many of the styles have helper commands in the form \glsxtr...name and \glsxtr...sort that are expanded within the \theregister⟩. It’s essential that these expand when the abbreviation is defined so don’t hide them behind no-expandable content if you redefine these helper commands. -

    The parenthetical styles, such as

    The parenthetical styles, such as long-short, use -



    \glsxtrparen{text}

    -

    +

    to set the parenthetical material. This just puts parentheses around the text: (⟨text⟩). -

    The basic abbreviation styles, such as

    The basic abbreviation styles, such as long-short and short-long use -



    \glsabbrvdefaultfont{text}

    -

    +

    for the short form. This just does ⟨text⟩ by default. (That is, no font change is applied.) On first use, -



    \glsfirstabbrvdefaultfont{text}

    -

    +

    is used instead. By default, this just does \glsabbrvdefaultfont. The long form is formatted according to -



    \glslongdefaultfont{text}

    -

    +

    which again just does ⟨text⟩ (no font change). On first use, -



    \glsfirstlongdefaultfont{text}

    -

    +

    is used instead. This just does \glslongdefaultfont. The plural suffix used for the short form is given by -



    \glsxtrabbrvpluralsuffix

    -

    +

    which defaults to \glspluralsuffix. -

    The small-cap styles, such as

    The small-cap styles, such as long-short-sc and short-sc-long, use -



    \glsabbrvscfont{text}

    -

    +

    which uses \textsc.4.1 On first use -



    \glsfirstabbrvscfont{text}

    -

    +

    is used instead. This uses \glsabbrvscfont by default. So redefine, \glsabbrvscfont to change first and subsequent uses or \glsfirstabbrvscfont to change just the first use. -

    The long form for the small-cap styles uses

    The long form for the small-cap styles uses \glslongdefaultfont or \glsfirstlongdefaultfont, as with the basic style. The suffix is given by -



    \glsxtrscsuffix

    -

    +

    This is defined as @@ -10309,7 +10366,7 @@ This is defined as

    \newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}}
    -

    The

    The \glstextup command is provided by glossaries and is used to switch off the @@ -10329,45 +10386,45 @@ attributes. See §6 Categories for further details.) -

    The small styles, such as

    The small styles, such as long-short-sm and short-sm-long, use -



    \glsabbrvsmfont{text}

    -

    +

    which uses \textsmaller. (This requires the relsizes package, which isn’t loaded by glossaries-extra, so must be loaded explicitly.) On first use -



    \glsfirstabbrvsmfont{text}

    -

    +

    is used instead. This uses \glsabbrvsmfont by default. -

    The long form for the smaller styles uses

    The long form for the smaller styles uses \glslongdefaultfont or \glsfirstlongdefaultfont, as with the basic style. The suffix is given by -



    \glsxtrsmsuffix

    -

    +

    which defaults to just \glsxtrabbrvpluralsuffix. -

    The “short-em” (emphasize short) styles, such as

    The “short-em” (emphasize short) styles, such as long-short-em or short-em-long, use -



    \glsabbrvemfont{text}

    -

    +

    On first use -



    \glsfirstabbrvemfont{text}

    -

    +

    is used instead. This uses \glsabbrvemfont by default. The suffix is given by -



    \glsxtremsuffix

    -

    +

    which defaults to just \glsxtrabbrvpluralsuffix. The long form is as for the basic style unless the style is a “long-em” style. -

    The “long-em” (emphasize long) styles, such as

    The “long-em” (emphasize long) styles, such as long-em-short-em or short-em-long-em, use -



    \glsfirstlongemfont{long-form}

    -

    +

    instead of \glsfirstlongdefaultfont{long-form} and -



    \glslongemfont{long-form}

    -

    +

    instead of \glslongdefaultfont{long-form}. The first form \glsfirstlongemfont is initialised to use \glslongemfont. -

    The user styles have similar commands: -


    The user styles have similar commands: +


    \glsabbrvuserfont{text}

    -

    +

    for the short form, -



    \glsfirstabbrvuserfont{text}

    -

    +

    for the first use short form, -



    \glslonguserfont{text}

    -

    +

    for the long form, -



    \glsfirstlonguserfont{text}

    -

    +

    for the first use long form, and -



    \glsxtrusersuffix

    -

    +

    for the short plural suffix. -

    Similarly for the hyphen styles: -


    Similarly for the hyphen styles: +


    \glsabbrvhyphenfont{text}

    -

    +

    for the short form, -



    \glsfirstabbrvhyphenfont{text}

    -

    +

    for the first use short form, -



    \glslonghyphenfont{text}

    -

    +

    for the long form, -



    \glsfirstlonghyphenfont{text}

    -

    +

    for the first use long form, and -



    \glsxtrhyphensuffix

    -

    +

    for the short plural suffix. -

    Similarly for the “only” styles, such as

    Similarly for the “only” styles, such as long-only-short-only: -



    \glsabbrvonlyfont{text}

    -

    +

    for the short form, -



    \glsfirstabbrvonlyfont{text}

    -

    +

    for the first use short form, -



    \glslongonlyfont{text}

    -

    +

    for the long form, -



    \glsfirstlongonlyfont{text}

    -

    +

    for the first use long form, and -



    \glsxtronlysuffix

    -

    +

    for the short plural suffix. -

    Note that by default inserted material (provided in the final optional argument of +

    Note that by default inserted material (provided in the final optional argument of commands like \gls), is placed outside the font command in the predefined styles. To move it inside, use: -



    \glsxtrinsertinsidetrue

    -

    +

    This applies to all the predefined styles. For example: @@ -10558,17 +10615,17 @@ This applies to all the predefined styles. For example:  
    \renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}}  
    \glsxtrinsertinsidetrue

    -

    This will make the long form and the inserted text emphasized, whereas the default +

    This will make the long form and the inserted text emphasized, whereas the default (without \glsxtrinsertinsidetrue) would place the inserted text outside of the emphasized font. -

    Note that for some styles, such as the

    Note that for some styles, such as the short-long, the inserted text would be placed inside the font command for the short form (rather than the long form in the above example). -

    Remember that

    Remember that \textsc renders lowercase letters as small capitals. Uppercase letters are rendered as normal uppercase letters, so if you specify the short form in @@ -10582,8 +10639,8 @@ convert its argument to lowercase. For example:

    \renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
    -

    -

    If you want to easily switch between the “sc” and “sm” styles, you may find it +

    +

    If you want to easily switch between the “sc” and “sm” styles, you may find it easier to redefine this command to convert case: @@ -10593,14 +10650,14 @@ easier to redefine this command to convert case: \renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}}  
    \renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}}

    -

    -

    Some of the styles use -


    +

    Some of the styles use +


    \glsxtrfullsep{label}

    -

    +

    as a separator between the long and short forms. This is defined as a space by default, but may be changed as required. For example: @@ -10610,7 +10667,7 @@ default, but may be changed as required. For example:

    \renewcommand*{\glsxtrfullsep}[1]{~}
    -

    or +

    or @@ -10618,8 +10675,8 @@ default, but may be changed as required. For example:

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

    -

    The new naming scheme for abbreviation styles is as follows:

    +

    +

    The new naming scheme for abbreviation styles is as follows:

    • field1⟩[field2⟩[-modifier2⟩][-user] -

      This is for the parenthetical styles. The

      This is for the parenthetical styles. The -modifier⟩ parts may be omitted. These styles display ⟨field1⟩ or ⟨field2⟩ starts with “no” then that element is omitted from the display style (no parenthetical part) but is included in the inline style. -

      If the

      If the -modifier⟩ part is present, then the field has a font changing command applied to it. The special modifier -only indicates that field is only present according to whether or not the entry has been used. -

      If

      If post is present then ⟨field2⟩ is placed after the link-text using the post-link hook. -

      If the

      If the -user part is present, then the user1 value, if provided, is inserted into the parenthetical material . (The field used for the inserted material may be changed.) -

      Examples:

      +

      Examples:

      • \glsfirstabbrvhyphenfont on first
      • style-noreg -

        Some styles set the

        Some styles set the regular attribute. In some cases, there’s a version of the @@ -10730,7 +10787,7 @@ href="#abbrstyle.long-em-noshort-em-noreg">long-em-noshort-em-noreg style is a minor variation that style that doesn’t set the attribute. -

        There are a few “noshort” styles, such as

        There are a few “noshort” styles, such as long-hyphen-noshort-noreg, that have @@ -10748,7 +10805,7 @@ class="cmti-10">modifier1⟩]-[post]footnote -

        The display style uses ⟨

        The display style uses ⟨field1⟩ followed by a footnote with the other field in it. If post is present then the footnote is placed after the link-text using the post-link hook. The inline style does ⟨field1⟩ followed by the other field in parentheses. -

        If

        If -modifier1⟩ is present, ⟨field1⟩ has a font-changing command applied to it. -

        Examples:

        +

        Examples:

        • short-sc-postfootnote: short form in smallcaps with the long form in the footnote outside of the link-text.
        -

        Take care with the footnote styles. Remember that there are some situations +

        Take care with the footnote styles. Remember that there are some situations where \footnote doesn’t work.
        -

        +

      • style-desc -

        Like ⟨

        Like ⟨style⟩ but the description key must be provided when defining abbreviations with this style. -

        Examples:

        +

        Examples:

        -

        Not all combinations that fit the above syntax are provided. Pre-version 1.04 +

        Not all combinations that fit the above syntax are provided. Pre-version 1.04 styles that didn’t fit this naming scheme are either provided with a synonym (where the former name wasn’t ambiguous) or provided with a deprecated synonym (where the former name was confusing). The deprecated style names generate a warning using: -



        \GlsXtrWarnDeprecatedAbbrStyle{old-name}{new-name}

        -

        +

        where ⟨old-name⟩ is the deprecated name and ⟨new-name⟩ is the preferred name. You can suppress these warnings by redefining this command to do nothing. -

        +

        -

        Top

        4.4.1 Predefined Abbreviation Styles that Set the Regular Attribute

        -

        The following abbreviation styles set the

        The following abbreviation styles set the regular attribute to “true” for all categories @@ -10850,10 +10907,10 @@ href="#glo:firstuse">first use. The name is set to the short form through the command -



        \glsxtrshortnolongname

        -

        +

        (Similarly for the other shortmodifier\newacronym) for it to take effect. Make sure to \protect any formatting commands (or anything else that shouldn’t be expanded). -

        The

        The description is set to the long form. The inline full form displays ⟨short⟩ @@ -11021,10 +11078,10 @@ class="cmss-10">short-nolongname is set to the full form obtained by expanding -



        \glsxtrshortdescname

        -

        +

        (Similarly for the other shortmodifier\protect fragile and formatting commands and only redefin before \newabbreviation (or \newacronym). -

        The

        The description must be supplied by the user. You may prefer to use the \glsxtrshortlong⟩ (⟨short⟩). -

        The

        The sort key are set to the long form. The name key is also set to the long form, but this is done by expanding -



        \glsxtrlongnoshortdescname

        -

        +

        (Similarly for the other longmodifier-desc styles, unless indicated otherwise.) This command should only be redefined before abbreviations are defined, and any fragile or formatting commands within it need protecting. -

        The

        The description must be provided by the user. The predefined glossary styles won’t display the short form. You can use the post-description hook to @@ -11270,10 +11327,10 @@ class="cmss-10">sortname key is also set to the short form, but this is done by expanding -



        \glsxtrlongnoshortname

        -

        +

        (Similarly for other longmodifier-noshortmodifier⟩ styles, unless indicated otherwise.) This command should only be redefined before abbreviations are defined, and fragile or formatting commands should be protected. -

        The

        The description is set to the long form.

        @@ -11380,12 +11437,12 @@ href="#catattr.regular">regular attribute. -

        +

        -

        Top

        4.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute

        -

        The following abbreviation styles will set the

        The following abbreviation styles will set the regular attribute to “false” if it has @@ -11407,10 +11464,10 @@ class="cmss-10">sortname is also set to the short form through -



        \glsxtrlongshortname

        -

        +

        (Similarly for other longmodifiermodifier⟩ styles, unless indicated class="cmtt-10">\the\glslongtok and the short form can be referenced with \the\glsshorttok. -

        The

        The description is set to the long form. The long and short forms are separated by \glsxtrfull shows the long form followed by the short for The name field is obtained from -



        \glsxtronlyname

        -

        +

        Any redefinition of this command must come before the abbreviations are defined as it expands on definition. Make sure you protect any commands that shouldn’t be expanded. The long form can be referenced @@ -11520,10 +11577,10 @@ class="cmss-10">long-only-short-onlyname field is obtained from -



        \glsxtronlydescname

        -

        +

        Any redefinition of this command must come before the abbreviations are defined as it expands on definition. Make sure you protect any commands that shouldn’t be expanded. The long form can be referenced @@ -11555,10 +11612,10 @@ class="cmss-10">long-short style but additional information can be inserted into the parenthetical material. This checks the value of the field given by -



        \glsxtruserfield

        -

        +

        (which defaults to useri) using \ifglshasfieldlong⟩ (⟨short⟩, ⟨field-value⟩). The format is governed by -



        \glsxtruserparen{text}{label}

        -

        +

        where ⟨text⟩ is the short form (for the \glsxtrparendescription is set to -



        \glsuserdescription{long}{label}

        -

        +

        The default definition ignores the ⟨label⟩ and encapsulates ⟨long⟩ with \glslonguserfont. -

        The

        The name is obtained by expanding \glsxtrlongshortname (see above). The @@ -11637,40 +11694,40 @@ class="cmtt-10">} href="#abbrstyle.short-long-user">short-long-user style. -

        For example: +

        For example:

        \setabbreviationstyle[acronym]{long-short-user} -  
        \newacronym{tug}{TUG}{\TeX\ User Group} +  
        \newacronym{tug}{TUG}{\TeX\ User Group}  
        \newacronym -  
         [user1={German Speaking \TeX\ User Group}] -  
         {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V} +  
         [user1={German Speaking \TeX\ User Group}] +  
         {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V}
        -

        On first use,

        On first use, \gls{tug} will appear as:

        -

        TeX User Group (TUG)

        -

        whereas

        TeX User Group (TUG)

        +

        whereas \gls{dante} will appear as:

        -

        Deutschsprachige Anwendervereinigung TeX e.V (DANTE, - German Speaking TeX User Group)

        -

        The short form is formatted according to -


        +

        The short form is formatted according to +


        \glsabbrvuserfont{text}

        -

        +

        and the plural suffix is given by -



        \glsxtrusersuffix

        -

        -

        These may be redefined as appropriate. For example, if you want a smallcaps +

        +

        These may be redefined as appropriate. For example, if you want a smallcaps style, you can just set these commands to those used by the long-short-sclong-short-sc\renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix}

        -

        +

        long⟩ (⟨short⟩). Before version 1.04, this was incorrectly set to the short form. If you want to revert back to this you can redefine -



        \glsxtrlongshortdescsort

        -

        +

        For example: @@ -11743,7 +11800,7 @@ class="cmtt-10">\glsxtrlongshortdescsort


        \renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok}
        -

        The

        The description must be supplied by the user. The long and short forms are separated by \glsxtrfullsep. The name field is obtained from -



        \glsxtrlongshortdescname

        -

        +

        (Similarly for other longmodifierlong-short-username key is obtained from -



        \glsxtrlongshortuserdescname

        -

        +

        Again, this should only be redefined before \newabbreviation (or \newacronym), and fragile and formatting commands need protecting. -

        The

        The description key must be supplied in the optional argument of short-long-user style. -

        The

        The name field is obtained from -



        \glsxtrshortlongname

        -

        +

        (Similarly for other shortmodifier\glsxtruserparenname field is obtained by expanding -



        \glsxtrshortlongname

        -

        +

        Again, this should only be redefined before \newabbreviation (or \glsxtrfullsep. The name field is obtained from -



        \glsxtrshortlongdescname

        -

        +

        (Similarly for other shortmodifiername



        \glsxtrshortlonguserdescname

        -

        +

        Again, this should only be redefined before \newabbreviation (or \newacronym), and fragile and formatting commands need protecting. -

        The

        The description key must be supplied in the optional argument of nohyperfirsthyperref package is used). -

        The inline full form uses the ⟨

        The inline full form uses the ⟨short⟩ (⟨long⟩) style. The namedescriptionname key is obtained by expanding: -



        \glsxtrfootnotename

        -

        +

        (Similarly for other shortmodifierfootnote styles, unless class="cmtt-10">\newabbreviation (or \newacronym), and fragile or formatting commands should be protected from expansion. -

        As from version 1.05, all the footnote styles use: -


        As from version 1.05, all the footnote styles use: +


        \glsfirstlongfootnotefont{text}

        -

        +

        to format the long form on first use or for the full form and -



        \glslongfootnotefont{text}

        -

        +

        to format the long form elsewhere (for example, when used with \glsxtrlong). -

        As from version 1.07, all the footnote styles use: -


        As from version 1.07, all the footnote styles use: +


        \glsxtrabbrvfootnote{label}{long}

        -

        +

        By default, this just does \footnote} (the first argument is ignored). For

        \renewcommand{\glsxtrabbrvfootnote}[2]{% -  
          \footnote{\glshyperlink[#2]{#1}}% +  
          \footnote{\glshyperlink[#2]{#1}}%  
        }
        -

        or to include the short form with a hyperlink: +

        or to include the short form with a hyperlink:

        \renewcommand{\glsxtrabbrvfootnote}[2]{% -  
          \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}% +  
          \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}%  
        }
        -

        Note that I haven’t used commands like

        Note that I haven’t used commands like \glsxtrshort to avoid interference (see descriptionname field is obtained from: -



        \glsxtrfootnotedescname

        -

        +

        which defaults to ⟨short⟩ followed by ⟨long⟩ in parentheses, and the sort field is obtained from: -



        \glsxtrfootnotedescsort

        -

        +

        which defaults to just the short form. (Similarly for other short-[post]footnote-desc styles, unless indicated otherwise.) -

        Any redefinition of these commands must come before the abbreviations +

        Any redefinition of these commands must come before the abbreviations are defined as it expands on definition. Make sure you protect any commands that shouldn’t be expanded. The long form can be referenced with short-footnote\glsxtrpostlink⟨category to insert the + id="dx1-30194"> to insert the footnote after the link-text on first use. This will also defer the footnote \glsxtrifnextpunc. -

        The inline full form uses the ⟨

        The inline full form uses the ⟨short⟩ (⟨long⟩) style. The nameshort-long-user style but defers the parenthetical material to after the link-text. This means that you don’t have such a long hyperlink (which can cause - problems for the DVI LaTeX format) and it also means that the user supplied + problems for the DVI LaTeX format) and it also means that the user supplied material can include a hyperlink to another location. The name key is obtained @@ -12671,7 +12728,7 @@ href="#catattr.markwords">markwords category attribute. The full form is formatted using -



        \glsxtrlonghyphenshort{labelshort}{insert}

        -

        +

        where ⟨insert⟩ is the inserted material provided in the final optional argument of commands like name key is obtained from \glsxtrlongshortname. -

        Unlike the other ⟨

        Unlike the other ⟨long⟩ (⟨short⟩) type of styles, such as long-short

        -

        The space before the parenthetical material is actually given by +

        The space before the parenthetical material is actually given by \glsxtrfullsep{labelinsert⟩ may be moved into the formatting commands according to the conditional \ifglsxtrinsertinside. -

        For example, if

        For example, if ip is defined using: @@ -12737,9 +12794,9 @@ class="cmtt-10">ip is defined using:

        \glssetcategoryattribute{english}{markwords}{true}  
        \setabbreviationstyle[english]{long-hyphen-short-hyphen} -  
        \newabbreviation[category=english]{ip}{IP}{Internet Protocol} +  
        \newabbreviation[category=english]{ip}{IP}{Internet Protocol}
        -

        then +

        then @@ -12747,22 +12804,22 @@ class="cmtt-10">ip is defined using:

        \gls{ip}[-Adressen]
        -

        will do +

        will do

        -

        Internet-Protocol-Adressen (IP-Adressen)

        -

        on first use, whereas +

        Internet-Protocol-Adressen (IP-Adressen)

        +

        on first use, whereas

        - \gls{ip}[ Address] + \gls{ip}[ Address]
        -

        will do +

        will do

        -

        Internet Protocol Address (IP Address)

        -

        on first use. -

        Note that the hyphenation isn’t applied when using commands like +

        Internet Protocol Address (IP Address)

        +

        on first use. +

        Note that the hyphenation isn’t applied when using commands like \glsxtrlong. This means that @@ -12772,12 +12829,12 @@ class="cmtt-10">\glsxtrlong. This means that
        \glsxtrlong{ip}[-Adressen]
        -

        will do +

        will do

        -

        Internet Protocol-Adressen

        +

        Internet Protocol-Adressen

        -

        -

        If the

        +

        If the markwords attribute hadn’t been set, then the first use of @@ -12788,11 +12845,11 @@ class="cmss-10">markwords \gls{ip}[-Adressen]

        -

        would do +

        would do

        -

        Internet Protocol-Adressen (IP-Adressen)

        -

        instead. -

        If the inserted material ⟨

        Internet Protocol-Adressen (IP-Adressen)

        +

        instead. +

        -

        -

        If you want the short version in small-caps, you can just redefine +

        +

        If you want the short version in small-caps, you can just redefine \glsabbrvhyphenfont and \glsxtrhyphensuffix to use the small-caps @@ -12814,7 +12871,7 @@ class="cmtt-10">\glsxtrhyphensuffix to use the small-caps \renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont}  
        \renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix}

        -

        Similarly for other font-changing variations. +

        Similarly for other font-changing variations.

        long-hyphen-noshort-desc-noreglong-hyphen-short-hyphen-desc
        -

        New to version 1.17. This is similar to

        New to version 1.17. This is similar to long-hyphen-short-hyphen but the user @@ -12865,7 +12922,7 @@ class="cmtt-10">\glsxtrlongshortdescname. class="cmssbx-10">long-hyphen-postshort-hyphen

        -

        New to version 1.17. This is similar to

        New to version 1.17. This is similar to long-hyphen-short-hyphen but the @@ -12891,13 +12948,13 @@ class="cmtt-10">}⟨insert
        where -



        \glsxtrposthyphenshort{label}insert

        -

        +

        is in the post-link hook. This uses the format:
        insert⟩ (isnert⟩) -

        The singular short form is always used here, even with

        The singular short form is always used here, even with \glspl. (Unlike long-hyphen-long-hyphen.)
        -

        -

        The part in the link-text on first use: -


        +

        The part in the link-text on first use: +


        \glsxtrlonghyphen{longlabel}{insert}

        -

        +

        checks if ⟨insert⟩ starts with a hyphen. If it does, then \glsxtrwordsep is locally @@ -12939,15 +12996,15 @@ class="cmti-10">insert⟩ for this style without causing nested hyperlinks, but only for commands like \gls. -

        Don’t use

        Don’t use \gls in the ⟨insert⟩ part for commands like \glsxtrfull, \glsxtrshort or \glsxtrlong.
        -

        -

        The inline full display format used by commands like

        +

        The inline full display format used by commands like \glsxtrfull behaves differently to the first use of \gls with this style. It’s better @@ -12964,7 +13021,7 @@ class="cmtt-10">} if you want to ensure the full class="cmssbx-10">long-hyphen-postshort-hyphen-desc

        -

        New to version 1.17. This is similar to

        New to version 1.17. This is similar to long-hyphen-postshort-hyphen @@ -12984,7 +13041,7 @@ class="cmss-10">long-hyphen-short-hyphen, except that the short form is displayed first followed by the long form in parentheses. The full form is formatted using -



        \glsxtrshorthyphenlong{labellong}{insert}

        -

        +

        which behaves in an analogous way to \glsxtrlonghyphenshort. The name\glsxtrshortlongname. class="cmssbx-10">short-hyphen-long-hyphen-desc

        -

        New to version 1.17. This is similar to

        New to version 1.17. This is similar to short-hyphen-long-hyphen but the user @@ -13051,13 +13108,13 @@ class="cmtt-10">}⟨insert
        where -



        \glsxtrposthyphenlong{label}insert

        -

        +

        is in the post-link hook. These commands behave in an analogous manner to those used with name is obtained from \glsxtrshortlongname. -

        Don’t use

        Don’t use \gls in the ⟨insert⟩ part for commands like \glsxtrfull, \glsxtrshort or \glsxtrlong.
        -

        -

        The inline full display format used by commands like

        +

        The inline full display format used by commands like \glsxtrfull behaves differently to the first use of \gls with this style. It’s better @@ -13092,7 +13149,7 @@ class="cmtt-10">} if you want to ensure the full class="cmssbx-10">short-hyphen-postlong-hyphen-desc

        -

        New to version 1.17. This is similar to

        New to version 1.17. This is similar to short-hyphen-postlong-hyphen @@ -13103,13 +13160,13 @@ class="cmss-10">name\glsxtrshortlongdescname.

        -

        +

        -

        Top

        4.5 Defining New Abbreviation Styles

        -

        New abbreviation styles may be defined using: -


        New abbreviation styles may be defined using: +


        \newabbreviationstyle{namesetup}{fmts}

        -

        -

        where ⟨

        +

        where ⟨name⟩ is the name of the new style (as used in the mandatory argument of \setabbreviationstyle\newacronymstyle

        You can’t use styles defined by

        You can’t use styles defined by \newacronymstyle with glossaries-extra unless you have reverted glossaries package can’t be used with abbreviations defined with \newabbreviation.
        -

        -

        The ⟨

        +

        The ⟨setup⟩ argument deals with the way the entry is defined and may set attributes for the given abbreviation category. This argument should redefine -



        \CustomAbbreviationFields

        -

        +

        to set the entry fields including the name (defaults to the short form if omitted), @@ -13171,12 +13228,12 @@ class="cmss-10">pluraldescription. -

        \CustomAbbreviationFields is expanded by \newabbreviation so take care to protect commands that shouldn’t be expanded.
        -

        -

        For example, the

        +

        For example, the long-short style has the following in ⟨setup⟩:

        -  \renewcommand*{\CustomAbbreviationFields}{% - 
            name={\protect\glsabbrvfont{\the\glsshorttok}}, - 
            sort={\the\glsshorttok}, - 
            first={\protect\glsfirstlongfont{\the\glslongtok}% - 
             \protect\glsxtrfullsep{\the\glslabeltok}% - 
             \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% - 
            firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% - 
             \protect\glsxtrfullsep{\the\glslabeltok}% - 
             \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% - 
            plural={\protect\glsabbrvfont{\the\glsshortpltok}},% - 
            description={\the\glslongtok}}% -
        -

        Note that the     name={\protect\glsabbrvfont{\the\glsshorttok}}, + 
            sort={\the\glsshorttok}, + 
            first={\protect\glsfirstlongfont{\the\glslongtok}% + 
             \protect\glsxtrfullsep{\the\glslabeltok}% + 
             \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},% + 
            firstplural={\protect\glsfirstlongfont{\the\glslongpltok}% + 
             \protect\glsxtrfullsep{\the\glslabeltok}% + 
             \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% + 
            plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + 
            description={\the\glslongtok}}% +

        +

        Note that the first and firstplural are set even though they’re not used by \gls. -

        The basic styles, such as

        The basic styles, such as long-short, use commands like fmts⟩ argument even if they’re not used within \CustomAbbreviationFields. -

        The ⟨

        The ⟨setup⟩ argument may also redefine -



        \GlsXtrPostNewAbbreviation

        -

        +

        which can be used to assign attributes. (This will automatically be initialised to do nothing.) -

        For example, the

        For example, the short-footnote includes the following in ⟨setup⟩:

        -  \renewcommand*{\GlsXtrPostNewAbbreviation}{% - 
            \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% - 
            \glshasattribute{\the\glslabeltok}{regular}% - 
            {% - 
              \glssetattribute{\the\glslabeltok}{regular}{false}% - 
            }% - 
            {}% - 
          }% -
        -

        This sets the     \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + 
            \glshasattribute{\the\glslabeltok}{regular}% + 
            {% + 
              \glssetattribute{\the\glslabeltok}{regular}{false}% + 
            }% + 
            {}% + 
          }% +

        +

        This sets the nohyperfirst attribute to “true”. It also unsets the nohyperfirst attribute doesn’t get unset by other styles, so take care not to switch styles for the same category. -

        You can access the short, long, short plural and long plural values through the +

        You can access the short, long, short plural and long plural values through the following token registers. -

        Short value (defined by

        Short value (defined by glossaries): -



        \glsshorttok

        -

        -

        Short plural value (defined by

        +

        Short plural value (defined by glossaries-extra): -



        \glsshortpltok

        -

        +

        (This may be the default value or, if provided, the value provided by the user through the shortplural key in the optional argument of \newabbreviation.) -

        Long value (defined by

        Long value (defined by glossaries): -



        \glslongtok

        -

        -

        Long plural value (defined by

        +

        Long plural value (defined by glossaries-extra): -



        \glslongpltok

        -

        +

        (This may be the default value or, if provided, the value provided by the user through the longplural key in the optional argument of \newabbreviation.) -

        The short or long values may be modified by attributes (such as

        The short or long values may be modified by attributes (such as markwords). The @@ -13308,15 +13365,15 @@ above registers reflect the modification. If you want to access the original (unmodified) short or long form (as provided in the final two arguments of \newabbreviation), then use the commands: -



        \glsxtrorgshort

        -

        +

        for the short form and -



        \glsxtrorglong

        -

        +

        for the long form. (These may be useful for the sort key to avoid any formatting that @@ -13324,36 +13381,36 @@ class="cmss-10">sort

        There are two other registers available that are defined by

        There are two other registers available that are defined by glossaries: -



        \glslabeltok

        -

        +

        which contains the entry’s label and -



        \glskeylisttok

        -

        +

        which contains the values provided in the optional argument of \newabbreviation. -

        Remember put

        Remember put \the in front of the register command as in the examples above. The category label can be access through the command (not a register): -



        \glscategorylabel

        -

        +

        This may be used inside the definition of \GlsXtrPostNewAbbreviation. -

        If you want to base a style on an existing style, you can use -


        If you want to base a style on an existing style, you can use +


        \GlsXtrUseAbbrStyleSetup{name}

        -

        +

        where ⟨name⟩ is the name of the existing style. For example, the \GlsXtrUseAbbrStyleSetup{long-noshort-desc}

        -

        within ⟨

        within ⟨setup⟩. -

        The ⟨

        The ⟨fmts⟩ argument deals with the way the entry is displayed in the document. This argument should redefine the following commands. -

        The default suffix for the plural short form (if not overridden by the

        The default suffix for the plural short form (if not overridden by the shortplural key): -



        \abbrvpluralsuffix

        -

        +

        (Note that this isn’t used for the plural long form, which just uses the regular \glspluralsuffix.) -

        The font used for the short form on

        The font used for the short form on first use or in the full forms: -



        \glsfirstabbrvfont{text}

        -

        -

        The font used for the short form on subsequent use or through commands like +

        +

        The font used for the short form on subsequent use or through commands like \glsxtrshort: -



        \glsabbrvfont{text}

        -

        -

        The font used for the long form on

        +

        The font used for the long form on first use or in the full forms: -



        \glsfirstlongfont{text}

        -

        -

        The font used for the long form in commands like

        +

        The font used for the long form in commands like \glsxtrlong use: -



        \glslongfont{text}

        -

        -

        Display full form singular no case-change (used by

        +

        Display full form singular no case-change (used by \gls on first use for @@ -13426,15 +13483,15 @@ abbreviations without the regular attribute set): -



        \glsxtrfullformat{label}{insert}

        -

        -

        Display full form singular first letter converted to upper case (used by

        +

        Display full form singular first letter converted to upper case (used by \Gls on \Glsregular attribute set): -



        \Glsxtrfullformat{label}{insert}

        -

        -

        Display full form plural no case-change (used by

        +

        Display full form plural no case-change (used by \glspl on first use for @@ -13458,7 +13515,7 @@ abbreviations without the regular attribute set): -



        \glsxtrfullplformat{label}

        -

        -

        Display full form plural first letter converted to upper case (used by

        +

        Display full form plural first letter converted to upper case (used by \Glspl on first use for abbreviations without the regular attribute set): -



        \Glsxtrfullplformat{label}{insert}

        -

        -

        In addition ⟨

        +

        In addition ⟨fmts⟩ may also redefine the following commands that govern the inline full formats. If the style doesn’t redefine them, they will default to the same as the display full forms. -

        Inline singular no case-change (used by

        Inline singular no case-change (used by \glsentryfull, \glsxtrfull\glsxtrfull\GLSxtrfull): -



        \glsxtrinlinefullformat{label}{insert}

        -

        -

        Inline singular first letter converted to upper case (used by

        +

        Inline singular first letter converted to upper case (used by \Glsentryfull and \Glsxtrfull): -



        \Glsxtrinlinefullformat{label}{insert}

        -

        -

        Inline plural no case-change (used by

        +

        Inline plural no case-change (used by \glsentryfullpl, \glsxtrfullpl\glsxtrfullpl\GLSxtrfullpl): -



        \glsxtrinlinefullplformat{label}{insert}

        -

        -

        Inline plural first letter converted to upper case (used by

        +

        Inline plural first letter converted to upper case (used by \Glsentryfullpl and \Glsxtrfullpl): -



        \Glsxtrinlinefullplformat{label}{insert}

        -

        -

        (New to version 1.17.) You can also modify the way the subsequent use is +

        +

        (New to version 1.17.) You can also modify the way the subsequent use is formatted by redefining the following four commands, but these won’t be used for abbreviations with the regular attribute set. If the style doesn’t redefine these commands, the default values are used. -

        Singular with no case-change: -


        Singular with no case-change: +


        \glsxtrsubsequentfmt{label}{insert}

        -

        -

        Singular with first letter upper case: -


        +

        Singular with first letter upper case: +


        \Glsxtrsubsequentfmt{label}{insert}

        -

        -

        Plural with no case-change: -


        +

        Plural with no case-change: +


        \glsxtrsubsequentplfmt{label}{insert}

        -

        +

        -

        Plural with first letter upper case: -


        Plural with first letter upper case: +


        \Glsxtrsubsequentplfmt{label}{insert}

        -

        -

        If you want to provide support for

        +

        If you want to provide support for glossaries-accsupp use the following glossaries-accsupp\glsentry⟨xxx⟩ command.) -

        For example, the

        For example, the short-long style has the following in ⟨fmts⟩:

        -  \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% - 
          \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% - 
          \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% - 
          \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% - 
          \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% - 
          \renewcommand*{\glsxtrfullformat}[2]{% - 
            \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - 
            \ifglsxtrinsertinside\else##2\fi - 
            \glsxtrfullsep{##1}% - 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% - 
          }% - 
          \renewcommand*{\glsxtrfullplformat}[2]{% - 
            \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - 
            \ifglsxtrinsertinside\else##2\fi - 
            \glsxtrfullsep{##1}% - 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% - 
          }% - 
          \renewcommand*{\Glsxtrfullformat}[2]{% - 
            \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% - 
            \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% - 
          }% - 
          \renewcommand*{\Glsxtrfullplformat}[2]{% - 
            \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% - 
             \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% - 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% - 
          }% -
        -

        Since the inline full commands aren’t redefined, they default to the same as the +  \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}% + 
          \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}% + 
          \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% + 
          \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% + 
          \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% + 
          \renewcommand*{\glsxtrfullformat}[2]{% + 
            \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + 
            \ifglsxtrinsertinside\else##2\fi + 
            \glsxtrfullsep{##1}% + 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + 
          }% + 
          \renewcommand*{\glsxtrfullplformat}[2]{% + 
            \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + 
            \ifglsxtrinsertinside\else##2\fi + 
            \glsxtrfullsep{##1}% + 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + 
          }% + 
          \renewcommand*{\Glsxtrfullformat}[2]{% + 
            \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}% + 
            \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}% + 
          }% + 
          \renewcommand*{\Glsxtrfullplformat}[2]{% + 
            \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}% + 
             \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}% + 
            \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}% + 
          }% +

        +

        Since the inline full commands aren’t redefined, they default to the same as the display versions. -

        If you want to base a style on an existing style, you can use -


        If you want to base a style on an existing style, you can use +


        \GlsXtrUseAbbrStyleFmts{name}

        -

        +

        within ⟨fmts⟩, where ⟨name⟩ is the name of the existing style. For example, the @@ -13675,10 +13732,10 @@ class="cmti-10">fmts⟩:

        -  \GlsXtrUseAbbrStyleFmts{long-short}% +  \GlsXtrUseAbbrStyleFmts{long-short}%
        -

        -

        Here’s an example of an abbreviation style that’s based on

        +

        Here’s an example of an abbreviation style that’s based on long-short that displays @@ -13690,16 +13747,16 @@ class="cmtt-10">\textsf:

        \newabbreviationstyle - 
        {custom-sf}% label - 
        {% setup - 
          \GlsXtrUseAbbrStyleSetup{short-long}% + 
        {custom-sf}% label + 
        {% setup + 
          \GlsXtrUseAbbrStyleSetup{short-long}%  
        }% - 
        {% fmts - 
          \GlsXtrUseAbbrStyleFmts{short-long}% - 
          \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}% + 
        {% fmts + 
          \GlsXtrUseAbbrStyleFmts{short-long}% + 
          \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}%  
        }
        -

        Note that this wouldn’t work if it was instead based on one of the modified versions +

        Note that this wouldn’t work if it was instead based on one of the modified versions such as short-sc-longshort-long\glsabbrvfont etc which makes them easier to adapt than the modified styles. -

        For further details, see the “Abbreviations” section in the documented code +

        For further details, see the “Abbreviations” section in the documented code (glossaries-extra-code.pdf).

        -

        -

        +

        Top

        5. Entries in Sectioning Titles, Headers, Captions and Contents

        -

        The

        The glossaries user manual cautions against using commands like \gls in chapter or section titles. The principle problems are:

        @@ -13757,13 +13814,13 @@ class="cmss-10">hyperrefhyperref, you will end up with nested hyperlinks in the table of contents.
      -

      Similar problems can also occur with captions (except for the page header and bookmark +

      Similar problems can also occur with captions (except for the page header and bookmark issues).

      -

      Top

      5.1 Simplistic Approach

      -

      To get around all these problems, the

      To get around all these problems, the glossaries user manual recommends using the expandable non-hyperlink commands, such as \glsentrytext

      -

      Or, if you are using

      Or, if you are using hyperref: @@ -13802,11 +13859,11 @@ class="cmss-10">hyperref

      -

      -

      Since this is a bit cumbersome, you might want to define a new command to do +

      +

      Since this is a bit cumbersome, you might want to define a new command to do this for you. However, if you have mixed styles this won’t work as commands like \gls and \MakeUppercase. -

      The

      The glossaries-extra package tries to resolve this by modifying \markright and @@ -13829,16 +13886,16 @@ class="cmtt-10">\markboth and \@starttoc. If you don’t like this change, you can restore their former definitions using -



      \glsxtrRevertMarks

      -

      +

      If you only want to restore \@starttoc you can use: -



      \glsxtrRevertTocMarks

      -

      +

      If you restore the header or table of contents commands, you’ll have to use the glossaries manual’s recommendations of either simply using

      -\chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}} +\chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}}
      -

      Alternatively, you need to find a way to insert

      Alternatively, you need to find a way to insert \glsxtrmarkhook and \@glsxtrinmark at the start of the header or table of contents either scoped or afterwards cancelled with \@glsxtrnotinmark and \glsxtrrestoremarkhook. -

      If you don’t revert the mark commands back with

      If you don’t revert the mark commands back with \glsxtrRevertMarks, you can use the commands described below in the argument of sectioning commands. You can still use them even if the mark commands have been reverted, but only where they don’t conflict with the page style. -

      +

      -

      Top

      5.2 New Commands Designed for Chapter/Section Headings

      -

      The commands listed below are designed for use in chapter or section headings. +

      The commands listed below are designed for use in chapter or section headings. There are still limitations, but they provide a better solution. They all use \texorpdfstring\texorpdfstring will be needed as appropriate in that field. (Take care if the field has its value expanded before being assigned.) -

      These commands essentially behave as though you have used

      These commands essentially behave as though you have used \glsxtrshort, \glstext etc with the options headuc attribute to “true” for the appropriate category. -

      If you use one of the

      If you use one of the \textsc styles, be aware that the default fonts don’t provide bold small-caps or italic small-caps. This means that if the chapter @@ -13916,9 +13973,9 @@ class="cmtt-10">\glsabbrvfont. You may want to consider using the slantsc package in this case.
      -

      -

      Display the short form: -


      +

      Display the short form: +


      \glsfmtshort{label}

      -

      -

      Display the plural short form: -


      +

      Display the plural short form: +


      \glsfmtshortpl{label}

      -

      -

      First letter upper case singular short form: -


      +

      First letter upper case singular short form: +


      \Glsfmtshort{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      First letter upper case plural short form: -


      First letter upper case plural short form: +


      \Glsfmtshortpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps singular short form: -


      All caps singular short form: +


      \GLSfmtshort{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps plural short form: -


      All caps plural short form: +


      \Glsfmtshortpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      Display the long form: -


      Display the long form: +


      \glsfmtlong{label}

      -

      -

      Display the plural long form: -


      +

      Display the plural long form: +


      \glsfmtlongpl{label}

      -

      -

      First letter upper case singular long form: -


      +

      First letter upper case singular long form: +


      \Glsfmtlong{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      First letter upper case plural long form: -


      First letter upper case plural long form: +


      \Glsfmtlongpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps singular long form: -


      All caps singular long form: +


      \GLSfmtlong{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps plural long form: -


      All caps plural long form: +


      \GLSfmtlongpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      There are similar commands for the full form, but note that these use the

      There are similar commands for the full form, but note that these use the inline full form, which may be different from the full form used by \gls. The PDF version has to be a simple fully expandable command, so one of two commands that are unrelated to the style is used instead: -



      \glspdffmtfull{label}

      -

      +

      for the singular form or: -



      \glspdffmtfullpl{label}

      -

      +

      for the full form. These simply do the long form followed by the short form in parentheses. -

      Display the full form: -


      Display the full form: +


      \glsfmtfull{label}

      -

      -

      Display the plural full form: -


      +

      Display the plural full form: +


      \glsfmtfullpl{label}

      -

      -

      First letter upper case singular full form: -


      +

      First letter upper case singular full form: +


      \Glsfmtfull{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      First letter upper case plural full form: -


      First letter upper case plural full form: +


      \Glsfmtfullpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps singular full form: -


      All caps singular full form: +


      \GLSfmtfull{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps plural full form: -


      All caps plural full form: +


      \GLSfmtfullpl{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      There are also equivalent commands for the value of the

      There are also equivalent commands for the value of the text field: -



      \glsfmttext{label}

      -

      -

      First letter converted to upper case: -


      +

      First letter converted to upper case: +


      \Glsfmttext{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps: -


      All caps: +


      \GLSfmttext{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      The plural equivalents: -


      The plural equivalents: +


      \glsfmtplural{label}

      -

      +

      First letter upper case: -



      \Glsfmtplural{label}

      -

      +

      and all caps: -



      \GLSfmtplural{label}

      -

      -

      Likewise for the value of the

      +

      Likewise for the value of the name field: -



      \glsfmtname{label}

      -

      -

      First letter converted to upper case: -


      +

      First letter converted to upper case: +


      \Glsfmtname{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps: -


      All caps: +


      \GLSfmtname{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      Similarly for the value of the

      Similarly for the value of the first field: -



      \glsfmtfirst{label}

      -

      -

      First letter converted to upper case: -


      +

      First letter converted to upper case: +


      \Glsfmtfirst{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      All caps: -


      All caps: +


      \GLSfmtfirst{label}

      -

      +

      (No case-change applied to PDF bookmarks.) -

      The plural equivalents: -


      The plural equivalents: +


      \glsfmtfirstpl{label}

      -

      +

      First letter upper case: -



      \Glsfmtfirstpl{label}

      -

      +

      and all caps: -



      \GLSfmtfirstpl{label}

      -

      +

      @@ -14209,11 +14266,11 @@ class="cmtt-10">}


      -

      -

      +

      Top

      6. Categories

      -

      Each entry defined by

      Each entry defined by \newglossaryentry (or commands that internally use it such as babel shorthands on that make some characters active.) -

      The use of categories can give you more control over the way entries are displayed +

      The use of categories can give you more control over the way entries are displayed in the text or glossary. Note that an entry’s category is independent of the glossary type. Be careful not to confuse category with type. -

      The default category assumed by

      The default category assumed by \newglossaryentry is labelled general. @@ -14247,7 +14304,7 @@ class="cmtt-10">\newacronym have the category set to acronym by default. -

      Additionally, if you have enabled

      Additionally, if you have enabled \newterm with the numbersnumber. -

      You can obtain the category label for a given entry using -


      You can obtain the category label for a given entry using +


      \glscategory{label}

      -

      +

      This is equivalent to commands like \glsentryname and so may be used in an expandable context. No error is generated if the entry doesn’t exist. -

      You can test the category for a given entry using -


      You can test the category for a given entry using +


      \glsifcategory{entry-label}{false part}

      -

      +

      This is equivalent to

      true class="cmitt-10">part⟩}{false part part}
      so any restrictions that apply to \ifglsfieldeq also apply to \glsifcategory. -

      Each category may have a set of attributes. For example, the

      Each category may have a set of attributes. For example, the general and acronym\glsentryfmt to determine whether to use \glsgenentryfmt or \glsxtrgenabbrvfmt. -

      Other attributes recognised by

      Other attributes recognised by glossaries-extra are:

      nohyperfirst attribute then just redefine -



      \glsxtrchecknohyperfirst{label}

      -

      +

      to do nothing.

      \newacronym if it’s using \newabbreviation.) This attribute doesn’t apply to the accessibility fields. -

      Note that this can cause a problem if you access a field that doesn’t end with a +

      Note that this can cause a problem if you access a field that doesn’t end with a full stop. For example: @@ -14450,11 +14507,11 @@ class="cmtt-10">\newabbreviation.) This attribute doesn’t apply to

      \newabbreviation -  
       [user1={German Speaking \TeX\ User Group}] -  
       {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ +  
       [user1={German Speaking \TeX\ User Group}] +  
       {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\  
      e.V.}
      -

      Here the

      Here the short and longuser1 \glsuseri{dante}[.]

      -

      This will bring the punctuation character inside the

      This will bring the punctuation character inside the link-text and it won’t be discarded. @@ -14526,17 +14583,17 @@ class="description">If this attribute is set to “true” any entry def class="cmtt-10">\newabbreviation will automatically have spaces in the long form replaced with -



      \glsxtrwordsep

      -

      +

      and each word is encapsulated with -



      \glsxtrword{word}

      -

      +

      For example: @@ -14544,9 +14601,9 @@ class="cmtt-10">}


      \glssetcategoryattribute{abbreviation}{markwords}{true} -  
      \newabbreviation{ip}{IP}{Internet Protocol} +  
      \newabbreviation{ip}{IP}{Internet Protocol}
      -

      is essentially the same as +

      is essentially the same as @@ -14555,7 +14612,7 @@ class="cmtt-10">}


      \newabbreviation{ip}{IP}  
      {\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}}
      -

      The “hyphen” styles, such as

      The “hyphen” styles, such as long-hyphen-short-hyphen, take advantage of this @@ -14575,22 +14632,22 @@ class="cmtt-10">\glsxtrlong. You can provide your own

      \newcommand{\hyplong}[2][]{% -  
       {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}} +  
       {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}}
      -

      -

      This setting will also adjust the long plural. This attribute is only applicable to +

      +

      This setting will also adjust the long plural. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.) -

      This setting may result in the

      This setting may result in the \glsxtrword and \glsxtrwordsep markup ending up in the sort field, depending on the style in use.
      -

      +

      \newabbreviation (or \newacronym if it’s using \newabbreviation.) -

      This setting will only adjust the short plural if the

      This setting will only adjust the short plural if the shortplural key isn’t used. This setting will take precedence over insertdots. -

      This setting may result in the

      This setting may result in the \glsxtrword and \glsxtrwordsep markup ending up in the sort field, depending on the style in use.
      -

      +

      \newabbreviation (or \newacronym if it’s using \newabbreviation.) -

      If you explicitly override the short plural using the

      If you explicitly override the short plural using the shortplural key, you must explicitly insert the dots yourself (since there’s no way for the code to determine if the plural has a suffix that shouldn’t be followed by a dot).
      -

      +

      -

      This attribute is best used with the

      This attribute is best used with the discardperiod attribute set to “true”. @@ -14756,7 +14813,7 @@ class="cmtt-10">\glsxtrifcounttrigger\cgls should behave. -

      With

      With glossaries, commands like \cgls use \cglsformat only if the previous @@ -14823,12 +14880,12 @@ class="cmtt-10">\capitalisewordsmfirstuc). If you want to use a different command you can redefine: -



      \glsxtrfieldtitlecasecs{phrase cs}

      -

      +

      For example: @@ -14837,7 +14894,7 @@ class="cmtt-10">}


      \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}}
      -

      (Note that the argument to

      (Note that the argument to \glsxtrfieldtitlecasecs will be a control sequence whose replacement text is the entry’s description, which is why \xcapitalisefmtwords is needed instead of \capitalisefmtwords.)

    -

    Any other values of this attribute are ignored. Remember that there are design +

    Any other values of this attribute are ignored. Remember that there are design limitations for both the first letter uppercasing and the title casing commands. See the mfirstuc\glossentrydesc \glssetcategoryattribute{general}{glossdescfont}{emph}

    -

    +

    \glossentryname \glssetcategoryattribute{general}{glossnamefont}{emph}
    -

    Note that this overrides

    Note that this overrides \glsnamefont which will only be used if this attribute hasn’t been set. -

    Remember that glossary styles may additionally apply a font change, +

    Remember that glossary styles may additionally apply a font change, such as the list styles which put the name in the optional argument of \item. @@ -15000,7 +15057,7 @@ class="cmtt-10">\gls will be set to the

    \glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
    -

    (See also the accompanying sample file

    (See also the accompanying sample file sample-external.tex.) If the URL contains awkward characters (such as % or \glspercentchar and \glstildechar that expand to literal characters. -

    If you want to a named anchor within the target URL (notionally adding +

    If you want to a named anchor within the target URL (notionally adding #name⟩ to the URL), then you also need to set \glslabel within ⟨name⟩ which is set by commands like \gls to the entry’s label. -

    All the predefined glossary styles start each entry listing with

    All the predefined glossary styles start each entry listing with \glstarget which sets the anchor to \glolinkprefix\glslabel, so if you want @@ -15040,10 +15097,10 @@ class="cmss-10">targeturl \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}

    -

    (If the target document changed

    (If the target document changed \glolinkprefix then you will need to adjust the above as appropriate.) -

    If the anchor is in the form ⟨

    If the anchor is in the form ⟨name1.name2⟩ then use targetcategory for the ⟨name1⟩ part. -

    For example: +

    For example: @@ -15066,11 +15123,11 @@ class="cmti-10">name1⟩ part.  
    \glssetcategoryattribute{general}{targetcategory}{page}  
    \glssetcategoryattribute{general}{targetname}{7}

    -

    will cause all link text for

    will cause all link text for general entries to link to master-doc.pdf#page.7 (page 7 of that PDF). -

    If you want a mixture in your document of entries that link to an internal +

    If you want a mixture in your document of entries that link to an internal glossary and entries that link to an external URL then you can use the starred form of \newignoredglossary\newignoredglossary\glssetcategoryattribute{external}{targeturl}{master-doc.pdf}  
    \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} -  
    \newglossaryentry{sample}{name={sample},description={local example}} +  
    \newglossaryentry{sample}{name={sample},description={local example}}  
    \newglossaryentry{sample2}{name={sample2}, -  
      type=external, -  
      category=external, -  
      description={external example}} +  
      type=external, +  
      category=external, +  
      description={external example}}

    -

    +

    bib2gls v1.7+ which can handle multiple external sources and doesn’t require this attribute. -

    If a term is defined using

    If a term is defined using \newabbreviation and accessibility support has been supplied via the accsuppshortaccess isn’t set its value will be obtained from: -



    \glsdefaultshortaccess{short}{long}

    -

    +

    This is defined by glossaries-accsupp to just do ⟨accessnoshortplural attributes below refer to the ⟨short⟩ form that’s passed to this command. -

    The following attributes are only applicable to entries defined using +

    The following attributes are only applicable to entries defined using \newabbreviation (or \newacronym if it’s using firstaccess field automatically assigned if it’s not provided. -

    An attribute can be set using: -


    An attribute can be set using: +


    \glssetcategoryattribute{category-label}{value}

    -

    +

    where ⟨category-label⟩ is the category label, ⟨attribute-label⟩ is the attribute label and ⟨value⟩ is the new value for the attribute. -

    There is a shortcut version to set the

    There is a shortcut version to set the regular attribute to “true”: -



    \glssetregularcategory{category-label}

    -

    -

    If you need to lookup the category label for a particular entry, you can use the +

    +

    If you need to lookup the category label for a particular entry, you can use the shortcut command: -



    \glssetattribute{entry-labelattribute-label}{value}

    -

    +

    This uses \glssetcategoryattribute with \glscategory to set the attribute. Note that this will affect all other entries that share this entry’s category. -

    You can fetch the value of an attribute for a particular category using: +

    You can fetch the value of an attribute for a particular category using: -



    \glsgetcategoryattribute{category-label}{attribute-label}

    -

    +

    Again there is a shortcut if you need to lookup the category label for a given entry: -



    \glsgetattribute{entry-label}{attribute-label}

    -

    -

    You can test if an attribute has been assigned to a given category using: -


    +

    You can test if an attribute has been assigned to a given category using: +


    \glshascategoryattribute{category-labelcode}{false code}

    -

    +

    This uses etoolbox’s true code⟩ if the attribute has been set and isn’t blank and isn’t \relax. The shortcut if you need to lookup the category label from an entry is: -



    \glshasattribute{entry-labelfalse code}

    -

    -

    You can test the value of an attribute for a particular category using: -


    +

    You can test the value of an attribute for a particular category using: +


    \glsifcategoryattribute{category-labeltrue-part}{false-part}

    -

    +

    This tests if the attribute (given by ⟨attribute-label⟩) for the category (given by ⟨true-part⟩ is done. If the attribute isn’t set or is set but isn’t equal to ⟨value⟩, ⟨false part⟩ is done. -

    For example: +

    For example:

    -\glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER} +\glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER}
    -

    This does “NO HYPER” if the

    This does “NO HYPER” if the general category has the nohyper attribute set to true otherwise if does “HYPER”. -

    With boolean-style attributes like

    With boolean-style attributes like nohyper, make sure you always test for true not false in case the attribute hasn’t been set. -

    Again there’s a shortcut if you need to lookup the category label from a particular +

    Again there’s a shortcut if you need to lookup the category label from a particular entry: -



    \glsifattribute{entry-label} class="cmtt-10">{⟨false-part}

    -

    -

    There’s also a shortcut to determine if a particular category has the

    +

    There’s also a shortcut to determine if a particular category has the regular attribute set to “true”: -



    \glsifregularcategory{category-label}{false-part}

    -

    +

    Alternatively, if you need to lookup the category for a particular entry: -



    \glsifregular{entry-labeltrue-part}{false-part}

    -

    +

    Note that if the regularregular attribute has been set to “false”: -



    \glsifnotregularcategory{category-label}{false-part}

    -

    +

    or for a particular entry: -



    \glsifnotregular{entry-labeltrue-part}{false-part}

    -

    +

    Again, if the regular attribute hasn’t been set, the above do ⟨false-part⟩, so these reverse commands aren’t logically opposite in the strict sense. -

    You can iterate through all entries with a given category using: -


    You can iterate through all entries with a given category using: +


    \glsforeachincategory[glossary-labels]{label-cs}{body}

    -

    +

    This iterates through all entries in the glossaries identified by the comma-separated list ⟨glossary-labels⟩ that have the category given by ⟨label-cs⟩ (which much be control sequences) to access the current glossary and entry label. If ⟨glossary-labels⟩ is omitted, all glossaries are assumed. -

    Similarly, you can iterate through all entries that have a category with a given +

    Similarly, you can iterate through all entries that have a category with a given attribute using: -



    \glsforeachwithattribute[glossary-labelslabel-cs}{body}

    -

    +

    This will do ⟨body⟩ for each entry that has a category with the attribute ⟨attribute-label⟩ set to ⟨attribute-value⟩. The remaining arguments are as the previous command. -

    You can change the category for a particular entry using the standard glossary +

    You can change the category for a particular entry using the standard glossary field changing commands, such as \glsfielddef. Alternatively, you can use -



    \glsxtrsetcategory{entry-labels}{category-label}

    -

    +

    This will change the category to ⟨category-label⟩ for each entry listed in the comma-separated list ⟨\glsfieldxdef so it will expand ⟨category-label⟩ and make the change global. -

    You can also change the category for all entries with a glossary or glossaries +

    You can also change the category for all entries with a glossary or glossaries using: -



    \glsxtrsetcategoryforall{glossary-labels}{category-label}

    -

    +

    where ⟨glossary-labels⟩ is a comma-separated list of glossary labels.

    -

    -

    +

    Top

    7. Counting References

    -

    There are three basic ways of counting entry references: +

    There are three basic ways of counting entry references:

    1. Counting the total number of times glossaries differently if it’s only been used a certain number of times. The information has to be written to the .aux file so that it’s available on the next - LaTeX run. -

      This method is extended by

      This method is extended by glossaries-extra and is described in §7.1 \glstext-like commands are used. (That is, those commands that internally use \@gls@link.) Unlike the other two methods, this just provides a - running total rather than the total from the previous LaTeX run. + running total rather than the total from the previous LaTeX run. This method is intended to make it more convenient to work with hooks like \glslinkcheckfirsthyperhook, \glslinkpresetkeys. See §7.2 Link Counting for further details.

    -

    Top

    7.1 Entry Counting (First Use Flag)

    -

    As mentioned in

    As mentioned in §2.5 Entry Counting Modifications, §6 Categories). -

    Remember that entry counting only counts the number of times an entry is used +

    Remember that entry counting only counts the number of times an entry is used by commands that change the first use flag. (That is, all those commands that mark the entry as having been used.) There are many commands that don’t modify this flag and they won’t contribute to the entry use count.
    -

    -

    With

    +

    With glossaries-extra, you may use \cgls instead of shortcuts=acro). -

    All upper case versions (not provided by

    All upper case versions (not provided by glossaries) are also available: -



    \cGLS[optionslabel}[insert]

    -

    +

    and -



    \cGLSpl[optionslabel}[insert]

    -

    +

    These are analogous to \cgls and \cglspl but they use -



    \cGLSformat{label}{insert}

    -

    +

    and -



    \cGLSplformat{label}{insert}

    -

    +

    which convert the analogous \cglsformat and \cglsplformat to upper case. -

    Just using

    Just using glossaries: @@ -15802,16 +15859,16 @@ class="cmss-10">glossaries:  
    \usepackage{glossaries}  
    \makeglossaries  
    \glsenableentrycount - 
    \newacronym{html}{HTML}{hypertext markup language} - 
    \newacronym{xml}{XML}{extensible markup language} + 
    \newacronym{html}{HTML}{hypertext markup language} + 
    \newacronym{xml}{XML}{extensible markup language}  
    \begin{document} - 
    Used once: \cgls{html}. - 
    Used twice: \cgls{xml} and \cgls{xml}. + 
    Used once: \cgls{html}. + 
    Used twice: \cgls{xml} and \cgls{xml}.  
    \printglossaries  
    \end{document}

    -

    -

    If you switch to

    +

    If you switch to glossaries-extra you must set the entrycountentrycount\makeglossaries  
    \glsenableentrycount  
    \glssetcategoryattribute{abbreviation}{entrycount}{1} - 
    \newabbreviation{html}{HTML}{hypertext markup language} - 
    \newabbreviation{xml}{XML}{extensible markup language} + 
    \newabbreviation{html}{HTML}{hypertext markup language} + 
    \newabbreviation{xml}{XML}{extensible markup language}  
    \begin{document} - 
    Used once: \cgls{html}. - 
    Used twice: \cgls{xml} and \cgls{xml}. + 
    Used once: \cgls{html}. + 
    Used twice: \cgls{xml} and \cgls{xml}.  
    \printglossaries  
    \end{document}

    -

    -

    When activated with

    +

    When activated with \glsenableentrycount, commands such as \cgls now use -



    \glsxtrifcounttrigger{labeltrigger code}{normal code}

    -

    +

    to determine if the entry trips the entry count trigger. The ⟨trigger code⟩ uses commands like trigger code⟩ but the usual \gls behaviour in ⟨normal code⟩). -

    The default definition is: +

    The default definition is:

    \newcommand*{\glsxtrifcounttrigger}[3]{% - 
     \glshasattribute{#1}{entrycount}% - 
     {% - 
       \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax - 
        #3% - 
       \else - 
        #2% - 
       \fi - 
     }% - 
     {#3}% + 
     \glshasattribute{#1}{entrycount}% + 
     {% + 
       \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax + 
        #3% + 
       \else + 
        #2% + 
       \fi + 
     }% + 
     {#3}%  
    }
    -

    This means that if an entry is assigned to a category that has the

    This means that if an entry is assigned to a category that has the entrycount @@ -15891,7 +15948,7 @@ attribute then the ⟨trigger code⟩ will be used if the previous count value (the number of times the entry was used on the last run) is greater than the value of the attribute. -

    For example, to trigger normal use if the previous count value is greater than +

    For example, to trigger normal use if the previous count value is greater than four: @@ -15900,8 +15957,8 @@ four:

    \glssetcategoryattribute{abbreviation}{entrycount}{4}
    -

    -

    There is a convenient command provided to enable entry counting, set the +

    +

    There is a convenient command provided to enable entry counting, set the entrycount\gls, etc to use \cgls etc: -



    \GlsXtrEnableEntryCounting{categories}{value}

    -

    +

    The first argument ⟨categories⟩ is a comma-separated list of categories. For each category, the value⟩. In addition, this does:  
    \renewcommand*{\GLS}{\cGLS}%  
    \renewcommand*{\GLSpl}{\cGLSpl}%

    -

    This makes it easier to enable entry-counting on existing documents. -

    If you use

    This makes it easier to enable entry-counting on existing documents. +

    If you use \GlsXtrEnableEntryCounting more than once, subsequent uses will just set the entrycount attribute for each listed category. -

    The above example document can then become: +

    The above example document can then become: @@ -15954,20 +16011,20 @@ class="cmss-10">entrycount\usepackage{glossaries-extra}  
    \makeglossaries  
    \GlsXtrEnableEntryCounting{abbreviation}{1} - 
    \newabbreviation{html}{HTML}{hypertext markup language} - 
    \newabbreviation{xml}{XML}{extensible markup language} + 
    \newabbreviation{html}{HTML}{hypertext markup language} + 
    \newabbreviation{xml}{XML}{extensible markup language}  
    \begin{document} - 
    Used once: \gls{html}. - 
    Used twice: \gls{xml} and \gls{xml}. + 
    Used once: \gls{html}. + 
    Used twice: \gls{xml} and \gls{xml}.  
    \printglossaries  
    \end{document}

    -

    -

    The standard entry-counting function describe above counts the number of times +

    +

    The standard entry-counting function describe above counts the number of times an entry has been marked as used throughout the document. (The reset commands will reset the total back to zero.) If you prefer to count per sectional-unit, you can use -



    \GlsXtrEnableEntryUnitCounting{categories}{counter-name}

    -

    +

    where ⟨categories⟩ is a comma-separated list of categories to which this feature should be applied, ⟨value⟩ is the trigger value and ⟨counter-name⟩ is the name of the counter used by the sectional unit. -

    Due to the asynchronous nature of TeX’s output routine, discrepancies will occur +

    Due to the asynchronous nature of TeX’s output routine, discrepancies will occur in page spanning paragraphs if you use the page counter.
    -

    -

    Note that you can’t use both the document-wide counting and the per-unit +

    +

    Note that you can’t use both the document-wide counting and the per-unit counting in the same document. -

    The counter value is used as part of a label, which means that

    The counter value is used as part of a label, which means that \thecounter-name⟩ needs to be expandable. Since \theHcounter-name⟩ if it exists otherwise it will use \thecounter-name⟩. -

    The per-unit counting function uses two attributes:

    The per-unit counting function uses two attributes: entrycount (as before) and @@ -16017,45 +16074,45 @@ class="cmss-10">entrycountunitcount (the name of the counter). -

    Both the original document-wide counting mechanism and the per-unit counting +

    Both the original document-wide counting mechanism and the per-unit counting mechanism provide a command that can be used to access the current count value for this run: -



    \glsentrycurrcount{label}

    -

    +

    and the final value from the previous run: -



    \glsentryprevcount{label}

    -

    +

    In the case of the per-unit counting, this is the final value for the current unit. In both commands ⟨label⟩ is the entry’s label. -

    The per-unit counting mechanism additionally provides: -


    The per-unit counting mechanism additionally provides: +


    \glsentryprevtotalcount{label}

    -

    +

    which gives the sum of all the per-unit totals from the previous run for the entry given by ⟨label⟩, and -



    \glsentryprevmaxcount{label}

    -

    +

    which gives the maximum per-unit total from the previous run. -

    The above two commands are unavailable for the document-wide counting. -

    Example of per-unit counting, where the unit is the chapter: +

    The above two commands are unavailable for the document-wide counting. +

    Example of per-unit counting, where the unit is the chapter: @@ -16065,21 +16122,21 @@ which gives the maximum per-unit total from the previous run.  
    \usepackage{glossaries-extra}  
    \GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter}  
    \makeglossaries - 
    \newabbreviation{html}{HTML}{hypertext markup language} - 
    \newabbreviation{css}{CSS}{cascading style sheet} + 
    \newabbreviation{html}{HTML}{hypertext markup language} + 
    \newabbreviation{css}{CSS}{cascading style sheet}  
    \newglossaryentry{sample}{name={sample},description={sample}}  
    \begin{document}  
    \chapter{Sample} - 
    Used once: \gls{html}. - 
    Used three times: \gls{css} and \gls{css} and \gls{css}. - 
    Used once: \gls{sample}. - 
    \chapter{Another Sample} - 
    Used once: \gls{css}. - 
    Used twice: \gls{html} and \gls{html}. + 
    Used once: \gls{html}. + 
    Used three times: \gls{css} and \gls{css} and \gls{css}. + 
    Used once: \gls{sample}. + 
    \chapter{Another Sample} + 
    Used once: \gls{css}. + 
    Used twice: \gls{html} and \gls{html}.  
    \printglossaries  
    \end{document}

    -

    In this document, the

    In this document, the css entry is used three times in the first chapter. This is more than the trigger value of 2, so \gls{css} is expanded on \gls{css} doesn’t get a line added to the glossary file. -

    The

    The html is used a total of three times, but the expansion and indexing suppression trigger is tripped in both chapters because the per-unit total (1 for the first chapter and 2 for the second chapter) is less than or equal to the trigger value. -

    The

    The sample entry has only been used once, but it doesn’t trip the indexing suppression because it’s in the general\GlsXtrEnableEntryUnitCounting. -

    The per-unit entry counting can be used for other purposes. In the following +

    The per-unit entry counting can be used for other purposes. In the following example document the trigger value is set to zero, which means the index suppression won’t be triggered, but the unit entry count is used to automatically suppress the hyperlink for commands like \gls by modifying the hook -



    \glslinkcheckfirsthyperhook

    -

    +

    which is used at the end of the macro the determines whether or not to suppress the hyperlink. @@ -16130,37 +16187,37 @@ hyperlink.  
    \usepackage{glossaries-extra}  
    \makeglossaries  
    \GlsXtrEnableEntryUnitCounting{general}{0}{page} - 
    \newglossaryentry{sample}{name={sample},description={an example}} + 
    \newglossaryentry{sample}{name={sample},description={an example}}  
    \renewcommand*{\glslinkcheckfirsthyperhook}{% - 
      \ifnum\glsentrycurrcount\glslabel>0 - 
       \setkeys{glslink}{hyper=false}% - 
      \fi + 
      \ifnum\glsentrycurrcount\glslabel>0 + 
       \setkeys{glslink}{hyper=false}% + 
      \fi  
    }  
    \begin{document} - 
    A \gls{sample} entry. - 
    Next use: \gls{sample}. + 
    A \gls{sample} entry. + 
    Next use: \gls{sample}.  
    \newpage - 
    Next page: \gls{sample}. - 
    Again: \gls{sample}. + 
    Next page: \gls{sample}. + 
    Again: \gls{sample}.  
    \printglossaries  
    \end{document}

    -

    This only produces a hyperlink for the first instance of

    This only produces a hyperlink for the first instance of \gls{sample} on each page. -

    The earlier warning about using the

    The earlier warning about using the page counter still applies. If the first instance of \gls occurs at the top of the page within a paragraph that started on the previous page, then the count will continue from the previous page. -

    +

    -

    Top

    7.2 Link Counting

    -

    As from version 1.26, an alternative method of entry counting is to count the number +

    As from version 1.26, an alternative method of entry counting is to count the number @@ -16176,15 +16233,15 @@ class="cmtt-10">\hyperlink when displaying the link-text.) -

    To enable link counting use the preamble-only command: -


    To enable link counting use the preamble-only command: +


    \GlsXtrEnableLinkCounting[master counter]{categories}

    -

    +

    where ⟨categories⟩ is a list of category labels. The optional argument ⟨master @@ -16200,16 +16257,16 @@ href="#catattr.linkcountmaster">linkcountmaster attribute. -

    When enabled, commands like

    When enabled, commands like \gls and \glstext increment the associated counter using -



    \glsxtrinclinkcounter{counter name}

    -

    +

    This just does \stepcounter{counter name\refstepcounter instead, just redefine this command:

    \renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}}
    -

    -

    You can access the internal count register using -


    +

    You can access the internal count register using +


    \GlsXtrLinkCounterValue{label}

    -

    +

    where ⟨label⟩ is the entry’s label. This will expand to 0 if the counter hasn’t been defined. -

    It’s also possible to access the display value (

    It’s also possible to access the display value (\thecounter⟩) using -



    \GlsXtrTheLinkCounter{counter}

    -

    +

    (This will expand to 0 if the counter hasn’t been defined.) -

    In order to conserve resources, the counter is only defined when it first +

    In order to conserve resources, the counter is only defined when it first needs to be incremented so terms that have been defined but haven’t been used in the document won’t have the associated count register allocated.
    -

    -

    You can test if the counter has been defined using: -


    +

    You can test if the counter has been defined using: +


    \GlsXtrIfLinkCounterDef{labeltrue}{false}

    -

    +

    where ⟨label⟩ is the entry’s label. -

    The counter name can be obtained using -


    The counter name can be obtained using +


    \GlsXtrLinkCounterName{label}

    -

    +

    This simply expands to the counter name associated with the entry given by ⟨label⟩ without any check for existence. For example, to change the display command @@ -16284,7 +16341,7 @@ class="cmss-10">etoolbox \csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}}

    -

    This is useful if you just want to change the display for specific entries but isn’t +

    This is useful if you just want to change the display for specific entries but isn’t convenient if you want to change the display for all entries. Instead, it’s simpler to redefine \GlsXtrTheLinkCounter. For example: @@ -16294,14 +16351,14 @@ class="cmtt-10">\GlsXtrTheLinkCounter. For example:

    \renewcommand*{\GlsXtrTheLinkCounter}[1]{% - 
     \GlsXtrIfLinkCounterDef{#1}% - 
     {\Roman{\GlsXtrLinkCounterName{#1}}}% - 
     {0}% + 
     \GlsXtrIfLinkCounterDef{#1}% + 
     {\Roman{\GlsXtrLinkCounterName{#1}}}% + 
     {0}%  
    }
    -

    In both cases, the redefinition should be implemented after

    In both cases, the redefinition should be implemented after \GlsXtrEnableLinkCounting. -

    Here’s an example document that uses link counting to disable the hyperlink after +

    Here’s an example document that uses link counting to disable the hyperlink after the first reference. This redefines \glslinkpresetkeys (which is used by both \glstext).  
    \usepackage{glossaries-extra}  
    \makeglossaries  
    \renewcommand*{\glslinkpresetkeys}{% - 
     \ifnum\GlsXtrLinkCounterValue{\glslabel}>1 - 
      \setkeys{glslink}{hyper=false}% - 
     \fi + 
     \ifnum\GlsXtrLinkCounterValue{\glslabel}>1 + 
      \setkeys{glslink}{hyper=false}% + 
     \fi  
    }  
    \GlsXtrEnableLinkCounting{general} - 
    \newglossaryentry{sample1}{name={sample1},description={an example}} - 
    \newglossaryentry{sample2}{name={sample2},description={another example}} + 
    \newglossaryentry{sample1}{name={sample1},description={an example}} + 
    \newglossaryentry{sample2}{name={sample2},description={another example}}  
    \newabbreviation{ex}{ex}{example}  
    \begin{document} - 
    \section{Sample Section} - 
    \Gls{sample1}, \gls{sample2} and \gls{ex}. - 
    \Glstext{sample1} and \gls{ex} again. - 
    \section{Another Sample Section} - 
    \Gls{sample1}, \gls{sample2} and \gls{ex}. + 
    \section{Sample Section} + 
    \Gls{sample1}, \gls{sample2} and \gls{ex}. + 
    \Glstext{sample1} and \gls{ex} again. + 
    \section{Another Sample Section} + 
    \Gls{sample1}, \gls{sample2} and \gls{ex}.  
    \printglossaries  
    \end{document}

    -

    The use of

    The use of \glslinkpresetkeys means that the options can override this. For example @@ -16350,7 +16407,7 @@ example

    \gls[hyper=true]{sample1}
    -

    will override the

    will override the hyper=false setting in \glslinkpresetkeys. If \glslinkpostsetkeyshyper=false setting will override the setting provided in the optional argument. -

    The

    The abbreviation category doesn’t have the \ifnum\GlsXtrLinkCounterValue{\glslabel}>1

    -

    will always be false. This means that the abbreviation won’t have

    will always be false. This means that the abbreviation won’t have hyper=false applied. If the test is changed to @@ -16388,12 +16445,12 @@ applied. If the test is changed to

    \ifnum\GlsXtrLinkCounterValue{\glslabel}=1  
    \else - 
     \setkeys{glslink}{hyper=false}% + 
     \setkeys{glslink}{hyper=false}%  
    \fi
    -

    Then the abbreviation will always have

    Then the abbreviation will always have hyper=false applied. -

    To reset the counter every section use the optional argument to set the master +

    To reset the counter every section use the optional argument to set the master counter: @@ -16402,16 +16459,16 @@ counter:

    \GlsXtrEnableLinkCounting[section]{general}
    -

    +

    -

    -

    +

    Top

    8. Auto-Indexing

    -

    It’s possible that you may also want a normal index as well as the glossary, +

    It’s possible that you may also want a normal index as well as the glossary, and you may want entries to automatically be added to the index (as in this document). There are two attributes that govern this: indexnamedualindex. -

    The auto-indexing is designed for

    The auto-indexing is designed for makeindex syntax. If you’ve used the bib2gls and its dual entries as an alternative approach.
    -

    -

    The

    +

    The \glsxtrpostnamehook macro, used at the end of \glossentrynamename key. -

    The internal macro used by the

    The internal macro used by the glossaries package to write the information to the external glossary file is modified to check for the dualindex attribute. -

    In both cases, the indexing is done through -


    In both cases, the indexing is done through +


    \glsxtrdoautoindexname{label}{attribute-label}

    -

    +

    This uses the standard \index command with the sort value taken from the entry’s @@ -16492,13 +16549,13 @@ class="cmti-10">label⟩}. As from v1.16, there are user-level commands available to change the sort and actual value used by the automated index. -

    The actual value is given by -


    The actual value is given by +


    \glsxtrautoindexentry{label}

    -

    +

    where ⟨label⟩ is the entry’s label. The default definition is: @@ -16508,19 +16565,19 @@ class="cmti-10">label⟩ is the entry’s label. The default def

    \newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
    -

    Note the use of

    Note the use of \string to prevent \glsentryname from being expanded as it’s written to the index file. -

    The sort value is assigned using: -


    The sort value is assigned using: +


    \glsxtrautoindexassignsort{cs}{label}

    -

    +

    where ⟨label⟩ is the entry label and ⟨cs⟩ is the command which needs to be set to the @@ -16531,19 +16588,19 @@ sort value. The default definition is:

    \newcommand*{\glsxtrautoindexassignsort}[2]{% - 
      \glsletentryfield{#1}{#2}{sort}% + 
      \glsletentryfield{#1}{#2}{sort}%  
    }
    -

    After this macro is called, ⟨

    After this macro is called, ⟨cs⟩ is then processed to escape any of makeindex’s special characters. Note that this escaping is only performed on the sort not on the actual value. The escaping of the sort value is performed by -



    \glsxtrautoindexesc

    -

    +

    You can redefine this to do nothing if you want to omit the escaping. You may want to consider providing another field to obtain the appropriate sort value if the one provided in the sort field isn’t suitable (because it may already have had special characters escaped or it may be a numeric value in the case of sort by use or definition). -

    The command used to perform the actual indexing is: -


    The command used to perform the actual indexing is: +


    \glsxtrautoindex{text}

    -

    +

    This just does \index{text} by default. -

    The entry’s

    The entry’s parent field isn’t referenced in this automated indexing.
    -

    -

    For example, to index the value of the

    +

    For example, to index the value of the first key, instead of the namename \renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}}

    -

    and if the sort value also needs to be set to the

    and if the sort value also needs to be set to the long field, if present, otherwise the sort

    -

    -

    If the value of the attribute given by ⟨

    +

    If the value of the attribute given by ⟨attribute-label⟩ is “true”, no encap will be added, otherwise the encap will be the attribute value. For example: @@ -16607,7 +16664,7 @@ added, otherwise the encap will be the attribute value. For example:

    \glssetcategoryattribute{general}{indexname}{textbf}
    -

    will set the encap to

    will set the encap to textbf which will display the relevant page number in bold whereas @@ -16617,13 +16674,13 @@ whereas

    \glssetcategoryattribute{general}{dualindex}{true}
    -

    won’t apply any formatting to the page number in the index. -

    The location used in the index will always be the page number not the counter +

    won’t apply any formatting to the page number in the index. +

    The location used in the index will always be the page number not the counter used in the glossary. (Unless some other loaded package has modified the definition of \index to use some thing else.)
    -

    -

    By default the

    +

    By default the format key won’t be used with the format key to override the attribute value by using the preamble-only command: -



    \GlsXtrEnableIndexFormatOverride

    -

    +

    If you use this command and hyperref has been loaded, then the \glshypernumber to allow formats that use that command. -

    The

    The dualindex attribute will still be used on subsequent use even if the @@ -16664,8 +16721,8 @@ class="cmss-10">dualindexnoindex key.
    -

    -

    The

    +

    The \glsxtrdoautoindexname command will attempt to escape any of \makeindex\encapchar have been defined before glossaries-extra is loaded). -

    If this isn’t the case, you can use the following preamble-only commands to set +

    If this isn’t the case, you can use the following preamble-only commands to set the correct characters. -

    Be very careful of possible shifting category codes!
    -

    -


    Be very careful of possible shifting category codes!
    +

    +


    \GlsXtrSetActualChar{char}

    -

    +

    Set the actual character to ⟨char⟩. -



    \GlsXtrSetLevelChar{char}

    -

    +

    Set the level character to ⟨char⟩. -



    \GlsXtrSetEscChar{char}

    -

    +

    Set the escape (quote) character to ⟨char⟩. -



    \GlsXtrSetEncapChar{char}

    -

    +

    Set the encap character to ⟨char⟩.

    -

    -

    +

    Top

    9. bib2gls: Managing Reference Databases

    -

    There is a new command line application called

    There is a new command line application called bib2gls, which works in much @@ -16754,8 +16811,8 @@ class="cmtt-10">.glstex file which is loaded using \glsxtrresourcefile (or \GlsXtrLoadResources). -

    This means that you can use a reference managing system, such as JabRef, to -maintain the database and it reduces the TeX overhead by only defining the entries +

    This means that you can use a reference managing system, such as JabRef, to +maintain the database and it reduces the TeX overhead by only defining the entries that are actually required in the document. If you currently have a .tex file that contains hundreds of definitions, but you only use a dozen or so in your @@ -16769,19 +16826,19 @@ class="cmtt-10">convertgls2bibbib2gls.) -

    There are some new commands and options added to

    There are some new commands and options added to glossaries-extra to help assist the integration of bib2gls into the document build process. -

    This chapter just provides a general overview of

    This chapter just provides a general overview of bib2gls. The full details and some sample documents are provided in the bib2gls manual. -

    An example of the contents of

    An example of the contents of .bib file that stores glossary entries that can be extracted with bib2gls:

    @entry{bird, - 
      name={bird}, - 
      description = {feathered animal}, - 
      see={[see also]{duck,goose}} + 
      name={bird}, + 
      description = {feathered animal}, + 
      see={[see also]{duck,goose}}  
    }  
    @entry{duck, - 
      name={duck}, - 
      description = {a waterbird with short legs} + 
      name={duck}, + 
      description = {a waterbird with short legs}  
    }  
    @entry{goose, - 
      name="goose", - 
      plural="geese", - 
      description={a waterbird with a long neck} + 
      name="goose", + 
      plural="geese", + 
      description={a waterbird with a long neck}  
    }
    -

    -

    The follow provides some abbreviations: +

    +

    The follow provides some abbreviations:

    -@string{ssi={server-side includes}} - 
    @string{html={hypertext markup language}} +@string{ssi={server-side includes}} + 
    @string{html={hypertext markup language}}  
    @abbreviation{shtml, - 
      short="shtml", - 
      long= ssi # " enabled " # html, - 
      description={a combination of \gls{html} and \gls{ssi}} + 
      short="shtml", + 
      long= ssi # " enabled " # html, + 
      description={a combination of \gls{html} and \gls{ssi}}  
    }  
    @abbreviation{html, - 
      short ="html", - 
      long  = html, - 
      description={a markup language for creating web pages} + 
      short ="html", + 
      long  = html, + 
      description={a markup language for creating web pages}  
    }  
    @abbreviation{ssi, - 
      short="ssi", - 
      long = ssi, - 
      description={a simple interpreted server-side scripting language} + 
      short="ssi", + 
      long = ssi, + 
      description={a simple interpreted server-side scripting language}  
    }
    -

    -

    Here are some symbols: +

    +

    Here are some symbols: @@ -16840,23 +16897,23 @@ class="cmtt-10">bib2gls:

    preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}  
    @symbol{M, - 
      name={$\mtx{M}$}, - 
      text={\mtx{M}}, - 
      description={a matrix} + 
      name={$\mtx{M}$}, + 
      text={\mtx{M}}, + 
      description={a matrix}  
    }  
    @symbol{v, - 
      name={$\vec{v}$}, - 
      text={\vec{v}}, - 
      description={a vector} + 
      name={$\vec{v}$}, + 
      text={\vec{v}}, + 
      description={a vector}  
    }  
    @symbol{S, - 
      name={$\mathcal{S}$}, - 
      text={\mathcal{S}}, - 
      description={a set} + 
      name={$\mathcal{S}$}, + 
      text={\mathcal{S}}, + 
      description={a set}  
    }
    -

    -

    To ensure that

    +

    To ensure that bib2gls can find out which entries have been used in the @@ -16871,12 +16928,12 @@ class="cmss-10">record \usepackage[record]{glossaries-extra}

    -

    If this option’s value is omitted (as above), the normal indexing will be switched off, +

    If this option’s value is omitted (as above), the normal indexing will be switched off, since bib2gls can also sort the entries and collate the locations. -

    If you still want to use an indexing application (for example, you need a custom +

    If you still want to use an indexing application (for example, you need a custom bib2gls to omit sorting to save time and to prevent the < class="cmss-10">sort key from being set. -

    The

    The .glstex file created by bib2gls is loaded using: -



    \glsxtrresourcefile[options]{filename}

    -

    +

    (Don’t include the file extension in ⟨filename⟩.) There’s a shortcut version (recommended over the above) that sets ⟨filename⟩ to use \jobname: -



    \GlsXtrLoadResources[options]

    -

    +

    On the first use, this command is a shortcut for

    }
    On subsequent use,9.1 this + id="x1-40019f1"> this command is a shortcut for
    }
    where ⟨n⟩ is the current value of -



    \glsxtrresourcecount

    -

    +

    which is incremented at the end of \GlsXtrLoadResources. Any advisory notes regarding \glsxtrresourcefile also apply to \GlsXtrLoadResources. -

    The

    The \glsxtrresourcefile command writes the line

    9.2

    Since the .glstex file won’t exist on the first LaTeX run, the

    Since the .glstex file won’t exist on the first LaTeX run, the record package @@ -16992,16 +17049,16 @@ class="cmtt-10">.glstex file the references should be resolved. This may cause a shift in the locations if the actual text produced once the entry is defined is significantly larger than the placeholder ?? (as this can alter the page breaking). -

    Note that as from v1.12,

    Note that as from v1.12, \glsxtrresourcefile temporarily switches the category code of @ to 11 (letter) while it reads the file to allow for any internal commands stored in the location field.

    -

    Top

    9.1 Selection

    -

    The default behaviour is for

    The default behaviour is for bib2gls to select all entries that have a record in the @@ -17023,7 +17080,7 @@ methods), so you can do, for example,

    \GlsXtrSetDefaultNumberFormat{glsignore}
    -

    at the start of the front matter and +

    at the start of the front matter and @@ -17031,9 +17088,9 @@ methods), so you can do, for example,

    \GlsXtrSetDefaultNumberFormat{glsnumberformat}
    -

    at the start of the main matter to prevent any records in the front matter from +

    at the start of the main matter to prevent any records in the front matter from occurring in the location lists. -

    Note that commands like

    Note that commands like \glsaddall and \glsaddallunused don’t work with bib2gls.
    -

    -

    If you want to add all entries to the glossary, you need to tell

    +

    If you want to add all entries to the glossary, you need to tell bib2gls this in the options list. For example: @@ -17057,19 +17114,19 @@ options list. For example:

    \GlsXtrLoadResources[src={terms},selection={all}]
    -

    This will add all entries, regardless of whether or not they have any records in the +

    This will add all entries, regardless of whether or not they have any records in the .aux file. Those that don’t have any records will have an empty location list. See the bib2gls user manual for more details of this option. -

    +

    -

    Top

    9.2 Sorting and Displaying the Glossary

    -

    There are many sorting options provided by

    There are many sorting options provided by bib2gls. The default is to sort according to the system locale. If the document has a language setting, you can use @@ -17089,11 +17146,11 @@ example:

    \GlsXtrLoadResources[ - 
      src=terms, % data in terms.bib - 
      sort=de-DE-1996 % sort according to this locale + 
      src=terms, % data in terms.bib + 
      sort=de-DE-1996 % sort according to this locale  
    ]
    -

    The locale-sensitive sort methods usually ignore most punctuation so for lists of +

    The locale-sensitive sort methods usually ignore most punctuation so for lists of symbols you may find it more appropriate to use one of the letter-base sort methods that sort according to the Unicode value of each character. Alternatively you can provide a custom rule. See the bib2gls manual for full details of all the available sort methods. -

    Since the

    Since the .glstex file only defines those references required within the document (selected according to the selection option) and the definitions have been written in @@ -17115,7 +17172,7 @@ class="cmtt-10">\printunsrtglossaries), described in href="#sec:printunsrt">§10.2 Display All Entries Without Sorting or Indexing. -

    Suppose the

    Suppose the .bib examples shown above have been stored in the files terms.bib, \printunsrtglossaries  
    \end{document}

    -

    The document build process (assuming the document is called

    The document build process (assuming the document is called mydoc) is:

    -pdflatex mydoc - 
    bib2gls mydoc - 
    pdflatex mydoc +pdflatex mydoc + 
    bib2gls mydoc + 
    pdflatex mydoc
    -

    This creates a single glossary containing the entries:

    This creates a single glossary containing the entries: bird, duck, goose, shtml. These cross-referenced entries won’t have a location list when the glossary is first displayed, but depending on how they are referenced, they may pick up a location list on the next document build. -

    The entries can be separated into different glossaries with different sort +

    The entries can be separated into different glossaries with different sort methods: @@ -17198,9 +17255,9 @@ methods:  
    \setabbreviationstyle{long-short-desc}  
    \GlsXtrLoadResources[src={terms},sort={en-GB},type=main]  
    \GlsXtrLoadResources - 
     [src={abbrvs},sort={letter-nocase},type=abbreviations] + 
     [src={abbrvs},sort={letter-nocase},type=abbreviations]  
    \GlsXtrLoadResources - 
     [src={symbols},sort={use},type={symbols}] + 
     [src={symbols},sort={use},type={symbols}]  
    \begin{document}  
    \gls{bird}  
    \gls{shtml} @@ -17208,8 +17265,8 @@ methods:  
    \printunsrtglossaries  
    \end{document}

    -

    -

    Or you can have multiple instance of

    +

    Or you can have multiple instance of \GlsXtrLoadResources with the same type, which will produce a glossary with ordered sub-blocks. For example: @@ -17222,11 +17279,11 @@ class="cmtt-10">type, which will produce a glossary with ordered sub-bloc  
    \usepackage[record,style=indexgroup]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc}  
    \GlsXtrLoadResources - 
     [src={abbrvs},sort={letter-nocase},type=main, - 
      group={Abbreviations}] + 
     [src={abbrvs},sort={letter-nocase},type=main, + 
      group={Abbreviations}]  
    \GlsXtrLoadResources - 
     [src={symbols},sort={use},type=main, - 
      group={Symbols}] + 
     [src={symbols},sort={use},type=main, + 
      group={Symbols}]  
    \GlsXtrLoadResources[src={terms},sort={en-GB},type=main]  
    \begin{document}  
    \gls{bird} @@ -17235,7 +17292,7 @@ class="cmtt-10">type, which will produce a glossary with ordered sub-bloc  
    \printunsrtglossaries  
    \end{document}

    -

    This will result in a glossary where the first group has the title “Abbreviations”, the +

    This will result in a glossary where the first group has the title “Abbreviations”, the second group has the title “Symbols” and then follow the usual letter groups. Note that for this example to work, you must run myDoc.tex:

    -pdflatex myDoc - 
    bib2gls -g myDoc - 
    pdflatex myDoc +pdflatex myDoc + 
    bib2gls -g myDoc + 
    pdflatex myDoc
    -

    The value of the

    The value of the group field must always be a label. You can set the corresponding title with §2.10.1 Glossary Style Modifications). If no title is set then the label is used as the group title. -

    You can provide your own custom sort rule. For example, if you are using -XƎLATEX or LuaLATEX:

    +

    You can provide your own custom sort rule. For example, if you are using +XƎLATEX or LuaLATEX:

    \GlsXtrLoadResources[
     src=terms, % entries in terms.bib +class="cmtt-10">  src=terms, % entries in terms.bib
     sort=custom, % custom sort rule +class="cmtt-10">  sort=custom, % custom sort rule
     sort-rule=  sort-rule={% required with sort=custom +class="cmtt-10"> required with sort=custom
     < æ;Æ < a;  < æ;Æ < a;á;å;Å;Ä < b,B +class="cmtt-10"> < b,B
     < c;  < c;ć,C;Ć < d,D < e; < d,D < e;é,E;É < f,F < g,G +class="cmtt-10"> < f,F < g,G
     < h,H < i;  < h,H < i;í,I;Í < j,J < l; < j,J < l;ł,L;Ł < m,M < n,N +class="cmtt-10"> < m,M < n,N
     < o;  < o;ö;ø,O;Ö < p,P < q,Q < r,R < s; < p,P < q,Q < r,R < s;ś,S;Ś
     < t,T < u;  < t,T < u;ú,U;Ú < v,V < w,W < x,X < y,Y < +class="cmtt-10"> < v,V < w,W < x,X < y,Y <
     z;  z;ż,Z;Ż
      }
    ] @@ -17402,7 +17459,7 @@ class="cmtt-10">] class="cmss-10">inputenc then extended characters, such as é or ø, are active and will expand when written to the .aux file. So with PDFLaTeX the +class="cmtt-10">.aux file. So with PDFLaTeX the above would have to be changed to protect against expansion. Some of the options, including sort-rule, allow Unicode characters to be indicated in the @@ -17420,7 +17477,7 @@ class="cmtt-10">bib2gls will recognise this as the character given by the hexadecimal value ⟨hex⟩. The \u also needs protection from -expansion, so with a non-Unicode aware engine, the character æ needs to be +expansion, so with a non-Unicode aware engine, the character æ needs to be written as \string\uE6 and so on. This is quite cumbersome, but you can use the shortcut E6 instead, so the above needs to be written as: \GlsXtrLoadResources[
     src=terms, % entries in terms.bib +class="cmtt-10">  src=terms, % entries in terms.bib
     sort=custom, % custom sort rule +class="cmtt-10">  sort=custom, % custom sort rule
     sort-rule=  sort-rule={% required with sort=custom +class="cmtt-10"> required with sort=custom
     < \glshex E6;\glshex C6 +class="cmtt-10">  < \glshex E6;\glshex C6
     < a;\glshex E1;\glshex E5,\glshex E4,A;\glshex C1;\glshex C5;\glshex C4 +class="cmtt-10">  < a;\glshex E1;\glshex E5,\glshex E4,A;\glshex C1;\glshex C5;\glshex C4
     < b,B < c;\glshex 0107,C;\glshex 0106 < d,D +class="cmtt-10">  < b,B < c;\glshex 0107,C;\glshex 0106 < d,D
     < e;\glshex E9,E;\glshex C9 < f,F < g,G +class="cmtt-10">  < e;\glshex E9,E;\glshex C9 < f,F < g,G
     < h,H < i;\glshex ED,I;\glshex CD < j,J +class="cmtt-10">  < h,H < i;\glshex ED,I;\glshex CD < j,J
     < l;\glshex 0142,L;\glshex 0141 < m,M < n,N +class="cmtt-10">  < l;\glshex 0142,L;\glshex 0141 < m,M < n,N
     < o;\glshex F6;\glshex F8,O;\glshex D6;\glshex D8 +class="cmtt-10">  < o;\glshex F6;\glshex F8,O;\glshex D6;\glshex D8
     < p,P < q,Q < r,R < s;\glshex 013F,S;\glshex 015A +class="cmtt-10">  < p,P < q,Q < r,R < s;\glshex 013F,S;\glshex 015A
     < t,T < u;\glshex FA,U;\glshex DA < v,V < w,W < x,X < y,Y +class="cmtt-10">  < t,T < u;\glshex FA,U;\glshex DA < v,V < w,W < x,X < y,Y
     < z;\glshex 017C,Z;\glshex 017B +class="cmtt-10">  < z;\glshex 017C,Z;\glshex 017B
      }]
    -

    +

    -

    Top

    9.3 The glossaries-extra-bib2gls package

    -

    The package option

    The package option record=onlyxindy and it is expected that the sorting will be switched off (with the resource option sort=none). -

    If

    If glossaries-extra-bib2gls is loaded via the script⟩ is the four letter script identifier, such as Latn). -

    This package provides some shortcut commands that use

    This package provides some shortcut commands that use \printunsrtglossary if the relevant package option has defined the associated glossary: \printunsrtnumbers\printunsrtindex. -

    The

    The savenumberlist package option doesn’t have any effect with \glsdisplaynumberlistlocation field -



    \glsxtrprovidecommand{csdefault]{definition}

    -

    +

    This command is intended for use in @preamble. It’s simply defined to @preamble{"\glsxtrprovidecommand{\int}{integral}"}

    -

    This will force

    This will force bib2gls to treat .glstex file (as it is by default) then it won’t override the current definition (provided by the kernel or redefined by a package). -

    The helper commands in the resource files are defined using

    The helper commands in the resource files are defined using \providecommand. For many of them, if you want to provide an alternative definition then you need to define the command before the resource file is loaded. There are a few that may be redefined afterwards but if you use \renewcommand then you will get an error on the -first LaTeX run when the .glstex file doesn’t exist. In this case, you may prefer to use: -



    \glsrenewcommand{csdefault]{definition}

    -

    +

    This behaves like \renewcommand but only generates a warning rather than an error if the command isn’t already defined so it won’t interrupt the document build. -



    \GlsXtrIndexCounterLink{text}{label}

    -

    +

    If the \hyperref command has been defined (that is, bib2gls manual for further details (at least version 1.4). -

    If you use the

    If you use the set-widest resource option, bib2gls v1.8+ will now use: -



    \glsxtrSetWidest{typelevel}{text}

    -

    +

    (if it has been defined) to set the widest name for the given glossary type and level. This allows for both the alttreealttreeglossary-longextra, which need to know the widest name. -

    If

    If bib2gls can’t determine the widest name (typically because the name field consists of commands that aren’t recognised by the interpreter) then bib2gls v1.8+ will now use: -



    \glsxtrSetWidestFallback{max depth}{list}

    -

    +

    (if defined). Currently the maximum hierarchical depth ⟨max depth⟩ may only be 0 or 2. This command requires commands provided by the alttree\glssetwidest. -

    +

    -

    Top

    9.3.1 Supplemental Locations

    -



    \glsxtrdisplaysupploc{prefix}{location}

    -

    +

    This is used by externallocation attribute. This command sets up the location counter and prefix (used in the formation of hyperlinks) and then uses -



    \glsxtrmultisupplocation{locationsrc}{format}

    -

    +

    to format the actual location (with an external hyperlink, if supported). -

    +

    -

    Top

    9.3.2 Nameref Record

    -

    Normally locations are recorded in the

    Normally locations are recorded in the .aux file in the form: -



    \glsxtr@record{label}{}{location}

    -

    +

    The record=namerefbib2gls v1.8, instead uses: -



    \glsxtr@record@nameref{label}{href}{hcounter}

    -

    +

    where ⟨title⟩ is obtained from \@currentlabelname and ⟨title⟩ and class="cmti-10">href ⟩ will be left empty and bib2gls will treat it as a regular record. -

    Be careful with this option as ⟨

    Be careful with this option as ⟨href ⟩ will globally change on every instance of \refstepcounter but ⟨title⟩ won’t necessarily change. It can therefore cause unexpected behaviour.
    -

    -

    The final argument ⟨

    +

    The final argument ⟨hcounter⟩ is obtained from \theHcounter⟩ which provides the @@ -17946,7 +18003,7 @@ class="cmti-10">counter⟩ (most notably the equation counter with chapters) so this can fail. -

    Since

    Since bib2gls is customized specifically for use with \refstepcounter. However, you may choose to switch to using the ⟨href ⟩ target, which will take you to the nearest target before the indexing took place. -

    With

    With bib2gls v1.8+, normal locations are displayed using: -



    \glsnoidxdisplayloc{prefix}{format}{location}

    -

    +

    This is provided by the base glossaries package and is simply defined to do: -



    \setentrycounter[prefix]{}{location}

    -

    +

    Earlier versions of bib2gls only used this in the \setentrycounter command sets up the prefix needed for \glshypernumber to reform the target name from the given location. -

    The locations identified by

    The locations identified by \glsxtr@record@nameref are written by bib2gls to the location list using: -



    \glsxtrdisplaylocnameref{prefixhcounter}{file}

    -

    +

    With normal internal locations, ⟨file⟩ will always be empty. With supplemental locations, ⟨file⟩ will be the external file reference. -

    The default definition is: +

    The default definition is:

    \newcommand*{\glsxtrdisplaylocnameref}[8]{% - 
      \ifstrequal{#2}{equation}% - 
      {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% - 
      {% - 
         \ifstrempty{#5}% - 
         {% - 
           \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% - 
         }% - 
         {% - 
           \ifstrequal{#2}{page}% - 
           {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% - 
           {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% - 
         }% - 
      }% + 
      \ifstrequal{#2}{equation}% + 
      {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + 
      {% + 
         \ifstrempty{#5}% + 
         {% + 
           \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}% + 
         }% + 
         {% + 
           \ifstrequal{#2}{page}% + 
           {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}% + 
           {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}% + 
         }% + 
      }%  
    }
    -

    which uses: -


    which uses: +


    \glsxtrnamereflink{formattarget}{file}

    -

    +

    This ignores the ⟨prefix⟩, ⟨counter⟩ and } arguments and instead creates a hyperlink with the target name obtained from ⟨target⟩ (and ⟨file⟩, if not empty). -

    Since pages and equations typically don’t have titles, the default definition of +

    Since pages and equations typically don’t have titles, the default definition of \glsxtrdisplaylocnameref checks the counter was used as the location. If it’s pageequation, then the text is the location in parentheses. Otherwise the text is obtained from ⟨title⟩. -

    If ⟨

    If ⟨file⟩ is empty an internal link is created with: -



    \glsxtrfmtinternalnameref{targetformat}{title}

    -

    +

    otherwise an external link is created with: -



    \glsxtrfmtexternalnameref{targettitle}{file}

    -

    +

    The ⟨file⟩ argument is set by bib2gls for supplemental locations. -

    Here’s alternative definition that uses the ⟨

    Here’s alternative definition that uses the ⟨prefix⟩ and ⟨counter⟩ to reform the target name (as

    \renewcommand*{\glsxtrdisplaylocnameref}[7]{% - 
     \glsxtrnamereflink{#3}{#5}{#6}{#7}% + 
     \glsxtrnamereflink{#3}{#5}{#6}{#7}%  
    }
    -

    which uses: -


    which uses: +


    \glsxtrnameloclink{prefix} class="cmtt-10">{⟨file}

    -

    +

    This uses the same commands as \glsxtrnamereflink to produce the hyperlinks. -

    In both cases, the link is encapsulated with the text-block command whose +

    In both cases, the link is encapsulated with the text-block command whose name is given by ⟨format⟩, but \glshypernumber is first locally redefined to @@ -18183,7 +18240,7 @@ class="cmti-10">format⟩ is hyperbf then it will simply behave like textbf. -

    For compactness,

    For compactness, bib2gls merges normal records if the ⟨location class="cmti-10">location⟩, as regular records). In all cases, the ⟨counter⟩ must also match. -

    +

    -

    Top

    9.3.3 Helper Commands for Resource Options

    -



    \glshex

    -

    +

    This is just defined as \string\u, which is required when you need to indicate a Unicode character in the form \uhex⟩ in some of the resource options (as illustrated above). -



    \glscapturedgroup

    -

    +

    This is just defined as \string\$ and is used for the captured group reference in a replacement part of a regular expression substitution (requires at least sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}}

    -

    This only removes a full stop that follows any of the characters a,…,z or +

    This only removes a full stop that follows any of the characters a,…,z or A,…,Z. -

    If you use the

    If you use the save-child-count resource option, you can test if the childcount field is non-zero using: -



    \GlsXtrIfHasNonZeroChildCount{labeltrue}{false}

    -

    +

    This internally uses \GlsXtrIfFieldNonZero and will do ⟨false⟩ if the field isn’t set. @@ -18266,12 +18323,12 @@ class="cmti-10">false⟩ you can use \glscurrentfieldvalue to access the value. (It will be 0 in ⟨false⟩ if the field isn’t set.) -

    A convenient shortcut for use in the

    A convenient shortcut for use in the entry-type-aliases setting: -



    \GlsXtrBibTeXEntryAliases

    -

    +

    This provides aliases for BibTeX’s standard entry types to @bibtexentry entry type (requires at least bib2gls version 1.4). -

    You may also want to provide storage keys for BibTeX’s standard fields rather +

    You may also want to provide storage keys for BibTeX’s standard fields rather than having to alias them all. This can be done with: -



    \GlsXtrProvideBibTeXFields

    -

    +

    Note that BibTeX’s type field clashes with the glossariesbibtextype field can be accessed with \glsxtrbibtype. Each of these commands takes the entry label as the sole argument. -

    The

    The glossaries-extra-bib2gls package also provides definitions of the missing mathematical Greek commands: upgreek has been loaded, the missing upright Greek commands are also provided. -

    The remaining commands provide common rule blocks for use in the +

    The remaining commands provide common rule blocks for use in the sort-rule resource option. If you want a rule for a specific locale, you can provide similar commands in a file called

    -\ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0] +\ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0]  
    \@ifpackageloaded{glossaries-extra-bib2gls}  
    { - 
      \newcommand{\glsxtrWelshRules}{% - 
       \glsxtrLatinA - 
       \string<b,B - 
       \string<c,C - 
       \string<ch,CH - 
       \string<d,D - 
       \string<dd,DD - 
       \string<\glsxtrLatinE - 
       \string<f,F - 
       \string<ff,FF - 
       \string<g,G - 
       \string<ng,NG - 
       \string<\glsxtrLatinH - 
       \string<\glsxtrLatinI - 
       \string<j,J - 
       \string<\glsxtrLatinL - 
       \string<ll,LL - 
       \string<\glsxtrLatinM - 
       \string<\glsxtrLatinN - 
       \string<\glsxtrLatinO - 
       \string<\glsxtrLatinP - 
       \string<ph,PH - 
       \string<r,R - 
       \string<rh,RH - 
       \string<\glsxtrLatinS - 
       \string<\glsxtrLatinT - 
       \string<th,TH - 
       \string<u,U - 
       \string<w,W - 
       \string<y,Y - 
      } + 
      \newcommand{\glsxtrWelshRules}{% + 
       \glsxtrLatinA + 
       \string<b,B + 
       \string<c,C + 
       \string<ch,CH + 
       \string<d,D + 
       \string<dd,DD + 
       \string<\glsxtrLatinE + 
       \string<f,F + 
       \string<ff,FF + 
       \string<g,G + 
       \string<ng,NG + 
       \string<\glsxtrLatinH + 
       \string<\glsxtrLatinI + 
       \string<j,J + 
       \string<\glsxtrLatinL + 
       \string<ll,LL + 
       \string<\glsxtrLatinM + 
       \string<\glsxtrLatinN + 
       \string<\glsxtrLatinO + 
       \string<\glsxtrLatinP + 
       \string<ph,PH + 
       \string<r,R + 
       \string<rh,RH + 
       \string<\glsxtrLatinS + 
       \string<\glsxtrLatinT + 
       \string<th,TH + 
       \string<u,U + 
       \string<w,W + 
       \string<y,Y + 
      }  
    } - 
    {}% glossaries-extra-bib2gls.sty not loaded + 
    {}% glossaries-extra-bib2gls.sty not loaded
    -

    (The use of

    (The use of \string is in case the < character has been made active.) You can provide more than one rule-block per local, to allow for loanwords or foreign words. @@ -18428,7 +18485,7 @@ For example, you could provide \glsxtrWelshIRules, \glsxtrWelshIIRules etc. -

    If the rules are for a particular script (independent of language or region) then +

    If the rules are for a particular script (independent of language or region) then they can be provided in a file given by glossariesxtr-scriptglossariesxtr-Cyrl.ldf could contain:

    -\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0] +\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0]  
    \newcommand*{\glsxtrGeneralCyrillicIRules}{% - 
      % Cyrillic rules + 
      % Cyrillic rules  
    }  
    \newcommand*{\glsxtrGeneralCyrillicIIRules}{% - 
      % an alternative set of Cyrillic rules + 
      % an alternative set of Cyrillic rules  
    }
    -

    (Remember that the required document language scripts need to be tracked through +

    (Remember that the required document language scripts need to be tracked through the tracklang package, in order for these files to be automatically loaded. This @@ -18461,7 +18518,7 @@ class="cmss-10">glossariestracklang documentation for further details.) -

    Alternatively, if the rules are specific to a subject rather than a region or +

    Alternatively, if the rules are specific to a subject rather than a region or language, then you can provide a supplementary package. For example, if you have a package called, say, mapsymbols that provides map symbols, then the file @@ -18474,20 +18531,20 @@ class="cmtt-10">mapsymbols.sty might contain:

    \NeedsTeXFormat{LaTeX2e}  
    \ProvidesPackage{mapsymbols} - 
     some package or font loading stuff here to provide - 
     the appropriate symbols + 
     some package or font loading stuff here to provide + 
     the appropriate symbols  
    \newcommand{\Stadium}{...}  
    \newcommand{\Battlefield}{...}  
    \newcommand{\Harbour}{...} - 
     etc - 
     Provide a rule block: + 
     etc + 
     Provide a rule block:  
    \newcommand{\MapSymbolOrder}{% - 
     \glshex 2694 % crossed-swords 0x2694 - 
     \string< \glshex 2693 % anchor 0x2693 - 
     \string< \glshex 26BD % football 0x26BD + 
     \glshex 2694 % crossed-swords 0x2694 + 
     \string< \glshex 2693 % anchor 0x2693 + 
     \string< \glshex 26BD % football 0x26BD  
    }
    -

    and the supplementary file

    and the supplementary file mapsymbols.bib can provide the appropriate definitions for bib2gls:  
    \glsxtrprovidecommand{\Battlefield}{\char"2694}  
    \glsxtrprovidecommand{\Stadium}{\char"26BD}"}

    -

    Now both the preamble and rule block can be used in the resource set: +

    Now both the preamble and rule block can be used in the resource set:

    -\usepackage{mapsymbols}% my custom package +\usepackage{mapsymbols}% my custom package  
    \usepackage[record]{glossaries-extra}  
    \GlsXtrLoadResources[ - 
      src={mapsymbols,% <--- my custom mapsymbols.bib - 
       entries% data in entries.bib - 
      }, - 
      sort={custom}, - 
      sort-rule={\glsxtrcontrolrules % control codes - 
     ;\glsxtrspacerules % space characters - 
     ;\glsxtrnonprintablerules % non-printable characters - 
     ;\glsxtrcombiningdiacriticrules % combining diacritics - 
     ,\glsxtrhyphenrules % hyphens - 
     <\glsxtrgeneralpuncrules % general punctuation - 
     <\glsxtrdigitrules % 0, ..., 9 - 
     <\glsxtrfractionrules % fraction symbols - 
     <\MapSymbolOrder % <--- custom map symbols - 
     <\glsxtrMathItalicGreekIrules % math-greek symbols - 
     <\glsxtrGeneralLatinIrules % Latin letters - 
     } + 
      src={mapsymbols,% <--- my custom mapsymbols.bib + 
       entries% data in entries.bib + 
      }, + 
      sort={custom}, + 
      sort-rule={\glsxtrcontrolrules % control codes + 
     ;\glsxtrspacerules % space characters + 
     ;\glsxtrnonprintablerules % non-printable characters + 
     ;\glsxtrcombiningdiacriticrules % combining diacritics + 
     ,\glsxtrhyphenrules % hyphens + 
     <\glsxtrgeneralpuncrules % general punctuation + 
     <\glsxtrdigitrules % 0, ..., 9 + 
     <\glsxtrfractionrules % fraction symbols + 
     <\MapSymbolOrder % <--- custom map symbols + 
     <\glsxtrMathItalicGreekIrules % math-greek symbols + 
     <\glsxtrGeneralLatinIrules % Latin letters + 
     }  
    ]
    -

    -

    The following commands are provided by

    +

    The following commands are provided by glossaries-extra-bib2gls. They should be separated by the rule separator characters & (ampersand) or < (less than). See Java’s RuleBasedCollator documentation for details of the rule syntax. -

    For example, the following will place the mathematical Greek symbols (

    For example, the following will place the mathematical Greek symbols (\alpha, \Beta

    -

    -


    +


    \glsxtrcontrolrules

    -

    +

    These are control characters that are usually placed at the start of a rule in the ignored section. They typically won’t occur in any sort values, but if they do they should normally be ignored. -



    \glsxtrspacerules

    -

    +

    These are space characters. They typically come after the control characters with the two blocks separated by a ; (semi-colon). -



    \glsxtrnonprintablerules

    -

    +

    These are non-printable characters (BOM, tabs, line feed and carriage return). They typically come after the spaces separated by a ; (semi-colon). These characters @@ -18598,10 +18655,10 @@ href="#glo:bib2gls">bib2gls when it determines whether or not to use the interpreter, so a TAB or newline character may end up in the sort value if it wasn’t interpreted. -



    \glsxtrcombiningdiacriticrules

    -

    +

    These are combining diacritic marks which typically follow the space and non-printable blocks (separated by a semi-colon). This command is defined in terms of sub-block commands: @@ -18611,33 +18668,33 @@ of sub-block commands:

    \newcommand*{\glsxtrcombiningdiacriticrules}{% - 
     \glsxtrcombiningdiacriticIrules\string; - 
     \glsxtrcombiningdiacriticIIrules\string; - 
     \glsxtrcombiningdiacriticIIIrules\string; - 
     \glsxtrcombiningdiacriticIVrules + 
     \glsxtrcombiningdiacriticIrules\string; + 
     \glsxtrcombiningdiacriticIIrules\string; + 
     \glsxtrcombiningdiacriticIIIrules\string; + 
     \glsxtrcombiningdiacriticIVrules  
    }
    -

    If you prefer, you can use the sub-blocks directly in your required ordered. -


    If you prefer, you can use the sub-blocks directly in your required ordered. +


    \glsxtrcombiningdiacriticIrules

    -

    +

    This contains the combining diacritics: acute, grave, breve, circumflex, caron, ring, vertical line above, diaeresis (umlaut), double acute, tilde, dot above, combining macron. -



    \glsxtrcombiningdiacriticIIrules

    -

    +

    This contains the combining diacritics: short solidus overlay, cedilla, ogonek, dot below, low line, overline, hook above, double vertical line above, double grave accent, candrabindu, inverted breve, turned comma above, comma above, reversed comma above, comma above right, grave accent below, acute accent below. -



    \glsxtrcombiningdiacriticIIIrules

    -

    +

    This contains the combining diacritics: left tack below, right tack below, left angle above, horn, left half ring below, up tack below, down tack below, plus sign below, minus sign below, palatalized hook below, retroflex hook below, diaresis below, ring @@ -18649,29 +18706,29 @@ seagull below, x above, vertical tilde, double overline, Greek perispomeni, Gree dialytika tonos, Greek ypogegrammeni, double tilde, double inverted breve, Cyrillic titlo, Cyrillic palatalization, Cyrillic dasia pneumata, Cyrillic psili pneumata. -



    \glsxtrcombiningdiacriticIVrules

    -

    +

    This contains the combining diacritics: left harpoon above, right harpoon above, long vertical line overlay, short vertical line overlay, anticlockwise arrow above, clockwise arrow above, left arrow above, right arrow above, ring overlay, clockwise ring overlay, anticlockwise ring overlay, three dots above, four dots above, enclosing circle, enclosing square, enclosing diamond, enclosing circle backslash, left right arrow above. -



    \glsxtrhyphenrules

    -

    +

    This contains hyphens (including the minus sign 0x2212). This rule block typically comes after the diacritic rules separated by a comma. -



    \glsxtrgeneralpuncrules

    -

    +

    This contains punctuation characters. This rule block typically comes after the hyphen rules separated by a less than (<). As with the combining diacritics, this @@ -18683,16 +18740,16 @@ different order is required:

    \newcommand*{\glsxtrgeneralpuncrules}{% - 
      \glsxtrgeneralpuncIrules - 
      \string<\glsxtrcurrencyrules - 
      \string<\glsxtrgeneralpuncIIrules + 
      \glsxtrgeneralpuncIrules + 
      \string<\glsxtrcurrencyrules + 
      \string<\glsxtrgeneralpuncIIrules  
    }
    -

    -


    +


    \glsxtrgeneralpuncIrules

    -

    +

    This is the first punctuation sub-block containing: underscore, macron, comma, semi-colon, colon, exclamation mark, inverted exclamation mark, question mark, inverted question mark, solidus, full stop, acute accent, grave accent, @@ -18701,26 +18758,26 @@ straight double quote, left guillemet, right guillemet, left parenthesis, right parenthesis, left square bracket, right square bracket, left curly bracket, right curly bracket, section sign, pilcrow sign, copyright sign, registered sign, at sign. -



    \glsxtrcurrencyrules

    -

    +

    This sub-block contains some currency symbols: currency sign, Thai currency symbol baht, cent sign, colon sign, cruzeiro sign, dollar sign, dong sign, euro sign, French franc sign, lira sign, mill sign, naira sign, peseta sign, pound sign, rupee sign, new sheqel sign, won sign, yen sign. -



    \glsxtrgeneralpuncIIrules

    -

    +

    This sub-block contains some other punctuation symbols: asterisk, backslash, ampersand, hash sign, percent sign, plus sign, plus-minus sign, division sign, multiplication sign, less-than sign, equals sign, greater-than sign, not sign, vertical bar (pipe), broken bar, degree sign, micron sign. -



    \glsxtrdigitrules

    -

    +

    This rule block contains the Basic Latin digits (0, …, 9) and the subscript and superscript digits (0 0 etc) made equivalent to the corresponding Basic Lat The digit block typically comes after the punctuation rules separated by a less than (<). -



    \glsxtrBasicDigitrules

    -

    +

    This rule block contains just the Basic Latin digits (0, …, 9). -



    \glsxtrSubScriptDigitrules

    -

    +

    This rule block contains just the subscript digits (0 … 0 … 9). -



    \glsxtrSuperScriptDigitrules

    -

    +

    This rule block contains just the superscript digits (0 … 0 … 9). -



    \glsxtrfractionrules

    -

    +

    This rule block contains vulgar fraction characters. The digit block typically comes after the digit rules separated by a less than (<). -

    There are a number of Latin rule blocks. Some of these included extended -characters or ligatures (such as ß or œ) but they don’t include accented +

    There are a number of Latin rule blocks. Some of these included extended +characters or ligatures (such as ß or œ) but they don’t include accented characters. If you require a Latin rule block that includes accented characters, digraphs, trigraphs or other extended characters, then it’s best to provide similar commands in a glossariesxtr-tag.ldf file for the particular language or region. -



    \glsxtrGeneralLatinIrules

    -

    +

    This is just the basic (non-extended) Latin alphabet with the superscript and subscript Latin letters (a a etc) treated as the equivalent basic Latin letter. don’t want the subscripts and superscripts included you can redefine \glsxtrLatinA etc to omit them.) -



    \glsxtrGeneralLatinIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’ and eszett (ß) treated as ‘ss’. -



    \glsxtrGeneralLatinIIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’ and eszett (ß) treated as ‘sz’. -



    \glsxtrGeneralLatinIVrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, ae-ligature (æ) is treated as ‘ae’, oe-ligature (œ) is treated as ‘oe’, eszett (ß) treated as ‘ss’ and thorn (þ) is treated as ‘th’. -



    \glsxtrGeneralLatinVrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, eszett (ß) treated as ‘ss’ and thorn (þ) treated as ‘th’. -



    \glsxtrGeneralLatinVIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, eszett (ß) treated as ‘sz’ and thorn (þ) treated as ‘th’. -



    \glsxtrGeneralLatinVIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes ae-ligature (æ) between ‘A’ and ‘B’, eth (Ð) between ‘D’ and ‘E’, insular G (Ᵹ) instead of ‘G’, oe-ligature between ‘O’ and ‘P’, long s (ſ) equivalent to ‘s’, thorn (þ) between ‘T’ and ‘U’ and wynn (Ƿ) instead of W. -



    \glsxtrGeneralLatinVIIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but ae-ligature (æ) is treated as ‘ae’, oe-ligature (œ) is treated as ‘oe’, eszett (ß) treated as ‘ss’, thorn (þ) is treated as ‘th’, -Ø is treated as ‘O’ and ‘Ł’ is treated as ‘L’. -



    \glsxtrLatinA

    -

    +

    A mini-rule that just covers ‘A’ but includes the sub- and superscript A. -



    \glsxtrLatinE

    -

    +

    A mini-rule that just covers ‘E’ but includes the subscript E. -



    \glsxtrLatinH

    -

    +

    A mini-rule that just covers ‘H’ but includes the subscript H. -



    \glsxtrLatinK

    -

    +

    A mini-rule that just covers ‘K’ but includes the subscript K. -



    \glsxtrLatinI

    -

    +

    A mini-rule that just covers ‘I’ but includes the superscript I. -



    \glsxtrLatinL

    -

    +

    A mini-rule that just covers ‘L’ but includes the subscript L. -



    \glsxtrLatinM

    -

    +

    A mini-rule that just covers ‘M’ but includes the subscript M. -



    \glsxtrLatinN

    -

    +

    A mini-rule that just covers ‘N’ but includes the sub- and superscript N. -



    \glsxtrLatinO

    -

    +

    A mini-rule that just covers ‘O’ but includes the sub- and superscript O. -



    \glsxtrLatinP

    -

    +

    A mini-rule that just covers ‘P’ but includes the subscript P. -



    \glsxtrLatinS

    -

    +

    A mini-rule that just covers ‘S’ but includes the subscript S. -



    \glsxtrLatinT

    -

    +

    A mini-rule that just covers ‘T’ but includes the subscript T. -



    \glsxtrLatinX

    -

    +

    A mini-rule that just covers ‘X’ but includes the subscript X. -



    \glsxtrLatinEszettSs

    -

    +

    A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by short ‘s’ equivalent to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘ss’.) -



    \glsxtrLatinEszettSz

    -

    +

    A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by ‘z’ equivalent to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘sz’.) -



    \glsxtrLatinEth

    -

    +

    A mini-rule for eth (Ð) so you don’t need to remember the Unicode values. -



    \glsxtrLatinThorn

    -

    +

    A mini-rule for thorn (þ) so you don’t need to remember the Unicode values. -



    \glsxtrLatinAELigature

    -

    +

    A mini-rule for ae-ligature (æ) so you don’t need to remember the Unicode values. -



    \glsxtrLatinOELigature

    -

    +

    A mini-rule for oe-ligature (œ) so you don’t need to remember the Unicode values. -



    \glsxtrLatinOslash

    -

    +

    A mini-rule for ‘Ø’ so you don’t need to remember the Unicode values. -



    \glsxtrLatinLslash

    -

    +

    A mini-rule for ‘Ł’ so you don’t need to remember the Unicode values. -



    \glsxtrLatinWynn

    -

    +

    A mini-rule for wynn (Ƿ) so you don’t need to remember the Unicode values. -



    \glsxtrLatinInsularG

    -

    +

    A mini-rule for insular G (Ᵹ) so you don’t need to remember the Unicode values. -



    \glsxtrLatinSchwa

    -

    +

    A mini-rule that just covers schwa (Ə) but includes the subscript schwa. (Not used in any of the provided Latin rule blocks described above.) -



    \glsxtrLatinAA

    -

    +

    A mini-rule for ‘Å’ so you don’t need to remember the Unicode values. (Not used in any of the provided Latin rule blocks described above.) -



    \glsxtrMathGreekIrules

    -

    +

    A rule block for mathematical Greek (\alpha,



    \glsxtrMathGreekIIrules

    -

    +

    As \glsxtrMathGreekIrules but doesn’t include digamma. -



    \glsxtrMathUpGreekIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the \digamma\Digamma) between epsilon and zeta. -



    \glsxtrMathUpGreekIIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the upgreek package) that doesn’t include digamma. -



    \glsxtrMathItalicGreekIrules

    -

    +

    A rule block for mathematical Greek (\alpha, bib2gls’s interpreter treats them as italic to help keep them close to the lower case versions. -



    \glsxtrMathItalicGreekIIrules

    -

    +

    A rule block for mathematical Greek (\alpha, \Alpha, etc) characters that doesn’t include digamma. -



    \glsxtrMathItalicUpperGreekIrules

    -

    +

    A rule block for upper case mathematical Greek (\Alpha, \Beta\Digamma) between epsilon and zeta. -



    \glsxtrMathItalicUpperGreekIIrules

    -

    +

    A rule block for upper case mathematical Greek (\Alpha, \Beta, etc) characters that doesn’t include digamma. -



    \glsxtrMathItalicLowerGreekIrules

    -

    +

    A rule block for lower case mathematical Greek (\alpha, \beta\digamma) between epsilon and zeta. -



    \glsxtrMathItalicLowerGreekIIrules

    -

    +

    A rule block for lower case mathematical Greek (\alpha, \beta, etc) characters that doesn’t include digamma. -

    Additionally, there are commands in the form

    Additionally, there are commands in the form \glsxtrUpAlpha, \glsxtrUpBeta etc and \upalpha etc and \Alpha, \alpha etc) as well as the following: -



    \glsxtrMathItalicPartial

    -

    +

    The partial derivative symbol (). -



    \glsxtrMathItalicNabla

    -

    +

    The nabla symbol (). -

    +

    -

    Top

    9.4 Supplementary Commands

    -

    These commands are provided by

    These commands are provided by glossaries-extra for use with bib2gls. -

    The information provided with

    The information provided with \GlsXtrLoadResources is written to the .aux file using

    @@ -19153,10 +19210,10 @@ class="cmti-10">information⟩ is the information to pass to bib2gls. The command in the second argument -



    \glsxtrresourceinit

    -

    +

    may be used to temporarily redefine commands before the information is written to the file. This does nothing by default, but may be redefined to allow the use of short commands for convenience. For example, with: @@ -19167,19 +19224,19 @@ commands for convenience. For example, with:

    \renewcommand{\glsxtrresourceinit}{\let\u\glshex}
    -

    you can just use, for example,

    you can just use, for example, \u E6 instead of  E6 instead of \string\uE6 in the custom rule. This redefinition of \u is scoped so its original definition is restored after the write operation. -

    If you have multiple resource commands and you want a default set of options you +

    If you have multiple resource commands and you want a default set of options you can supply them in the definition of: -



    \GlsXtrDefaultResourceOptions

    -

    +

    For example: @@ -19188,8 +19245,8 @@ For example:

    \renewcommand{\GlsXtrDefaultResourceOptions}{selection=all}
    -

    This should be done before the resource commands. -

    It’s possible to specify label prefixes. For example, modifying the earlier +

    This should be done before the resource commands. +

    It’s possible to specify label prefixes. For example, modifying the earlier example: @@ -19200,15 +19257,15 @@ example:  
    \usepackage[record,style=indexgroup]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc}  
    \GlsXtrLoadResources - 
     [src={abbrvs},sort={letter-nocase},type=main, - 
      label-prefix={abr.}, - 
      group={Abbreviations}] + 
     [src={abbrvs},sort={letter-nocase},type=main, + 
      label-prefix={abr.}, + 
      group={Abbreviations}]  
    \GlsXtrLoadResources - 
     [src={symbols},sort={use},type=main, - 
      label-prefix={sym.}, - 
      group={Symbols}] + 
     [src={symbols},sort={use},type=main, + 
      label-prefix={sym.}, + 
      group={Symbols}]  
    \GlsXtrLoadResources[src={terms},sort={en-GB},type=main - 
      label-prefix={trm.}] + 
      label-prefix={trm.}]  
    \begin{document}  
    \gls{trm.bird}  
    \gls{abr.shtml} @@ -19216,7 +19273,7 @@ example:  
    \printunsrtglossaries  
    \end{document}

    -

    If you do something like this, you may find it more convenient to define custom +

    If you do something like this, you may find it more convenient to define custom commands that set the prefix. For example: @@ -19225,12 +19282,12 @@ commands that set the prefix. For example:

    \newcommand*{\sym}[2][]{\gls[#1]{sym.#2}}
    -

    The problem with this is that the custom command

    The problem with this is that the custom command \sym doesn’t allow for modifiers (such as \gls* or \gls+). Instead you can use: -



    \glsxtrnewgls[default optionsprefix}{cs}

    -

    +

    which defines the command ⟨cs⟩ that behaves like

    @@ -19248,7 +19305,7 @@ class="cmtt-10">\gls⟨modifier[default options options,options]]
    \glsxtrnewgls{sym.}{\sym}
    -

    or (to default to no hyperlinks) +

    or (to default to no hyperlinks) @@ -19275,12 +19332,12 @@ class="cmtt-10">]

    \glsxtrnewgls[hyper=false]{sym.}{\sym}
    -

    now you can use

    now you can use \sym+{M} to behave like \gls+{sym.M}. -

    If you also want the plural and first letter upper case versions you can +

    If you also want the plural and first letter upper case versions you can use -



    \glsxtrnewglslike[default options\Gls-like cs}{\Glspl-like cs}

    -

    +

    For example: @@ -19306,8 +19363,8 @@ For example:

    \glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl}
    -

    For the all caps versions: -


    For the all caps versions: +


    \glsxtrnewGLSlike[default options} class="cmtt-10">{⟨\GLSpl-like cs}

    -

    +

    For example: @@ -19329,10 +19386,10 @@ For example:

    \glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl}
    -

    -

    There’s an analogous command for

    +

    There’s an analogous command for \rgls: -



    \glsxtrnewrgls[default optionsprefix}{cs}

    -

    +

    and for \rgls, \rglspl, \rGls and \rGlspl: -



    \glsxtrnewrglslike[default options\rGls-like cs}{\rGlspl-like cs}

    -

    +

    and for the all caps: -



    \glsxtrnewrGLSlike[default options} class="cmtt-10">{⟨\rGLSpl-like cs}

    -

    -

    If you provide your own custom command with just

    +

    If you provide your own custom command with just \newcommand that has syntax that starts with [}, then you can notify bib2gls using: -



    \glsxtridentifyglslike{prefix}{command}

    -

    +

    This writes information to the .aux file so that bib2gls can search for the given command when looking for dependencies. -

    Another possibility is to set up known label prefixes, with each one identified +

    Another possibility is to set up known label prefixes, with each one identified by: -



    \glsxtraddlabelprefix{prefix}

    -

    +

    These should be listed in order of precedence. Since no entries are defined on the first -LaTeX run, the final prefix should be the fallback. You can prepend a prefix to the +LaTeX run, the final prefix should be the fallback. You can prepend a prefix to the list using: -



    \glsxtrprependlabelprefix{prefix}

    -

    +

    which gives it the highest order of precedence. -

    The ⟨

    The ⟨prefix⟩ argument may be empty. You can clear the list with: -



    \glsxtrclearlabelprefixes

    -

    -

    You can test if a prefix is already in the list with: -


    +

    You can test if a prefix is already in the list with: +


    \glsxtrifinlabelprefixlist{prefixtrue}{false}

    -

    +

    In general it’s best to avoid adding multiple instances of the same prefix, so you can check with this command before adding a prefix to the list. However, it can be useful @@ -19447,9 +19504,9 @@ check with this command before adding a prefix to the list. However, it can be u to repeat a prefix at the end of the list so that it can be used as a fallback for entries that haven’t yet been defined. -

    With the list of possible prefixes set up (including an empty prefix if necessary), +

    With the list of possible prefixes set up (including an empty prefix if necessary), you can use: -



    \dgls[optionslabel}[insert]

    -

    +

    which behaves like

    prefix⟩ is the first prefix in the list such that class="cmti-10">prefix⟩⟨label⟩ matches a defined entry (or the last entry in the prefix list if none match). -

    There are also analogous commands for the plural and case-changing +

    There are also analogous commands for the plural and case-changing versions: -



    \dglspl[optionslabel}[insert]

    -

    +

    (uses \glspl), -



    \dGls[optionslabel}[insert]

    -

    +

    (uses \Gls), -



    \dGlspl[optionslabel}[insert]

    -

    +

    (uses \Glspl), -



    \dGLS[optionslabel}[insert]

    -

    +

    (uses \GLS), -



    \dGLSpl[optionslabel}[insert]

    -

    +

    (uses \GLSpl), -



    \dglslink[optionslabel}[insert]

    -

    +

    (uses \glslink), -



    \dglsdisp[optionslabel}[insert]

    -

    +

    (uses \glsdisp). -

    These commands are essentially provided for a mixture of single and dual entries. +

    These commands are essentially provided for a mixture of single and dual entries. Suppose the file entries.bib contains: @@ -19574,16 +19631,16 @@ class="cmtt-10">entries.bib contains:

    @index{duck}  
    @dualindexabbreviation{svm, - 
      short={SVM}, - 
      long={support vector machine} + 
      short={SVM}, + 
      long={support vector machine}  
    }  
    @dualindexsymbol{pi, - 
      symbol={\ensuremath{\pi}}, - 
      description={ratio of a circle's circumference to its - 
        diameter} + 
      symbol={\ensuremath{\pi}}, + 
      description={ratio of a circle's circumference to its + 
        diameter}  
    }
    -

    and suppose the document code is: +

    and suppose the document code is: @@ -19593,18 +19650,18 @@ class="cmtt-10">entries.bib contains:  
    \usepackage{hyperref}  
    \usepackage[record,abbreviations,symbols]{glossaries-extra}  
    \newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% - 
     \longnewglossaryentry*{#1}{name={#3},category={symbol}, - 
       type={symbols},symbol={#4},#2}{#5}% + 
     \longnewglossaryentry*{#1}{name={#3},category={symbol}, + 
       type={symbols},symbol={#4},#2}{#5}%  
    }  
    \GlsXtrLoadResources[src=entries]  
    \begin{document} - 
    First use: \gls{duck}, \gls{svm}, \gls{pi}. - 
    Next use: \gls{duck}, \gls{svm}, \gls{pi}. + 
    First use: \gls{duck}, \gls{svm}, \gls{pi}. + 
    Next use: \gls{duck}, \gls{svm}, \gls{pi}.  
    \printunsrtglossaries  
    \end{document}

    -

    This uses the default empty primary prefix and dual. for the dual prefix, so +

    This uses the default empty primary prefix and dual. for the dual prefix, so \gls{svm} is referencing the primary entry, which is (essentially) an @index type @@ -19614,44 +19671,44 @@ for \gls{pi}, which references the primary @index entry rather than the symbol. -

    What’s really needed is: +

    What’s really needed is:

    -\gls{duck}, \gls{dual.svm}, \gls{dual.pi}. +\gls{duck}, \gls{dual.svm}, \gls{dual.pi}.
    -

    or with +

    or with

    \GlsXtrLoadResources[src=entries, - 
     label-prefix={idx.}, - 
     dual-prefix={} + 
     label-prefix={idx.}, + 
     dual-prefix={}  
    ]
    -

    then only the entries without a dual need a prefix: +

    then only the entries without a dual need a prefix:

    -\gls{idx.duck}, \gls{svm}, \gls{pi}. +\gls{idx.duck}, \gls{svm}, \gls{pi}.
    -

    Using

    Using \glsxtrnewglslike, as earlier, this can be simplified to:

    -\idx{duck}, \gls{svm}, \gls{pi}. +\idx{duck}, \gls{svm}, \gls{pi}.
    -

    but this requires remembering which terms have duals. -

    An alternative is to use

    but this requires remembering which terms have duals. +

    An alternative is to use \dgls instead: @@ -19662,25 +19719,25 @@ class="cmtt-10">\dgls instead:  
    \usepackage{hyperref}  
    \usepackage[record,abbreviations,symbols]{glossaries-extra}  
    \newcommand{\bibglsnewdualindexsymbolsecondary}[5]{% - 
     \longnewglossaryentry*{#1}{name={#3},category={symbol}, - 
       type={symbols},symbol={#4},#2}{#5}% + 
     \longnewglossaryentry*{#1}{name={#3},category={symbol}, + 
       type={symbols},symbol={#4},#2}{#5}%  
    }  
    \GlsXtrLoadResources[src=entries]  
    \glsxtraddlabelprefix{dual.}  
    \glsxtraddlabelprefix{}  
    \begin{document} - 
    First use: \dgls{duck}, \dgls{svm}, \dgls{pi}. - 
    Next use: \dgls{duck}, \dgls{svm}, \dgls{pi}. + 
    First use: \dgls{duck}, \dgls{svm}, \dgls{pi}. + 
    Next use: \dgls{duck}, \dgls{svm}, \dgls{pi}.  
    \printunsrtglossaries  
    \end{document}

    -

    On the first LaTeX call (when the

    On the first LaTeX call (when the .glstex file doesn’t exist), neither dual.svm nor svm exists, so \dgls uses the last prefix (which is empty in this case). This means -that on the first LaTeX run, \dgls{svm} behaves like \gls{svm}, which adds a record for the primary dual.svm) entry to be selected. The location will be added to the primary entry’s location list, unless overridden by resource options, such as combine-dual-locations. -

    Once

    Once bib2gls has been run and the \dgls{svm} now behaves like \gls{dual.svm}, which follows the abbreviation style and hyperlinks to the list of abbreviations. -

    Similarly for the index-symbol combination

    Similarly for the index-symbol combination dual.pi and pi. In the case of \dgls{duck} always behaves like \gls{duck}. -

    If you haven’t used

    If you haven’t used combine-dual-locations an extra bib2gls+LaTeX run +class="cmtt-10">bib2gls+LaTeX run may be required to correct the location lists. -

    If you change the label prefixes, remember to update the corresponding +

    If you change the label prefixes, remember to update the corresponding \glsxtraddlabelprefix{prefix}. If no prefixes have been added to the list (or if the list is cleared), just an empty prefix is assumed. -

    As from version 1.8,

    As from version 1.8, bib2gls provides hooks that identify the label prefixes in the \newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}  
    \GlsXtrLoadResources[src=entries]

    -

    Remember that this will only have an effect once the

    Remember that this will only have an effect once the .glstex file has been created. The prefix list will be empty on the first run (which is treated as a single empty prefix). If this isn’t a suitable fallback, it may be necessary to add one after all the @@ -19780,14 +19837,14 @@ resource commands:  
    \GlsXtrLoadResources[src=entries,label-prefix={idx.}]  
    \glsxtraddlabelprefix{idx.}

    -

    Although this rather defeats the purpose of using the hooks as you still have to keep +

    Although this rather defeats the purpose of using the hooks as you still have to keep track of the fallback prefix. -

    +

    -

    Top

    9.5 Record Counting

    -

    As from version 1.1 of

    As from version 1.1 of bib2gls, you can save the total record count for each entry by @@ -19810,7 +19867,7 @@ class="cmtt-10">recordcount: set to the total number of records found for class="cmtt-10">recordcount.⟨counter⟩: set to the total number of records found for the entry for the given counter. -

    If

    If --record-count-unit is used then additionally:

    • counter.location⟩: set to the total number of records found for the entry for the given counter with the given location.
    -

    Only use the unit counting option if the locations don’t contain any special characters. If +

    Only use the unit counting option if the locations don’t contain any special characters. If you really need it with locations that may contain formatting commands, then you can try redefining: -



    \glsxtrdetoklocation{location}

    -

    +

    so that it detokenizes ⟨location⟩ but take care when using \GlsXtrLocationRecordCount with commands like \thepage as they can end up becoming detokenized too early. -

    Note that the record count includes locations that

    Note that the record count includes locations that bib2gls discards, such as ignored records, duplicates and partial duplicates. It doesn’t include cross-reference @@ -19854,21 +19911,21 @@ field) is 2 + 1 + 4 = 7, and the total for the section counter (stored in the recordcount.section field) is 1. -

    With the unit counting on as well, the field

    With the unit counting on as well, the field recordcount.page.1 is set to 2, recordcount.page.2 is set to 1, recordcount.page.3 is set to 4 and recordcount.section.3 is set to 1. -

    You can access these fields using the following commands which will expand to +

    You can access these fields using the following commands which will expand to the field value if set or to 0 if unset: -



    \GlsXtrTotalRecordCount{label}

    -

    +

    This expands to the total record count for the entry given by ⟨label⟩. @@ -19878,15 +19935,15 @@ class="cmti-10">label⟩.

    \GlsXtrTotalRecordCount{bird}
    -

    expands to 8. -


    expands to 8. +


    \GlsXtrRecordCount{label}{counter}

    -

    +

    This expands to the counter total for the entry given by ⟨label⟩ where ⟨counter⟩ is the @@ -19898,7 +19955,7 @@ counter name. For example:

    \GlsXtrRecordCount{bird}{page}
    -

    expands to 7 and +

    expands to 7 and @@ -19906,8 +19963,8 @@ counter name. For example:

    \GlsXtrRecordCount{bird}{section}
    -

    expands to 1. -


    expands to 1. +


    \GlsXtrLocationRecordCount{labelcounter}{location}

    -

    +

    This expands to the total for the given location. For example @@ -19925,17 +19982,17 @@ This expands to the total for the given location. For example

    \GlsXtrLocationRecordCount{bird}{page}{3}
    -

    expands to 4. Be careful about using

    expands to 4. Be careful about using \thepage in the ⟨location⟩ part. Remember that due to TeX’s asynchronous output routine, \thepage may not be correct. -

    There are commands analogous to the entry counting commands like

    There are commands analogous to the entry counting commands like \cgls and \cglsformat that are triggered by the record count. These are listed below. -



    \rglsmodifierlabel}[insert]

    -

    -


    +


    \rglsplmodifierlabel}[insert]

    -

    -


    +


    \rGlsmodifierlabel}[insert]

    -

    -


    +


    \rGlsplmodifierlabel}[insert]

    -

    -


    +


    \rGLSmodifierlabel}[insert]

    -

    -


    +


    \rGLSplmodifierlabel}[insert]

    -

    +

    These commands check the recordcount \glssetcategoryattribute{abbreviation}{recordcount}{1}

    -

    For convenience, you can use -


    For convenience, you can use +


    \GlsXtrSetRecordCountAttribute{category list}{n}

    -

    +

    to set the recordcountn⟩ for all the categories listed in ⟨category list⟩. -

    The

    The \rgls-like commands use -



    \glsxtrifrecordtrigger{labeltrigger code}{normal}

    -

    +

    to determine whether the \rgls-like command should behave like its \gls counterpart (⟨normal⟩) or whether it should instead use ⟨trigger code⟩. -

    This command checks if the

    This command checks if the recordcount attribute is set. If not is just does ⟨normal⟩, otherwise it tests if -



    \glsxtrrecordtriggervalue{label}

    -

    +

    is greater than the value given in the recordcount

    -

    The ⟨

    The ⟨trigger code⟩ part writes a record with the format set to trigger format⟩. Then it unsets the first use flag. Note that it doesn’t implement the post-link hook. This ensures that the record count is correct on the next run. -

    The ⟨

    The ⟨trigger format⟩ depends on the \rgls-like command used and will be one of the following: -



    \rglsformat{label}{insert}

    -

    -


    +


    \rglsplformat{label}{insert}

    -

    -


    +


    \rGlsformat{label}{insert}

    -

    -


    +


    \rGlsplformat{label}{insert}

    -

    -


    +


    \rGLSformat{label}{insert}

    -

    -


    +


    \rGLSplformat{label}{insert}

    -

    +

    These all behave much like their \cglsformat counterparts. If the entry’s regular attribute is set or if the entry doesn’t have a long form, the first or first plural is used, otherwise the long or long plural form is used. -

    You can use -


    You can use +


    \glsxtrenablerecordcount

    -

    +

    to redefine \gls, \glspl, \rGls, class="cmtt-10">\rGlspl, \rGLS, \rGLSpl, respectively, for convenience. -

    If you don’t want the entries that use ⟨

    If you don’t want the entries that use ⟨trigger code⟩ to appear in the glossary, you need to use the resource option trigger-type to assign them to another glossary. @@ -20190,19 +20247,19 @@ For example:  
    \usepackage[record]{glossaries-extra}  
    \newignoredglossary{ignored}  
    \GlsXtrLoadResources[ - 
     src=example-glossaries-acronym, - 
     trigger-type=ignored, - 
     category=abbreviation + 
     src=example-glossaries-acronym, + 
     trigger-type=ignored, + 
     category=abbreviation  
    ]  
    \glsxtrenablerecordcount  
    \GlsXtrSetRecordCountAttribute{abbreviation}{1}  
    \begin{document} - 
    \gls{lid}.  \gls{stc}. \gls{lid}.  \gls{aeu}. - 
    \gls{upa}. \gls{aeu}. + 
    \gls{lid}.  \gls{stc}. \gls{lid}.  \gls{aeu}. + 
    \gls{upa}. \gls{aeu}.  
    \printunsrtglossaries  
    \end{document}

    -

    In the above,

    In the above, stc and upa both only have one record, so they are assigned to the main one.

    -

    -

    +

    Top

    10. Miscellaneous New Commands

    -

    The

    The glossaries package provides \glsrefentry entry to cross-reference entries @@ -20229,26 +20286,26 @@ class="cmss-10">subentrycounter options. The glossaries-extra package provides a supplementary command -



    \glsxtrpageref{label}

    -

    +

    that works in the same way except that it uses \pageref instead of \ref. -

    You can copy an entry to another glossary using -


    You can copy an entry to another glossary using +


    \glsxtrcopytoglossary{entry-label}{glossary-type}

    -

    +

    This appends ⟨entry-label⟩ to the end of the internal list for the glossary given by ⟨ \printunsrtglossary[target=false]

    -

    -

    The

    +

    The glossaries package allows you to set preamble code for a given glossary type using \setglossarypreamble. This overrides any previous setting. With glossaries-extra (as from v1.12) you can instead append to the preamble using -



    \apptoglossarypreamble[type]{code}

    -

    +

    or prepend using -



    \pretoglossarypreamble[type]{code}

    -

    +

    -

    Top

    10.1 Entry Fields

    -

    A field may now be used to store the name of a text-block command that takes a +

    A field may now be used to store the name of a text-block command that takes a single argument. The field is given by -



    \GlsXtrFmtField

    -

    +

    The default value is useri. Note that the value must be the control sequence name without the initial backslash. -

    For example: +

    For example: @@ -20316,31 +20373,31 @@ class="cmti-10">without the initial backslash. \newcommand*{\mtx}[1]{\boldsymbol{#1}}  
    \newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}}  
    \newglossaryentry{matrix}{% - 
      name={matrix}, - 
      symbol={\ensuremath{\mtx{M}}}, - 
      plural={matrices}, - 
      user1={mtx}, - 
      description={rectangular array of values} + 
      name={matrix}, + 
      symbol={\ensuremath{\mtx{M}}}, + 
      plural={matrices}, + 
      user1={mtx}, + 
      description={rectangular array of values}  
    }  
    \newglossaryentry{identitymatrix}{% - 
      name={identity matrix}, - 
      symbol={\ensuremath{\mtx{I}}}, - 
      plural={identity matrices}, - 
      description={a diagonal matrix with all diagonal elements equal to - 
    1 and all other elements equal to 0} + 
      name={identity matrix}, + 
      symbol={\ensuremath{\mtx{I}}}, + 
      plural={identity matrices}, + 
      description={a diagonal matrix with all diagonal elements equal to + 
    1 and all other elements equal to 0}  
    }  
    \newglossaryentry{matrixinv}{% - 
      name={matrix inverse}, - 
      symbol={\ensuremath{\mtxinv{M}}}, - 
      user1={mtxinv}, - 
      description={a square \gls{matrix} such that - 
       $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$} + 
      name={matrix inverse}, + 
      symbol={\ensuremath{\mtxinv{M}}}, + 
      user1={mtxinv}, + 
      description={a square \gls{matrix} such that + 
       $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$}  
    }

    -

    -

    There are two commands provided that allow you to apply the command to an +

    +

    There are two commands provided that allow you to apply the command to an argument: -



    \glsxtrfmt[optionslabel}{text}

    -

    +

    This effectively does

    \glsxtrfmtdisplay {cs name name}{text}cs name⟩ is the control sequence name supplied in must be defined to take a single required argument. Although it effectively acts like \glslink it misses out the post-link hook. -

    The default ⟨

    The default ⟨default-options⟩ are given by -



    \GlsXtrFmtDefaultOptions

    -

    +

    This is defined as noindex but may be redefined as appropriate. Note that the replacement text of \GlsXtrFmtDefaultOptions is prepended to the optional argument of \glslink. -

    As from version 1.23, there’s also a starred version of this command that has a +

    As from version 1.23, there’s also a starred version of this command that has a final optional argument: -



    \glsxtrfmt*[optionstext}[insert]

    -

    +

    Both the starred and unstarred versions use: -



    \glsxtrfmtdisplay{cs nametext}{insert}

    -

    +

    within the link text. In the case of the unstarred version ⟨insert⟩ will be empty. It will also be empty if the final option argument is missing from the starred form. If the @@ -20440,30 +20497,30 @@ default definition is:

    \newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
    -

    which puts ⟨

    which puts ⟨text⟩ inside the argument of the control sequence and ⟨insert⟩ outside it (but it will still be inside the link text). -

    Remember that nested links cause a problem so avoid using commands like

    Remember that nested links cause a problem so avoid using commands like \gls or \glsxtrfmt within ⟨text⟩.
    -

    -

    For example: +

    +

    For example:

    \[ - 
      \glsxtrfmt{matrix}{A} - 
      \glsxtrfmt{matrixinv}{A} - 
      = - 
      \glssymbol{identitymatrix} + 
      \glsxtrfmt{matrix}{A} + 
      \glsxtrfmt{matrixinv}{A} + 
      = + 
      \glssymbol{identitymatrix}  
    \]
    -

    If the default options are set to

    If the default options are set to noindex then \glsxtrfmt won’t index, but will create a hyperlink (if \renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex}

    -

    -

    Note that

    +

    Note that \glsxtrfmt won’t work with PDF bookmarks. Instead you can use -



    \glsxtrentryfmt{label}{text}

    -

    +

    If hyperref is used, this uses \texorpdfstring and will expand to -



    \glsxtrpdfentryfmt{label}{text}

    -

    +

    within the PDF bookmarks, but in the document it will do ⟨cs{text⟩ otherwise. The PDF bookmark version simply does ⟨text⟩. It may be redefined, but remember that it needs to expand fully. -

    The

    The glossaries package provides \glsaddstoragekey to add new keys. This command will cause an error if the key has already been defined. The glossaries-extra package provides a supplementary command that will only define the key if it doesn’t already exist: -



    \glsxtrprovidestoragekey{keydefault}{cs}

    -

    +

    If the key has already been defined, it will still provide the command given in the third argument ⟨cs⟩ (if it hasn’t already been defined). Unlike cs⟩ may be left empty if you’re happy to just use \glsfieldfetch to fetch the value of this new key. -

    You can test if a key has been provided with: -


    You can test if a key has been provided with: +


    \glsxtrifkeydefined{keytrue}{false}

    -

    +

    This tests if ⟨key⟩ is available for use in the ⟨key⟩= list in the second argument of @@ -20555,7 +20612,7 @@ class="cmtt-10">\newglossaryentry (or the optional argument of commands l class="cmtt-10">\newabbreviation). The corresponding field may not have been set for any of the entries if no default was provided. -

    There are now commands provided to set individual fields. Note that +

    There are now commands provided to set individual fields. Note that these only change the specified field, not any related values. For example, changing the value of the textparent field). Unexpected results may occur if they are subsequently changed. -



    \GlsXtrSetField{labelfield}{value}

    -

    +

    Sets the field given by ⟨field⟩ to ⟨value⟩ for the entry given by ⟨\newglossaryentry. If a field without a corresponding key is assigned a value, the key remains undefined. This command is robust. -

    \GlsXtrSetField uses -



    \glsxtrsetfieldifexists{labelfield}{code}

    -

    +

    where ⟨label⟩ is the entry label and ⟨code⟩ is the assignment code. -

    This command just uses

    This command just uses \glsdoifexists{=warn\glsxtrsetfieldifexists to simply do ⟨code⟩ if you want to skip the existence check. Alternatively you can instead use -



    \glsxtrdeffield{label{replacement text}

    -

    +

    This simply uses etoolbox’s \protected@csedef instead:10.1 -



    \glsxtredeffield{label{replacement text}

    -

    -


    +


    \gGlsXtrSetField{labelfield}{value}

    -

    +

    As \GlsXtrSetField but globally. -



    \eGlsXtrSetField{labelfield}{value}

    -

    +

    As \GlsXtrSetField but uses protected expansion. -



    \xGlsXtrSetField{labelfield}{value}

    -

    +

    As \gGlsXtrSetField but uses protected expansion. -



    \GlsXtrLetField{labelfield}{cs}

    -

    +

    Sets the field given by ⟨field⟩ to the replacement text of ⟨cs⟩ for the entry given by ⟨label⟩ (using \let). -



    \csGlsXtrLetField{labelfield}{cs name}

    -

    +

    As \GlsXtrLetField but the control sequence name is supplied instead. -



    \GlsXtrLetFieldToField{label-1}{field-2}

    -

    +

    Sets the field given by ⟨field-1⟩ for the entry given by ⟨label-1⟩ to the field given by @@ -20758,13 +20815,13 @@ class="cmtt-10">\GlsXtrSetField. -

    The

    The glossaries package provides \ifglshasfield to determine if a field has been set. The glossaries-extra package provides a simpler version: -



    \glsxtrifhasfield{fieldtrue}{false}

    -

    +

    (New to v1.19.) Note that in this case the ⟨field⟩ must be the internal field label (for @@ -20792,15 +20849,15 @@ class="cmti-10">true⟩ part is done otherwise it does ⟨false⟩. Within ⟨true⟩ you may use -



    \glscurrentfieldvalue

    -

    +

    to access the field value. This command includes grouping which scopes the ⟨true⟩ and ⟨false⟩ parts. The starred version -



    \glsxtrifhasfield*{fieldtrue}{false}

    -

    +

    omits the implicit grouping. -

    Be careful of keys that use

    Be careful of keys that use \relax as the default value (such as the symbol). Use \ifglshassymbol instead.
    -

    -

    There is also a version that simply uses

    +

    There is also a version that simply uses \ifcsundef. It doesn’t save the field value, but can be used if you only need to check if the field is defined without accessing it: -



    \GlsXtrIfFieldUndef{fieldtrue}{false}

    -

    -

    There’s a difference between an undefined field and an unset field. An undefined +

    +

    There’s a difference between an undefined field and an unset field. An undefined field hasn’t been assigned any value (no associated internal control sequence has been defined). If a defined field has been defined to empty, then it’s considered unset. \GlsXtrIfFieldUndef for fields that can only be defined through commands like \GlsXtrSetField.
    -

    -

    You can test if a field value equals a string using -


    +

    You can test if a field value equals a string using +


    \GlsXtrIfFieldEqStr{fieldtrue}{false}

    -

    +

    If the entry exists and has the given field set to the given text then this does ⟨true⟩ otherwise it does ⟨\ifdefstring. Version 1.39 introduced a starred form of t which uses the starred form of \glsxtrifhasfield. -

    As from version 1.31, there’s a similar command: -


    As from version 1.31, there’s a similar command: +


    \GlsXtrIfFieldEqXpStr{fieldtrue}{false}

    -

    +

    This is like \GlsXtrIfFieldEqStr but first (protected) fully expands ⟨text⟩ (but not the field value). If you want to compare the (protected) full expansion of both the field value and ⟨text⟩ use: -



    \GlsXtrIfXpFieldEqXpStr{field}{false}

    -

    +

    Again, version 1.39 introduced a starred form of these commands, which use the starred form of \glsxtrifhasfield. -

    As from v1.42, you can test if the field value is contained in a comma-separated +

    As from v1.42, you can test if the field value is contained in a comma-separated list with: -



    \GlsXtrIfFieldValueInCsvList{label}{false}

    -

    +

    The unstarred version uses the unstarred form of \glsxtrifhasfield (which adds grouping so ⟨list⟩. See the datatool documentation for further details. -

    This command is intended for fields that contain a label. For example, to test if +

    This command is intended for fields that contain a label. For example, to test if the category is one of a set of labels: @@ -20972,11 +21029,11 @@ the category is one of a set of labels:

    \GlsXtrIfFieldValueInCsvList{examplelabel}{category}% - 
     {abbreviation,acronym}% set of labels - 
     {true part}{false part} + 
     {abbreviation,acronym}% set of labels + 
     {true part}{false part}
    -

    -

    As from v1.31, if a field represents a numeric (integer) value, you can use the +

    +

    As from v1.31, if a field represents a numeric (integer) value, you can use the following two numeric tests. If the field is set, it must expand to an integer. You may use \glscurrentfieldvalue within ⟨\glscurrentfieldvalue is set accordingly. As from version 1.39, these numeric tests have starred versions. The unstarred versions add implicit grouping. The starred versions don’t. -

    To test if the value is non-zero: -


    To test if the value is non-zero: +


    \GlsXtrIfFieldNonZero{fieldtrue}{false}

    -

    +

    Alternatively, you can test if the field expands to a specific number using: -



    \GlsXtrIfFieldEqNum{fieldtrue}{false}

    -

    +

    This does ⟨true⟩ if the field value equals ⟨n⟩ (using \ifnum for the comparison) otherwise it does ⟨false⟩. For a more general numeric comparison you can use: -



    \GlsXtrIfFieldCmpNum{field}{false}

    -

    +

    where ⟨comparison⟩ is one of =, < or >. -

    The

    The glossaries package provides \glsfieldfetch which can be used to fetch the value of the given field and store it in a control sequence. The glossaries-extra package provides another way of accessing the field value: -



    \glsxtrusefield{entry-label}{field-label}

    -

    +

    This works in the same way as commands like \glsentrytext but the field label is specified in the first argument. Note that the ⟨glossaries manual. No error occurs if the entry or field haven’t been defined. This command is not robust. -

    There is also a version that converts the first letter to uppercase (analogous to +

    There is also a version that converts the first letter to uppercase (analogous to \Glsentrytext): -



    \Glsxtrusefield{entry-label}{field-label}

    -

    +

    and, as from v1.37, a command that converts the entire value to upper case: -



    \GLSxtrusefield{entry-label}

    -

    -

    If you want to use a field to store a list that can be used as an

    +

    If you want to use a field to store a list that can be used as an etoolbox internal list, you can use the following command that adds an item to the field using @@ -21101,7 +21158,7 @@ list, you can use the following command that adds an item to the field using class="cmss-10">etoolbox’s \listcsadd: -



    \glsxtrfieldlistadd{labelfield}{item}

    -

    +

    where ⟨label⟩ is the entry’s label, ⟨field⟩ is the entry’s field and ⟨\listgadd, \listeadd and \listxadd: -



    \glsxtrfieldlistgadd{labelfield}{item}

    -

    -


    +


    \glsxtrfieldlisteadd{labelfield}{item}

    -

    -


    +


    \glsxtrfieldlistxadd{labelfield}{item}

    -

    +

    You can then iterate over the list using: -



    \glsxtrfielddolistloop{label}{field}

    -

    +

    or -



    \glsxtrfieldforlistloop{labelfield}{handler}

    -

    +

    that internally use \dolistcsloop and \forlistloop, respectively. You can use @@ -21179,18 +21236,18 @@ class="cmtt-10">\listbreaketoolbox manual for further details). -

    For fields that contain comma-separated lists use

    For fields that contain comma-separated lists use \glsxtrforcsvfield instead. -

    New to v1.42: -


    New to v1.42: +


    \glsxtrfieldformatlist{label}{field}

    -

    +

    Like datatool-base’s datatool-base command, this command has no starred version. Grouping is automatically applied. -

    For example, with

    For example, with bib2gls’s save-child-count resource option:

    \newcommand*{\listchildren}[1]{% - 
      \GlsXtrIfFieldNonZero{childcount}{#1}% - 
      {child count: \glscurrentfieldvalue; children: - 
       \let\DTLlistformatitem\glsfmtname - 
       \glsxtrfieldformatlist{#1}{childlist}% - 
      }% - 
      {no children}% + 
      \GlsXtrIfFieldNonZero{childcount}{#1}% + 
      {child count: \glscurrentfieldvalue; children: + 
       \let\DTLlistformatitem\glsfmtname + 
       \glsxtrfieldformatlist{#1}{childlist}% + 
      }% + 
      {no children}%  
    }
    -

    For fields that contain a comma-separated list use

    For fields that contain a comma-separated list use \glsxtrfieldformatcsvlist instead. -

    There are also commands that use

    There are also commands that use \ifinlistcs: -



    \glsxtrfieldifinlist{labeltrue}{false}

    -

    +

    and \xifinlistcs -



    \glsxtrfieldxifinlist{labeltrue}{false}

    -

    -

    See the

    +

    See the etoolbox’s user manual for further details of these commands, in particular the limitations of \ifinlist. -

    If the field has a comma-separated list value instead, you can iterate over it +

    If the field has a comma-separated list value instead, you can iterate over it using: -



    \glsxtrforcsvfield{labelfield}{handler}

    -

    +

    where again ⟨handler⟩ is a control sequence that takes a single argument. Unlike the \@endfortrue. The \glsxtrforcsvfield command locally defines a user level command: -



    \glsxtrendfor

    -

    +

    which is just a synonym for \@endfortrue. -

    The loop is performed within the true part of

    The loop is performed within the true part of \glsxtrifhasfield so scoping is automatically applied. -

    New to v1.42: -


    New to v1.42: +


    \glsxtrfieldformatcsvlist{label}{field}

    -

    +

    Like \glsxtrfieldformatcsvlist but for fields that contain comma-separated lists. -

    As from version 1.32, if the field given by -


    As from version 1.32, if the field given by +


    \GlsXtrForeignTextField

    -

    +

    (which defaults to userii) contains a locale tag, then -



    \GlsXtrForeignText{entry label}{text}

    -

    +

    can be used to encapsulate ⟨text⟩ in \foreignlanguage{text⟩. For example:  
    \usepackage{glossaries-extra}  
    \setabbreviationstyle{long-short-user}  
    \newabbreviation - 
     [user1={Associa\c{c}\~ao Brasileria de Normas T\'ecnicas}, - 
      user2= {pt-BR} - 
     ] - 
     {abnt}{ABNT}{Brazilian National Standards Organization} + 
     [user1={Associa\c{c}\~ao Brasileria de Normas T\'ecnicas}, + 
      user2= {pt-BR} + 
     ] + 
     {abnt}{ABNT}{Brazilian National Standards Organization}  
    \newabbreviation - 
     [user1={Deutsches Institut f\"ur Normung e.V.}, - 
      user2={de-DE-1996}] - 
     {din}{DIN}{German Institute for Standardization} + 
     [user1={Deutsches Institut f\"ur Normung e.V.}, + 
      user2={de-DE-1996}] + 
     {din}{DIN}{German Institute for Standardization}  
    \renewcommand*{\glsxtruserparen}[2]{% - 
      \glsxtrfullsep{#2}% - 
      \glsxtrparen - 
      {#1% - 
       \ifglshasfield{\glsxtruserfield}{#2}% - 
       {, \emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}% - 
       {}% - 
      }% + 
      \glsxtrfullsep{#2}% + 
      \glsxtrparen + 
      {#1% + 
       \ifglshasfield{\glsxtruserfield}{#2}% + 
       {, \emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}% + 
       {}% + 
      }%  
    }  
    \begin{document} - 
    \gls{abnt}, \gls{din}. + 
    \gls{abnt}, \gls{din}.  
    \end{document}

    -

    -

    When using the

    +

    When using the record option, in addition to recording the usual location, you can also record the current value of another counter at the same time using the preamble-only command: -



    \GlsXtrRecordCounter{counter name}

    -

    +

    For example: @@ -21412,7 +21469,7 @@ For example: \usepackage[record]{glossaries-extra}  
    \GlsXtrRecordCounter{section}

    -

    Each time an entry is referenced with commands like

    Each time an entry is referenced with commands like \gls or \glstext, the \gls{bird} is used in section 1.2 th

    \glsxtrfieldlistgadd{bird}{record.section}{1.2}
    -

    Note that there’s no key corresponding to this new

    Note that there’s no key corresponding to this new record.section field, but its value can be accessed with \glsxtrfielduse or the list can be iterated over with \glsxtrfielddolistloop etc. -

    +

    -

    Top

    10.2 Display All Entries Without Sorting or Indexing

    -



    \printunsrtglossary[options]

    -

    +

    This behaves like \printnoidxglossary but never sorts the entries and always lists all the defined entries for the given glossary (and doesn’t require @@ -21492,21 +21549,21 @@ the definition of \glsgroupskip to avoid the “Incomplete \iftrue” error that may otherwise occur. -

    There’s also a starred form -


    There’s also a starred form +


    \printunsrtglossary*[options]{code}

    -

    +

    which is equivalent to

    \begingroup
     code\printunsrtglossary[options\endgroup class="cmtt-10">\glossarypreamble, the supplied ⟨code⟩ is done before the glossary header. -

    This means you now have the option to simply list all entries on the first -LaTeX run without the need for a post-processor, however there will be no

    This means you now have the option to simply list all entries on the first +LaTeX run without the need for a post-processor, however there will be no number list in this case, as that has to be set by a post-processor such as §9 bib2gls: Managing Reference Databases). -

    No attempt is made to gather hierarchical elements. If child entries aren’t defined +

    No attempt is made to gather hierarchical elements. If child entries aren’t defined immediately after their parent entry, they won’t be together in the glossary when using \printunsrtglossary.
    -

    +

    -

    There’s a difference in behaviour depending on whether or not the

    There’s a difference in behaviour depending on whether or not the group key is defined. If not defined (default), the group label will be formed from the first letter of @@ -21552,7 +21609,7 @@ class="tcrm-1000">§2.10.1 Glossary Style Modifications. This can lead to an odd effect if you are using a style that separates letter groups when the ordering isn’t alphabetical. -

    If the

    If the group key is defined (which it is with the group field is non-empty, then the corresponding title is obtained as described earlier. -

    If you want to use a different field, you can redefine -


    In either case, if the groups option is set to false then no group formation will be +performed. +

    If you want to use a different field for the group label, you can redefine +


    \glsxtrgroupfield

    -

    +

    to the relevant internal field label, but the group key must still be defined (through the record option or with commands like option or with commands like \glsaddstoragekey) to ensure that \printunsrtglossary uses \glsxtrgroupfield. (This method is used by bib2gls for secondary entries, which have the group label stored in the secondarygroup internal field.) -

    If you have any entries with the

    If you have any entries with the see key set, you will need the key set, you will need the glossaries package + id="dx1-51019"> package option seenoindex=ignore or or seenoindex=warn to prevent an error occurring from the + id="dx1-51021"> to prevent an error occurring from the automated \glssee normally triggered by this key. The record=only package option + id="dx1-51022"> package option will automatically deal with this. -

    For example: +

    For example: @@ -21618,100 +21679,105 @@ will automatically deal with this.

    \documentclass{article}  
    \usepackage{glossaries-extra} - 
    \newglossaryentry{zebra}{name={zebra},description={stripy animal}} - 
    \newglossaryentry{ant}{name={ant},description={an insect}} + 
    \newglossaryentry{zebra}{name={zebra},description={stripy animal}} + 
    \newglossaryentry{ant}{name={ant},description={an insect}}  
    \begin{document} - 
    \gls{ant} and \gls{zebra} + 
    \gls{ant} and \gls{zebra}  
    \printunsrtglossaries  
    \end{document}
    -

    In the above, zebra will be listed before ant as it was defined first. -

    If you allow document definitions with the

    In the above, zebra will be listed before ant as it was defined first. +

    If you allow document definitions with the docdefs option, the document will -require a second LaTeX run if the entries are defined after option, the document will +require a second LaTeX run if the entries are defined after \printunsrtglossary. -

    The optional argument is as for

    The optional argument is as for \printnoidxglossary (except for the sort key, + id="dx1-51024"> key, which isn’t available). -

    All glossaries may be displayed in the order of their definition using: -


    All glossaries may be displayed in the order of their definition using: +


    \printunsrtglossaries

    -

    +

    which is analogous to \printnoidxglossaries. This just iterates over all defined glossaries (that aren’t on the ignored list) and does \printunsrtglossary[type=⟨type⟩]. -

    To avoid complications caused by

    +

    +

    Top

    10.2.1 Hooks

    +

    To avoid complications caused by tabular-like glossary styles, -like glossary styles, \printunsrtglossary iterates over all entries in the selected glossary and appends the appropriate code to an internal command. Once the construction of this command is complete, then it’s performed to display the glossary. This puts the loop outside the style code. For convenience, there’s a hook used within the loop: -



    \printunsrtglossaryentryprocesshook{label}

    -

    +

    This hook should not display any content, but may be used to perform calculations. For example, to calculate widths. Within this hook you can use: -



    \printunsrtglossaryskipentry

    -

    +

    to skip the current entry. This will prevent the entry from being added to the internal command. -

    There’s another hook immediately before the internal command containing the -glossary code is performed: -


    \printunsrtglossarypredoglossary

    -

    -

    The internal command uses -


    There’s another hook immediately before the internal command containing the +glossary code is performed: +


    \printunsrtglossarypredoglossary

    +

    +

    The internal command uses +


    \printunsrtglossaryhandler{label}

    -

    +

    to display each item in the list, where ⟨label⟩ is the current label. -

    By default the handler just does -


    By default the handler just does +


    \glsxtrunsrtdo{label}

    -

    +

    which determines whether to use \glossentry or \subglossentry and checks the location and and loclist fields for the fields for the number list. If you want to use a different field to be used instead of location then redefine: -


    then redefine: +


    \GlsXtrLocationField

    -

    +

    to the internal name of the desired field. For example: @@ -21720,25 +21786,31 @@ to the internal name of the desired field. For example:

    \renewcommand{\GlsXtrLocationField}{primarylocation}
    -

    -

    Note that if the given location field is undefined or unset, the handler will +

    +

    Note that if the given location field is undefined or unset, the handler will fallback on the loclist field.
    -

    + id="dx1-52013"> field.

    +

    You can instruct bib2gls to omit setting the loclist field with the resource option + id="dx1-52015"> field with the resource option --save-loclist=false to prevent it from being used as a fallback. -

    You can redefine the handler if required. For example, you may want to filter -entries according to the category label. You can test if a label is contained in a -comma-separated list of labels using: -


    +

    +

    Top

    10.2.2 Filtering

    +

    You can redefine the handler used by \printunsrtglossary if required. For +example, you may want to filter entries according to the category label. You can test +if a label is contained in a comma-separated list of labels using: +


    \glsxtriflabelinlist{label}{true}{false}

    -

    +

    The ⟨label⟩ and ⟨label list⟩ will be fully expanded. -

    If you redefine the handler to exclude entries, you may end up with an empty +

    If you redefine the handler to exclude entries, you may end up with an empty glossary. This could cause a problem for the list-based styles.
    -

    -

    For example, if the preamble includes: +

    +

    For example, if the preamble includes: @@ -21764,7 +21836,7 @@ glossary. This could cause a problem for the list-based styles.

    \usepackage[record,style=index]{glossaries-extra}  
    \GlsXtrRecordCounter{section}
    -

    then you can print the glossary but first redefine the handler to only select entries +

    then you can print the glossary but first redefine the handler to only select entries that include the current section number in the record.section field: @@ -21773,13 +21845,13 @@ class="cmtt-10">record.section field:

    \renewcommand{\printunsrtglossaryhandler}[1]{% - 
      \glsxtrfieldxifinlist{#1}{record.section}{\thesection} - 
      {\glsxtrunsrtdo{#1}}% - 
      {}% + 
      \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + 
      {\glsxtrunsrtdo{#1}}% + 
      {}%  
    }
    -

    -

    Alternatively you can use the starred form of

    +

    Alternatively you can use the starred form of \printunsrtglossary which will localise the change: @@ -21788,17 +21860,17 @@ localise the change:

    \printunsrtglossary*{% - 
      \renewcommand{\printunsrtglossaryhandler}[1]{% - 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} - 
        {\glsxtrunsrtdo{#1}}% - 
        {}% - 
      }% + 
      \renewcommand{\printunsrtglossaryhandler}[1]{% + 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + 
        {\glsxtrunsrtdo{#1}}% + 
        {}% + 
      }%  
    }
    -

    -

    If you are using the

    +

    If you are using the hyperref package and want to display the same glossary more + id="dx1-53002"> package and want to display the same glossary more than once, you can also add a temporary redefinition of \glolinkprefix to avoid duplicate hypertarget names. For example: @@ -21808,21 +21880,21 @@ duplicate hypertarget names. For example:

    \printunsrtglossary*{% - 
      \renewcommand{\printunsrtglossaryhandler}[1]{% - 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} - 
        {\glsxtrunsrtdo{#1}}% - 
        {}% - 
      }% - 
      \ifcsundef{theHsection}% - 
      {% - 
        \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% - 
      }% - 
      {% - 
        \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% - 
      }% + 
      \renewcommand{\printunsrtglossaryhandler}[1]{% + 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + 
        {\glsxtrunsrtdo{#1}}% + 
        {}% + 
      }% + 
      \ifcsundef{theHsection}% + 
      {% + 
        \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + 
      }% + 
      {% + 
        \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + 
      }%  
    }
    -

    Note that this will cause a problem if your descriptions contain commands like

    Note that this will cause a problem if your descriptions contain commands like \gls that need to link an entry that doesn’t appear in the summary. In this case, it’s a better approach to use: @@ -21832,22 +21904,22 @@ better approach to use:

    \printunsrtglossary*{% - 
      \renewcommand{\printunsrtglossaryhandler}[1]{% - 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} - 
        {\glsxtrunsrtdo{#1}}% - 
        {}% - 
      }% - 
      \ifcsundef{theHsection}% - 
      {% - 
        \setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}% - 
      }% - 
      {% - 
        \setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}% - 
      }% + 
      \renewcommand{\printunsrtglossaryhandler}[1]{% + 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + 
        {\glsxtrunsrtdo{#1}}% + 
        {}% + 
      }% + 
      \ifcsundef{theHsection}% + 
      {% + 
        \setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}% + 
      }% + 
      {% + 
        \setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}% + 
      }%  
    }
    -

    -

    If it’s a short summary at the start of a section, you might also want to suppress +

    +

    If it’s a short summary at the start of a section, you might also want to suppress the glossary header and add some vertical space afterwards: @@ -21855,32 +21927,32 @@ the glossary header and add some vertical space afterwards:

    \printunsrtglossary*{% - 
      \renewcommand{\printunsrtglossaryhandler}[1]{% - 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} - 
        {\glsxtrunsrtdo{#1}}% - 
        {}% - 
      }% - 
      \ifcsundef{theHsection}% - 
      {% - 
        \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% - 
      }% - 
      {% - 
        \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% - 
      }% - 
      \renewcommand*{\glossarysection}[2][]{}% - 
      \appto\glossarypostamble{\glspar\medskip\glspar}% + 
      \renewcommand{\printunsrtglossaryhandler}[1]{% + 
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} + 
        {\glsxtrunsrtdo{#1}}% + 
        {}% + 
      }% + 
      \ifcsundef{theHsection}% + 
      {% + 
        \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}% + 
      }% + 
      {% + 
        \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}% + 
      }% + 
      \renewcommand*{\glossarysection}[2][]{}% + 
      \appto\glossarypostamble{\glspar\medskip\glspar}%  
    }
    -

    -

    There’s a shortcut command that essentially does this: -


    +

    There’s a shortcut command that essentially does this: +


    \printunsrtglossaryunit[options]{counter name}

    -

    +

    The above example can simply be replaced with: @@ -21889,16 +21961,16 @@ The above example can simply be replaced with:

    \printunsrtglossaryunit{section}
    -

    -

    This shortcut command is actually defined to use

    +

    This shortcut command is actually defined to use \printunsrtglossary* with -



    \printunsrtglossaryunitsetup{counter name}

    -

    +

    so if you want to just make some minor modifications you can do @@ -21906,21 +21978,21 @@ so if you want to just make some minor modifications you can do

    \printunsrtglossary*{\printunsrtglossaryunitsetup{section}% - 
      \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}% + 
      \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}%  
    }
    -

    which will start the list with a subsection header with the title “Summary” +

    which will start the list with a subsection header with the title “Summary” (overriding the glossary’s title). -

    Note that this shortcut command is only available with the

    Note that this shortcut command is only available with the record (or + id="dx1-53005"> (or record=alsoindex) package option. -

    This temporary change in the hypertarget prefix means you need to explicitly use + id="dx1-53006">) package option. +

    This temporary change in the hypertarget prefix means you need to explicitly use \hyperlink to create a link to it as commands like \gls will try to link to the target @@ -21932,71 +22004,591 @@ the front or back matter) which can be the target for all glossary references an just use \printunsrtglossaryunit for a quick summary at the start of a section etc. -

    +

    -

    Top

    10.3 Standalone Entry Items

    -

    It may be that you don’t want a list but would rather display entry details -throughout the document. You can simply do \glsentryname followed by -\glsentrydesc. (Remember that if you don’t want a sorted list, use sort=none to -skip the construction of the sort field.) For example, in the preamble provide a -custom command: + id="sec:printunsrtinner">Partial Glossaries +

    It’s possible that you may require greater customisation over the way the glossary is +displayed that can’t be simply achieved with the hooks or glossary styles. This +section describes a command and environment provided to assist with this, but note +that they aren’t compatible with tabular-like glossary styles, such as long or super, +due to their complexity and internal scoping that interferes with alignment. +You will also need to take care with list styles (provided in the glossary-list +package). +

    To get a better understanding of how this works, it’s useful to consider how a +glossary with makeindex works. Here’s a simple example document:

    -\newcommand{\displayterm}[1]{% - 
     \par\medskip\par\noindent - 
     Definition: \glsentryname{#1}.\par - 
     \glsentrydesc{#1} - 
     \par\medskip - 
    } +\documentclass{article} + 
    \usepackage{glossaries} + 
    \makeglossaries + 
    \newglossaryentry{cabbage}{name={cabbage}, + 
     description={vegetable with thick green or purple leaves}} + 
    \newglossaryentry{broccoli}{name={broccoli}, + 
     description={vegetable with heads of small green or purple flower buds}} + 
    \begin{document} + 
    \Gls{cabbage} and \gls{broccoli}. + 
    \printglossary + 
    \end{document}
    -

    define your entries +

    When the document is built, makeindex creates a file that contains:

    +
    +\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble +
    \begin{theglossary}\glossaryheader +
    \glsgroupheading{B}\relax \glsresetentrylist +
    \glossentry{broccoli}{location list}\glsgroupskip +
    \glsgroupheading{C}\relax \glsresetentrylist +
    \glossentry{cabbage}{location list}% +
    \end{theglossary}\glossarypostamble +
    +
    The \printglossary command defines the commands shown above after it’s +detected the glossary type, the title and style. It then inputs the file. +

    The \printunsrtglossary command performs the same preliminary setup but +there’s no file to input. Instead it then does the section heading (\glossarysection) +and preamble (\glossarypreamble) and constructs a control sequence that contains +\begin{theglossary} content\end{theglossary}. +

    The letter group markup (\glsgroupheading and \glsgroupskip) is inserted +whenever the group label changes between top-level entries. In this case, ⟨content⟩ +doesn’t explicitly contain \glossentry but uses a handler function instead. For +example, instead of:

    -

    -
    -\newglossaryentry{function}{name={function}, - 
      description={a relation or expression involving variables} - 
    } +
    +\glossentry{broccoli}{location list}
    -

    and then later in the text: - - - -

    -
    -\displayterm{function} +
    the ⟨content⟩ will contain:
    +
    +⟨internal handler{broccoli}
    -

    -

    However, if may be that you want to use hyperref and have commands like \gls +

    This internal handler uses \printunsrtglossaryhandler to determine the required +information (location list, hierarchical level) that’s needed to typeset the entry (using +\glossentry or \subglossentry). +


    \begin{printunsrtglossarywrap}[options]
    content\end{printunsrtglossarywrap}

    +

    +The printunsrtglossarywrap environment provides a wrapper in which you can +place the actual glossary code. The optional argument is the same as for +\printunsrtglossary, but note that in this case the type key simply provides the +glossary title and doesn’t identify the content. +

    This environment essentially does:

    +
    +⟨initial setup⟩ +
    \glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble +
    \begin{theglossary}\glossaryheader\glsresetentrylist +
    content⟩ +
    \end{theglossary}\glossarypreamble +
    +
    where ⟨initial setup⟩ is much the same code as used by \printglossary +and \printunsrtglossary. Most importantly, ⟨initial setup⟩ sets the current +glossary style, which determines the definition of theglossary, \glossentry and +\subglossentry. +

    Whilst it is possible to explicitly use the commands that create letter group +headings and the handler within ⟨content⟩, it would be quite laborious and prone to +error to do so for anything other than a very short list. This can be illustrated with +the following silly example: + + + +

    +
    +\begin{printunsrtglossarywrap}[style=indexgroup]% + 
    \glsgroupheading{W}% + 
    \gdef\glscurrententrylabel{cabbage}% + 
    \printunsrtglossaryhandler\glscurrententrylabel + 
    \glsgroupskip + 
    \glsgroupheading{Z}% + 
    \gdef\glscurrententrylabel{broccoli}% + 
    \printunsrtglossaryhandler\glscurrententrylabel + 
    \end{printunsrtglossarywrap} +
    +

    This trivial example will work with a tabular-like style, such as long (although the +group headings will be ignored). A more practical example that uses a loop within +⟨content⟩ won’t. +


    \printunsrtinnerglossary[options]{pre-code}{post-code}

    +

    +This command is provided for use within printunsrtglossarywrap. The optional +argument ⟨options⟩ is similar to \printunsrtglossary but the following keys are +unavailable: title, toctitle, style, numberedsection and label. +

    This will do:

    +
    + \begingroup +
      initial setup⟩ +
      pre-code⟩ +
      content⟩ +
      post-code⟩ +
     \endgroup +
    +
    where ⟨initial setup⟩ processes the options and assigns \currentglossary, ⟨pre-code⟩ is +some preliminary code and ⟨post-code⟩ is some final code before the end of the scoping. +The ⟨content⟩ is the sequence of code that \printunsrtglossary would normally +insert within the theglossary environment. +

    For example: + + + +

    +
    +\begin{printunsrtglossarywrap}[style=indexgroup] + 
    \printunsrtinnerglossary[type=main]{}{} + 
    \end{printunsrtglossarywrap} +
    +

    This produces a result very similar to that obtained with just: + + + +

    +
    +\printunsrtglossary[style=indexgroup,type=main] +
    +

    The first case is unsuitable for use with a tabular-style. It will also cause a +problem with a list style when used with bib2gls (where the inner content +will be empty on the first LaTeX run which will cause a missing \item +error). +

    This partial glossary command is more useful when you need to apply filtering +(which can be set up in the ⟨pre-code⟩ argument as in \printunsrtglossary*) or if +you have multiple glossaries. For example: + + + +

    +
    +\begin{printunsrtglossarywrap}[style=list] + 
    \item[Animals] + 
    \printunsrtinnerglossary[type=animal]{}{} + 
    \item[Vegetables] + 
    \printunsrtinnerglossary[type=vegetable]{}{} + 
    \item[Minerals] + 
    \printunsrtinnerglossary[type=mineral]{}{} + 
    \end{printunsrtglossarywrap} +
    +

    In this case, the list style doesn’t cause a problem as there will be three instances of +\item on the first LaTeX run. +

    Here’s another example: + + + +

    +
    +\begin{printunsrtglossarywrap}[style=indexgroup] + 
    \glsgroupheading{animal}% + 
    \printunsrtinnerglossary[type=animal]{}{} + 
    \glsgroupskip + 
    \glsgroupheading{vegetable}% + 
    \printunsrtinnerglossary[type=vegetable]{}{} + 
    \glsgroupskip + 
    \glsgroupheading{mineral}% + 
    \printunsrtinnerglossary[type=mineral]{}{} + 
    \end{printunsrtglossarywrap} +
    +

    Note that in both of the above cases, the inner glossaries have been arranged +manually (animal, then vegetable and then mineral). +

    It’s also possible to use \printunsrtinnerglossary within the handler +function used by \printunsrtglossary. The internal scoping within +\printunsrtinnerglossary helps to reduce interference. +

    This is a rather more complicated example that requires bib2gls. Suppose I have +a file called topictitles.bib that contains: + + + +

    +
    +@indexplural{animal} + 
    @indexplural{mineral} + 
    @indexplural{vegetable} +
    +

    And also a file called topics.bib that contains entries like: + + + +

    +
    +@entry{zebra, + 
      name={zebra}, + 
      description={striped African horse}, + 
      category={animal} + 
    } + 
    @entry{broccoli, + 
      name={broccoli}, + 
      description={vegetable with heads of small green or purple flower buds}, + 
      category={vegetable} + 
    } + 
    @entry{quartz, + 
      name={quartz}, + 
      description={hard mineral consisting of silica}, + 
      category={mineral} + 
    } +
    +

    Note that the category labels in the second file match the entry labels in the first +file. +

    The simplest way of creating a hierarchical glossary from this data is to input +both files and copy the category field to the parent field: + + + +

    +
    +\GlsXtrLoadResources[src={topictitles,topics}, + 
     replicate-fields={category=parent}] +
    +

    The glossary can then simply be displayed with: + + + +

    +
    +\printunsrtglossary[style=indexgroup] +
    +

    This will now be ordered: animal (followed by animal child entries), mineral +(followed by mineral child entries), vegetable (followed by vegetable child +entries). +

    Suppose (for some strange reason) that I now need the ordering to be vegetable, +mineral, animal (that is, reverse alphabetical) but the child entries still need to be in +the normal alphabetical order. +

    It’s not possible to use different sort methods for different hierarchical levels with +bib2gls, but it is possible to simulate it. +

    Instead of making the entries within topics.bib children of the entries defined +in topictitles.bib, I’m now going to create separate glossaries for each +type: + + + +

    +
    +\newignoredglossary*{animal} + 
    \newignoredglossary*{mineral} + 
    \newignoredglossary*{vegetable} +
    +

    The entries in topictitles.bib go in the default main glossary and are sorted in +reverse: + + + +

    +
    +\GlsXtrLoadResources[src=topictitles,type=main,selection=all, + 
     sort=en-GB-reverse] +
    +

    Note that I’ve selected all entries in this example. It becomes more complicated with +the default selection criteria. (See the sample-nested.tex example provided with +bib2gls v2.3+.) +

    Now the entries in topics.bib are selected but the type field is set to the category +field: + + + +

    +
    +\GlsXtrLoadResources[src=topics,type={same as category},selection=all, + 
     sort=en-GB] +
    +

    The aim here is to use \printunsrtglossary to list all the entries in the main +glossary (that is, all the topic titles) and use a handler that tests if there is a glossary +that has the same label as the current entry label. If one exists, it’s then listed using +\printunsrtinnerglossary with the level offset shifted to give a hierarchical +appearance: + + + +

    +
    +\newcommand{\nestedhandler}[1]{% + 
      \glsxtrunsrtdo{#1}% + 
      \ifglossaryexists*{#1}% + 
      {% + 
        \printunsrtinnerglossary[type={#1},leveloffset=++1]{}{}% + 
      }% + 
      {}% + 
    } + 
    \printunsrtglossary*[type=main,style=index]{% + 
      \let\printunsrtglossaryhandler\nestedhandler + 
    } +
    +

    +

    I’ve used \newignoredglossary* as I don’t need to specify a title for any of those +glossaries nor do I need to use those glossaries with \printunsrtglossaries. With +bib2gls v2.3+, I can omit the three \newignoredglossary* lines and use the +--provide-glossaries switch which will make bib2gls automatically provide +any unknown glossaries (with \provideignoredglossary) in the .glstex +file. +

    +

    +

    Top

    10.4 Standalone Entry Items

    +

    It may be that you don’t want a list but would rather display entry details +throughout the document. You can simply do \glsentryname followed by +\glsentrydesc. (Remember that if you don’t want a sorted list, use sort=none to +skip the construction of the sort field.) For example, in the preamble provide a +custom command: + + + +

    +
    +\newcommand{\displayterm}[1]{% + 
     \par\medskip\par\noindent + 
     Definition: \glsentryname{#1}.\par + 
     \glsentrydesc{#1} + 
     \par\medskip + 
    } +
    +

    define your entries + + + +

    +
    +\newglossaryentry{function}{name={function}, + 
      description={a relation or expression involving variables} + 
    } +
    +

    and then later in the text: + + + +

    +
    +\displayterm{function} +
    +

    +

    However, if may be that you want to use hyperref and have commands like \gls link back to the place where the term is described. Instead of using \glsentryname use -



    \glsxtrglossentry{label}

    -

    +

    where ⟨label⟩ is the entry’s label. -

    This is designed to behave much like the way the name is displayed in the +

    This is designed to behave much like the way the name is displayed in the glossary. It performs the following:

    • Defines \printglossary and may be used by style hooks. class="cmtt-10">\glsentryitem and \glssubentryitem. The value is obtained by fully expanding: -



      \GlsXtrStandaloneGlossaryType

      -

      +

      which defaults to the value of the type field for the current entry. + id="dx1-55006"> field for the current entry.

    • Increments and display the entry counters if the entrycounter or or subentrycounter + id="dx1-55008"> package options are set. If the entry doesn’t have a parent, then this does -

      otherwise it does (as from v1.31)

      +

      otherwise it does (as from v1.31)

      • \GlsXtrStandaloneSubEntryItem + id="dx1-55009"> {label} if the entry has -

        This reflects the behaviour of the predefined hierarchical styles. A bug in +

        This reflects the behaviour of the predefined hierarchical styles. A bug in pre-version 1.31 used \glsentryitem for all child levels, which doesn’t match the hierarchical glossary styles. If you want to restore this behaviour, just @@ -22065,20 +22657,20 @@ class="cmtt-10">\glsentryitem for all child levels, which doesn’t m

        -
        +
        \renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}}
        -

        +

      • Sets the hyper-target if supported (using \glstarget) and displays the entry name using: -



        \GlsXtrStandaloneEntryName{label}

        -

        +

        which uses \glstarget{label\glsnamefont or picks up the style from category attributes such as glossnamefont.

      -

      If you have used .

    +

    If you have used \nopostdesc or or \glsxtrnopostpunc in any of your description fields, + id="dx1-55013"> in any of your description fields, you can use -



    \glsxtractivatenopost

    -

    +

    to make these commands behave as they normally do within a glossary. This needs to be placed before

    @@ -22117,11 +22709,11 @@ class="cmtt-10">}\glspostdescription class="cmtt-10">\glsnonextpages and \glsnextpages have no effect outside of the glossary and are not intended for use in a standalone context. -

    It’s also possible to select a different field (rather than using

    It’s also possible to select a different field (rather than using name): -


    ): +


    \glsxtrglossentryother{header}{label}{field}

    -

    +

    The ⟨field⟩ must be given using its internal field label which may not be the same as the key used to set the field. See the key to field mappings table in the header⟩ is simply the field value. -

    The

    The \glsxtrglossentryother command internally uses -



    \GlsXtrStandaloneEntryOther{label}{field}

    -

    +

    instead of \GlsXtrStandaloneEntryName, which uses \glossentrynameother{} instead of \glossentryname{label}. -

    If you have loaded the

    If you have loaded the glossaries-accsupp package (through the package (through the accsupp option) + id="dx1-55019"> option) then accessibility support will be provided if there’s a corresponding command

    @@ -22198,81 +22790,81 @@ class="cmtt-10">}
    (for example, \glssymbolaccessdisplay). -

    This means that my custom command can be changed to: +

    This means that my custom command can be changed to:

    -
    +
    \newcommand{\displayterm}[1]{% - 
     \par\medskip\par\noindent - 
     Definition: \glsxtrglossentry{#1}.\par - 
     \glsentrydesc{#1} - 
     \par\medskip + 
     \par\medskip\par\noindent + 
     Definition: \glsxtrglossentry{#1}.\par + 
     \glsentrydesc{#1} + 
     \par\medskip  
    }
    -

    If I want numbered definitions, then I can use the package options

    If I want numbered definitions, then I can use the package options entrycounter or + id="dx1-55020"> or subentrycounter and remove the colon: + id="dx1-55021"> and remove the colon:

    -
    +
    \newcommand{\displayterm}[1]{% - 
     \par\medskip\par\noindent - 
     Definition \glsxtrglossentry{#1}.\par - 
     \glsentrydesc{#1} - 
     \par\medskip + 
     \par\medskip\par\noindent + 
     Definition \glsxtrglossentry{#1}.\par + 
     \glsentrydesc{#1} + 
     \par\medskip  
    }
    -

    The counter label uses a dot after the number by default but this can be changed to +

    The counter label uses a dot after the number by default but this can be changed to a colon:

    -
    +
    \renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space}
    -

    It’s now possible to not only use

    It’s now possible to not only use \gls to link back to the definition but also use \glsrefentry to reference the counter and \glsxtrpageref to reference the page number. -

    If I want the description to behave more like it does in a glossary in need to make +

    If I want the description to behave more like it does in a glossary in need to make the following modification:

    -
    +
    \newcommand{\displayterm}[1]{% - 
     \par\medskip\par\noindent - 
     Definition \glsxtrglossentry{#1}.\par - 
     \begingroup - 
      \glsxtractivatenopost - 
      \glossentrydesc{#1}\glspostdescription - 
     \endgroup - 
     \par\medskip + 
     \par\medskip\par\noindent + 
     Definition \glsxtrglossentry{#1}.\par + 
     \begingroup + 
      \glsxtractivatenopost + 
      \glossentrydesc{#1}\glspostdescription + 
     \endgroup + 
     \par\medskip  
    }
    -

    (Note the grouping to localise

    (Note the grouping to localise \glsxtractivatenopost.) -

    You can also use

    You can also use \glsxtrglossentry within section headings. For example:

    -
    +
    \section{\glsxtrglossentry{function}}
    -

    This will use

    This will use \glsentryname in PDF bookmarks (if \texorpdfstring is defined) and will use \@glsxtrnotinmark and \glsxtrrestoremarkhook.) -

    +

    -

    Top

    10.4

    Top

    10.5 Entry Aliases

    -

    An entry can be made an alias of another entry using the

    An entry can be made an alias of another entry using the alias key. The + id="dx1-56001"> key. The value should be the label of the other term. There’s no check for the other’s existence when the aliased entry is defined. This is to allow the possibility of defining the other entry after the aliased entry. (For example, when used with bib2gls.) -

    If an entry ⟨

    If an entry ⟨entry-1⟩ is made an alias of ⟨entry-2⟩ then:

    • If the see field wasn’t provided when ⟨ field wasn’t provided when ⟨entry-1⟩ was defined, the alias key will + id="dx1-56004"> key will automatically trigger
      }
    • If the hyperref package has been loaded then package has been loaded then \gls{entry-1} will link to @@ -22334,7 +22926,7 @@ class="cmtt-10">} will link to class="cmti-10">entry-2⟩’s target. (Unless the targeturl attribute has been set for ⟨ attribute has been set for ⟨entry-1⟩’s category.)
    • @@ -22342,20 +22934,20 @@ class="cmti-10">entry-1⟩’s href="#styopt.record">record=off or or record=alsoindex, the , the noindex setting will automatically + id="dx1-56009"> setting will automatically be triggered when referencing ⟨entry-1⟩ with commands like \gls or \glstext. This prevents ⟨entry-1⟩ from have a location list (aside from the cross-reference added with \glssee) unless it’s been explicitly @@ -22366,69 +22958,69 @@ class="cmtt-10">noindex=false. -

      Note that with

      Note that with record=only, the location list for aliased entries is controlled + id="dx1-56011">, the location list for aliased entries is controlled with bib2gls’s settings.

    -

    The index suppression trigger is performed by -


    The index suppression trigger is performed by +


    \glsxtrsetaliasnoindex

    -

    +

    This is performed after the default options provided by \GlsXtrSetDefaultGlsOpts + id="dx1-56015"> have been set. With record=only, , \glsxtrsetaliasnoindex will default to do nothing. -

    Within the definition of

    Within the definition of \glsxtrsetaliasnoindex you can use -



    \glsxtrindexaliased

    -

    +

    to index ⟨entry-2⟩. -

    The index suppression command can be redefined to index the main term instead. +

    The index suppression command can be redefined to index the main term instead. For example:

    -
    +
    \renewcommand{\glsxtrsetaliasnoindex}{% - 
     \glsxtrindexaliased - 
     \setkeys{glslink}{noindex}% + 
     \glsxtrindexaliased + 
     \setkeys{glslink}{noindex}%  
    }
    -

    -

    The value of the

    +

    The value of the alias field can be accessed using -


    field can be accessed using +


    \glsxtralias{label}

    -

    +

    -

    -

    +

    Top

    11. On-the-Fly Document Definitions

    -

    The commands described here may superficially look like ⟨

    The commands described here may superficially look like ⟨word\index{word\index then just use \index.
    -

    -

    The

    +

    The glossaries package advises against defining entries in the document + id="dx1-57001"> environment. As mentioned in §1.2 glossaries-extra but can be enabled using the docdefs package options. -

    Although this can be problematic, the package options. +

    Although this can be problematic, the glossaries-extra package provides a way of defining and using entries within the document environment without the tricks used + id="dx1-57004"> environment without the tricks used with the docdefs option. option. There are limitations with this approach, so take care with it. This function is disabled by default, but can be enabled using the preamble-only command: -



    \GlsXtrEnableOnTheFly

    -

    +

    When used, this defines the commands described below. -

    The commands

    The commands \glsxtr, \glsxtrpl, \Glsxtr and \Glsxtrpl can’t be used after the glossaries have been displayed (through \printglossary etc). It’s best not to + id="dx1-57008"> etc). It’s best not to mix these commands with the standard glossary commands, such as \gls or there may be unexpected results.
    -

    -


    +


    \glsxtr[gls-options][dfn-options]{label}

    -

    +

    If an entry with the label ⟨label⟩ has already been defined, this just does \gls @@ -22514,77 +23106,77 @@ class="cmtt-10">name={⟨label},
     category=\glsxtrcat, +class="cmtt-10"> category=\glsxtrcat,
     description= description={\nopostdesc},
     dfn-options}

    -

    The ⟨

    The ⟨label⟩ must contain any non-expandable commands, such as formatting commands or problematic characters. If the term requires any of these, they must be omitted from the ⟨label⟩ and placed in the name key must be provided in the optional + id="dx1-57010"> key must be provided in the optional argument ⟨dfn-options⟩.
    -

    +

    -

    The second optional argument ⟨

    The second optional argument ⟨dfn-options⟩ should be empty if the entry has already been defined, since it’s too late for them. If it’s not empty, a warning will be generated with -



    \GlsXtrWarning{dfn-options}{label}

    -

    -

    For example, this warning will be generated on the second instance of

    +

    For example, this warning will be generated on the second instance of \glsxtr below:

    -
    +
    \glsxtr[][plural=geese]{goose} - 
     ... later + 
     ... later  
    \glsxtr[][plural=geese]{goose}
    -

    -

    If you are considering doing something like: +

    +

    If you are considering doing something like:

    -
    +
    \newcommand*{\goose}{\glsxtr[][plural=geese]{goose}}  
    \renewcommand*{\GlsXtrWarning}[2]{} - 
     ... later - 
    \goose\ some more text here + 
     ... later + 
    \goose\ some more text here
    -

    then don’t bother. It’s simpler and less problematic to just define the entries in the +

    then don’t bother. It’s simpler and less problematic to just define the entries in the preamble with \newglossaryentry and then use and then use \gls in the document. -

    There are plural and case-changing alternatives to

    There are plural and case-changing alternatives to \glsxtr: -



    \glsxtrpl[gls-options][dfn-options]{label}

    -

    +

    This is like \glsxtr but uses \glspl instead of \gls. -



    \Glsxtr[gls-options][dfn-options]{label}

    -

    +

    This is like \glsxtr but uses \Gls instead of \gls. -



    \Glsxtrpl[gls-options][dfn-options]{label}

    -

    +

    This is like \glsxtr but uses \Glspl instead of \gls. -

    If you use UTF-8 and don’t want the inconvenient of needing to use an -ASCII-only label, then it’s better to use XƎLATEX or LuaLATEX instead of -LaTeX (or pdfLATEX). If you really desperately want to use UTF-8 entry labels -without switching to XƎLATEX or LuaLATEX then there is a starred version of +

    If you use UTF-8 and don’t want the inconvenient of needing to use an +ASCII-only label, then it’s better to use XƎLATEX or LuaLATEX instead of +LaTeX (or pdfLATEX). If you really desperately want to use UTF-8 entry labels +without switching to XƎLATEX or LuaLATEX then there is a starred version of \GlsXtrEnableOnTheFly that allows you to use UTF-8 characters in ⟨label⟩, but it’s experimental and may not work in some cases. -

    If you use the starred version of

    If you use the starred version of \GlsXtrEnableOnTheFly don’t use any commands in the ⟨label⟩, even if they expand to just text.
    -

    +

    -

    -

    +

    Top

    12. Supplemental Packages

    -

    The

    The glossaries bundle provides additional support packages glossaries-prefix (for + id="dx1-58001"> (for prefixing) and glossaries-accsupp (for accessibility support). These packages aren’t + id="dx1-58002"> (for accessibility support). These packages aren’t automatically loaded.

    -

    Top

    12.1 Prefixes or Determiners

    -

    If prefixing is required, you can simply load

    If prefixing is required, you can simply load glossaries-prefix after after glossaries-extra. For example:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \usepackage{glossaries-prefix}  
    \makeglossaries  
    \newabbreviation - 
     [prefix={an\space}, - 
     prefixfirst={a~}] - 
     {svm}{SVM}{support vector machine} + 
     [prefix={an\space}, + 
     prefixfirst={a~}] + 
     {svm}{SVM}{support vector machine}  
    \begin{document} - 
    First use: \pgls{svm}. - 
    Next use: \pgls{svm}. + 
    First use: \pgls{svm}. + 
    Next use: \pgls{svm}.  
    \printglossaries  
    \end{document}
    -

    -

    +

    +

    -

    Top

    12.2 Accessibility Support

    -

    The

    The glossaries-accsupp package is still experimental and so accessibility features are + id="dx1-60001"> package is still experimental and so accessibility features are liable to change.
    -

    -

    The

    +

    The glossaries-accsupp package needs to be loaded before package needs to be loaded before glossaries-extra or through the accsupp package option: + id="dx1-60003"> package option:

    -
    +
    \usepackage[accsupp]{glossaries-extra}
    -

    If you don’t load

    If you don’t load glossaries-accsupp or you load or you load glossaries-accsupp after after glossaries-extra the new \glsaccess\glsentryxxx⟩ commands. Other accessibility features, such as the attributes used by \newabbreviation also won’t work if also won’t work if glossaries-accsupp is loaded + id="dx1-60007"> is loaded too late. -

    The following

    The following \glsaccessxxx⟩ commands add accessibility information wrapped around the corresponding \glsentryxxx⟩ commands. There is no check for existence of the entry nor do any of these commands add formatting, hyperlinks or indexing information. -



    \glsaccessname{label}

    -

    +

    This displays the value of the name field for the entry identified by ⟨ field for the entry identified by ⟨label⟩. -

    If the

    If the glossaries-accsupp package isn’t loaded, this is simply defined as: + id="dx1-60010"> package isn’t loaded, this is simply defined as:

    -
    +
    \newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
    -

    otherwise it’s defined as: +

    otherwise it’s defined as:

    -
    +
    \newcommand*{\glsaccessname}[1]{% - 
      \glsnameaccessdisplay - 
      {% - 
        \glsentryname{#1}% - 
      }% - 
      {#1}% + 
      \glsnameaccessdisplay + 
      {% + 
        \glsentryname{#1}% + 
      }% + 
      {#1}%  
    }
    -

    (

    (\glsnameaccessdisplay is defined by the is defined by the glossaries-accsupp package.) The first + id="dx1-60012"> package.) The first letter upper case version is: -



    \Glsaccessname{label}

    -

    +

    Without the glossaries-accsupp package this is just defined as: + id="dx1-60014"> package this is just defined as:

    -
    +
    \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
    -

    With the

    With the glossaries-accsupp package this is defined as: + id="dx1-60015"> package this is defined as:

    -
    +
    \newcommand*{\Glsaccessname}[1]{% - 
      \glsnameaccessdisplay - 
      {% - 
        \Glsentryname{#1}% - 
      }% - 
      {#1}% + 
      \glsnameaccessdisplay + 
      {% + 
        \Glsentryname{#1}% + 
      }% + 
      {#1}%  
    }
    -

    -

    The following commands are all defined in an analogous manner. -


    +

    The following commands are all defined in an analogous manner. +


    \glsaccesstext{label}

    -

    +

    This displays the value of the text field. -


    field. +


    \Glsaccesstext{label}

    -

    +

    This displays the value of the text field with the first letter converted to upper + id="dx1-60019"> field with the first letter converted to upper case. -



    \glsaccessplural{label}

    -

    +

    This displays the value of the plural field. -


    field. +


    \Glsaccessplural{label}

    -

    +

    This displays the value of the plural field with the first letter converted to upper + id="dx1-60023"> field with the first letter converted to upper case. -



    \glsaccessfirst{label}

    -

    +

    This displays the value of the first field. -


    field. +


    \Glsaccessfirst{label}

    -

    +

    This displays the value of the first field with the first letter converted to upper + id="dx1-60027"> field with the first letter converted to upper case. -



    \glsaccessfirstplural{label}

    -

    +

    This displays the value of the firstplural field. -


    field. +


    \Glsaccessfirstplural{label}

    -

    +

    This displays the value of the firstplural field with the first letter converted to upper + id="dx1-60031"> field with the first letter converted to upper case. -



    \glsaccesssymbol{label}

    -

    +

    This displays the value of the symbol field. -


    field. +


    \Glsaccesssymbol{label}

    -

    +

    This displays the value of the symbol field with the first letter converted to upper + id="dx1-60035"> field with the first letter converted to upper case. -



    \glsaccesssymbolplural{label}

    -

    +

    This displays the value of the symbolplural field. -


    field. +


    \Glsaccesssymbolplural{label}

    -

    +

    This displays the value of the symbolplural field with the first letter converted to + id="dx1-60039"> field with the first letter converted to upper case. -



    \glsaccessdesc{label}

    -

    +

    This displays the value of the description field. -


    field. +


    \Glsaccessdesc{label}

    -

    +

    This displays the value of the description field with the first letter converted to upper + id="dx1-60043"> field with the first letter converted to upper case. -



    \glsaccessdescplural{label}

    -

    +

    This displays the value of the descriptionplural field. -


    field. +


    \Glsaccessdescplural{label}

    -

    +

    This displays the value of the descriptionplural field with the first letter converted to + id="dx1-60047"> field with the first letter converted to upper case. -



    \glsaccessshort{label}

    -

    +

    This displays the value of the short field. -


    field. +


    \Glsaccessshort{label}

    -

    +

    This displays the value of the short field with the first letter converted to upper + id="dx1-60051"> field with the first letter converted to upper case. -



    \glsaccessshortpl{label}

    -

    +

    This displays the value of the shortplural field. -


    field. +


    \Glsaccessshortpl{label}

    -

    +

    This displays the value of the shortplural field with the first letter converted to upper + id="dx1-60055"> field with the first letter converted to upper case. -



    \glsaccesslong{label}

    -

    +

    This displays the value of the long field. -


    field. +


    \Glsaccesslong{label}

    -

    +

    This displays the value of the long field with the first letter converted to upper + id="dx1-60059"> field with the first letter converted to upper case. -



    \glsaccesslongpl{label}

    -

    +

    This displays the value of the longplural field. -


    field. +


    \Glsaccesslongpl{label}

    -

    +

    This displays the value of the longplural field with the first letter converted to upper + id="dx1-60063"> field with the first letter converted to upper case.

    -

    -

    +

    Top

    13. Sample Files

    -

    The following sample files are provided with this package: +

    The following sample files are provided with this package:

    sample.tex
    General abbreviations. sample-acronym.tex
    Acronyms aren’t initialisms and don’t expand on first use.
    @@ -23128,7 +23720,7 @@ class="description">Another initialisms example. sample-postlink.tex
    Automatically inserting text after the link-text produced by commands like \gls (outside of hyperlink, if present). @@ -23142,28 +23734,28 @@ class="cmbx-10">sample-autoindex.tex
    Using the dualindex and and indexname attributes to + id="dx1-61004"> attributes to automatically add glossary entries to the index (in addition to the glossary location list).
    sample-autoindex-hyp.tex
    As previous but uses hyperref. + id="dx1-61006">.
    sample-nested.tex
    Using \gls within the value of the within the value of the name key. + id="dx1-61008"> key.
    sample-entrycount.tex
    sample-external.tex
    Uses the targeturl attribute to allow for entries that + id="dx1-61009"> attribute to allow for entries that should link to an external URL rather than to an internal glossary.
    \glsxtrfmt. class="cmbx-10">sample-alias.tex
    Uses the alias key. (See key. (See §10.4 §10.5 Entry Aliases.)
    sample-alttree.tex
    Uses the glossaries-extra-stylemods package with the package with the alttree + id="dx1-61012"> style (see §2.10.1 glossaries-extra-stylemods Package

    -

    +

    Top

    14. Multi-Lingual Support

    -

    There’s only one command provided by

    There’s only one command provided by glossaries-extra that you’re likely to want to change in your document and that’s \abbreviationsname ( (§1.2 New or Modified Package Options) if you use the abbreviations package option to + id="dx1-62002"> package option to automatically create the glossary labelled abbreviations. If this command doesn’t already exist, it will be defined to “Abbreviations” if babel hasn’t + id="dx1-62003"> hasn’t been loaded, otherwise it will be defined as \acronymname (provided by glossaries). -

    You can redefine it in the usual way. For example: +

    You can redefine it in the usual way. For example:

    -
    -\renewcommand*{\abbreviationsname}{List of Abbreviations} +
    +\renewcommand*{\abbreviationsname}{List of Abbreviations}
    -

    Or using

    Or using babel or or polyglossia captions hook: + id="dx1-62005"> captions hook:

    -
    +
    \appto\captionsenglish{% - 
     \renewcommand*{\abbreviationsname}{List of Abbreviations}% + 
     \renewcommand*{\abbreviationsname}{List of Abbreviations}%  
    }
    -

    -

    Alternatively you can use the

    +

    Alternatively you can use the title key when you print the list of abbreviations. + id="dx1-62006"> key when you print the list of abbreviations. For example:

    -
    -\printabbreviations[title={List of Abbreviations}] +
    +\printabbreviations[title={List of Abbreviations}]
    -

    or +

    or

    -
    -\printglossary[type=abbreviations,title={List of Abbreviations}] +
    +\printglossary[type=abbreviations,title={List of Abbreviations}]
    -

    -

    The other fixed text commands are the diagnostic messages, which shouldn’t +

    +

    The other fixed text commands are the diagnostic messages, which shouldn’t appear in the final draft of your document. -

    The

    The glossaries-extra package has the facility to load language modules (whose filename is in the form glossariesxtr-language.ldf) if they exist, but won’t warn if they don’t. If glossaries-extra-bib2gls is loaded via the is loaded via the record package option then the + id="dx1-62008"> package option then the check for language resource files will additionally search for an associated language script file given by glossariesxtr-Latn, associated with the given dialect. There’s no warning if the associated file isn’t found. The script file is loaded after the dialect file. -

    If you want to write your own language module, you just need to create a file +

    If you want to write your own language module, you just need to create a file called glossariesxtr-lang.ldf, where ⟨lang⟩ identifies the language or dialect (see the tracklang package). For example, package). For example, glossariesxtr-french.ldf. -

    The simplest code for this file is: +

    The simplest code for this file is:

    -
    -\ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0] +
    +\ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0]  
    \newcommand*{\glossariesxtrcaptionsfrench}{% - 
     \def\abbreviationsname{Abr\'eviations}% + 
     \def\abbreviationsname{Abr\'eviations}%  
    }  
    \glossariesxtrcaptionsfrench  
    \ifcsdef{captions\CurrentTrackedDialect}  
    {% - 
      \csappto{captions\CurrentTrackedDialect}% - 
      {% - 
        \glossariesxtrcaptionsfrench - 
      }% + 
      \csappto{captions\CurrentTrackedDialect}% + 
      {% + 
        \glossariesxtrcaptionsfrench + 
      }%  
    }%  
    {% - 
      \ifcsdef{captions\CurrentTrackedLanguage} - 
      {% - 
        \csappto{captions\CurrentTrackedLanguage}% - 
        {% - 
          \glossariesxtrcaptionsfrench - 
        }% - 
      }% - 
      {}% + 
      \ifcsdef{captions\CurrentTrackedLanguage} + 
      {% + 
        \csappto{captions\CurrentTrackedLanguage}% + 
        {% + 
          \glossariesxtrcaptionsfrench + 
        }% + 
      }% + 
      {}%  
    }
    -

    -

    You can adapt this for other languages by replacing all instances of the language +

    +

    You can adapt this for other languages by replacing all instances of the language identifier french and the translated text Abr\’eviations as appropriate. You can also use the .ldf file to provide rule blocks for a particular language for use with bib2gls’s custom sort rule. See §9.3 The glossaries-extra-bib2gls package for further details. -

    This

    This .ldf file then needs to be put somewhere on TeX’s path so that it can be found by glossaries-extra. You might also want to consider uploading it to CTAN so that it can be useful to others. (Please don’t send it to me. I already have more packages than I am able to maintain.) -

    If you additionally want to provide translations for the diagnostic messages used +

    If you additionally want to provide translations for the diagnostic messages used when a glossary is missing, you need to redefine the following commands: -



    \GlsXtrNoGlsWarningHead{label}{file}

    -

    +

    This produces the following text in English:

    -

    This document is incomplete. The external file associated with the +

    This document is incomplete. The external file associated with the glossary ‘⟨label⟩’ (which should be called ⟨file⟩) hasn’t been created.

    -



    \GlsXtrNoGlsWarningEmptyStart

    -

    +

    This produces the following text in English:

    -

    This has probably happened because there are no entries defined in +

    This has probably happened because there are no entries defined in this glossary.

    -



    \GlsXtrNoGlsWarningEmptyMain

    -

    +

    This produces the following text in English:

    -

    If you don’t want this glossary, add

    If you don’t want this glossary, add nomain to your package option list when you load glossaries-extra.sty. For example:

    -



    \GlsXtrNoGlsWarningEmptyNotMain{label}

    -

    +

    This produces the following text in English:

    -

    Did you forget to use

    Did you forget to use type=label⟩ when you defined your entries? If you tried to load entries into this glossary with ] as the optional argument? If you did, check that the definitions in the file you loaded all had the type set to \glsdefaulttype.

    -



    \GlsXtrNoGlsWarningCheckFile{file}

    -

    +

    This produces the following text in English:

    -

    Check the contents of the file ⟨

    Check the contents of the file ⟨file⟩. If it’s empty, that means you haven’t indexed any of your entries in this glossary (using commands like \gls or \glsadd) so this list can’t be generated. If the file isn’t empty, the document build process hasn’t been completed.

    -



    \GlsXtrNoGlsWarningMisMatch

    -

    +

    This produces the following text in English:

    -

    You need +

    You need to either replace \makenoidxglossaries with \makeglossaries or @@ -23581,15 +24173,15 @@ class="cmtt-10">\printnoidxglossaries) and then -



    \GlsXtrNoGlsWarningNoOut{file}

    -

    +

    This produces the following text in English:

    -

    The file ⟨

    The file ⟨file⟩ doesn’t exist. This most likely means you haven’t used \makeglossaries or you have used \nofiles. If this is just a draft version of the document, you can suppress this message using the nomissingglstext package option.

    -



    \GlsXtrNoGlsWarningTail

    -

    +

    This produces the following text in English:

    -

    This message will be removed once the problem has been fixed.

    -


    This message will be removed once the problem has been fixed.

    +


    \GlsXtrNoGlsWarningBuildInfo

    -

    +

    This is advice on how to generate the glossary files. -



    \GlsXtrNoGlsWarningAutoMake{label}

    -

    +

    This is the message produced when the automake option is used, but the document + id="dx1-62021"> option is used, but the document needs a rerun or the shell escape setting doesn’t permit the execution of the external application. This command also generates a warning in the transcript file. -

    See the documented code (

    See the documented code (glossaries-extra-code.pdf) for further details. @@ -23638,21 +24230,21 @@ details.

    Top

    Glossary

    + id="x1-6300014">Glossary
    bib2gls
    A command line Java application that selects entries from a .bib file and converts them to glossary definitions (like bibtex but also performs hierarchical sorting and collation, thus omitting the need for xindy or makeindex). Further details at: http://www.dickimaw-books.com/software/bib2gls/. entry location
    The location of the entry in the document. This defaults to the page number on which the entry appears. An entry may have multiple locations. @@ -23670,80 +24262,80 @@ class="description">The location of the entry in the document. This defaults to first use
    The first time a glossary entry is used (from the start of the document or after a reset) with one of the following commands: \gls, , \Gls, , \GLS, + id="dx1-63008">, \glspl, , \Glspl, , \GLSpl or or \glsdisp. + id="dx1-63012">.
    first use flag
    A conditional that determines whether or not the entry has been used according to the rules of first use.
    first use text
    The text that is displayed on first use, which is governed by the + id="dx1-63016">first use, which is governed by the first and and firstplural keys of keys of \newglossaryentry. (May be overridden by + id="dx1-63019">. (May be overridden by \glsdisp.) + id="dx1-63020">.)
    link-text
    The text produced by commands such as \gls. It may or may not + id="dx1-63022">. It may or may not have a hyperlink to the glossary.
    location list
    A list of entry locations. See number list.
    makeglossaries
    A custom designed Perl script interface provided with the glossaries package to run xindy or makeindex according to the document settings. @@ -23753,13 +24345,13 @@ class="cmtt-10">makeindex according to the document makeglossaries-lite
    A custom designed Lua script interface to xindy and makeindex provided with the glossaries package. This is a cut-down alternative to the Perl makeglossaries-lite (without the .lua extension) to the actual makeglossaries-lite.lua - script, and TeX distributions on Windows convert the script to an + script, and TeX distributions on Windows convert the script to an executable makeglossaries-lite.exe.
    makeindex
    An indexing application.
    number list
    A list of entry locations (also called a location list). The number list can be suppressed using the nonumberlist package option. + id="dx1-63036"> package option.
    xindy
    An flexible indexing application with multilingual support written in Perl.

    Index

    + id="x1-6400014">Index

    A

    abbreviation styles (deprecated):
    -        footnote-em  1
    -        footnote-sc  2
    -        footnote-sm  3
    -        long-desc-em  4
    -        long-desc-sc  5
    -        long-desc-sm  6
    -        long-em  7
    -        long-sc  8
    -        long-sm  9
    -        postfootnote-em  10
    -        postfootnote-sc  11
    -        postfootnote-sm  12
    abbreviation styles:
    -        footnote  13
    -        footnote-desc  14
    -        long  15
    -        long-desc  16
    -        long-em-noshort-em  17, 18, 19
    -        long-em-noshort-em-desc  20, 21
    -        long-em-noshort-em-desc-noreg  22
    -        long-em-noshort-em-noreg  23, 24, 25
    -        long-em-short-em  26, 27, 28, 29
    -        long-em-short-em-desc  30
    -        long-hyphen-long-hyphen  31
    -        long-hyphen-noshort-desc-noreg  32, 33
    -        long-hyphen-noshort-noreg  34, 35
    -        long-hyphen-postshort-hyphen  36, 37, 38, 39, 40, 41
    -        long-hyphen-postshort-hyphen-desc  42
    -        long-hyphen-short-hyphen  43, 44, 45, 46, 47
    -        long-hyphen-short-hyphen-desc  48, 49
    -        long-noshort  50, 51, 55, 56, 57, 58
    -        long-noshort-desc  59, 60, 68
    -        long-noshort-desc-noreg  69
    -        long-noshort-em  70
    -        long-noshort-em-desc  71
    -        long-noshort-noreg  72
    -        long-noshort-sc  73, 74
    -        long-noshort-sc-desc  75, 76
    -        long-noshort-sm  77
    -        long-noshort-sm-desc  78
    -        long-only-short-only  79, 80, 81
    -        long-only-short-only-desc  82
    -        long-postshort-user  83, 84
    -        long-postshort-user-desc  85
    -        long-short  86, 87, 98, 99, 100, 101
    -        long-short-desc  102, 103, 107, 108, 109, 110
    -        long-short-em  111, 112, 113, 114
    -        long-short-em-desc  115, 116
    -        long-short-sc  117, 118, 119, 120
    -        long-short-sc-desc  121, 122
    -        long-short-sm  123, 124, 125
    -        long-short-sm-desc  126, 127
    -        long-short-user  128, 129, 133, 134, 135, 136
    -        long-short-user-desc  137
    -        nolong-short  138, 139
    -        nolong-short-em  140
    -        nolong-short-noreg  141
    -        nolong-short-sc  142
    -        nolong-short-sm  143
    -        postfootnote  144, 145
    -        postfootnote-desc  146
    -        short  147
    -        short-desc  148
    -        short-em  149
    -        short-em-desc  150
    -        short-em-footnote  151, 152
    -        short-em-footnote-desc  153, 154
    -        short-em-long  155, 156, 157
    -        short-em-long-desc  158, 159
    -        short-em-long-em  160, 161
    -        short-em-long-em-desc  162
    -        short-em-nolong  163, 164, 165
    -        short-em-nolong-desc  166, 167
    -        short-em-postfootnote  168
    -        short-em-postfootnote-desc  169
    -        short-footnote  170, 171, 177, 178, 179, 180
    -        short-footnote-desc  181, 182, 184, 185, 186, 187
    -        short-hyphen-long-hyphen  188, 189
    -        short-hyphen-long-hyphen-desc  190
    -        short-hyphen-postlong-hyphen  191, 192
    -        short-hyphen-postlong-hyphen-desc  193
    -        short-long  194, 195, 201, 202, 203, 204
    -        short-long-desc  205, 206, 208, 209, 210, 211
    -        short-long-user  212, 213, 215, 216, 217, 218
    -        short-long-user-desc  219
    -        short-nolong  220, 221, 230, 231, 232, 233
    -        short-nolong-desc  234, 235, 236, 237, 238
    -        short-nolong-desc-noreg  239
    -        short-nolong-noreg  240
    -        short-postfootnote  241, 242, 245, 246, 247, 248
    -        short-postfootnote-desc  249, 250, 251, 252, 253
    -        short-postlong-user  254, 255, 256
    -        short-postlong-user-desc  257
    -        short-sc  258
    -        short-sc-desc  259
    -        short-sc-footnote  260, 261, 262
    -        short-sc-footnote-desc  263, 264
    -        short-sc-long  265, 266, 267, 268
    -        short-sc-long-desc  269, 270
    -        short-sc-nolong  271, 272, 273
    -        short-sc-nolong-desc  274, 275
    -        short-sc-postfootnote  276, 277
    -        short-sc-postfootnote-desc  278
    -        short-sm  279
    -        short-sm-desc  280
    -        short-sm-footnote  281
    -        short-sm-footnote-desc  282, 283
    -        short-sm-long  284, 285, 286
    -        short-sm-long-desc  287, 288
    -        short-sm-nolong  289, 290, 291
    -        short-sm-nolong-desc  292, 293
    -        short-sm-postfootnote  294
    -        short-sm-postfootnote-desc  295
    \abbrvpluralsuffix  297
    acronym styles (glossaries):
    -        dua  298
    -        dua-desc  299
    -        footnote  300
    -        footnote-desc  301
    -        footnote-sc  302
    -        footnote-sc-desc  303
    -        footnote-sm  304
    -        footnote-sm-desc  305
    -        long-sc-short  306
    -        long-sc-short-desc  307
    -        long-short-desc  308
    -        long-sm-short  309
    -        long-sm-short-desc  310
    -        long-sp-short  311, 312
    -        long-sp-short-desc  313
    -        sc-short-long  314
    -        sc-short-long-desc  315
    -        short-long  316
    -        short-long-desc  317
    -        sm-short-long  318
    -        sm-short-long-desc  319
    326, 327, 328, 329, 330, 331
    +href="glossaries-extra-manual.html#dx1-62003" >330, 331
    bib2gls  332, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444
    +href="glossaries-extra-manual.html#dx1-51017" >439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450

    C categories:
    -        abbreviation  445, 446, 447, 448, 449
    -    451, 452, 453, 454, 455
    +    acronym  450, 451, 452, 453, 454
    -    456, 457, 458, 459, 460
    +    general  455, 456, 457, 458, 459, 460, 461, 462
    -    461, 462, 463, 464, 465, 466, 467, 468
    +    glossnamefont  463
    -    469
    +    index  464, 465
    -    470, 471
    +    number  466
    -    472
    +    symbol  467, 468
    +href="glossaries-extra-manual.html#dx1-9045" >473, 474
    category attributes:
    -        accessaposplural  469, 470, 471, 472
    -    475, 476, 477, 478
    +    accessinsertdots  473, 474
    -    479, 480
    +    accessnoshortplural  475, 476
    -    481, 482
    +    aposplural  477, 478, 479, 480, 481, 482, 483, 484
    -    483, 484, 485, 486, 487, 488, 489, 490
    +    discardperiod  485, 486, 487, 488, 489
    -    491, 492, 493, 494, 495
    +    dualindex  490, 491, 492, 493, 494, 495, 496
    -    496, 497, 498, 499, 500, 501, 502
    +    entrycount  497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507
    -    503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513
    +    externallocation  508, 509, 510, 511
    -    514, 515, 516, 517
    +    firstshortaccess  512
    -    518
    +    glossdesc  513, 514, 515
    -    519, 520, 521
    +    glossdescfont  516, 517, 518
    -    522, 523, 524
    +    glossname  519, 520, 521
    +href="glossaries-extra-manual.html#dx1-17003" >525, 526, 527
    -        glossnamefont  522, 523, 524, 525
    -    528, 529, 530, 531
    +    glosssymbolfont  526, 527
    -    532, 533
    +    headuc  528, 529, 530, 531
    -    534, 535, 536, 537
    +    hyperoutside  532, 533
    -    538, 539
    +    indexname  534, 535, 536, 537, 538
    -    540, 541, 542, 543, 544
    +    indexonlyfirst  539, 540, 541
    -    545, 546, 547
    +    insertdots  542, 543, 544, 545
    -    548, 549, 550, 551
    +    linkcount  546, 547, 548
    -    552, 553, 554
    +    linkcountmaster  549, 550
    -    555, 556
    +    markshortwords  551, 552
    -    557, 558
    +    markwords  553, 554, 555, 556, 557, 558
    -    559, 560, 561, 562, 563, 564
    +    nameshortaccess  559
    -    565
    +    nohyper  560, 561, 562
    -    566, 567, 568
    +    nohyperfirst  563, 564, 565, 566, 567
    -    569, 570, 571, 572, 573
    +    noshortplural  568, 569, 570, 571, 572, 573
    -    574, 575, 576, 577, 578, 579
    +    pluraldiscardperiod  574, 575
    -    580, 581
    +    recordcount  576, 577, 578, 579
    -    582, 583, 584, 585
    +    regular  580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611
    -    586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617
    +    retainfirstuseperiod  612
    -    618
    +    tagging  613, 614, 615, 616
    -    619, 620, 621, 622
    +    targetcategory  617
    -    623
    +    targetname  618, 619
    -    624, 625
    +    targeturl  620, 621, 622, 623, 624
    -    626, 627, 628, 629, 630
    +    textformat  625, 626, 627, 628, 629
    -    631, 632, 633, 634, 635
    +    textshortaccess  630
    -    636
    +    unitcount  631
    -    637
    +    wrgloss  632, 633
    +href="glossaries-extra-manual.html#dx1-7015" >638, 639
    \cGLS  634
    +class="cmti-10">640

    \cGLSformat  635
    +class="cmti-10">641

    \cGLSpl  636
    +class="cmti-10">642

    \cGLSplformat  637
    +class="cmti-10">643

    convertgls2bib  638
    +href="glossaries-extra-manual.html#dx1-40003" >644
    \csGlsXtrLetField  639
    +class="cmti-10">645

    \CustomAbbreviationFields  640
    +class="cmti-10">646

    D datatool package  641
    +href="glossaries-extra-manual.html#dx1-50042" >647
    datatool-base package  642, 643, 644, 645
    +href="glossaries-extra-manual.html#dx1-9" >648, 649, 650, 651
    \dGLS  646
    +class="cmti-10">652
    \dGls  647
    +class="cmti-10">653
    \dgls  648
    +class="cmti-10">654
    \dglsdisp  649
    +class="cmti-10">655
    \dglslink  650
    +class="cmti-10">656
    \dGLSpl  651
    +class="cmti-10">657
    \dGlspl  652
    +class="cmti-10">658
    \dglspl  653
    +class="cmti-10">659

    E \eglssetwidest  654
    +class="cmti-10">660
    \eglsupdatewidest  655
    +class="cmti-10">661
    \eGlsXtrSetField  656
    +class="cmti-10">662
    entry location  657, 658, 659
    +href="glossaries-extra-manual.html#dx1-63004" >663, 664, 665
    entrycounter package  660
    +href="glossaries-extra-manual.html#dx1-55020" >666
    equation (counter)  661, 662, 663, 664, 665
    +href="glossaries-extra-manual.html#dx1-4112" >667, 668, 669, 670, 671
    etoolbox package  666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676
    +href="glossaries-extra-manual.html#dx1-5" >672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682

    F fancyhdr package  677
    +href="glossaries-extra-manual.html#dx1-21049" >683
    file types
    -        glg-abr  678
    -    684
    +    glo-abr  679
    -    685
    +    gls-abr  680
    +href="glossaries-extra-manual.html#dx1-4193" >686
    first use  681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734
    +href="glossaries-extra-manual.html#dx1-7005" >687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740
    first use flag  735, 736, 737, 738, 739, 740, 741
    +href="glossaries-extra-manual.html#dx1-9052" >741, 742, 743, 744, 745, 746, 747
    first use text  742, 743
    +href="glossaries-extra-manual.html#dx1-63015" >748, 749
    fontenc package  744
    +href="glossaries-extra-manual.html#dx1-28024" >750
    \forallabbreviationlists  745
    +class="cmti-10">751

    G \gglssetwidest  746
    +class="cmti-10">752
    \gglsupdatewidest  747
    +class="cmti-10">753
    \gGlsXtrSetField  748
    +class="cmti-10">754
    glossaries package  749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767
    +href="glossaries-extra-manual.html#dx1-6018" >755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773
    glossaries-accsupp package  768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789
    +href="glossaries-extra-manual.html#dx1-4036" >774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795
    glossaries-extra package  790, 791, 792, 793, 794, 795, 796
    +href="glossaries-extra-manual.html#dx1-6020" >796, 797, 798, 799, 800, 801, 802
    glossaries-extra-bib2gls package  797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811
    +href="glossaries-extra-manual.html#dx1-4080" >803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817
    glossaries-extra-stylemods package  812, 813, 814, 815, 816, 817, 818, 819, 820
    +href="glossaries-extra-manual.html#dx1-4026" >818, 819, 820, 821, 822, 823, 824, 825, 826
    glossaries-prefix package  821, 822, 823, 824
    +href="glossaries-extra-manual.html#dx1-4034" >827, 828, 829, 830
    \glossariesextrasetup  825
    +class="cmti-10">831
    glossary styles:
    -        altlist  826, 827
    -    832, 833
    +    alttree  828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840
    -    834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846
    +    bookindex  841, 842, 843, 844
    -    847, 848, 849, 850
    +    index  845
    -    851
    +    inline  846, 847
    +href="glossaries-extra-manual.html#dx1-19006" >852, 853
    -        list  848, 849, 850
    -    854, 855, 856, 857
    +    listdotted  851, 852
    -    858, 859
    +    long  853
    -    860, 861, 862
    +    long-desc-name  854
    -    863
    +    long-desc-sym-name  855
    -    864
    +    long-loc-desc-name  856
    -    865
    +    long-loc-desc-sym-name  857
    -    866
    +    long-loc-sym-desc-name  858
    -    867
    +    long-name-desc  859, 860, 861
    -    868, 869, 870
    +    long-name-desc-loc  862
    -    871
    +    long-name-desc-sym  863, 864
    -    872, 873
    +    long-name-desc-sym-loc  865, 866
    -    874, 875
    +    long-name-sym-desc  867
    -    876
    +    long-name-sym-desc-loc  868
    -    877
    +    long-sym-desc-name  869
    -    878
    +    long3col  870
    -    879
    +    longragged-booktabs  871, 872
    -    880, 881
    +    mcolindexgroup  873
    -    882
    +    super  883
    +    topic  874, 875
    -    884, 885
    +    topicmcols  876
    -    886
    +    tree  877, 878, 879, 880
    -    887, 888, 889, 890
    +    treenoname  881, 882, 883
    +href="glossaries-extra-manual.html#dx1-19051" >891, 892, 893
    glossary-bookindex package  884, 885
    +href="glossaries-extra-manual.html#dx1-21001" >894, 895
    glossary-inline package  886
    +href="glossaries-extra-manual.html#dx1-19007" >896
    +glossary-list package  897
    glossary-long package  887, 888
    +href="glossaries-extra-manual.html#dx1-22018" >898, 899
    glossary-longextra package  889, 890
    +href="glossaries-extra-manual.html#dx1-22001" >900, 901
    glossary-topic package  891
    +href="glossaries-extra-manual.html#dx1-23001" >902
    glossary-tree package  892, 893, 894, 895, 896, 897
    +href="glossaries-extra-manual.html#dx1-19034" >903, 904, 905, 906, 907, 908
    \glossentrynameother  898
    +class="cmti-10">909

    \glossxtrsetpopts  899
    +class="cmti-10">910

    \glsabbrvdefaultfont  900, 911, 901
    +class="cmti-10">912

    \glsabbrvemfont  902
    +class="cmti-10">913

    \glsabbrvfont  903
    +class="cmti-10">914

    \glsabbrvhyphenfont  904
    +class="cmti-10">915

    \glsabbrvonlyfont  905
    +class="cmti-10">916

    \glsabbrvscfont  906
    +class="cmti-10">917

    \glsabbrvsmfont  907
    +class="cmti-10">918

    \glsabbrvuserfont  908, 919, 909
    +class="cmti-10">920
    \Glsaccessdesc  910
    +href="glossaries-extra-manual.html#dx1-60042" >921
    \glsaccessdesc  911
    +href="glossaries-extra-manual.html#dx1-60040" >922
    \Glsaccessdescplural  912
    +href="glossaries-extra-manual.html#dx1-60046" >923
    \glsaccessdescplural  913
    +href="glossaries-extra-manual.html#dx1-60044" >924
    \Glsaccessfirst  914
    +href="glossaries-extra-manual.html#dx1-60026" >925
    \glsaccessfirst  915
    +href="glossaries-extra-manual.html#dx1-60024" >926
    + + + \Glsaccessfirstplural  916
    +href="glossaries-extra-manual.html#dx1-60030" >927
    \glsaccessfirstplural  917
    - - - +href="glossaries-extra-manual.html#dx1-60028" >928
    \Glsaccesslong  918
    +href="glossaries-extra-manual.html#dx1-60058" >929
    \glsaccesslong  919
    +href="glossaries-extra-manual.html#dx1-60056" >930
    \Glsaccesslongpl  920
    +href="glossaries-extra-manual.html#dx1-60062" >931
    \glsaccesslongpl  921
    +href="glossaries-extra-manual.html#dx1-60060" >932
    \Glsaccessname  922
    +href="glossaries-extra-manual.html#dx1-60013" >933
    \glsaccessname  923
    +href="glossaries-extra-manual.html#dx1-60008" >934
    \Glsaccessplural  924
    +href="glossaries-extra-manual.html#dx1-60022" >935
    \glsaccessplural  925
    +href="glossaries-extra-manual.html#dx1-60020" >936
    \Glsaccessshort  926
    +href="glossaries-extra-manual.html#dx1-60050" >937
    \glsaccessshort  927
    +href="glossaries-extra-manual.html#dx1-60048" >938
    \Glsaccessshortpl  928
    +href="glossaries-extra-manual.html#dx1-60054" >939
    \glsaccessshortpl  929
    +href="glossaries-extra-manual.html#dx1-60052" >940
    \Glsaccesssymbol  930
    +href="glossaries-extra-manual.html#dx1-60034" >941
    \glsaccesssymbol  931
    +href="glossaries-extra-manual.html#dx1-60032" >942
    \Glsaccesssymbolplural  932
    +href="glossaries-extra-manual.html#dx1-60038" >943
    \glsaccesssymbolplural  933
    +href="glossaries-extra-manual.html#dx1-60036" >944
    \Glsaccesstext  934
    +href="glossaries-extra-manual.html#dx1-60018" >945
    \glsaccesstext  935
    +href="glossaries-extra-manual.html#dx1-60016" >946
    \glsacspace  936
    +class="cmti-10">947
    \glsacspacemax  937
    +class="cmti-10">948
    \glsadd options
    -        format  938
    -    949
    +    theHvalue  939, 940
    -    950, 951
    +    thevalue  941, 942, 943, 944, 945
    +href="glossaries-extra-manual.html#dx1-7046" >952, 953, 954, 955, 956
    \glsaddeach  946
    +class="cmti-10">957

    \glsaddpostsetkeys  947
    +class="cmti-10">958
    \glsaddpresetkeys  948
    +class="cmti-10">959
    \glscapturedgroup  949
    +class="cmti-10">960
    \glscategory  950
    +class="cmti-10">961
    \glscategorylabel  951
    +class="cmti-10">962
    \glscurrententrylabel  952
    +class="cmti-10">963
    \glscurrentfieldvalue  953
    +class="cmti-10">964
    \glsdefaultshortaccess  954
    +class="cmti-10">965
    \glsdefpostdesc  955
    +class="cmti-10">966
    \glsdefpostlink  956
    +class="cmti-10">967
    \glsdefpostname  957
    +class="cmti-10">968
    \glsentrycurrcount  958
    +class="cmti-10">969
    \glsentrypdfsymbol  959
    +class="cmti-10">970
    \glsentryprevcount  960
    +class="cmti-10">971
    \glsentryprevmaxcount  961
    +class="cmti-10">972
    \glsentryprevtotalcount  962
    +class="cmti-10">973
    \glsextrapostnamehook  963
    +class="cmti-10">974
    \glsFindWidestAnyName  964
    +class="cmti-10">975
    \glsFindWidestAnyNameLocation  965
    +class="cmti-10">976
    + + + \glsFindWidestAnyNameSymbol  966
    +class="cmti-10">977
    \glsFindWidestAnyNameSymbolLocation  967
    - - - +class="cmti-10">978
    \glsFindWidestLevelTwo  968
    +class="cmti-10">979
    \glsFindWidestTopLevelName  969
    +class="cmti-10">980
    \glsFindWidestUsedAnyName  970
    +class="cmti-10">981
    \glsFindWidestUsedAnyNameLocation  971
    +class="cmti-10">982
    \glsFindWidestUsedAnyNameSymbol  972
    +class="cmti-10">983
    \glsFindWidestUsedAnyNameSymbolLocation  973
    +class="cmti-10">984
    \glsFindWidestUsedLevelTwo  974
    +class="cmti-10">985
    \glsFindWidestUsedTopLevelName  975
    +class="cmti-10">986
    \glsfirstabbrvdefaultfont  976
    +class="cmti-10">987
    \glsfirstabbrvemfont  977
    +class="cmti-10">988
    \glsfirstabbrvfont  978
    +class="cmti-10">989
    \glsfirstabbrvhyphenfont  979
    +class="cmti-10">990
    \glsfirstabbrvonlyfont  980
    +class="cmti-10">991
    \glsfirstabbrvsmfont  981
    +class="cmti-10">992
    \glsfirstabbrvuserfont  982
    +class="cmti-10">993
    \glsfirstlongdefaultfont  983
    +class="cmti-10">994
    \glsfirstlongemfont  984
    +class="cmti-10">995
    \glsfirstlongfont  985
    +class="cmti-10">996
    \glsfirstlongfootnotefont  986
    +class="cmti-10">997
    \glsfirstlonghyphenfont  987
    +class="cmti-10">998
    \glsfirstlongonlyfont  988
    +class="cmti-10">999
    \glsfirstlonguserfont  989
    +class="cmti-10">1000
    \GLSfmtfirst  990
    +class="cmti-10">1001
    \Glsfmtfirst  991
    +class="cmti-10">1002
    \glsfmtfirst  992
    +class="cmti-10">1003
    \GLSfmtfirstpl  993
    +class="cmti-10">1004
    \Glsfmtfirstpl  994
    +class="cmti-10">1005
    \glsfmtfirstpl  995
    +class="cmti-10">1006
    \GLSfmtfull  996
    +class="cmti-10">1007
    \Glsfmtfull  997
    +class="cmti-10">1008
    \glsfmtfull  998
    +class="cmti-10">1009
    \GLSfmtfullpl  999
    +class="cmti-10">1010
    \Glsfmtfullpl  1000
    +class="cmti-10">1011
    \glsfmtfullpl  1001
    +class="cmti-10">1012
    \GLSfmtlong  1002
    +class="cmti-10">1013
    \Glsfmtlong  1003
    +class="cmti-10">1014
    \glsfmtlong  1004
    +class="cmti-10">1015
    \GLSfmtlongpl  1005
    +class="cmti-10">1016
    \Glsfmtlongpl  1006
    +class="cmti-10">1017
    \glsfmtlongpl  1007
    +class="cmti-10">1018
    \GLSfmtname  1008
    +class="cmti-10">1019
    \Glsfmtname  1009
    +class="cmti-10">1020
    \glsfmtname  1010
    +class="cmti-10">1021
    \GLSfmtplural  1011
    +class="cmti-10">1022
    + + + \Glsfmtplural  1012
    +class="cmti-10">1023
    \glsfmtplural  1013
    - - - +class="cmti-10">1024
    \GLSfmtshort  1014
    +class="cmti-10">1025
    \Glsfmtshort  1015
    +class="cmti-10">1026
    \glsfmtshort  1016
    +class="cmti-10">1027
    \Glsfmtshortpl  1017, 1028, 1018
    +class="cmti-10">1029
    \glsfmtshortpl  1019
    +class="cmti-10">1030
    \GLSfmttext  1020
    +class="cmti-10">1031
    \Glsfmttext  1021
    +class="cmti-10">1032
    \glsfmttext  1022
    +class="cmti-10">1033
    \glsforeachwithattribute  1023
    +class="cmti-10">1034
    \glsgetattribute  1024
    +class="cmti-10">1035
    \glsgetcategoryattribute  1025
    +class="cmti-10">1036
    \glsgetwidestname  1026
    +class="cmti-10">1037
    \glsgetwidestsubname  1027
    +class="cmti-10">1038
    \glshasattribute  1028
    +class="cmti-10">1039
    \glshascategoryattribute  1029
    +class="cmti-10">1040
    \glshex  1030
    +class="cmti-10">1041
    \glsifattribute  1031
    +class="cmti-10">1042
    \glsifcategory  1032
    +class="cmti-10">1043
    \glsifcategoryattribute  1033
    +class="cmti-10">1044
    \glsifnotregular  1034
    +class="cmti-10">1045
    \glsifnotregularcategory  1035
    +class="cmti-10">1046
    \glsifregular  1036
    +class="cmti-10">1047
    \glsifregularcategory  1037
    +class="cmti-10">1048
    \glskeylisttok  1038
    +class="cmti-10">1049
    \glslabeltok  1039
    +class="cmti-10">1050
    \glslink options
    -        counter  1040, 1041
    -    1051, 1052
    +    format  1042, 1043, 1044, 1045
    -    1053, 1054, 1055, 1056
    +    hyper  1046, 1047, 1048
    -    1057, 1058, 1059
    +    hyper=false  1049
    -    1060
    +    hyperoutside  1050, 1051
    -    1061, 1062
    +    noindex  1052, 1053, 1054, 1055, 1056, 1057, 1058
    -    1063, 1064, 1065, 1066, 1067, 1068, 1069
    +    prefix  1059, 1060
    -    1070, 1071
    +    textformat  1061, 1062
    -    1072, 1073
    +    theHvalue  1063, 1064
    -    1074, 1075
    +    thevalue  1065, 1066
    -    1076, 1077
    +    wrgloss  1067, 1068, 1069, 1070
    +href="glossaries-extra-manual.html#dx1-7011" >1078, 1079, 1080, 1081
    \glslinkcheckfirsthyperhook  1071
    +class="cmti-10">1082

    \glslinkpresetkeys  1072
    +class="cmti-10">1083

    \glslistchildpostlocation  1073
    +class="cmti-10">1084

    \glslistchildprelocation  1074
    +class="cmti-10">1085

    \glslistdesc  1075
    +class="cmti-10">1086

    \glslistgroupskip  1076
    +class="cmti-10">1087
    \glslistprelocation  1077
    +class="cmti-10">1088
    + + + \glslocalreseteach  1078
    +class="cmti-10">1089
    \glslocalunseteach  1079
    - - - +class="cmti-10">1090
    \glslongdefaultfont  1080
    +class="cmti-10">1091
    \glslongemfont  1081
    +class="cmti-10">1092
    \glslongextraDescAlign  1082
    +class="cmti-10">1093
    \glslongextraDescFmt  1083
    +class="cmti-10">1094
    \glslongextraDescNameHeader  1084
    +class="cmti-10">1095
    \glslongextraDescNameTabularFooter  1085
    +class="cmti-10">1096
    \glslongextraDescNameTabularHeader  1086
    +class="cmti-10">1097
    \glslongextraDescSymNameHeader  1087
    +class="cmti-10">1098
    \glslongextraDescSymNameTabularFooter  1088
    +class="cmti-10">1099
    \glslongextraDescSymNameTabularHeader  1089
    +class="cmti-10">1100
    \glslongextraGroupHeading  1090
    +class="cmti-10">1101
    \glslongextraHeaderFmt  1091
    +class="cmti-10">1102
    \glslongextraLocationAlign  1092
    +class="cmti-10">1103
    \glslongextraLocationDescNameHeader  1093
    +class="cmti-10">1104
    \glslongextraLocationDescNameTabularFooter  1094
    +class="cmti-10">1105
    \glslongextraLocationDescNameTabularHeader  1095
    +class="cmti-10">1106
    \glslongextraLocationDescSymNameHeader  1096
    +class="cmti-10">1107
    \glslongextraLocationDescSymNameTabularFooter  1097
    +class="cmti-10">1108
    \glslongextraLocationDescSymNameTabularHeader  1098
    +class="cmti-10">1109
    \glslongextraLocationFmt  1099, 1110, 1100
    +class="cmti-10">1111
    \glslongextraLocationSymDescNameHeader  1101
    +class="cmti-10">1112
    \glslongextraLocationSymDescNameTabularFooter  1102
    +class="cmti-10">1113
    \glslongextraLocationSymDescNameTabularHeader  1103
    +class="cmti-10">1114
    \glslongextraLocSetDescWidth  1104
    +class="cmti-10">1115
    \glslongextraNameAlign  1105
    +class="cmti-10">1116
    \glslongextraNameDescHeader  1106
    +class="cmti-10">1117
    \glslongextraNameDescLocationHeader  1107
    +class="cmti-10">1118
    \glslongextraNameDescLocationTabularFooter  1108
    +class="cmti-10">1119
    \glslongextraNameDescLocationTabularHeader  1109
    +class="cmti-10">1120
    \glslongextraNameDescSymHeader  1110
    +class="cmti-10">1121
    \glslongextraNameDescSymLocationHeader  1111
    +class="cmti-10">1122
    \glslongextraNameDescSymLocationTabularFooter  1112
    +class="cmti-10">1123
    \glslongextraNameDescSymLocationTabularHeader  1113
    +class="cmti-10">1124
    \glslongextraNameDescSymTabularFooter  1114
    +class="cmti-10">1125
    \glslongextraNameDescSymTabularHeader  1115
    +class="cmti-10">1126
    \glslongextraNameDescTabularFooter  1116
    +class="cmti-10">1127
    \glslongextraNameDescTabularHeader  1117
    +class="cmti-10">1128
    \glslongextraNameFmt  1118
    +class="cmti-10">1129
    \glslongextraNameSymDescHeader  1119
    +class="cmti-10">1130
    \glslongextraNameSymDescLocationHeader  1120
    +class="cmti-10">1131
    \glslongextraNameSymDescLocationTabularFooter  1121
    +class="cmti-10">1132
    \glslongextraNameSymDescLocationTabularHeader  1122
    +class="cmti-10">1133
    \glslongextraNameSymDescTabularFooter  1123
    +class="cmti-10">1134
    \glslongextraNameSymDescTabularHeader  1124
    +class="cmti-10">1135
    + + + \glslongextraSetDescWidth  1125
    +class="cmti-10">1136
    \glslongextraSetWidest  1126
    - - - +class="cmti-10">1137
    \glslongextraSubDescFmt  1127
    +class="cmti-10">1138
    \glslongextraSubNameFmt  1128
    +class="cmti-10">1139
    \glslongextraSubSymbolFmt  1129
    +class="cmti-10">1140
    \glslongextraSymbolAlign  1130
    +class="cmti-10">1141
    \glslongextraSymbolFmt  1131
    +class="cmti-10">1142
    \glslongextraSymDescNameHeader  1132
    +class="cmti-10">1143
    \glslongextraSymDescNameTabularFooter  1133
    +class="cmti-10">1144
    \glslongextraSymDescNameTabularHeader  1134
    +class="cmti-10">1145
    \glslongextraSymLocSetDescWidth  1135
    +class="cmti-10">1146
    \glslongextraSymSetDescWidth  1136
    +class="cmti-10">1147
    \glslongextraTabularVAlign  1137
    +class="cmti-10">1148
    \glslongextraUpdateWidest  1138
    +class="cmti-10">1149
    \glslongextraUpdateWidestChild  1139
    +class="cmti-10">1150
    \GlsLongExtraUseTabulartrue  1140
    +class="cmti-10">1151
    \glslongfont  1141
    +class="cmti-10">1152
    \glslongfootnotefont  1142
    +class="cmti-10">1153
    \glslonghyphenfont  1143
    +class="cmti-10">1154
    \glslongonlyfont  1144
    +class="cmti-10">1155
    \glslongpltok  1145
    +class="cmti-10">1156
    \glslongtok  1146
    +class="cmti-10">1157
    \glslonguserfont  1147
    +class="cmti-10">1158
    \glsnoidxdisplayloc  1148
    +class="cmti-10">1159
    \glspdffmtfull  1149
    +class="cmti-10">1160
    \glspdffmtfullpl  1150
    +class="cmti-10">1161
    \glsps  1151
    +class="cmti-10">1162
    \glspt  1152
    +class="cmti-10">1163
    \glsrenewcommand  1153
    +class="cmti-10">1164
    \glsseeitemformat  1154
    +class="cmti-10">1165
    \glssetattribute  1155
    +class="cmti-10">1166
    \glssetcategoryattribute  1156
    +class="cmti-10">1167
    \glssetregularcategory  1157
    +class="cmti-10">1168
    \glsshortpltok  1158
    +class="cmti-10">1169
    \glsshorttok  1159
    +class="cmti-10">1170
    \glstopicAssignSubIndent  1160
    +class="cmti-10">1171
    \glstopicAssignWidest  1161
    +class="cmti-10">1172
    \glstopicCols  1162
    +class="cmti-10">1173
    \glstopicColsEnv  1163
    +class="cmti-10">1174
    \glstopicDesc  1164
    +class="cmti-10">1175
    \glstopicGroupHeading  1165
    +class="cmti-10">1176
    \glstopicInit  1166
    +class="cmti-10">1177
    \glstopicItem  1167
    +class="cmti-10">1178
    \glstopicLoc  1168
    +class="cmti-10">1179
    \glstopicMarker  1169
    +class="cmti-10">1180
    \glstopicMidSkip  1170
    +class="cmti-10">1181
    + + + \glstopicParIndent  1171
    +class="cmti-10">1182
    \glstopicPostSkip  1172
    - - - +class="cmti-10">1183
    \glstopicPreSkip  1173
    +class="cmti-10">1184
    \glstopicSubIndent  1174
    +class="cmti-10">1185
    \glstopicSubItem  1175
    +class="cmti-10">1186
    \glstopicSubItemBox  1176
    +class="cmti-10">1187
    \glstopicSubItemSep  1177
    +class="cmti-10">1188
    \glstopicSubLoc  1178
    +class="cmti-10">1189
    \glstopicSubNameFont  1179
    +class="cmti-10">1190
    \glstopicSubPreLocSep  1180
    +class="cmti-10">1191
    \glstopicTitle  1181
    +class="cmti-10">1192
    \glstopicTitleFont  1182
    +class="cmti-10">1193
    \glstreechilddesc  1183
    +class="cmti-10">1194
    \glstreeChildDescLoc  1184
    +class="cmti-10">1195
    \glstreechildprelocation  1185
    +class="cmti-10">1196
    \glstreechildsymbol  1186
    +class="cmti-10">1197
    \glstreedefaultnamefmt  1187
    +class="cmti-10">1198
    \glstreedesc  1188
    +class="cmti-10">1199
    \glstreeDescLoc  1189
    +class="cmti-10">1200
    \glstreegroupskip  1190
    +class="cmti-10">1201
    \glstreeheadergroupskip  1191
    +class="cmti-10">1202
    \glstreeNoDescSymbolPreLocation  1192
    +class="cmti-10">1203
    \glstreenonamechilddesc  1193
    +class="cmti-10">1204
    \glstreenonamedesc  1194
    +class="cmti-10">1205
    \glstreenonamesymbol  1195
    +class="cmti-10">1206
    \glstreePreHeader  1196
    +class="cmti-10">1207
    \glstreeprelocation  1197
    +class="cmti-10">1208
    \glstreesymbol  1198
    +class="cmti-10">1209
    \glsupdatewidest  1199
    +class="cmti-10">1210
    \glsuseabbrvfont  1200
    +class="cmti-10">1211
    \glsuselongfont  1201
    +class="cmti-10">1212
    \glsuserdescription  1202
    +class="cmti-10">1213
    \Glsxtr  1203
    +href="glossaries-extra-manual.html#dx1-57014" >1214
    \glsxtr  1204
    +href="glossaries-extra-manual.html#dx1-57009" >1215
    \glsxtrabbreviationfont  1205
    +class="cmti-10">1216
    \glsxtrabbrvfootnote  1206
    +class="cmti-10">1217
    \glsxtrabbrvpluralsuffix  1207, 1218, 1208
    +class="cmti-10">1219
    \glsxtractivatenopost  1209
    +href="glossaries-extra-manual.html#dx1-55014" >1220
    \glsxtraddallcrossrefs  1210
    +class="cmti-10">1221
    \glsxtraddlabelprefix  1211
    +class="cmti-10">1222
    \glsxtralias  1212
    +href="glossaries-extra-manual.html#dx1-56019" >1223
    \glsxtrAltTreeIndent  1213
    +class="cmti-10">1224
    \glsxtralttreeInit  1214
    +class="cmti-10">1225
    \glsxtralttreeSubSymbolDescLocation  1215
    +class="cmti-10">1226
    \glsxtralttreeSymbolDescLocation  1216
    +class="cmti-10">1227
    \GlsXtrAutoAddOnFormat  1217
    -1228
    + + + +\glsxtrautoindex  1218
    +class="cmti-10">1229

    \glsxtrautoindexassignsort  1219
    - - - +class="cmti-10">1230
    \glsxtrautoindexentry  1220
    +class="cmti-10">1231
    \glsxtrautoindexesc  1221
    +class="cmti-10">1232
    \glsxtrBasicDigitrules  1222
    +class="cmti-10">1233
    \GlsXtrBibTeXEntryAliases  1223
    +class="cmti-10">1234
    \glsxtrbookindexatendgroup  1224
    +class="cmti-10">1235
    \glsxtrbookindexbetween  1225
    +class="cmti-10">1236
    \glsxtrbookindexbookmark  1226
    +class="cmti-10">1237
    \glsxtrbookindexcols  1227
    +class="cmti-10">1238
    \glsxtrbookindexcolspread  1228
    +class="cmti-10">1239
    \glsxtrbookindexfirstmark  1229
    +class="cmti-10">1240
    \glsxtrbookindexfirstmarkfmt  1230
    +class="cmti-10">1241
    \glsxtrbookindexformatheader  1231
    +class="cmti-10">1242
    \glsxtrbookindexlastmark  1232
    +class="cmti-10">1243
    \glsxtrbookindexlastmarkfmt  1233
    +class="cmti-10">1244
    \glsxtrbookindexlocation  1234
    +class="cmti-10">1245
    \glsxtrbookindexmarkentry  1235
    +class="cmti-10">1246
    \glsxtrbookindexmulticolsenv  1236
    +class="cmti-10">1247
    \glsxtrbookindexname  1237
    +class="cmti-10">1248
    \glsxtrbookindexparentchildsep  1238
    +class="cmti-10">1249
    \glsxtrbookindexparentsubchildsep  1239
    +class="cmti-10">1250
    \glsxtrbookindexprelocation  1240
    +class="cmti-10">1251
    \glsxtrbookindexsubatendgroup  1241
    +class="cmti-10">1252
    \glsxtrbookindexsubbetween  1242
    +class="cmti-10">1253
    \glsxtrbookindexsublocation  1243
    +class="cmti-10">1254
    \glsxtrbookindexsubname  1244
    +class="cmti-10">1255
    \glsxtrbookindexsubprelocation  1245
    +class="cmti-10">1256
    \glsxtrbookindexsubsubatendgroup  1246
    +class="cmti-10">1257
    \glsxtrbookindexsubsubbetween  1247
    +class="cmti-10">1258
    \glsxtrchecknohyperfirst  1248
    +class="cmti-10">1259
    \glsxtrclearlabelprefixes  1249
    +class="cmti-10">1260
    \glsxtrcombiningdiacriticIIIrules  1250
    +class="cmti-10">1261
    \glsxtrcombiningdiacriticIIrules  1251
    +class="cmti-10">1262
    \glsxtrcombiningdiacriticIrules  1252
    +class="cmti-10">1263
    \glsxtrcombiningdiacriticIVrules  1253
    +class="cmti-10">1264
    \glsxtrcombiningdiacriticrules  1254
    +class="cmti-10">1265
    \glsxtrcontrolrules  1255
    +class="cmti-10">1266
    \glsxtrcopytoglossary  1256
    +class="cmti-10">1267
    \glsxtrcurrencyrules  1257
    +class="cmti-10">1268
    \GlsXtrDefaultResourceOptions  1258
    +class="cmti-10">1269
    \glsxtrdeffield  1259
    +class="cmti-10">1270
    \glsxtrdetoklocation  1260
    +class="cmti-10">1271
    \glsxtrdigitrules  1261
    +class="cmti-10">1272
    \GlsXtrDiscardUnsetBuffering  1262
    +class="cmti-10">1273
    \glsxtrdisplayendloc  1263
    +class="cmti-10">1274
    + + + \glsxtrdisplayendlochook  1264
    +class="cmti-10">1275
    \glsxtrdisplaylocnameref  1265
    - - - +class="cmti-10">1276
    \glsxtrdisplaysingleloc  1266
    +class="cmti-10">1277
    \glsxtrdisplaystartloc  1267
    +class="cmti-10">1278
    \glsxtrdisplaysupploc  1268
    +class="cmti-10">1279
    \glsxtrdoautoindexname  1269
    +class="cmti-10">1280
    \glsxtrdowrglossaryhook  1270
    +class="cmti-10">1281
    \glsxtredeffield  1271
    +class="cmti-10">1282
    \glsxtremsuffix  1272
    +class="cmti-10">1283
    \GlsXtrEnableEntryCounting  1273
    +class="cmti-10">1284
    \GlsXtrEnableEntryUnitCounting  1274
    +class="cmti-10">1285
    \GlsXtrEnableIndexFormatOverride  1275
    +class="cmti-10">1286
    \GlsXtrEnableInitialTagging  1276
    +class="cmti-10">1287
    \GlsXtrEnableLinkCounting  1277
    +class="cmti-10">1288
    \GlsXtrEnableOnTheFly  1278
    +href="glossaries-extra-manual.html#dx1-57007" >1289
    \GlsXtrEnablePreLocationTag  1279
    +class="cmti-10">1290
    \glsxtrenablerecordcount  1280
    +class="cmti-10">1291
    \glsxtrendfor  1281
    +class="cmti-10">1292
    \glsxtrentryfmt  1282
    +class="cmti-10">1293
    \GlsXtrExpandedFmt  1283
    +class="cmti-10">1294
    \glsxtrfielddolistloop  1284
    +class="cmti-10">1295
    \glsxtrfieldforlistloop  1285
    +class="cmti-10">1296
    \glsxtrfieldformatcsvlist  1286
    +class="cmti-10">1297
    \glsxtrfieldformatlist  1287
    +class="cmti-10">1298
    \glsxtrfieldifinlist  1288
    +class="cmti-10">1299
    \glsxtrfieldlistadd  1289
    +class="cmti-10">1300
    \glsxtrfieldlisteadd  1290
    +class="cmti-10">1301
    \glsxtrfieldlistgadd  1291
    +class="cmti-10">1302
    \glsxtrfieldlistxadd  1292
    +class="cmti-10">1303
    \glsxtrfieldtitlecasecs  1293
    +class="cmti-10">1304
    \glsxtrfieldxifinlist  1294
    +class="cmti-10">1305
    \glsxtrfmt  1295
    +class="cmti-10">1306
    \glsxtrfmt*  1296
    +class="cmti-10">1307
    \GlsXtrFmtDefaultOptions  1297
    +class="cmti-10">1308
    \glsxtrfmtdisplay  1298
    +class="cmti-10">1309
    \glsxtrfmtexternalnameref  1299
    +class="cmti-10">1310
    \GlsXtrFmtField  1300
    +class="cmti-10">1311
    \glsxtrfmtinternalnameref  1301
    +class="cmti-10">1312
    \glsxtrfootnotedescname  1302
    +class="cmti-10">1313
    \glsxtrfootnotedescsort  1303
    +class="cmti-10">1314
    \glsxtrfootnotename  1304
    +class="cmti-10">1315
    \glsxtrforcsvfield  1305
    +class="cmti-10">1316
    \GlsXtrForeignText  1306
    +class="cmti-10">1317
    \GlsXtrForeignTextField  1307
    +class="cmti-10">1318
    \GlsXtrFormatLocationList  1308
    +class="cmti-10">1319
    \GlsXtrForUnsetBufferedList  1309
    +class="cmti-10">1320
    + + + \glsxtrfractionrules  1310
    +class="cmti-10">1321
    \GLSxtrfull  1311
    - - - +class="cmti-10">1322
    \Glsxtrfull  1312
    +class="cmti-10">1323
    \glsxtrfull  1313
    +class="cmti-10">1324
    \Glsxtrfullformat  1314
    +class="cmti-10">1325
    \glsxtrfullformat  1315
    +class="cmti-10">1326
    \GLSxtrfullpl  1316
    +class="cmti-10">1327
    \Glsxtrfullpl  1317
    +class="cmti-10">1328
    \glsxtrfullpl  1318
    +class="cmti-10">1329
    \Glsxtrfullplformat  1319
    +class="cmti-10">1330
    \glsxtrfullplformat  1320
    +class="cmti-10">1331
    \glsxtrfullsep  1321
    +class="cmti-10">1332
    \glsxtrGeneralLatinIIIrules  1322
    +class="cmti-10">1333
    \glsxtrGeneralLatinIIrules  1323
    +class="cmti-10">1334
    \glsxtrGeneralLatinIrules  1324
    +class="cmti-10">1335
    \glsxtrGeneralLatinIVrules  1325
    +class="cmti-10">1336
    \glsxtrGeneralLatinVIIIrules  1326
    +class="cmti-10">1337
    \glsxtrGeneralLatinVIIrules  1327
    +class="cmti-10">1338
    \glsxtrGeneralLatinVIrules  1328
    +class="cmti-10">1339
    \glsxtrGeneralLatinVrules  1329
    +class="cmti-10">1340
    \glsxtrgeneralpuncIIrules  1330
    +class="cmti-10">1341
    \glsxtrgeneralpuncIrules  1331
    +class="cmti-10">1342
    \glsxtrgeneralpuncrules  1332
    +class="cmti-10">1343
    \glsxtrglossentry  1333
    +href="glossaries-extra-manual.html#dx1-55004" >1344
    \glsxtrglossentryother  1334
    +href="glossaries-extra-manual.html#dx1-55016" >1345
    \glsxtrgroupfield  1335
    +href="glossaries-extra-manual.html#dx1-51014" >1346
    \GLSXTRhiername  1336
    +class="cmti-10">1347
    \GLSxtrhiername  1337
    +class="cmti-10">1348
    \GlsXtrhiername  1338
    +class="cmti-10">1349
    \Glsxtrhiername  1339
    +class="cmti-10">1350
    \glsxtrhiername  1340
    +class="cmti-10">1351
    \glsxtrhiernamesep  1341
    +class="cmti-10">1352
    \glsxtrhyphenrules  1342
    +class="cmti-10">1353
    \glsxtrhyphensuffix  1343
    +class="cmti-10">1354
    \glsxtridentifyglslike  1344
    +class="cmti-10">1355
    \glsxtrifcounttrigger  1345
    +class="cmti-10">1356
    \glsxtrifcustomdiscardperiod  1346
    +class="cmti-10">1357
    \GlsXtrIfFieldCmpNum  1347
    +class="cmti-10">1358
    \GlsXtrIfFieldEqNum  1348
    +class="cmti-10">1359
    \GlsXtrIfFieldEqStr  1349
    +class="cmti-10">1360
    \GlsXtrIfFieldEqXpStr  1350
    +class="cmti-10">1361
    \GlsXtrIfFieldNonZero  1351
    +class="cmti-10">1362
    \GlsXtrIfFieldUndef  1352
    +class="cmti-10">1363
    \GlsXtrIfFieldValueInCsvList  1353
    +class="cmti-10">1364
    \glsxtrifhasfield  1354
    +class="cmti-10">1365
    \glsxtrifhasfield*  1355
    +class="cmti-10">1366
    + + + \GlsXtrIfHasNonZeroChildCount  1356
    +class="cmti-10">1367
    \glsxtrifinlabelprefixlist  1357
    - - - +class="cmti-10">1368
    \glsxtrifkeydefined  1358
    +class="cmti-10">1369
    \glsxtriflabelinlist  1359
    +href="glossaries-extra-manual.html#dx1-53001" >1370
    \GlsXtrIfLinkCounterDef  1360
    +class="cmti-10">1371
    \glsxtrifrecordtrigger  1361
    +class="cmti-10">1372
    \GlsXtrIfUnusedOrUndefined  1362
    +class="cmti-10">1373
    \glsxtrifwasfirstuse  1363
    +class="cmti-10">1374
    \GlsXtrIfXpFieldEqXpStr  1364
    +class="cmti-10">1375
    \glsxtrinclinkcounter  1365
    +class="cmti-10">1376
    \glsxtrindexaliased  1366
    +href="glossaries-extra-manual.html#dx1-56017" >1377
    \GlsXtrIndexCounterLink  1367
    +class="cmti-10">1378
    \glsxtrindexseealso  1368
    +class="cmti-10">1379
    \glsxtrinitwrgloss  1369
    +class="cmti-10">1380
    \Glsxtrinlinefullformat  1370
    +class="cmti-10">1381
    \glsxtrinlinefullformat  1371
    +class="cmti-10">1382
    \Glsxtrinlinefullplformat  1372
    +class="cmti-10">1383
    \glsxtrinlinefullplformat  1373
    +class="cmti-10">1384
    \glsxtrinsertinsidetrue  1374
    +class="cmti-10">1385
    \glsxtrLatinA  1375
    +class="cmti-10">1386
    \glsxtrLatinAA  1376
    +class="cmti-10">1387
    \glsxtrLatinAELigature  1377
    +class="cmti-10">1388
    \glsxtrLatinE  1378
    +class="cmti-10">1389
    \glsxtrLatinEszettSs  1379
    +class="cmti-10">1390
    \glsxtrLatinEszettSz  1380
    +class="cmti-10">1391
    \glsxtrLatinEth  1381
    +class="cmti-10">1392
    \glsxtrLatinH  1382
    +class="cmti-10">1393
    \glsxtrLatinI  1383
    +class="cmti-10">1394
    \glsxtrLatinInsularG  1384
    +class="cmti-10">1395
    \glsxtrLatinK  1385
    +class="cmti-10">1396
    \glsxtrLatinL  1386
    +class="cmti-10">1397
    \glsxtrLatinLslash  1387
    +class="cmti-10">1398
    \glsxtrLatinM  1388
    +class="cmti-10">1399
    \glsxtrLatinN  1389
    +class="cmti-10">1400
    \glsxtrLatinO  1390
    +class="cmti-10">1401
    \glsxtrLatinOELigature  1391
    +class="cmti-10">1402
    \glsxtrLatinOslash  1392
    +class="cmti-10">1403
    \glsxtrLatinP  1393
    +class="cmti-10">1404
    \glsxtrLatinS  1394
    +class="cmti-10">1405
    \glsxtrLatinSchwa  1395
    +class="cmti-10">1406
    \glsxtrLatinT  1396
    +class="cmti-10">1407
    \glsxtrLatinThorn  1397
    +class="cmti-10">1408
    \glsxtrLatinWynn  1398
    +class="cmti-10">1409
    \glsxtrLatinX  1399
    +class="cmti-10">1410
    \GlsXtrLetField  1400
    +class="cmti-10">1411
    \GlsXtrLetFieldToField  1401
    +class="cmti-10">1412
    + + + \GlsXtrLinkCounterName  1402
    +class="cmti-10">1413
    \GlsXtrLinkCounterValue  1403
    - - - +class="cmti-10">1414
    \GlsXtrLoadResources  1404
    +class="cmti-10">1415
    \glsxtrlocalsetgrouptitle  1405
    +class="cmti-10">1416
    \GlsXtrLocationField  1406
    +href="glossaries-extra-manual.html#dx1-52012" >1417
    \GlsXtrLocationRecordCount  1407
    +class="cmti-10">1418
    \glsxtrlocrangefmt  1408
    +class="cmti-10">1419
    \Glsxtrlong  1409, 1420, 1410
    +class="cmti-10">1421
    \glsxtrlong  1411
    +class="cmti-10">1422
    \glsxtrlonghyphen  1412
    +class="cmti-10">1423
    \glsxtrlonghyphenshort  1413
    +class="cmti-10">1424
    \glsxtrlongnoshortdescname  1414
    +class="cmti-10">1425
    \glsxtrlongnoshortname  1415
    +class="cmti-10">1426
    \GLSxtrlongpl  1416
    +class="cmti-10">1427
    \Glsxtrlongpl  1417
    +class="cmti-10">1428
    \glsxtrlongpl  1418
    +class="cmti-10">1429
    \glsxtrlongshortdescname  1419
    +class="cmti-10">1430
    \glsxtrlongshortdescsort  1420
    +class="cmti-10">1431
    \glsxtrlongshortname  1421
    +class="cmti-10">1432
    \glsxtrlongshortuserdescname  1422
    +class="cmti-10">1433
    \glsxtrMathGreekIIrules  1423
    +class="cmti-10">1434
    \glsxtrMathGreekIrules  1424
    +class="cmti-10">1435
    \glsxtrMathItalicGreekIIrules  1425
    +class="cmti-10">1436
    \glsxtrMathItalicGreekIrules  1426
    +class="cmti-10">1437
    \glsxtrMathItalicLowerGreekIIrules  1427
    +class="cmti-10">1438
    \glsxtrMathItalicLowerGreekIrules  1428
    +class="cmti-10">1439
    \glsxtrMathItalicNabla  1429
    +class="cmti-10">1440
    \glsxtrMathItalicPartial  1430
    +class="cmti-10">1441
    \glsxtrMathItalicUpperGreekIIrules  1431
    +class="cmti-10">1442
    \glsxtrMathItalicUpperGreekIrules  1432
    +class="cmti-10">1443
    \glsxtrMathUpGreekIIrules  1433
    +class="cmti-10">1444
    \glsxtrMathUpGreekIrules  1434
    +class="cmti-10">1445
    \glsxtrmultisupplocation  1435
    +class="cmti-10">1446
    \glsxtrnameloclink  1436
    +class="cmti-10">1447
    \glsxtrnamereflink  1437
    +class="cmti-10">1448
    \glsxtrnewgls  1438
    +class="cmti-10">1449
    \glsxtrnewGLSlike  1439
    +class="cmti-10">1450
    \glsxtrnewglslike  1440
    +class="cmti-10">1451
    \glsxtrnewnumber  1441
    +class="cmti-10">1452
    \glsxtrnewrgls  1442
    +class="cmti-10">1453
    \glsxtrnewrGLSlike  1443
    +class="cmti-10">1454
    \glsxtrnewrglslike  1444
    +class="cmti-10">1455
    \glsxtrnewsymbol  1445
    +class="cmti-10">1456
    \GlsXtrNoGlsWarningAutoMake  1446
    +href="glossaries-extra-manual.html#dx1-62020" >1457
    \GlsXtrNoGlsWarningBuildInfo  1447
    +href="glossaries-extra-manual.html#dx1-62019" >1458
    \GlsXtrNoGlsWarningCheckFile  1448
    +href="glossaries-extra-manual.html#dx1-62015" >1459
    + + + \GlsXtrNoGlsWarningEmptyMain  1449
    +href="glossaries-extra-manual.html#dx1-62013" >1460
    \GlsXtrNoGlsWarningEmptyNotMain  1450
    - - - +href="glossaries-extra-manual.html#dx1-62014" >1461
    \GlsXtrNoGlsWarningEmptyStart  1451
    +href="glossaries-extra-manual.html#dx1-62012" >1462
    \GlsXtrNoGlsWarningHead  1452
    +href="glossaries-extra-manual.html#dx1-62011" >1463
    \GlsXtrNoGlsWarningMisMatch  1453
    +href="glossaries-extra-manual.html#dx1-62016" >1464
    \GlsXtrNoGlsWarningNoOut  1454
    +href="glossaries-extra-manual.html#dx1-62017" >1465
    \GlsXtrNoGlsWarningTail  1455
    +href="glossaries-extra-manual.html#dx1-62018" >1466
    \glsxtrnonprintablerules  1456
    +class="cmti-10">1467
    \glsxtrnopostpunc  1457
    +class="cmti-10">1468
    \glsxtronlydescname  1458
    +class="cmti-10">1469
    \glsxtronlyname  1459
    +class="cmti-10">1470
    \glsxtronlysuffix  1460
    +class="cmti-10">1471
    \glsxtrorglong  1461
    +class="cmti-10">1472
    \glsxtrorgshort  1462
    +class="cmti-10">1473
    \GLSxtrp  1463
    +class="cmti-10">1474
    \Glsxtrp  1464
    +class="cmti-10">1475
    \glsxtrp  1465
    +class="cmti-10">1476
    \glsxtrpageref  1466
    +class="cmti-10">1477
    \glsxtrparen  1467
    +class="cmti-10">1478
    \glsxtrpdfentryfmt  1468
    +class="cmti-10">1479
    \Glsxtrpl  1469
    +href="glossaries-extra-manual.html#dx1-57015" >1480
    \glsxtrpl  1470
    +href="glossaries-extra-manual.html#dx1-57013" >1481
    \glsxtrpostdescription  1471
    +class="cmti-10">1482
    \glsxtrposthyphenlong  1472
    +class="cmti-10">1483
    \glsxtrposthyphenshort  1473
    +class="cmti-10">1484
    \glsxtrpostlink  1474
    +class="cmti-10">1485
    \glsxtrpostlinkAddDescOnFirstUse  1475
    +class="cmti-10">1486
    \glsxtrpostlinkAddSymbolDescOnFirstUse  1476
    +class="cmti-10">1487
    \glsxtrpostlinkAddSymbolOnFirstUse  1477
    +class="cmti-10">1488
    \glsxtrpostlinkendsentence  1478
    +class="cmti-10">1489
    \glsxtrpostlinkhook  1479
    +class="cmti-10">1490
    \glsxtrpostlongdescription  1480
    +class="cmti-10">1491
    \glsxtrpostnamehook  1481
    +class="cmti-10">1492
    \GlsXtrPostNewAbbreviation  1482
    +class="cmti-10">1493
    \glsxtrprelocation  1483
    +class="cmti-10">1494
    \glsxtrprependlabelprefix  1484
    +class="cmti-10">1495
    \GlsXtrProvideBibTeXFields  1485
    +class="cmti-10">1496
    \glsxtrprovidecommand  1486
    +class="cmti-10">1497
    \glsxtrprovidestoragekey  1487
    +class="cmti-10">1498
    \GlsXtrRecordCount  1488
    +class="cmti-10">1499
    \GlsXtrRecordCounter  1489
    +class="cmti-10">1500
    \glsxtrrecordtriggervalue  1490
    +class="cmti-10">1501
    \glsxtrregularfont  1491
    +class="cmti-10">1502
    \glsxtrresourcefile  1492
    +class="cmti-10">1503
    \glsxtrresourceinit  1493
    +class="cmti-10">1504
    \glsxtrrestorepostpunc  1494
    +class="cmti-10">1505
    + + + \glsxtrRevertMarks  1495
    +class="cmti-10">1506
    \glsxtrRevertTocMarks  1496
    - - - +class="cmti-10">1507
    \glsxtrscsuffix  1497
    +class="cmti-10">1508
    \glsxtrseealsolabels  1498
    +class="cmti-10">1509
    \glsxtrseelist  1499
    +class="cmti-10">1510
    \GlsXtrSetActualChar  1500
    +class="cmti-10">1511
    \glsxtrsetaliasnoindex  1501
    +href="glossaries-extra-manual.html#dx1-56014" >1512
    \GlsXtrSetAltModifier  1502
    +class="cmti-10">1513
    \glsxtrsetcategory  1503
    +class="cmti-10">1514
    \glsxtrsetcategoryforall  1504
    +class="cmti-10">1515
    \GlsXtrSetDefaultGlsOpts  1505
    +class="cmti-10">1516
    \GlsXtrSetEncapChar  1506
    +class="cmti-10">1517
    \GlsXtrSetEscChar  1507
    +class="cmti-10">1518
    \GlsXtrSetField  1508
    +class="cmti-10">1519
    \glsxtrsetfieldifexists  1509
    +class="cmti-10">1520
    \glsxtrsetglossarylabel  1510
    +class="cmti-10">1521
    \glsxtrsetgrouptitle  1511
    +class="cmti-10">1522
    \GlsXtrSetLevelChar  1512
    +class="cmti-10">1523
    \glsxtrsetpopts  1513
    +class="cmti-10">1524
    \GlsXtrSetRecordCountAttribute  1514
    +class="cmti-10">1525
    \glsxtrSetWidest  1515
    +class="cmti-10">1526
    \glsxtrSetWidestFallback  1516
    +class="cmti-10">1527
    \Glsxtrshort  1517, 1528, 1518
    +class="cmti-10">1529
    \glsxtrshort  1519
    +class="cmti-10">1530
    \glsxtrshortdescname  1520
    +class="cmti-10">1531
    \glsxtrshorthyphenlong  1521
    +class="cmti-10">1532
    \glsxtrshortlongdescname  1522
    +class="cmti-10">1533
    \glsxtrshortlongname  1523, 1534, 1524
    +class="cmti-10">1535
    \glsxtrshortlonguserdescname  1525
    +class="cmti-10">1536
    \glsxtrshortnolongname  1526
    +class="cmti-10">1537
    \GLSxtrshortpl  1527
    +class="cmti-10">1538
    \Glsxtrshortpl  1528
    +class="cmti-10">1539
    \glsxtrshortpl  1529
    +class="cmti-10">1540
    \glsxtrsmsuffix  1530
    +class="cmti-10">1541
    \glsxtrspacerules  1531
    +class="cmti-10">1542
    \GlsXtrStandaloneEntryName  1532
    +href="glossaries-extra-manual.html#dx1-55010" >1543
    \GlsXtrStandaloneEntryOther  1533
    +href="glossaries-extra-manual.html#dx1-55017" >1544
    \GlsXtrStandaloneGlossaryType  1534
    +href="glossaries-extra-manual.html#dx1-55005" >1545
    \GlsXtrStartUnsetBuffering  1535
    +class="cmti-10">1546
    \GlsXtrStopUnsetBuffering  1536
    +class="cmti-10">1547
    \glsxtrSubScriptDigitrules  1537
    +class="cmti-10">1548
    \Glsxtrsubsequentfmt  1538
    +class="cmti-10">1549
    \glsxtrsubsequentfmt  1539
    +class="cmti-10">1550
    \Glsxtrsubsequentplfmt  1540
    +class="cmti-10">1551
    \glsxtrsubsequentplfmt  1541
    +class="cmti-10">1552
    \glsxtrSuperScriptDigitrules  1542
    +class="cmti-10">1553
    + + + \glsxtrtagfont  1543
    +class="cmti-10">1554
    \GlsXtrTheLinkCounter  1544
    - - - +class="cmti-10">1555
    \GlsXtrTotalRecordCount  1545
    +class="cmti-10">1556
    \glsxtrunsrtdo  1546
    +href="glossaries-extra-manual.html#dx1-52007" >1557
    \GlsXtrUseAbbrStyleFmts  1547
    +class="cmti-10">1558
    \GlsXtrUseAbbrStyleSetup  1548
    +class="cmti-10">1559
    \glsxtrusealias  1549
    +class="cmti-10">1560
    \GLSxtrusefield  1550
    +class="cmti-10">1561
    \Glsxtrusefield  1551
    +class="cmti-10">1562
    \glsxtrusefield  1552
    +class="cmti-10">1563
    \glsxtruserfield  1553
    +class="cmti-10">1564
    \glsxtruserparen  1554
    +class="cmti-10">1565
    \glsxtrusersuffix  1555, 1566, 1556
    +class="cmti-10">1567
    \glsxtrusesee  1557
    +class="cmti-10">1568
    \glsxtruseseealso  1558
    +class="cmti-10">1569
    \glsxtruseseeformat  1559, 1570, 1560
    +class="cmti-10">1571
    \GlsXtrWarnDeprecatedAbbrStyle  1561
    +class="cmti-10">1572
    \GlsXtrWarning  1562
    +href="glossaries-extra-manual.html#dx1-57011" >1573
    \glsxtrword  1563
    +class="cmti-10">1574
    \glsxtrwordsep  1564
    +class="cmti-10">1575
    \glsxtrwrglossmark  1565
    +class="cmti-10">1576

    H hyperref package  1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591
    +href="glossaries-extra-manual.html#dx1-4092" >1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602

    I inputenc package  1592
    +href="glossaries-extra-manual.html#dx1-42012" >1603

    L link-text  1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612
    +href="glossaries-extra-manual.html#dx1-9001" >1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623
    location list  1613, 1614, 1615, 1616, 1617
    +href="glossaries-extra-manual.html#dx1-18013" >1624, 1625, 1626, 1627, 1628
    \longnewglossaryentry  1618
    +class="cmti-10">1629

    M makeglossaries  1619, 1620, 1621, 1622, 1623
    +href="glossaries-extra-manual.html#dx1-3027" >1630, 1631, 1632, 1633, 1634
    \makeglossaries  1624
    +class="cmti-10">1635
    makeglossaries-lite  1625, 1626
    +href="glossaries-extra-manual.html#dx1-6038" >1636, 1637
    makeglossaries-lite  1627, 1628
    +href="glossaries-extra-manual.html#dx1-6039" >1638, 1639
    makeidx package  1629
    +href="glossaries-extra-manual.html#dx1-8084" >1640
    makeindex  1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649
    +href="glossaries-extra-manual.html#dx1-3022" >1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662
    makeindex  1650, 1651, 1652, 1653, 1654
    +href="glossaries-extra-manual.html#dx1-7053" >1663, 1664, 1665, 1666, 1667
    + + + memoir class  1655
    +href="glossaries-extra-manual.html#dx1-3021" >1668
    mfirstuc package  1656, 1657, 1658
    - - - +href="glossaries-extra-manual.html#dx1-4" >1669, 1670, 1671
    multicols package  1659
    +href="glossaries-extra-manual.html#dx1-23002" >1672

    N \newabbreviation  1660
    +class="cmti-10">1673
    \newabbreviationstyle  1661
    +class="cmti-10">1674
    \newacronym  1662
    +class="cmti-10">1675
    \newglossaryentry options
    -        access  1663
    -    1676
    +    alias  1664, 1665, 1666, 1667, 1668, 1669, 1670
    -    1677, 1678, 1679, 1680, 1681, 1682, 1683
    +    category  1671, 1672, 1673, 1674, 1675, 1676
    -    1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691
    +    counter  1677
    -    1692
    +    description  1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703
    -    1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718
    +    descriptionplural  1704, 1705, 1706, 1707, 1708, 1709
    -    1719, 1720, 1721, 1722, 1723, 1724
    +    first  1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722
    -    1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737
    +    firstaccess  1723
    -    1738
    +    firstplural  1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733
    -    1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748
    +    group  1734, 1735, 1736, 1737, 1738
    -    1749, 1750, 1751, 1752, 1753, 1754
    +    location  1739, 1740, 1741, 1742, 1743
    -    1755, 1756, 1757, 1758, 1759
    +    loclist  1744, 1745, 1746, 1747
    -    1760, 1761, 1762, 1763
    +    long  1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756
    -    1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772
    +    longplural  1757, 1758, 1759, 1760, 1761, 1762
    -    1773, 1774, 1775, 1776, 1777, 1778
    +    name  1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819
    -    1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835
    +    nameshortaccess  1820, 1821
    -    1836, 1837
    +    parent  1822, 1823, 1824
    -    1838, 1839, 1840, 1841
    +    plural  1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837
    -    1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854
    +    prefix  1838
    -    1855
    +    see  1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865
    -    1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882
    +    seealso  1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876
    -    1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893
    +    short  1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892
    -    1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909
    +    shortaccess  1893, 1894, 1895, 1896, 1897
    -    1910, 1911, 1912, 1913, 1914
    +    shortplural  1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912
    -    1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929
    +    shortpluralaccess  1913, 1914, 1915, 1916
    -    1930, 1931, 1932, 1933
    +    sort  1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939
    -    1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956
    +    symbol  1940, 1941, 1942, 1943, 1944, 1945
    -    1957, 1958, 1959, 1960, 1961, 1962
    +    symbolaccess  1946
    -    1963
    +    symbolplural  1947, 1948
    -    1964, 1965
    +    text  1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963
    -    1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980
    +    textaccess  1964
    -    1981
    +    type  1965, 1966, 1967, 1968
    -    user1  1969, 1970, 1971, 1972
    -number list  1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    +href="glossaries-extra-manual.html#dx1-14058" >1982, 1983, 1984, 1985, 1986
    +    user1  1987, 1988, 1989, 1990
    +number list  1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024

    P package options:
    -        abbreviations  2007, 2008, 2009, 2010, 2011
    -    2025, 2026, 2027, 2028, 2029
    +    accsupp  2012, 2013, 2014, 2015, 2016, 2017, 2018
    -    2030, 2031, 2032, 2033, 2034, 2035, 2036
    +    acronym  2019, 2020
    -    2037, 2038
    +    acronymlists  2021, 2022
    -    2039, 2040
    +    acronyms  2023
    -    2041
    +    automake  2024, 2025
    -    2042, 2043
    +    autoseeindex  2026, 2027
    -        2044, 2045
    +        false  2028, 2029
    -    2046, 2047
    +    counter
    -                chapter  2030
    -        2048
    +        equation  2031
    -        2049
    +        section  2032
    -        2050
    +        wrglossary  2033
    -    2051
    +    debug  2034
    -        2052
    +        all  2035, 2036
    -        2053, 2054
    +        showtargets  2037, 2038
    -        2055, 2056
    +        showwrgloss  2039, 2040, 2041
    -        2057, 2058, 2059
    +        true  2042
    -    2060
    +    docdef  2043, 2044, 2045, 2046
    -        2061, 2062, 2063, 2064
    +        restricted  2047, 2048, 2049, 2050
    -        2065, 2066, 2067, 2068
    +        true  2051, 2052
    -    2069, 2070
    +    docdefs  2053, 2054, 2055
    -        2071, 2072, 2073
    +        true  2056
    -    2074
    +    entrycounter  2057, 2058
    -    2075, 2076
    +    equations  2059, 2060
    -        2077, 2078
    +        true  2061
    -    2079
    +    floats  2062
    -    2080
    +    hyperfirst
    -                false  2063
    -    2081
    +    index  2064, 2065, 2066
    -    2082, 2083, 2084
    +    indexcounter  2067, 2068, 2069, 2070
    -    2085, 2086, 2087, 2088
    +    indexcrossrefs  2071, 2072, 2073, 2074
    -        2089, 2090, 2091, 2092
    +        false  2075
    -    2093
    +    indexonlyfirst  2076, 2077, 2078, 2079
    -    2094, 2095, 2096, 2097
    +    makeindex  2080
    -    2098
    +    nogroupskip  2081, 2082, 2083, 2084, 2085
    -    2099, 2100, 2101, 2102, 2103
    +    nomain  2086
    -    2104
    +    nomissingglstext  2087
    -    2105
    +    nonumberlist  2088, 2089, 2090, 2091, 2092
    -    nopostdot  2093, 2094, 2095, 2096
    -        false  2097, 2098, 2099
    +href="glossaries-extra-manual.html#dx1-8058" >2106, 2107, 2108, 2109, 2110
    -            nopostdot  2111, 2112, 2113, 2114
    +        false  2115, 2116, 2117
    +        true  2100
    -    2118
    +    noredefwarn
    -                false  2101
    -        2119
    +        true  2102
    -    2120
    +    notree  2103
    -    2121
    +    numbers  2104, 2105, 2106
    -    2122, 2123, 2124
    +    postdot  2107, 2108, 2109
    -    2125, 2126, 2127
    +    postpunc  2110, 2111, 2112
    -        2128, 2129, 2130
    +        comma  2113
    -        2131
    +        dot  2114
    -        2132
    +        none  2115
    -    2133
    +    prefix  2116
    -    2134
    +    record  2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129
    -        2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147
    +        alsoindex  2130, 2131, 2132, 2133, 2134, 2135, 2136
    -        2148, 2149, 2150, 2151, 2152, 2153, 2154
    +        nameref  2137, 2138
    -        2155, 2156
    +        off  2139, 2140
    -        2157, 2158
    +        only  2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151
    -    2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169
    +    savenumberlist  2152
    -    2170
    +    section
    -                chapter  2153
    -    2171
    +    seeautonumberlist  2154
    -    2172
    +    seenoindex  2155
    -        2173
    +        ignore  2156, 2157
    -        2174, 2175
    +        warn  2158
    -    2176
    +    shortcuts  2159, 2160, 2161
    -        2177, 2178, 2179
    +        abbr  2162, 2163
    -        abbreviation  2164
    -        2180, 2181
    +        abbreviations  2165, 2166, 2167
    -        2182, 2183, 2184, 2185
    +        ac  2168, 2169, 2170, 2171, 2172, 2173, 2174
    -        2186, 2187, 2188, 2189, 2190, 2191, 2192
    +        acro  2175, 2176
    -        2193, 2194
    +        acronyms  2177, 2178
    -        2195, 2196
    +        all  2179, 2180
    -        2197, 2198
    +        false  2181
    -        2199
    +        none  2182
    -        2200
    +        other  2183, 2184
    -        2201, 2202
    +        true  2185
    -    2203
    +    sort
    -                none  2186, 2187
    -    2204, 2205
    +    stylemods  2188, 2189, 2190, 2191, 2192, 2193
    -        2206, 2207, 2208, 2209, 2210, 2211
    +        all  2194
    -        2212
    +        default  2195
    -    2213
    +    subentrycounter  2196, 2197
    -    2214, 2215
    +    symbols  2198, 2199, 2200
    -    2216, 2217, 2218
    +    toc
    -                false  2201
    -        true  2202
    +href="glossaries-extra-manual.html#dx1-3002" >2219
    -            true  2220
    +    translate
    -                babel  2203
    -        2221
    +        true  2204
    -    2222
    +    undefaction  2205, 2206
    -        2223, 2224
    +        error  2207, 2208, 2209
    -        2225, 2226, 2227
    +        warn  2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218
    -    2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236
    +    xindy  2219, 2220
    +href="glossaries-extra-manual.html#dx1-8080" >2237, 2238
    page (counter)  2221, 2222, 2223, 2224, 2225, 2226
    +href="glossaries-extra-manual.html#dx1-4096" >2239, 2240, 2241, 2242, 2243, 2244
    polyglossia package  2227, 2228
    +href="glossaries-extra-manual.html#dx1-50083" >2245, 2246
    \pretoglossarypreamble  2229
    +class="cmti-10">2247

    \printabbreviations  2230
    +class="cmti-10">2248

    \printglossary options
    -        label  2231
    -    2249, 2250
    +    nogroupskip  2232
    -    2251
    +    numberedsection  2252
    +    prefix  2233
    -    2253
    +    style  2254
    +    target  2234, 2235
    -    2255, 2256
    +    targetnameprefix  2236
    -    2257
    +    title  2237
    +href="glossaries-extra-manual.html#dx1-54035" >2258, 2259
    +    toctitle  2260
    +    type  2261
    \printnoidxglossary options
    -        sort  2238
    +href="glossaries-extra-manual.html#dx1-51024" >2262
    \printunsrtabbreviations  2239
    +class="cmti-10">2263

    \printunsrtacronyms  2240
    +class="cmti-10">2264

    \printunsrtglossaries  2241
    +href="glossaries-extra-manual.html#dx1-51025" >2265
    \printunsrtglossary  2242
    +class="cmti-10">2266

    +\printunsrtglossary options
    +    groups  2267, 2268
    +    leveloffset  2269
    \printunsrtglossary*  2243
    +class="cmti-10">2270

    \printunsrtglossaryentryprocesshook  2244
    +href="glossaries-extra-manual.html#dx1-52003" >2271
    \printunsrtglossaryhandler  2245
    +href="glossaries-extra-manual.html#dx1-52006" >2272
    \printunsrtglossarypredoglossary  2246
    +href="glossaries-extra-manual.html#dx1-52005" >2273
    \printunsrtglossaryskipentry  2247
    +href="glossaries-extra-manual.html#dx1-52004" >2274
    \printunsrtglossaryunit  2248
    +href="glossaries-extra-manual.html#dx1-53003" >2275
    \printunsrtglossaryunitsetup  2249
    +href="glossaries-extra-manual.html#dx1-53004" >2276
    \printunsrtindex  2250
    +class="cmti-10">2277

    \printunsrtnumbers  2251
    +class="cmti-10">2278

    \printunsrtsymbols  2252
    +class="cmti-10">2279

    \provideignoredglossary  2253
    +class="cmti-10">2280

    R relsizes package  2254
    +href="glossaries-extra-manual.html#dx1-28052" >2281
    + + + \RestoreAcronyms  2255
    +class="cmti-10">2282
    \rGLS  2256
    +class="cmti-10">2283
    \rGls  2257
    +class="cmti-10">2284
    \rgls  2258
    +class="cmti-10">2285
    \rGLSformat  2259
    +class="cmti-10">2286
    \rGlsformat  2260
    +class="cmti-10">2287
    \rglsformat  2261
    - - - +class="cmti-10">2288
    \rGLSpl  2262
    +class="cmti-10">2289
    \rGlspl  2263
    +class="cmti-10">2290
    \rglspl  2264
    +class="cmti-10">2291
    \rGLSplformat  2265
    +class="cmti-10">2292
    \rGlsplformat  2266
    +class="cmti-10">2293
    \rglsplformat  2267
    +class="cmti-10">2294

    S \seealsoname  2268
    +class="cmti-10">2295
    \setabbreviationstyle  2269
    +class="cmti-10">2296
    slantsc package  2270
    +href="glossaries-extra-manual.html#dx1-34009" >2297
    soul package  2271, 2272
    +href="glossaries-extra-manual.html#dx1-7024" >2298, 2299
    style package  2273
    +href="glossaries-extra-manual.html#dx1-21005" >2300
    subentrycounter package  2274
    +href="glossaries-extra-manual.html#dx1-55021" >2301

    T texindy  2275
    +href="glossaries-extra-manual.html#dx1-39007" >2302
    textcase package  2276
    +href="glossaries-extra-manual.html#dx1-7" >2303
    tracklang package  2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286
    +href="glossaries-extra-manual.html#dx1-3" >2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313
    translator package  2287
    +href="glossaries-extra-manual.html#dx1-3012" >2314

    U upgreek package  2288, 2289, 2290, 2291
    +href="glossaries-extra-manual.html#dx1-46029" >2315, 2316, 2317, 2318

    W wrglossary (counter)  2292, 2293, 2294, 2295, 2296
    +href="glossaries-extra-manual.html#dx1-4131" >2319, 2320, 2321, 2322, 2323

    X xfor package  2297, 2298, 2299
    +href="glossaries-extra-manual.html#dx1-8" >2324, 2325, 2326
    \xglssetwidest  2300
    +class="cmti-10">2327
    \xglsupdatewidest  2301
    +class="cmti-10">2328
    \xGlsXtrSetField  2302
    +class="cmti-10">2329
    xindy  2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319
    +href="glossaries-extra-manual.html#dx1-3023" >2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346
    + + + xindy  2320
    +href="glossaries-extra-manual.html#dx1-7056" >2347
    xkeyval package  2321
    +href="glossaries-extra-manual.html#dx1-6" >2348

    - - -

    1.14.21 was originally intended as the last release of glossaries field and the short form was stored in the symbol field.

    -

    4.1For compatibility with earlier versions, \glsabbrvscfont \glsxtrscfont is now deprecated. Likewise for similar commands.

    -

    9.1Version 1.11 only allowed one use of \GlsXtrLoadResources per document.

    -

    9.2v1.08 assumed filename.glstex extension was enforced by version 1.11.

    -

    10.1Pre version 1.28 used \csedef#1={\protect\ttfamily#1}|main}} \DeleteShortVerb{\|} \MakeShortVerb{"} - \title{glossaries-extra.sty v1.43: + \title{glossaries-extra.sty v1.44: an extension to the glossaries package} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} - \date{2020-02-28} + \date{2020-03-23} \maketitle \begin{abstract} @@ -3122,6 +3122,41 @@ label before the glossary using: \cs{glsxtrsetglossarylabel}\marg{label} \end{definition} but take care of duplicate labels if it's not scoped. + +\item +\gloskey[printunsrtglossary]{groups}. This is a boolean key (new to +v1.44) designed for use with \cs{printunsrtglossary} (and other +\cs{printunsrt\ldots} variations). It has no +effect with \cs{printglossary} and \cs{printnoidxglossary}. + +If true (default), group formation (group header and group skip) +will be attempted if the \gloskey{group} key has been defined and set. Note +that some styles ignore the header and group skip commands so there +may not be a noticeable difference in those cases. If this key is +set to false, no group formation will occur so there won't be any +group markup to separate letter groups so there will be no visual +separation regardless of style or the group skip setting. + +\item +\gloskey[printunsrtglossary]{leveloffset}. This key (new to +v1.44) is designed for use with \cs{printunsrtglossary} (and other +\cs{printunsrt\ldots} variations). It has no +effect with \cs{printglossary} and \cs{printnoidxglossary}. + +The value may either be a simple integer \meta{n} to indicate assignment or in the form +\texttt{++\meta{n}} to indicate an increment. This will locally +assign or increment the level offset. The default value is~0. This +will cause entries to be displayed as though their hierarchical +level is $N$ more than it would normally be (where $N$ is the level +offset). For example, a top-level entry (that is, an entry without a +parent) would normally have a hierarchical level of~0. With a level +offset of~1, it would be treated by the glossary style as though it +was actually a level~1 entry. (Remember that some styles don't +support hierarchical glossaries.) + +Note that the group formation (if supported) will still occur +between entries that don't have a parent, regardless of the level +offset. This can cause odd results. \end{itemize} \subsection{Glossary Style Modifications} @@ -5235,7 +5270,7 @@ The provided shortcut commands listed in \bfseries Shortcut & \bfseries Shortcut & \bfseries Equivalent Command\\ -\bfseries (\pkgopt[abbreviation]{shortcuts}) & +\bfseries (\pkgopt[abbreviations]{shortcuts}) & \bfseries (\pkgopt[ac]{shortcuts})\\ \ics{ab} & \ics{ac} & \ics{cgls}\\ \ics{abp} & \ics{acp} & \ics{cglspl}\\ @@ -11357,7 +11392,10 @@ a header or a vertical separation.) If the \gloskey{group} field is non-empty, then the corresponding title is obtained as described earlier. -If you want to use a different field, you can redefine +In either case, if the \gloskey[printunsrtglossary]{groups} option is set +to false then no group formation will be performed. + +If you want to use a different field for the group label, you can redefine \begin{definition}[\DescribeMacro\glsxtrgroupfield] \cs{glsxtrgroupfield} \end{definition} @@ -11409,6 +11447,9 @@ which is analogous to \cs{printnoidxglossaries}. This just iterates over all defined glossaries (that aren't on the ignored list) and does \cs{printunsrtglossary}[type=\meta{type}]. +\subsection{Hooks} +\label{sec:printunsrthooks} + To avoid complications caused by \env{tabular}-like glossary styles, \cs{printunsrtglossary} iterates over all entries in the selected glossary and appends the appropriate code @@ -11464,7 +11505,10 @@ You can instruct \gls{bib2gls} to omit setting the \gloskey{loclist} field with the resource option \texttt{--save-loclist=false} to prevent it from being used as a fallback. -You can redefine the handler if required. For example, +\subsection{Filtering} +\label{sec:printunsrtfilter} + +You can redefine the handler used by \cs{printunsrtglossary} if required. For example, you may want to filter entries according to the category label. You can test if a label is contained in a comma-separated list of labels using: @@ -11608,6 +11652,313 @@ matter) which can be the target for all glossary references and then just use \cs{printunsrtglossaryunit} for a quick summary at the start of a section etc. +\section{Partial Glossaries} +\label{sec:printunsrtinner} + +It's possible that you may require greater customisation over the +way the glossary is displayed that can't be simply achieved with the +hooks or glossary styles. This section describes a command and +environment provided to assist with this, but note that they aren't +compatible with tabular-like glossary styles, such as +\glostyle{long} or \glostyle{super}, due to their complexity and +internal scoping that interferes with alignment. You will also need +to take care with list styles (provided in the \sty{glossary-list} +package). + +To get a better understanding of how this works, it's useful to +consider how a glossary with \gls{makeindex} works. Here's a simple +example document: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries} + +\makeglossaries + +\newglossaryentry{cabbage}{name={cabbage}, + description={vegetable with thick green or purple leaves}} + +\newglossaryentry{broccoli}{name={broccoli}, + description={vegetable with heads of small green or purple flower buds}} + +\begin{document} +\Gls{cabbage} and \gls{broccoli}. + +\printglossary +\end{document} +\end{verbatim} +When the document is built, \gls{makeindex} creates a file that +contains: +\begin{alltt} +\ics{glossarysection}[\ics{glossarytoctitle}]\mgroup{\ics{glossarytitle}}\ics{glossarypreamble} +\cs{begin}\mgroup{theglossary}\ics{glossaryheader} +\ics{glsgroupheading}\mgroup{B}\cs{relax} \ics{glsresetentrylist} +\ics{glossentry}\mgroup{broccoli}\marg{location list}\ics{glsgroupskip} +\ics{glsgroupheading}\mgroup{C}\cs{relax} \ics{glsresetentrylist} +\ics{glossentry}\mgroup{cabbage}\marg{location list}\% +\cs{end}\mgroup{theglossary}\ics{glossarypostamble} +\end{alltt} +The \cs{printglossary} command defines the commands shown +above after it's detected the glossary type, the title and style. It +then inputs the file. + +The \cs{printunsrtglossary} command performs the same preliminary +setup but there's no file to input. Instead it then does the section +heading (\cs{glossarysection}) and preamble (\cs{glossarypreamble}) +and constructs a control sequence that contains +\texttt{\cs{begin}\mgroup{theglossary}} \meta{content} +\texttt{\cs{end}\mgroup{theglossary}}. + +The letter group markup (\cs{glsgroupheading} and \cs{glsgroupskip}) +is inserted whenever the group label changes between top-level +entries. In this case, \meta{content} doesn't explicitly contain +\cs{glossentry} but uses a handler function instead. For example, +instead of: +\begin{alltt} +\ics{glossentry}\mgroup{broccoli}\marg{location list} +\end{alltt} +the \meta{content} will contain: +\begin{alltt} +\meta{internal handler}\mgroup{broccoli} +\end{alltt} +This internal handler uses \ics{printunsrtglossaryhandler} to +determine the required information (location list, hierarchical +level) that's needed to typeset the entry (using \cs{glossentry} or +\cs{subglossentry}). + +\begin{definition} +\cs{begin}\mgroup{printunsrtglossarywrap}\oarg{options}\newline +\meta{content} +\cs{end}\mgroup{printunsrtglossarywrap} +\end{definition} +The \env{printunsrtglossarywrap} environment provides a wrapper in +which you can place the actual glossary code. The optional argument +is the same as for \cs{printunsrtglossary}, but note that in this +case the \gloskey[printglossary]{type} key simply provides the +glossary title and doesn't identify the content. + +This environment essentially does: +\begin{alltt} +\meta{initial setup} +\ics{glossarysection}[\ics{glossarytoctitle}]\mgroup{\ics{glossarytitle}}\ics{glossarypreamble} +\cs{begin}\mgroup{theglossary}\ics{glossaryheader}\cs{glsresetentrylist} +\meta{content} +\cs{end}\mgroup{theglossary}\cs{glossarypreamble} +\end{alltt} +where \meta{initial setup} is much the same code as used by +\cs{printglossary} and \cs{printunsrtglossary}. Most importantly, +\meta{initial setup} sets the current glossary style, which +determines the definition of \env{theglossary}, \cs{glossentry} and +\cs{subglossentry}. + +Whilst it is possible to explicitly use the commands that create +letter group headings and the handler within \meta{content}, it +would be quite laborious and prone to error to do so for anything +other than a very short list. This can be illustrated with the +following silly example: +\begin{verbatim} +\begin{printunsrtglossarywrap}[style=indexgroup]% +\glsgroupheading{W}% +\gdef\glscurrententrylabel{cabbage}% +\printunsrtglossaryhandler\glscurrententrylabel +\glsgroupskip +\glsgroupheading{Z}% +\gdef\glscurrententrylabel{broccoli}% +\printunsrtglossaryhandler\glscurrententrylabel +\end{printunsrtglossarywrap} +\end{verbatim} +This trivial example will work with a tabular-like style, such as +\glostyle{long} (although the group headings will be ignored). A +more practical example that uses a loop within \meta{content} won't. + +\begin{definition} +\ics{printunsrtinnerglossary}\oarg{options}\marg{pre-code}\marg{post-code} +\end{definition} +This command is provided for use within +\env{printunsrtglossarywrap}. The optional argument \meta{options} +is similar to \cs{printunsrtglossary} but the following keys are +unavailable: \gloskey[printglossary]{title}, +\gloskey[printglossary]{toctitle}, \gloskey[printglossary]{style}, +\gloskey[printglossary]{numberedsection} and \gloskey[printglossary]{label}. + +This will do: +\begin{alltt} + \cs{begingroup} + \meta{initial setup} + \meta{pre-code} + \meta{content} + \meta{post-code} + \cs{endgroup} +\end{alltt} +where \meta{initial setup} processes the options and assigns +\ics{currentglossary}, \meta{pre-code} is some preliminary code and +\meta{post-code} is some final code before the end of the scoping. +The \meta{content} is the sequence of code that +\cs{printunsrtglossary} would normally insert within the +\env{theglossary} environment. + +For example: +\begin{verbatim} +\begin{printunsrtglossarywrap}[style=indexgroup] +\printunsrtinnerglossary[type=main]{}{} +\end{printunsrtglossarywrap} +\end{verbatim} +This produces a result very similar to that obtained with just: +\begin{verbatim} +\printunsrtglossary[style=indexgroup,type=main] +\end{verbatim} +The first case is unsuitable for use with a tabular-style. It will +also cause a problem with a list style when used with \gls{bib2gls} +(where the inner content will be empty on the first \LaTeX\ run +which will cause a missing \cs{item} error). + +This partial glossary command is more useful when you need to apply +filtering (which can be set up in the \meta{pre-code} argument as in +\cs{printunsrtglossary*}) or if you have multiple glossaries. For +example: +\begin{verbatim} +\begin{printunsrtglossarywrap}[style=list] +\item[Animals] +\printunsrtinnerglossary[type=animal]{}{} +\item[Vegetables] +\printunsrtinnerglossary[type=vegetable]{}{} +\item[Minerals] +\printunsrtinnerglossary[type=mineral]{}{} +\end{printunsrtglossarywrap} +\end{verbatim} +In this case, the \glostyle{list} style doesn't cause a problem as +there will be three instances of \cs{item} on the first \LaTeX\ run. + +Here's another example: +\begin{verbatim} +\begin{printunsrtglossarywrap}[style=indexgroup] +\glsgroupheading{animal}% +\printunsrtinnerglossary[type=animal]{}{} +\glsgroupskip +\glsgroupheading{vegetable}% +\printunsrtinnerglossary[type=vegetable]{}{} +\glsgroupskip +\glsgroupheading{mineral}% +\printunsrtinnerglossary[type=mineral]{}{} +\end{printunsrtglossarywrap} +\end{verbatim} +Note that in both of the above cases, the inner glossaries have been +arranged manually (animal, then vegetable and then mineral). + +It's also possible to use \cs{printunsrtinnerglossary} within the +handler function used by \cs{printunsrtglossary}. The internal +scoping within \cs{printunsrtinnerglossary} helps to reduce +interference. + +This is a rather more complicated example that requires +\gls{bib2gls}. Suppose I have a file called +\nolinkurl{topictitles.bib} that contains: +\begin{verbatim} +@indexplural{animal} +@indexplural{mineral} +@indexplural{vegetable} +\end{verbatim} +And also a file called \nolinkurl{topics.bib} that contains entries +like: +\begin{verbatim} +@entry{zebra, + name={zebra}, + description={striped African horse}, + category={animal} +} + +@entry{broccoli, + name={broccoli}, + description={vegetable with heads of small green or purple flower buds}, + category={vegetable} +} + +@entry{quartz, + name={quartz}, + description={hard mineral consisting of silica}, + category={mineral} +} +\end{verbatim} +Note that the category labels in the second file match the entry +labels in the first file. + +The simplest way of creating a hierarchical glossary from this data +is to input both files and copy the \gloskey{category} field to the +\gloskey{parent} field: +\begin{verbatim} +\GlsXtrLoadResources[src={topictitles,topics}, + replicate-fields={category=parent}] +\end{verbatim} +The glossary can then simply be displayed with: +\begin{verbatim} +\printunsrtglossary[style=indexgroup] +\end{verbatim} +This will now be ordered: animal (followed by animal child entries), +mineral (followed by mineral child entries), vegetable (followed by +vegetable child entries). + +Suppose (for some strange reason) that I now need the ordering to be +vegetable, mineral, animal (that is, reverse alphabetical) but the +child entries still need to be in the normal alphabetical order. + +It's not possible to use different sort methods for different +hierarchical levels with \gls{bib2gls}, but it is possible to +simulate it. + +Instead of making the entries within \nolinkurl{topics.bib} children +of the entries defined in \nolinkurl{topictitles.bib}, I'm now going +to create separate glossaries for each type: +\begin{verbatim} +\newignoredglossary*{animal} +\newignoredglossary*{mineral} +\newignoredglossary*{vegetable} +\end{verbatim} +The entries in \nolinkurl{topictitles.bib} go in the default main +glossary and are sorted in reverse: +\begin{verbatim} +\GlsXtrLoadResources[src=topictitles,type=main,selection=all, + sort=en-GB-reverse] +\end{verbatim} +Note that I've selected all entries in this example. It becomes more +complicated with the default selection criteria. (See the +\nolinkurl{sample-nested.tex} example provided with \gls{bib2gls} +v2.3+.) + +Now the entries in \nolinkurl{topics.bib} are selected but the +\gloskey{type} field is set to the \gloskey{category} field: +\begin{verbatim} +\GlsXtrLoadResources[src=topics,type={same as category},selection=all, + sort=en-GB] +\end{verbatim} +The aim here is to use \cs{printunsrtglossary} to list all the +entries in the main glossary (that is, all the topic titles) and use +a handler that tests if there is a glossary that has the same label +as the current entry label. If one exists, it's then listed using +\cs{printunsrtinnerglossary} with the level offset shifted to give a +hierarchical appearance: +\begin{verbatim} +\newcommand{\nestedhandler}[1]{% + \glsxtrunsrtdo{#1}% + \ifglossaryexists*{#1}% + {% + \printunsrtinnerglossary[type={#1},leveloffset=++1]{}{}% + }% + {}% +} + +\printunsrtglossary*[type=main,style=index]{% + \let\printunsrtglossaryhandler\nestedhandler +} +\end{verbatim} + +I've used \cs{newignoredglossary*} as I don't need to specify a +title for any of those glossaries nor do I need to use those glossaries with +\cs{printunsrtglossaries}. With \gls{bib2gls} v2.3+, I can omit the +three \cs{newignoredglossary*} lines and use the +\texttt{-{}-provide-glossaries} switch which will make \gls{bib2gls} +automatically provide any unknown glossaries (with +\cs{provideignoredglossary}) in the \texttt{.glstex} file. + \section{Standalone Entry Items} \label{sec:glossentry} diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx index faaf91f31d..c2dcfe0ecb 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx @@ -1,15 +1,6 @@ %\iffalse % glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: -% -doc "glossaries-extra-codedoc.tex" -% -macrocode ".*\.tex" -% -macrocode ".*\.bib" -% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" -% -author "Nicola Talbot" -% -comment ".*\.tex" -% -comment ".*\.bib" -% -setambles ".*\.bib=>\nopreamble\nopostamble" -% -section "chapter" % -src "glossaries-extra.sty\Z=>glossaries-extra.sty" % -src "glossaries-extra-bib2gls.sty\Z=>glossaries-extra-bib2gls.sty" % -src "glossaries-extra-stylemods.sty\Z=>glossaries-extra-stylemods.sty" @@ -18,8 +9,17 @@ % -src "glossary-topic.sty\Z=>glossary-topic.sty" % -src "(example-glossaries-.+\.tex)\Z=>\1" % -src "(example-glossaries-.+\.bib)\Z=>\1" +% -doc "glossaries-extra-codedoc.tex" +% -section "chapter" +% -setambles ".*\.bib=>\nopreamble\nopostamble" +% -comment ".*\.tex" +% -comment ".*\.bib" +% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" +% -author "Nicola Talbot" +% -macrocode ".*\.tex" +% -macrocode ".*\.bib" % glossaries-extra -% Created on 2020/2/28 14:07 +% Created on 2020/3/23 20:29 %\fi %\iffalse %<*package> @@ -142,7 +142,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \setcounter{IndexColumns}{2} -\CheckSum{26913} +\CheckSum{27175} \newcommand*{\ifirstuse}{\iterm{first use}} \newcommand*{\firstuse}{\gls{firstuse}} @@ -182,13 +182,13 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \raggedright } -\title{glossaries-extra.sty v1.43: +\title{glossaries-extra.sty v1.44: documented code} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} -\date{2020-02-28} +\date{2020-03-23} \begin{document} \DocInput{glossaries-extra.dtx} @@ -233,7 +233,7 @@ Dickimaw Books\\ %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossaries-extra}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} % Requires \sty{xkeyval} to define package options. % \begin{macrocode} @@ -2182,6 +2182,39 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%Starred form of \cs{ifglossaryexists} was only introduced to +%\styfmt{glossaries} v4.46 so provide it if it hasn't been defined. +% \begin{macrocode} +\ifdef\s@ifglossaryexists +{} +{ +% \end{macrocode} +%\begin{macro}{\ifglossaryexists} +%\changes{1.44}{2020-03-23}{added check for starred form} +% \begin{macrocode} + \renewcommand{\ifglossaryexists}{% + \@ifstar\s@ifglossaryexists\@ifglossaryexists + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@ifglossaryexists} +% \begin{macrocode} + \newcommand{\@ifglossaryexists}[3]{% + \ifcsundef{@glotype@#1@out}{#3}{#2}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\s@ifglossaryexists} +% \begin{macrocode} + \newcommand{\s@ifglossaryexists}[3]{% + \ifcsundef{glolist@#1}{#3}{#2}% + } +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +} +% \end{macrocode} +% %\begin{macro}{\glsxtrifemptyglossary} %\begin{definition} %\cs{glsxtrifemptyglossary}\marg{type}\marg{true}\marg{false} @@ -3305,7 +3338,7 @@ Dickimaw Books\\ %existence. If the boolean variable is undefined, then its state is %indeterminate and is neither true nor false, so neither \meta{true %part} nor \meta{false} part will be performed if \meta{label} is -%undefined. +%undefined. See also \cs{GlsXtrIfUnusedOrUndefined}. % \begin{macrocode} \renewcommand*{\ifglsused}[3]{% \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}% @@ -3652,11 +3685,12 @@ Dickimaw Books\\ % %\begin{macro}{\doifglossarynoexistsordo} % Similarly for \cs{doifglossarynoexistsordo}. +%\changes{1.44}{2020-03-23}{switched to starred form of \cs{ifglossaryexists}} % \begin{macrocode} \ifdef\doifglossarynoexistsordo {% \renewcommand{\doifglossarynoexistsordo}[3]{% - \ifglossaryexists{#1}% + \ifglossaryexists*{#1}% {% \glsxtrundefaction{Glossary type `#1' already exists}{}% #3% @@ -3667,7 +3701,7 @@ Dickimaw Books\\ {% \glsxtr@warnonexistsordo\doifglossarynoexistsordo \newcommand{\doifglossarynoexistsordo}[3]{% - \ifglossaryexists{#1}% + \ifglossaryexists*{#1}% {% \glsxtrundefaction{Glossary type `#1' already exists}{}% #3% @@ -6740,7 +6774,11 @@ Dickimaw Books\\ % the best place to put it to automatically set the value for the % commands that change the first use flag. The other commands should % set \cs{glsxtrifwasfirstuse} to \cs{@secondoftwo} (which is done -% in \cs{@glsxtr@field@linkdefs}). +% in \cs{@glsxtr@field@linkdefs}). Note that if the entry is +% undefined (as with \app{bib2gls} on the first \LaTeX\ run), +% \cs{ifglsused} does neither true nor false parts. However, in that +% case, this macro won't be called anyway (since it's used in the +% argument of \cs{glsdoifexistsordo}). % \begin{macrocode} \ifglsused{\glslabel}% {\let\glsxtrifwasfirstuse\@secondoftwo} @@ -6906,20 +6944,23 @@ Dickimaw Books\\ % %\begin{macro}{\glswriteentry} % Redefine to test for \catattr{indexonlyfirst} category attribute. +%\changes{1.44}{2020-03-23}{replaced \cs{ifglsused} with \cs{GlsXtrIfUnusedOrUndefined}} +%This needs to use \cs{GlsXtrIfUnusedOrUndefined} instead of +%\cs{ifglsused} to allow it to work with \app{bib2gls}. % \begin{macrocode} \renewcommand*{\glswriteentry}[2]{% \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 @@ -9439,13 +9480,35 @@ Dickimaw Books\\ %adjustment to \cs{@printglossary} to allow \cs{@glo@assign@sortkey} %to pick up the glossary type. % +%Earlier versions of \styfmt{glossaries-extra} simply saved the +%original version of \cs{@printglossary} with \cs{let} +%\cs{@glsxtr@orgprintglossary}. This was later changed to actually +%defining \cs{@glsxtr@orgprintglossary} to something similar with +%some alterations to allow for ignored glossaries, which don't have +%an associated title and to by-pass the existence check with +%\cs{ifglossaryexists} which doesn't recognise ignored glossaries. +%(bib2gls writes \cs{provideignoredglossary} to the glstex file for some settings, +%so the glossary might not been defined on the first \LaTeX\ run and +%it needs to be allowed with \cs{printunsrtglossary} on subsequent +%runs.) +% +%Unfortunately, removing the existence check will cause an error +%if \cs{printglossary} is used with an ignored glossary. +% +%As from \sty{glossaries} v4.46, some new commands have been +%included to allow the existence check to be varied depending on +%whether or not ignored glossaries should be allowed, so check for +%them: +%\begin{macro}{\glsxtr@printgloss@checkexists} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\ifdef\@printgloss@checkexists +{\newcommand{\glsxtr@printgloss@checkexists}{\@printgloss@checkexists}} +{\newcommand{\glsxtr@printgloss@checkexists}[2]{#2}} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtr@orgprintglossary} -%This no longer simply saves \cs{@printglossary} with \cs{let} -%but is actually defined -%to check for the existence of the title, since ignored -%glossaries don't have a title assigned. (bib2gls writes -%\cs{provideignoredglossary} to the glstex file for some settings, -%so the glossary might not have been defined.) %(This command is also used for on-the-fly setting.) % \begin{macrocode} \newcommand{\@glsxtr@orgprintglossary}[2]{% @@ -9500,7 +9563,7 @@ Dickimaw Books\\ \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 @@ -9653,6 +9716,59 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\@glsxtr@leveloffset} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\newcount\@glsxtr@leveloffset +% \end{macrocode} +%\end{macro} +%New to v1.44: +%\changes{1.44}{2020-03-23}{added leveloffset key} +% \begin{macrocode} +\define@key{printgloss}{leveloffset}{% + \@glsxtr@assign@leveloffset#1\relax +} +% \end{macrocode} +% +%\begin{macro}{\@glsxtr@assign@leveloffset} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@assign@leveloffset}{% + \@ifnextchar+{\p@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\p@glsxtr@assign@leveloffset} +%\changes{1.44}{2020-03-23}{new} +% Discard initial "+" character. +% \begin{macrocode} +\newcommand*{\p@glsxtr@assign@leveloffset}[1]{% + \@ifnextchar+{\pp@glsxtr@assign@leveloffset}{\np@glsxtr@assign@leveloffset}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\np@glsxtr@assign@leveloffset} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\def\np@glsxtr@assign@leveloffset#1\relax{\@glsxtr@leveloffset=#1\relax} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\pp@glsxtr@assign@leveloffset} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\def\pp@glsxtr@assign@leveloffset#1\relax{\advance\@glsxtr@leveloffset by #1\relax} +% \end{macrocode} +%\end{macro} +% +%\changes{1.44}{2020-03-23}{added groups key} +% \begin{macrocode} +\define@boolkey{printgloss}[glsxtr@printgloss@]{groups}[true]{} +\glsxtr@printgloss@groupstrue +% \end{macrocode} +% %\begin{macro}{\glsdohypertarget} %\changes{1.20}{2017-09-11}{added redefinition} %Redefine to insert \cs{@glsxtrhypernameprefix} before the target @@ -10340,7 +10456,7 @@ Dickimaw Books\\ % \begin{macrocode} \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).% } @@ -10436,7 +10552,7 @@ Dickimaw Books\\ % \begin{macrocode} \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} @@ -10937,11 +11053,22 @@ Dickimaw Books\\ %\begin{macro}{\printunsrtglossary} %\changes{1.08}{2016-12-13}{new} %\changes{1.12}{2017-02-03}{added starred form} +%\changes{1.44}{2020-03-23}{added check for \cs{@printgloss@checkexists}} %Similar to \cs{printnoidxglossary} but it displays all entries -%defined for the given glossary without sorting. +%defined for the given glossary without sorting. Check for \cs{@printgloss@checkexists} which was +%introduced to \sty{glossaries} v4.46. % \begin{macrocode} -\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 + } } % \end{macrocode} %\end{macro} @@ -11027,12 +11154,20 @@ Dickimaw Books\\ % \begin{macrocode} \glsxtr@process {% - \ifglshasparent{\glscurrententrylabel}{}% - {% - \@glsxtr@checkgroup\glscurrententrylabel - \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter - {\@glsxtr@groupheading}% - }% + \ifglsxtr@printgloss@groups +% \end{macrocode} +% This still uses \cs{ifglshasparent} to determine whether or not to +% check for a change in the letter group. (It doesn't take the level +% offset into account because \app{bib2gls} only saves the group +% information for parentless entries.) +% \begin{macrocode} + \ifglshasparent{\glscurrententrylabel}{}% + {% + \@glsxtr@checkgroup\glscurrententrylabel + \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter + {\@glsxtr@groupheading}% + }% + \fi \eappto\@glsxtr@doglossary{% \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}% }% @@ -11047,6 +11182,170 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\printunsrtinnerglossary} +%\changes{1.44}{2020-03-23}{new} +%Similar to \cs{printunsrtglossary} but doesn't add the section +%heading, preamble, postamble or start and end of \env{theglossary}. +%Grouping is automatically applied so it may cause a problem within +%tabular-like environments. The beginning and ending of +%\env{theglossary} should be added around this command (but ensure +%the style has been set first). The simplest way of doing this is to +%place \cs{printunsrtinnerglossary} inside the +%\env{printunsrtglossarywrap} environment. +% \begin{macrocode} +\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 +} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{printunsrtglossarywrap} +%\changes{1.44}{2020-03-23}{new} +% \begin{macrocode} +\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}% +% \end{macrocode} +% The type key simply allows the title to be set if the title key +% isn't supplied. +% \begin{macrocode} + \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 +} +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\@print@unsrt@innerglossary} +%\changes{1.44}{2020-03-23}{new} +%This is much like \cs{@print@unsrt@innerglossary} but only contains +%what would normally be the content of the \env{theglossary}. +% \begin{macrocode} +\newcommand*{\@print@unsrt@innerglossary}{% +% \end{macrocode} +% No section header or preamble. +% \begin{macrocode} + \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{}% +% \end{macrocode} +%No header or reset. +% \begin{macrocode} + \def\@glsxtr@doglossary{}% + \expandafter\@for\expandafter\glscurrententrylabel\expandafter + :\expandafter=\csname glolist@\@glo@type\endcsname\do{% + \ifdefempty{\glscurrententrylabel} + {}% + {% +% \end{macrocode} +%Provide a hook (for example to measure width). +% \begin{macrocode} + \let\glsxtr@process\@firstofone + \let\printunsrtglossaryskipentry + \@glsxtr@printunsrtglossaryskipentry + \printunsrtglossaryentryprocesshook{\glscurrententrylabel}% +% \end{macrocode} +%Don't check group for child entries. +% \begin{macrocode} + \glsxtr@process + {% + \ifglsxtr@printgloss@groups +% \end{macrocode} +% This still uses \cs{ifglshasparent} to determine whether or not to +% check for a change in the letter group. (It doesn't take the level +% offset into account because \app{bib2gls} only saves the group +% information for parentless entries.) +% \begin{macrocode} + \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 + }% +% \end{macrocode} +% No postamble. +% \begin{macrocode} +} +% \end{macrocode} +%\end{macro} +% +% %\begin{macro}{\printunsrtglossaryentryprocesshook} %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} @@ -11260,24 +11559,40 @@ 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}% +% \end{macrocode} +% Use level number to determine whether or not this entry has a +% parent. +% \begin{macrocode} + \gls@level=\numexpr\csuse{glo@\glsdetoklabel{#1}@level}+\@glsxtr@leveloffset\relax + \ifnum\gls@level>0 + \let\@glsxtr@ifischild\@firstoftwo + \else + \let\@glsxtr@ifischild\@secondoftwo + \fi +% \end{macrocode} +%\changes{1.44}{2020-03-23}{replaced \cs{ifglshasparent} with \cs{@glsxtr@ifischild}} +%Some glossary styles (such as topicmcols) save the level using +%\cs{def} so make sure \cs{gls@level} is expanded before being +%passed to \cs{subglossentry}. +% \begin{macrocode} + \@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}}% }% }% {% @@ -25330,7 +25645,7 @@ defined}{}% %automatically loaded by the record option. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-bib2gls}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossaries-extra-bib2gls}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} %Provide convenient shortcut commands for predefined glossary types. %\begin{macro}{\printunsrtacronyms} @@ -28415,7 +28730,7 @@ defined}{}% % First identify package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossaries-extra-stylemods}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} % Provide package options to automatically load required predefined % styles. The simplest method is to just test for the existence of @@ -29592,8 +29907,8 @@ defined}{}% % \end{macrocode} %\changes{1.41}{2019-04-09}{added check for description} %\changes{1.42}{2020-02-03}{switched to using \cs{glstreeDescLoc}} +%\changes{1.44}{2020-03-23}{removed duplicate description} % \begin{macrocode} - \ifglshasdesc{#1}{\glossentrydesc{#1}\glspostdescription}{}% \glstreeDescLoc{#1}{#2}\par }% } @@ -30721,7 +31036,7 @@ defined}{}% %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-bookindex}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossary-bookindex}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -31217,7 +31532,7 @@ defined}{}% %Provides additional long styles. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-longextra}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossary-longextra}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -32646,7 +32961,7 @@ defined}{}% %topic. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-topic}[2020/02/28 v1.43 (NLCT)] +\ProvidesPackage{glossary-topic}[2020/03/23 v1.44 (NLCT)] % \end{macrocode} %Load required package. % \begin{macrocode} @@ -32972,12 +33287,14 @@ defined}{}% \ifglshasdesc{##1}% {% \edef\glstopic@prechildren{% - \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}% + \noexpand\begin{\glstopicColsEnv}{\glstopicCols}% + }% }% {% \edef\glstopic@prechildren{% \noexpand\nopagebreak - \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}% + \noexpand\begin{\glstopicColsEnv}{\glstopicCols}% + }% }% \edef\glstopic@postchildren{\noexpand\end{\glstopicColsEnv}}% \fi diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.ins b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins index bacff85a3f..f1a3cb82b0 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra.ins +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins @@ -1,4 +1,4 @@ -% glossaries-extra.ins generated using makedtx version 1.2 2020/2/28 14:07 +% glossaries-extra.ins generated using makedtx version 1.2 2020/3/23 20:29 \input docstrip \preamble diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf index 0d5e28ab74..067fefffb0 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf index 7dc6f75d69..75dbbba4ea 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf index 91e10c0da3..dcfa99bf2a 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf index 2b970d09f1..c2475f0895 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf index 74a702f89a..9240549091 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf index 07e1c7067a..af769c2904 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf index 78dc23a71f..fea6372359 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf index 8f20ec37ca..e1b1b380e7 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf index 4d5a897506..0a15892f04 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf index 6a8198598f..0b4c4eb9bf 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf index 79fafa75b2..5ffe8cdc19 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf index 8d66626e15..a6659eb0ab 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf index bffb593101..8807a83295 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf index d52ae88768..ca7017a576 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf index 0013810733..3ba1d7d804 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf index ac04b75fa2..da5ad2f50c 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf index 391a9f40a3..bc6c45aee0 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf index 4baec182fb..2fad6052c9 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf index 4d7a8986c4..8f6cb1c9a3 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf index 854fc08c48..a84fa9e505 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf index c8f1b365c7..6e7bee8038 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf index b06e8aa068..138c930a14 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf index 3db76f29b1..9cf9ba11ff 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf index 5180b2c0a1..4398fabf49 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf index 7528b6dfd5..800e23fc95 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf index a8d09d23c0..1ab4d05a3b 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf index 0633f150c7..148f025b1e 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf index c7daf6c3b8..73ae97a0e1 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf index 7f6ba898bd..b85e9628db 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf index a0d377ef51..84b11de45b 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf index 9a3e4e68fc..7b66ce9069 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf index 05a391589b..a4ddbadfec 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf index 28b99f59a5..c4ec898bac 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf index 916499b513..c8f28cd6c3 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf index e91b9234bd..b3338a5a3d 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf index 7519bb1fe7..9f41dfa065 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf index 2cfe4e45c4..8831ce5d7a 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf index 53e0484c8a..b0cc53ec5a 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf index 79938f2d40..c4b42d1791 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf index 268ad93647..ac6c68db0a 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf index 1abb85bfe4..da9bf5b1c0 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf index 02a1bd5202..724d7d4fd7 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf index e58aac152a..307d4ba2c9 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf index 9f15c6fa03..f50bc9cacb 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf index 0da0a6fa2e..8f0b50a01f 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf index f1bca94f07..50be7ebdf4 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf index a3ce49dc0b..d8f7ce0b59 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/samples/sample.pdf b/macros/latex/contrib/glossaries-extra/samples/sample.pdf index 093173f9ef..0896f120ef 100644 Binary files a/macros/latex/contrib/glossaries-extra/samples/sample.pdf and b/macros/latex/contrib/glossaries-extra/samples/sample.pdf differ diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf index 67e958be03..3b5ff88070 100644 Binary files a/macros/latex/contrib/nicematrix/nicematrix-french.pdf and b/macros/latex/contrib/nicematrix/nicematrix-french.pdf differ diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex index 3f3c6dc7d1..2d157cce4f 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.tex +++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex @@ -236,7 +236,8 @@ entre les premières cases non vides\footnote{La définition précise de ce qui entendu, pour |\Ldots| et |\Cdots|, c'est une ligne horizontale ; pour |\Vdots|, c'est une ligne verticale et pour |\Ddots| et |\Iddots|, ce sont des lignes diagonales. On peut changer la couleur d'une ligne avec l'option~|color|.\footnote{Il est aussi possible de changer la couleur de toutes ces lignes pointillées avec - l'option |xdots/color| (\textsl{xdots} pour rappeler que cela s'applique à |\Cdots|, |\Ldots|, |Vdots|, etc.) + l'option |xdots/color| (\textsl{xdots} pour rappeler que cela s'applique à |\Cdots|, |\Ldots|, |Vdots|, etc.) : + cf. p.~\pageref{customization}). }\par\nobreak \bigskip @@ -529,6 +530,8 @@ $\begin{pmatrix} \subsection{Personnalisation des lignes en pointillés} + +\label{customization} Les lignes pointillées tracées par |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Idots| et |\Hdotsfor| (ainsi que par la commande |\line| dans le |code-after| décrite p.~\pageref{line-in-code-after}) peuvent être paramétrées par trois options (que l'on met entre crochets après la commande) : @@ -1045,11 +1048,10 @@ Les environnements de \pkg{nicematrix} permettent de composer des rangées et de \label{exterior} Si elle est présente, la «première rangée» (extérieure) est numérotée par $0$ (et non $1$). Il en est de même pour -la «première rangée». Dans le cas général, on doit spécifier le numéro de la dernière rangée et de la dernière -colonne comme valeurs des options |last-row| et |last-col| (si elles sont présentes). +la «première rangée». \begin{Verbatim} -$\begin{pNiceMatrix}[~emphase#first-row,last-row=5,first-col,last-col=5@,nullify-dots] +$\begin{pNiceMatrix}[~emphase#first-row,last-row,first-col,last-col@,nullify-dots] & C_1 & \Cdots & & C_4 & \\ L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1059,7 +1061,7 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ \end{pNiceMatrix}$ \end{Verbatim} % -\[\begin{pNiceMatrix}[first-row,last-row=5,first-col,last-col=5,nullify-dots] +\[\begin{pNiceMatrix}[first-row,last-row,first-col,last-col,nullify-dots] & C_1 & \Cdots & & C_4 & \\ L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1077,14 +1079,26 @@ variantes), on ne doit pas mettre dans ce préambule de spécification de colonn dernière colonne : ce sera automatiquement (et nécessairement) une colonne |R| pour la première colonne et une colonne |L| pour la dernière. -\item Si on utilise un environnement avec préambule explicite et une dernière colonne, on doit utiliser l'option -|last-col| \emph{sans} valeur. En effet le numéro de la dernière colonne est, dans ce cas, déduit du préambule (qui -contient nécessairement implicitement l'information du nombre de colonnes non extérieures). +\item On peut se demander comment \pkg{nicematrix} détermine le nombre de rangées et de colonnes nécessaires à la +composition de la «dernière rangée» et de la «dernière colonne». + +\begin{itemize} +\item Dans le cas d'un environnement avec préambule, comme |{NiceArray}| ou |{pNiceArray}|, le nombre de colonnes +se déduit évidemment du préambule. + +\item Dans le cas où l'option |light-syntax| (cf. p. \pageref{light-syntax}) est utilisée, \pkg{nicematrix} profite +du fait que cette option nécessite de toutes manières le chargement complet du contenu de l'environnement (d'où +l'impossibilité de mettre du verbatim dans ce cas-là) avant composition du tableau. L'analyse du contenu de +l'environnement donne le nombre de rangées (mais pas le nombre de colonnes). + +\item Dans les autres cas, \pkg{nicematrix} détermine le nombre de rangées et de colonnes à la première compilation +et l'écrit dans le fichier |.aux| pour pouvoir l'utiliser à la compilation suivante. + +\textsl{Néanmoins, il est possible de donner le numéro de la dernière rangée et le numéro de la dernière colonne en +arguments des options |last-row| et |last-col| pour ce qui permettra d'accélérer le processus complet de +compilation.} C'est ce que nous ferons dans la suite. +\end{itemize} -\item Pour une dernière rangée, l'option |last-row| peut en fait être utilisée sans préciser de valeur. Dans ce -cas, \pkg{nicematrix} détermine, lors de la première compilation, le nombre de rangées rencontrées dans le tableau -et l'écrit dans le fichier |.aux| pour la prochaine compilation. Dans l'exemple qui suit, l'option |last-row| sera -utilisée sans valeur explicite. \end{itemize} @@ -1099,7 +1113,7 @@ insérées au début de chaque case de la rangée ou de la colonne considérée. ~emphase#code-for-first-col@ = \color{blue}, ~emphase#code-for-last-row@ = \color{green}, ~emphase#code-for-last-col@ = \color{magenta}} -$\begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] +$\begin{pNiceArray}{CC|CC}[first-row,last-row=6,first-col,last-col,nullify-dots] & C_1 & \Cdots & & C_4 & \\ L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1116,7 +1130,7 @@ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ code-for-last-row = \color{green}, code-for-last-col = \color{magenta}} \begin{displaymath} -\begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] +\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col,nullify-dots] & C_1 & \multicolumn1C{\Cdots} & & C_4 & \\ L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1751,11 +1765,13 @@ $\begin{pNiceMatrix}[vlines] \subsection{L'option light-syntax} -L'option |light-syntax|\footnote{Cette option est inspirée de -l'extension \pkg{spalign} de Joseph Rabinoff.} permet d'alléger la saisie des matrices, ainsi que leur lisibilité dans le source TeX. -Lorsque cette option est activée, on doit utiliser le point-virgule comme marqueur de fin de rangée et séparer les -colonnes par des espaces. On remarquera toutefois que, comme souvent dans le monde TeX, les espaces après les -séquences de contrôle ne sont pas comptées et que les éléments entre accolades sont considérés comme un tout. +\label{light-syntax} + +L'option |light-syntax|\footnote{Cette option est inspirée de l'extension \pkg{spalign} de Joseph Rabinoff.} permet +d'alléger la saisie des matrices, ainsi que leur lisibilité dans le source TeX. Lorsque cette option est activée, +on doit utiliser le point-virgule comme marqueur de fin de rangée et séparer les colonnes par des espaces ou des +tabulations. On remarquera toutefois que, comme souvent dans le monde TeX, les espaces après les séquences de +contrôle ne sont pas comptées et que les éléments entre accolades sont considérés comme un tout. \medskip @@ -1779,6 +1795,13 @@ b \cos a+\cos b { 2 \cos b } On peut changer le caractère utilisé pour indiquer les fins de rangées avec l'option |end-of-row|. Comme dit précédemment, la valeur initiale de ce paramètre est un point-virgule. +\medskip +Lorsque l'option |light-syntax| est utilisée, il n'est pas possible de mettre d'éléments en verbatim (avec par +exemple la commande |\verb|) dans les cases du tableau.\footnote{La raison en est que lorsque l'option + |light-syntax| est utilisée, le contenu complet de l'environnement est chargé comme un argument de commande TeX. + L'environnement ne se comporte plus comme un «vrai» environnement de LaTeX qui se contente d'insérer des + commandes avant et après.} + \subsection{Utilisation du type de colonne S de siunitx} Si l'extension \pkg{siunitx} est chargée (avant ou après \pkg{nicematrix}), il est possible d'utiliser les colonnes @@ -1831,14 +1854,14 @@ Le trait fort correspondant ne s'étendra pas dans les rangées extérieures : \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] -$\begin{pNiceArray}{CC?CC}[first-row,last-row] +$\begin{pNiceArray}{CC?CC}[first-row,last-row=3] C_1 & C_2 & C_3 & C_4 \\ a & b & c & d \\ e & f & g & h \\ C_1 & C_2 & C_3 & C_4 \end{pNiceArray}$ \end{BVerbatim} -$\begin{pNiceArray}{CC?CC}[first-row,last-row] +$\begin{pNiceArray}{CC?CC}[first-row,last-row=3] C_1 & C_2 & C_3 & C_4 \\ a & b & c & d \\ e & f & g & h \\ diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx index ede600b7d7..04dd13a9dd 100644 --- a/macros/latex/contrib/nicematrix/nicematrix.dtx +++ b/macros/latex/contrib/nicematrix/nicematrix.dtx @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{3.13} -\def\myfiledate{2020/03/15} +\def\myfileversion{3.14} +\def\myfiledate{2020/03/23} % % %<*batchfile> @@ -248,7 +248,7 @@ version 2005/12/01 or later. % |\Iddots| diagonal ones. It's possible to change the color of these lines % with the option |color|.\footnote{It's also possible to change the color of % all theses dotted lines with the option |xdots/color| (\textsl{xdots} to -% remind that it works for |\Cdots|, |\Ldots|, |\Vdots|, etc.)}\par\nobreak +% remind that it works for |\Cdots|, |\Ldots|, |\Vdots|, etc.): cf. p. \pageref{customization}.}\par\nobreak % % \bigskip % \begin{BVerbatim}[baseline=c,boxwidth=10cm] @@ -552,7 +552,8 @@ version 2005/12/01 or later. % \end{scope} % % \subsection{Customization of the dotted lines} -% +% +% \label{customization} % The dotted lines drawn by |\Ldots|, |\Cdots|, |\Vdots|, |\Ddots|, |\Iddots| % and |\Hdotsfor| (and by the command |\line| in the |code-after| which is described % in p.~\pageref{line-in-code-after}) may be customized by three options (specified @@ -1086,13 +1087,11 @@ version 2005/12/01 or later. % \label{exterior} % % A potential ``first row'' (exterior) has the number $0$ (and not $1$). Idem -% for the potential ``first column''. In general cases, one must specify the -% number of the last row and the number of the last column as values of -% |last-row| and |last-col|. +% for the potential ``first column''. % % \begin{Verbatim} -% $\begin{pNiceMatrix}[~emphase#first-row,last-row=5,first-col,last-col=5@] -% $\begin{pNiceMatrix}[~emphase#first-row,last-row=5,first-col,last-col=5@,nullify-dots] +% $\begin{pNiceMatrix}[~emphase#first-row,last-row,first-col,last-col@] +% $\begin{pNiceMatrix}[~emphase#first-row,last-row,first-col,last-col@,nullify-dots] % & C_1 & \Cdots & & C_4 & \\ % L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ % \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1103,7 +1102,7 @@ version 2005/12/01 or later. % \end{pNiceMatrix}$ % \end{Verbatim} % -% \[\begin{pNiceMatrix}[first-row,last-row=5,first-col,last-col=5,nullify-dots] +% \[\begin{pNiceMatrix}[first-row,last-row,first-col,last-col,nullify-dots] % & C_1 & \Cdots & & C_4 & \\ % L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ % \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1120,14 +1119,29 @@ version 2005/12/01 or later. % its variants), no letter must be given in that preamble for the potential % first column and the potential last column: they will automatically (and % necessarily) be of type |R| for the first column and |L| for the last one. -% \item In an environment with an explicit preamble, the option |last-col| must -% be used \emph{without} value: the number of columns will be automatically -% computed from the preamble of the array. -% \item For the potential last row, the option |last-row| may, in fact, be used -% without value. In this case, \pkg{nicematrix} computes, during the first -% compilation, the number of rows of the array and writes that information in -% the |.aux| file for the second run. In the following example, the option -% |last-row| will be used without value. +% \item One may wonder how \pkg{nicematrix} determines the number of rows and +% columns which are needed for the composition of the ``last row'' and ``last +% column''. +% \begin{itemize} +% \item For the environments with explicit preamble, like |{NiceArray}| and +% |{pNiceArray}|, the number of columns can obviously be computed from the +% preamble. +% +% \item When the option |light-syntax| (cf. p. \pageref{light-syntax}) is used, +% \pkg{nicematrix} has, in any case, to load the whole body of the environment +% (and that's why it's not possible to put verbatim material in the array with +% the option |light-syntax|). The analysis of this whole body gives the number +% of rows (but not the number of columns). +% +% \item In the other cases, \pkg{nicematrix} compute the number of rows and +% columns during the first compilation and write the result in the |aux| file +% for the next run. +% +% \textsl{However, it's possible to provide the number of the last row and the number of +% the last column as values of the options |last-row| and |last-col|, tending to +% an acceleration of the whole compilation of the document.} That's what we will +% do throughout the rest of the document. +% \end{itemize} % \end{itemize} % % \bigskip @@ -1143,7 +1157,7 @@ version 2005/12/01 or later. % ~emphase#code-for-first-col@ = \color{blue}, % ~emphase#code-for-last-row@ = \color{green}, % ~emphase#code-for-last-col@ = \color{magenta}} -% $\begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] +% $\begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col,nullify-dots] % & C_1 & \Cdots & & C_4 & \\ % L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ % \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1160,7 +1174,7 @@ version 2005/12/01 or later. % code-for-last-row = \color{green}, % code-for-last-col = \color{magenta}} % \begin{displaymath} -% \begin{pNiceArray}{CC|CC}[first-row,last-row,first-col,last-col,nullify-dots] +% \begin{pNiceArray}{CC|CC}[first-row,last-row=5,first-col,last-col,nullify-dots] % & C_1 & \multicolumn1C{\Cdots} & & C_4 & \\ % L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ % \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ @@ -1608,7 +1622,7 @@ version 2005/12/01 or later. % \NiceMatrixOptions% % {code-for-last-row = \scriptstyle ~emphase#\rotate@ , % code-for-last-col = \scriptstyle } -% $A = \begin{pNiceMatrix}[last-row,last-col=4] +% $A = \begin{pNiceMatrix}[last-row=4,last-col=4] % 1 & 2 & 3 & e_1 \\ % 4 & 5 & 6 & e_2 \\ % 7 & 8 & 9 & e_3 \\ @@ -1619,7 +1633,7 @@ version 2005/12/01 or later. % \NiceMatrixOptions% % {code-for-last-row = \scriptstyle\rotate , % code-for-last-col = \scriptstyle }% -% $A = \begin{pNiceMatrix}[last-row,last-col=4] +% $A = \begin{pNiceMatrix}[last-row=4,last-col=4] % 1 & 2 & 3 & e_1 \\ % 4 & 5 & 6 & e_2 \\ % 7 & 8 & 9 & e_3 \\ @@ -1823,14 +1837,15 @@ version 2005/12/01 or later. % % \subsection{The option light-syntax} % +% \label{light-syntax} % The option |light-syntax|\footnote{This option is inspired by the extension -% \pkg{spalign} of Joseph Rabinoff.} allow the user to compose the arrays with a +% \pkg{spalign} of Joseph Rabinoff.} allows the user to compose the arrays with a % lighter syntax, which gives a more readable TeX source. % % When this option is used, one should use the semicolon for the end of a row -% and a space to separate the columns. However, as usual in the TeX world, the -% spaces after a control sequence are discarded and the elements between curly -% braces are considered as a whole. +% and spaces or tabulations to separate the columns. However, as usual in the +% TeX world, the spaces after a control sequence are discarded and the elements +% between curly braces are considered as a whole. % % \bigskip % The following example has been composed with XeLaTeX with \pkg{unicode-math}, @@ -1856,6 +1871,14 @@ version 2005/12/01 or later. % It's possible to change the character used to mark the end of rows with the % option |end-of-row|. As said before, the initial value is a semicolon. % +% \medskip +% When the option |light-syntax| is used, it is not possible to put verbatim +% material (for example with the command |\verb|) in the cells of the +% array.\footnote{The reason is that, when the option |light-syntax| is used, +% the whole content of the environment is loaded as a TeX argument to be +% analyzed. The environment doesn't behave in that case as a standard +% environment of LaTeX which only put TeX commands before and after the content.} +% % \subsection{Use of the column type S of siunitx} % % If the package \pkg{siunitx} is loaded (before or after \pkg{nicematrix}), @@ -1913,14 +1936,14 @@ version 2005/12/01 or later. % \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} % % \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] -% $\begin{pNiceArray}{CC?CC}[first-row,last-row] +% $\begin{pNiceArray}{CC?CC}[first-row,last-row=3] % C_1 & C_2 & C_3 & C_4 \\ % a & b & c & d \\ % e & f & g & h \\ % C_1 & C_2 & C_3 & C_4 % \end{pNiceArray}$ % \end{BVerbatim} -% $\begin{pNiceArray}{CC?CC}[first-row,last-row] +% $\begin{pNiceArray}{CC?CC}[first-row,last-row=3] % C_1 & C_2 & C_3 & C_4 \\ % a & b & c & d \\ % e & f & g & h \\ @@ -2249,12 +2272,12 @@ version 2005/12/01 or later. % % \vspace{2cm} % -% An example with |\Iddots|. We have raised even more the value of -% |xdots/shorten|.\par\nobreak +% An example with |\Iddots| (we have raised again the value of +% |xdots/shorten|).\par\nobreak % % \bigskip % \begin{BVerbatim}[baseline=c] -% $\begin{pNiceMatrix}[~emphase#xdots/shorten=0.9em@] +% $\begin{pNiceMatrix}[xdots/shorten=0.9em] % 1 & \Cdots & & 1 \\ % \Vdots & & & 0 \\ % & ~emphase#\Iddots@ & ~emphase#\Iddots@ & \Vdots \\ @@ -2262,7 +2285,7 @@ version 2005/12/01 or later. % \end{pNiceMatrix}$ % \end{BVerbatim} % \hspace{4cm} -% $\begin{pNiceMatrix}[xdots/shorten=0.9em] +% $\begin{pNiceMatrix}[xdots/shorten=0.9em] % 1 & \Cdots & & 1 \\ % \Vdots & & & 0 \\ % & \Iddots & \Iddots & \Vdots \\ @@ -3338,14 +3361,24 @@ version 2005/12/01 or later. \bool_new:N \l_@@_last_row_without_value_bool % \end{macrocode} % +% \smallskip +% Idem for |\l_@@_last_col_without_value_bool| +% \begin{macrocode} +\bool_new:N \l_@@_last_col_without_value_bool +% \end{macrocode} +% % \medskip % \item \textbf{Last column}\par\nobreak % -% For the eventual ``last column'', we use an integer. A value of $-1$ means -% that there is no last column. +% For the eventual ``last column'', we use an integer. A value of $-2$ means +% that there is no last column. A value of $-1$ means that there is a last +% column but we don't know its value because the user has used the option +% |last-col| without value (it's possible in an environment without preamble +% like |{pNiceMatrix}|). A value of $0$ means that the option |last-col| has +% been used in an environment with preamble (like |{pNiceArray}|). % \begin{macrocode} \int_new:N \l_@@_last_col_int -\int_set:Nn \l_@@_last_col_int { -1 } +\int_set:Nn \l_@@_last_col_int { -2 } % \end{macrocode} % % However, we have also a boolean. Consider the following code: @@ -3489,9 +3522,79 @@ version 2005/12/01 or later. % The following command is only for efficiency. It must \emph{not} be protected % because it will be used (for instance) in names of \textsc{pgf} nodes. % \begin{macrocode} -\cs_new:Npn \@@_succ:N #1 { \the \numexpr #1 + 1 \relax } +\cs_new:Npn \@@_succ:n #1 { \the \numexpr #1 + 1 \relax } +\cs_new:Npn \@@_pred:n #1 { \the \numexpr #1 - 1 \relax } % \end{macrocode} % +% \subsection*{Command for creation of rectangle nodes} +% +% +% The following command should be used in a |{pgfpicture}|. It creates an +% rectangular (empty but with a name) when the four corners are given. +% +% |#1| is the name of the node which will be created; +% |#2| and |#3| are the coordinates of one of the corner of the rectangle; +% |#4| and |#5| are the coordinates of the opposite corner. +% \begin{macrocode} +\cs_new_protected:Npn \@@_pgf_rect_node:nnnnn #1 #2 #3 #4 #5 + { + \begin { pgfscope } + \pgfset + { + outer~sep = \c_zero_dim , + inner~sep = \c_zero_dim , + minimum~size = \c_zero_dim + } + \pgftransformshift { \pgfpoint { 0.5 * ( #2 + #4 ) } { 0.5 * ( #3 + #5 ) } } + \pgfnode + { rectangle } + { center } + { + \vbox_to_ht:nn + { \dim_abs:n { #5 - #3 } } + { + \vfill + \hbox_to_wd:nn { \dim_abs:n { #4 - #2 } } { } + } + } + { #1 } + { } + \end { pgfscope } + } +% \end{macrocode} +% +% \medskip +% The command |\@@_pgf_rect_node:nnn| is a variant of |\@@_pgr_rect_node:nnnn|: +% it takes two \textsc{pgf} points as arguments instead of the four dimensions +% which are the coordinates. +% \begin{macrocode} +\cs_new_protected:Npn \@@_pgf_rect_node:nnn #1 #2 #3 + { + \begin { pgfscope } + \pgfset + { + outer~sep = \c_zero_dim , + inner~sep = \c_zero_dim , + minimum~size = \c_zero_dim + } + \pgftransformshift { \pgfpointscale { 0.5 } { \pgfpointadd { #2 } { #3 } } } + \pgfpointdiff { #3 } { #2 } + \pgfgetlastxy \l_tmpa_dim \l_tmpb_dim + \pgfnode + { rectangle } + { center } + { + \vbox_to_ht:nn + { \dim_abs:n \l_tmpb_dim } + { \vfill \hbox_to_wd:nn { \dim_abs:n \l_tmpa_dim } { } } + } + { #1 } + { } + \end { pgfscope } + } +% \end{macrocode} +% +% % \bigskip % \subsection*{The options} % @@ -3566,7 +3669,7 @@ version 2005/12/01 or later. % \end{macrocode} % % \bigskip -% The boolean |\l_@@_extra_medium_bool| will be used to indicate whether the +% The boolean |\l_@@_medium_nodes_bool| will be used to indicate whether the % ``medium nodes'' are created in the array. Idem for the ``large nodes''. % \begin{macrocode} \bool_new:N \l_@@_medium_nodes_bool @@ -3876,7 +3979,10 @@ version 2005/12/01 or later. \keys_define:nn { NiceMatrix / NiceMatrix } { last-col .code:n = \tl_if_empty:nTF {#1} - { \@@_error:n { last-col~empty~for~NiceMatrix } } + { + \bool_set_true:N \l_@@_last_col_without_value_bool + \int_set:Nn \l_@@_last_col_int { -1 } + } { \int_set:Nn \l_@@_last_col_int { #1 } } , l .code:n = \tl_set:Nn \l_@@_type_of_col_tl L , r .code:n = \tl_set:Nn \l_@@_type_of_col_tl R , @@ -4255,7 +4361,7 @@ version 2005/12/01 or later. { \pgfpicture \pgfrememberpicturepositiononpagetrue - \pgfcoordinate { \@@_env: - row - \@@_succ:N \c@iRow } + \pgfcoordinate { \@@_env: - row - \@@_succ:n \c@iRow } \pgfpointorigin \str_if_empty:NF \l_@@_name_str { @@ -4681,6 +4787,35 @@ version 2005/12/01 or later. } % \end{macrocode} % +% +% A value of $-1$ for the counter |\l_@@_last_col_int| means that the user has +% used the option |last-col| without value (it's possible in an environment +% without preamble like |{NiceMatrix}| or |{pNiceMatrix}|), that is to say +% without specifying the number of that last column. In this case, we try to +% read that value from the |aux| file (if it has been written on a previous +% run). +% \begin{macrocode} + \int_compare:nNnT \l_@@_last_col_int = { -1 } + { + \str_if_empty:NTF \l_@@_name_str + { + \cs_if_exist:cT { @@_last_col_ \int_use:N \g_@@_env_int } + { + \int_set:Nn \l_@@_last_col_int + { \use:c { @@_last_col_ \int_use:N \g_@@_env_int } } + } + } + { + \cs_if_exist:cT { @@_last_col_ \l_@@_name_str } + { + \int_set:Nn \l_@@_last_col_int + { \use:c { @@_last_col_ \l_@@_name_str } } + } + } + } +% \end{macrocode} +% +% \interitem % The code in |\@@_pre_array:| is used only by |{NiceArrayWithDelims}|. % \begin{macrocode} \@@_pre_array: @@ -5104,13 +5239,20 @@ version 2005/12/01 or later. % because we have the whole body of the environment in |#1|. % \begin{macrocode} \tl_if_empty:nT { #1 } { \@@_fatal:n { empty~environment } } + \tl_map_inline:nn { #1 } + { + \tl_if_eq:nnT { ##1 } { & } + { \@@_fatal:n { ampersand~in~light-syntax } } + \tl_if_eq:nnT { ##1 } { \\ } + { \@@_fatal:n { double-backslash~in~light-syntax } } + } % \end{macrocode} % The body of the environment, which is stored in the argument |#1|, is now % splitted into items (and \emph{not} tokens) % \begin{macrocode} \seq_gclear_new:N \g_@@_rows_seq \tl_set_rescan:Nno \l_@@_end_of_row_tl { } \l_@@_end_of_row_tl - \exp_args:NNV \seq_gset_split:Nnn \g_@@_rows_seq \l_@@_end_of_row_tl { #1 } + \exp_args:NNV \seq_gset_split:Nnn \g_@@_rows_seq \l_@@_end_of_row_tl { #1 } % \end{macrocode} % If the environment uses the option |last-row| without value (i.e. without % saying the number of the rows), we have now the opportunity to know that @@ -5262,13 +5404,13 @@ version 2005/12/01 or later. % \begin{macrocode} \pgfpicture \pgfrememberpicturepositiononpagetrue - \pgfcoordinate { \@@_env: - col - \@@_succ:N \g_tmpa_int } + \pgfcoordinate { \@@_env: - col - \@@_succ:n \g_tmpa_int } \pgfpointorigin \str_if_empty:NF \l_@@_name_str { \pgfnodealias - { \@@_env: - col - \@@_succ:N \g_tmpa_int } - { \l_@@_name_str - col - \@@_succ:N \g_tmpa_int } + { \@@_env: - col - \@@_succ:n \g_tmpa_int } + { \l_@@_name_str - col - \@@_succ:n \g_tmpa_int } } \endpgfpicture } @@ -5357,8 +5499,7 @@ version 2005/12/01 or later. % \begin{macrocode} \bool_gset_true:N \g_@@_last_col_found_bool \int_gincr:N \c@jCol - \int_gset:Nn \g_@@_col_total_int - { \int_max:nn \g_@@_col_total_int \c@jCol } + \int_gset_eq:NN \g_@@_col_total_int \c@jCol % \end{macrocode} % The contents of the cell is constructed in the box |\l_tmpa_box| because we % have to compute some dimensions of this box. @@ -5517,9 +5658,9 @@ version 2005/12/01 or later. { * { - \int_compare:nNnTF \l_@@_last_col_int = { -1 } + \int_compare:nNnTF \l_@@_last_col_int < 0 \c@MaxMatrixCols - { \int_eval:n { \l_@@_last_col_int - 1 } } + { \@@_pred:n \l_@@_last_col_int } } #2 } @@ -5547,15 +5688,40 @@ version 2005/12/01 or later. { \group_begin: % \end{macrocode} +% When the option |last-col| is used in the environments with explicit preambles +% (like |{NiceArray}|, |{pNiceArray}|, etc.) a special type of column is used at +% the end of the preamble in order to compose the cells in an overlapping +% position (with |\hbox_overlap_right:n|) but (if |last-col| has been used), we +% don't have the number of that last column. However, we have to know that +% number for the color of the potential |\Vdots| drawn in that last column. +% That's why we fix the correct value of |\l_@@_last_col_int| in that case. +% \begin{macrocode} + \bool_if:NT \g_@@_last_col_found_bool + { \int_set_eq:NN \l_@@_last_col_int \g_@@_col_total_int } +% \end{macrocode} % -% If a last column is announced in the options, but without the value (because -% we are in an environment with preamble, it's time to fix the real value of -% |\l_@@_last_col_int|). +% If we are in an environment without preamble (like |{NiceMatrix}| or +% |{pNiceMatrix}|) and if the option |last-col| has been used without value +% we fix the real value of |\l_@@_last_col_int|. % \begin{macrocode} - \int_compare:nNnT \l_@@_last_col_int = 0 + \bool_if:NT \l_@@_last_col_without_value_bool { - \bool_if:NT \g_@@_last_col_found_bool - { \dim_set_eq:NN \l_@@_last_col_int \g_@@_col_total_int } + \dim_set_eq:NN \l_@@_last_col_int \g_@@_col_total_int + \iow_shipout:Nn \@mainaux \ExplSyntaxOn + \iow_shipout:Nx \@mainaux + { + \cs_gset:cpn { @@_last_col_ \int_use:N \g_@@_env_int } + { \int_use:N \g_@@_col_total_int } + } + \str_if_empty:NF \l_@@_name_str + { + \iow_shipout:Nx \@mainaux + { + \cs_gset:cpn { @@_last_col_ \l_@@_name_str } + { \int_use:N \g_@@_col_total_int } + } + } + \iow_shipout:Nn \@mainaux \ExplSyntaxOff } % \end{macrocode} % @@ -5566,26 +5732,33 @@ version 2005/12/01 or later. \bool_if:NT \l_@@_last_row_without_value_bool { \dim_set_eq:NN \l_@@_last_row_int \g_@@_row_total_int - \iow_now:Nn \@mainaux \ExplSyntaxOn - \iow_now:Nx \@mainaux - { - \cs_gset:cpn { @@_last_row_ \int_use:N \g_@@_env_int } - { \int_use:N \g_@@_row_total_int } - } +% \end{macrocode} +% If the option |light-syntax| is used, we have nothing to write since, in this +% case, the number of rows is directly determined. +% \begin{macrocode} + \bool_if:NF \l_@@_light_syntax_bool + { + \iow_shipout:Nn \@mainaux \ExplSyntaxOn + \iow_shipout:Nx \@mainaux + { + \cs_gset:cpn { @@_last_row_ \int_use:N \g_@@_env_int } + { \int_use:N \g_@@_row_total_int } + } % \end{macrocode} % If the environment has a name, we also write a value based on the name % because it's more reliable than a value based on the number of the % environment. % \begin{macrocode} - \str_if_empty:NF \l_@@_name_str - { - \iow_now:Nx \@mainaux + \str_if_empty:NF \l_@@_name_str { - \cs_gset:cpn { @@_last_row_ \l_@@_name_str } - { \int_use:N \g_@@_row_total_int } - } + \iow_shipout:Nx \@mainaux + { + \cs_gset:cpn { @@_last_row_ \l_@@_name_str } + { \int_use:N \g_@@_row_total_int } + } + } + \iow_shipout:Nn \@mainaux \ExplSyntaxOff } - \iow_now:Nn \@mainaux \ExplSyntaxOff } % \end{macrocode} % @@ -5644,7 +5817,7 @@ version 2005/12/01 or later. % \end{macrocode} % The dimension |\l_@@_xdots_shorten_dim| corresponds to the option % |xdots/shorten| available to the user. That's why we give a new value -% according to the current value, and not a absolute value. +% according to the current value, and not an absolute value. % \begin{macrocode} \dim_set:Nn \l_@@_xdots_shorten_dim { 0.6 \l_@@_xdots_shorten_dim } } @@ -6033,7 +6206,7 @@ version 2005/12/01 or later. { \@@_set_initial_coords_from_anchor:n { base~east } } \bool_if:NTF \l_@@_final_open_bool { - \@@_qpoint: { col - \@@_succ:N \l_@@_final_j_int } + \@@_qpoint: { col - \@@_succ:n \l_@@_final_j_int } \dim_set_eq:NN \l_@@_x_final_dim \pgf@x \dim_sub:Nn \l_@@_x_final_dim \arraycolsep \@@_qpoint: { row - \int_use:N \l_@@_final_i_int - base } @@ -6114,7 +6287,7 @@ version 2005/12/01 or later. { \@@_set_initial_coords_from_anchor:n { mid~east } } \bool_if:NTF \l_@@_final_open_bool { - \@@_qpoint: { col - \@@_succ:N \l_@@_final_j_int } + \@@_qpoint: { col - \@@_succ:n \l_@@_final_j_int } \dim_set_eq:NN \l_@@_x_final_dim \pgf@x \dim_sub:Nn \l_@@_x_final_dim \arraycolsep } @@ -6125,7 +6298,7 @@ version 2005/12/01 or later. { \@@_qpoint: { row - \int_use:N \l_@@_initial_i_int } \dim_set_eq:NN \l_tmpa_dim \pgf@y - \@@_qpoint: { row - \@@_succ:N \l_@@_initial_i_int } + \@@_qpoint: { row - \@@_succ:n \l_@@_initial_i_int } \dim_set:Nn \l_@@_y_initial_dim { ( \l_tmpa_dim + \pgf@y ) / 2 } \dim_set_eq:NN \l_@@_y_final_dim \l_@@_y_initial_dim } @@ -6212,7 +6385,7 @@ version 2005/12/01 or later. { \@@_set_initial_coords_from_anchor:n { south } } \bool_if:NTF \l_@@_final_open_bool { - \@@_qpoint: { row - \@@_succ:N \c@iRow } + \@@_qpoint: { row - \@@_succ:n \c@iRow } \dim_set_eq:NN \l_@@_y_final_dim \pgf@y } { \@@_set_final_coords_from_anchor:n { north } } @@ -6222,7 +6395,7 @@ version 2005/12/01 or later. { \@@_qpoint: { col - \int_use:N \l_@@_initial_j_int } \dim_set_eq:NN \l_tmpa_dim \pgf@x - \@@_qpoint: { col - \@@_succ:N \l_@@_initial_j_int } + \@@_qpoint: { col - \@@_succ:n \l_@@_initial_j_int } \dim_set:Nn \l_@@_x_initial_dim { ( \pgf@x + \l_tmpa_dim ) / 2 } \dim_set_eq:NN \l_@@_x_final_dim \l_@@_x_initial_dim } @@ -6310,9 +6483,9 @@ version 2005/12/01 or later. { \@@_set_initial_coords_from_anchor:n { south~east } } \bool_if:NTF \l_@@_final_open_bool { - \@@_qpoint: { row - \@@_succ:N \l_@@_final_i_int } + \@@_qpoint: { row - \@@_succ:n \l_@@_final_i_int } \dim_set_eq:NN \l_@@_y_final_dim \pgf@y - \@@_qpoint: { col - \@@_succ:N \l_@@_final_j_int } + \@@_qpoint: { col - \@@_succ:n \l_@@_final_j_int } \dim_set_eq:NN \l_@@_x_final_dim \pgf@x } { \@@_set_final_coords_from_anchor:n { north~west } } @@ -6408,13 +6581,13 @@ version 2005/12/01 or later. { \@@_qpoint: { row - \int_use:N \l_@@_initial_i_int } \dim_set_eq:NN \l_@@_y_initial_dim \pgf@y - \@@_qpoint: { col - \@@_succ:N \l_@@_initial_j_int } + \@@_qpoint: { col - \@@_succ:n \l_@@_initial_j_int } \dim_set_eq:NN \l_@@_x_initial_dim \pgf@x } { \@@_set_initial_coords_from_anchor:n { south~west } } \bool_if:NTF \l_@@_final_open_bool { - \@@_qpoint: { row - \@@_succ:N \l_@@_final_i_int } + \@@_qpoint: { row - \@@_succ:n \l_@@_final_i_int } \dim_set_eq:NN \l_@@_y_final_dim \pgf@y \@@_qpoint: { col - \int_use:N \l_@@_final_j_int } \dim_set_eq:NN \l_@@_x_final_dim \pgf@x @@ -6548,15 +6721,24 @@ version 2005/12/01 or later. } } % \end{macrocode} -% We draw only if the length is not equal to zero (in fact, in the first -% compilation, the length may be equal to zero when the command |\line| is used). +% It seems that, during the first compilations, the value of |\l_@@_l_dim| may +% be erroneous (equal to zero or very large). We must detect these cases +% because they would cause errors during the drawing of the dotted line. Maybe +% we should also write something in the |aux| file to say that one more +% compilation should be done. % \begin{macrocode} - \dim_compare:nNnF \l_@@_l_dim = \c_zero_dim \@@_actually_draw_line: + \bool_lazy_or:nnF + { \dim_compare_p:nNn { \dim_abs:n \l_@@_l_dim } > \c_@@_max_l_dim } + { \dim_compare_p:nNn \l_@@_l_dim = \c_zero_dim } + \@@_actually_draw_line: \group_end: } % \end{macrocode} % -% +% \begin{macrocode} +\dim_const:Nn \c_@@_max_l_dim { 50 cm } +% \end{macrocode} +% % \begin{macrocode} \cs_new_protected:Npn \@@_actually_draw_line: { @@ -6593,7 +6775,7 @@ version 2005/12/01 or later. \int_set:Nn \l_tmpa_int { \dim_ratio:nn - { \l_@@_l_dim - ( 2 \l_@@_xdots_shorten_dim ) } + { \l_@@_l_dim - 2 \l_@@_xdots_shorten_dim } \l_@@_inter_dots_dim } } @@ -6768,8 +6950,8 @@ version 2005/12/01 or later. % |{NiceArrayWithDelims}|. This command uses an optional argument (as does % |\hdotsfor|) but this argument is discarded (in |\hdotsfor|, this argument is % used for fine tuning of the space between two consecutive dots). Tikz nodes -% are created for all the cells of the array, even the implicit cells of the -% |\Hdotsfor|. +% are created also the implicit cells of the |\Hdotsfor| (maybe we should modify +% that point). % % \medskip % This command must \emph{not} be protected since it begins with |\multicolumn|. @@ -7142,7 +7324,7 @@ version 2005/12/01 or later. \@@_qpoint: {row - 1 } \dim_set_eq:NN \l_tmpa_dim \pgf@y \pgfusepathqfill - \@@_qpoint: { row - \@@_succ:N \c@iRow } + \@@_qpoint: { row - \@@_succ:n \c@iRow } \dim_sub:Nn \l_tmpa_dim \pgf@y \pgfusepathqfill % \end{macrocode} @@ -7157,9 +7339,9 @@ version 2005/12/01 or later. % We adjust the value of |\l_tmpa_dim| by the width of the horizontal rule just % before the ``last row''. % \begin{macrocode} - \@@_qpoint: { row - \@@_succ:N\c@iRow } + \@@_qpoint: { row - \@@_succ:n\c@iRow } \dim_add:Nn \l_tmpa_dim \pgf@y - \@@_qpoint: { row - \@@_succ:N \g_@@_row_total_int } + \@@_qpoint: { row - \@@_succ:n \g_@@_row_total_int } \dim_sub:Nn \l_tmpa_dim \pgf@y \dim_sub:Nn \l_tmpa_dim \l_tmpb_dim } @@ -7169,7 +7351,7 @@ version 2005/12/01 or later. % \begin{macrocode} \int_step_inline:nnn { \bool_if:NTF \l_@@_NiceArray_bool 1 2 } - { \bool_if:NTF \l_@@_NiceArray_bool { \@@_succ:N \c@jCol } \c@jCol } + { \bool_if:NTF \l_@@_NiceArray_bool { \@@_succ:n \c@jCol } \c@jCol } { \pgfpathmoveto { @@ -7345,7 +7527,7 @@ version 2005/12/01 or later. \@@_qpoint: { col - 1 } \dim_set:Nn \l_@@_x_initial_dim { \pgf@x + \arraycolsep - \l_@@_left_margin_dim } - \@@_qpoint: { col - \@@_succ:N \c@jCol } + \@@_qpoint: { col - \@@_succ:n \c@jCol } \dim_set:Nn \l_@@_x_final_dim { \pgf@x - \arraycolsep + \l_@@_right_margin_dim } % \end{macrocode} @@ -7429,7 +7611,7 @@ version 2005/12/01 or later. % |\l_@@_inter_dots_dim| in order to improve the visual impact. % \begin{macrocode} \dim_set:Nn \l_@@_y_initial_dim { \pgf@y - 0.5 \l_@@_inter_dots_dim } - \@@_qpoint: { row - \@@_succ:N \c@iRow } + \@@_qpoint: { row - \@@_succ:n \c@iRow } \dim_set:Nn \l_@@_y_final_dim { \pgf@y + 0.5 \l_@@_inter_dots_dim } % \end{macrocode} % As for now, we have no option to control the style of the lines drawn by @@ -7494,8 +7676,8 @@ version 2005/12/01 or later. { \bool_if:NT \l_@@_block_auto_columns_width_bool { - \iow_now:Nn \@mainaux \ExplSyntaxOn - \iow_now:Nx \@mainaux + \iow_shipout:Nn \@mainaux \ExplSyntaxOn + \iow_shipout:Nx \@mainaux { \cs_gset:cpn { @@ _ max _ cell _ width _ \int_use:N \g_@@_NiceMatrixBlock_int } @@ -7505,7 +7687,7 @@ version 2005/12/01 or later. % \begin{macrocode} { \dim_eval:n { \g_@@_max_cell_width_dim + \arrayrulewidth } } } - \iow_now:Nn \@mainaux \ExplSyntaxOff + \iow_shipout:Nn \@mainaux \ExplSyntaxOff } } % \end{macrocode} @@ -7576,9 +7758,9 @@ version 2005/12/01 or later. \int_step_variable:nnNn \l_@@_first_col_int \g_@@_col_total_int \@@_j: % \end{macrocode} -% Maybe the cell ($i$-$j$) is an implicit cell (that is to say a cell after -% implicit ampersands |&|). In this case, of course, we don't update the -% dimensions we want to compute. +% If the cell ($i$-$j$) is empty or an implicit cell (that is to say a cell +% after implicit ampersands |&|) we don't update the dimensions we want to +% compute. % \begin{macrocode} { \cs_if_exist:cT @@ -7588,9 +7770,7 @@ version 2005/12/01 or later. % the cell ($i$-$j$). They will be stored in |\pgf@x| and |\pgf@y|. % \begin{macrocode} { - \pgfpointanchor - { \@@_env: - \@@_i: - \@@_j: } - { south~west } + \pgfpointanchor { \@@_env: - \@@_i: - \@@_j: } { south~west } \dim_set:cn { l_@@_row_\@@_i: _min_dim} { \dim_min:vn { l_@@_row _ \@@_i: _min_dim } \pgf@y } \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } @@ -7602,9 +7782,7 @@ version 2005/12/01 or later. % We retrieve the coordinates of the anchor |north east| of the (normal) node of % the cell ($i$-$j$). They will be stored in |\pgf@x| and |\pgf@y|. % \begin{macrocode} - \pgfpointanchor - { \@@_env: - \@@_i: - \@@_j: } - { north~east } + \pgfpointanchor { \@@_env: - \@@_i: - \@@_j: } { north~east } \dim_set:cn { l_@@_row _ \@@_i: _ max_dim } { \dim_max:vn { l_@@_row _ \@@_i: _ max_dim } \pgf@y } \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } @@ -7615,6 +7793,30 @@ version 2005/12/01 or later. } } } +% \end{macrocode} +% Now, we have to deal with empty rows or empty columns since we don't have +% created nodes in such rows and columns. +% \begin{macrocode} + \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: + { + \dim_compare:nNnT + { \dim_use:c { l_@@_row _ \@@_i: _ min _ dim } } = \c_max_dim + { + \@@_qpoint: { row - \@@_i: - base } + \dim_set:cn { l_@@_row _ \@@_i: _ max _ dim } \pgf@y + \dim_set:cn { l_@@_row _ \@@_i: _ min _ dim } \pgf@y + } + } + \int_step_variable:nnNn \l_@@_first_col_int \g_@@_col_total_int \@@_j: + { + \dim_compare:nNnT + { \dim_use:c { l_@@_column _ \@@_j: _ min _ dim } } = \c_max_dim + { + \@@_qpoint: { col - \@@_j: } + \dim_set:cn { l_@@_column _ \@@_j: _ max _ dim } \pgf@y + \dim_set:cn { l_@@_column _ \@@_j: _ min _ dim } \pgf@y + } + } } % \end{macrocode} % @@ -7705,11 +7907,11 @@ version 2005/12/01 or later. { ( \dim_use:c { l_@@_row _ \@@_i: _ min _ dim } + - \dim_use:c { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } + \dim_use:c { l_@@_row _ \@@_succ:n \@@_i: _ max _ dim } ) / 2 } - \dim_set_eq:cc { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } + \dim_set_eq:cc { l_@@_row _ \@@_succ:n \@@_i: _ max _ dim } { l_@@_row_\@@_i: _min_dim } } \int_step_variable:nNn { \c@jCol - 1 } \@@_j: @@ -7717,14 +7919,13 @@ version 2005/12/01 or later. \dim_set:cn { l_@@_column _ \@@_j: _ max _ dim } { ( + \dim_use:c { l_@@_column _ \@@_j: _ max _ dim } + \dim_use:c - { l_@@_column _ \@@_j: _ max _ dim } + - \dim_use:c - { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } + { l_@@_column _ \@@_succ:n \@@_j: _ min _ dim } ) / 2 } - \dim_set_eq:cc { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } + \dim_set_eq:cc { l_@@_column _ \@@_succ:n \@@_j: _ min _ dim } { l_@@_column _ \@@_j: _ max _ dim } } % \end{macrocode} @@ -7939,9 +8140,9 @@ version 2005/12/01 or later. \dim_set_eq:NN \l_tmpa_dim \pgf@y \@@_qpoint: { col - #2 } \dim_set_eq:NN \l_tmpb_dim \pgf@x - \@@_qpoint: { row - \@@_succ:N #3 } + \@@_qpoint: { row - \@@_succ:n { #3 } } \dim_set_eq:NN \l_tmpc_dim \pgf@y - \@@_qpoint: { col - \@@_succ:N #4 } + \@@_qpoint: { col - \@@_succ:n { #4 } } \dim_set_eq:NN \l_tmpd_dim \pgf@x % \end{macrocode} % @@ -8149,6 +8350,7 @@ version 2005/12/01 or later. % Of course, the command |\NiceMatrix| must be defined before such an % instruction is executed. % \begin{macrocode} +\bool_new:N \c_@@_obsolete_environments_bool \keys_define:nn { NiceMatrix / Package } { renew-dots .bool_set:N = \l_@@_renew_dots_bool , @@ -8157,9 +8359,9 @@ version 2005/12/01 or later. renew-matrix .value_forbidden:n = true , transparent .meta:n = { renew-dots , renew-matrix } , transparent .value_forbidden:n = true, - obsolete-environments .code:n = - \@@_msg_redirect_name:nn { Obsolete~environment } { none } , - obsolete-environments .value_forbidden:n = true, + obsolete-environments .bool_set:N = \c_@@_obsolete_environments_bool , + obsolete-environments .value_forbidden:n = true , + obsolete-environments .default:n = true , starred-commands .code:n = \@@_msg_redirect_name:nn { starred~commands } { none } , starred-commands .value_forbidden:n = true , @@ -8286,6 +8488,23 @@ version 2005/12/01 or later. % \end{macrocode} % % \begin{macrocode} +\@@_msg_new:nn { ampersand~in~light-syntax } + { + You~can't~use~an~ampersand~(\token_to_str &)~to~separate~columns~because + ~you~have~used~the~option~'light-syntax'.~This~error~is~fatal. + } +% \end{macrocode} +% +% \begin{macrocode} +\@@_msg_new:nn { double-backslash~in~light-syntax } + { + You~can't~use~\token_to_str:N \\~to~separate~rows~because~you~have~used~ + the~option~'light-syntax'.~You~must~use~the~character~'\l_@@_end_of_row_tl'~ + (set~by~the~option~'end-of-row').~This~error~is~fatal. + } +% \end{macrocode} +% +% \begin{macrocode} \@@_msg_new:nn { starred~commands } { The~starred~versions~of~\token_to_str:N \Cdots,~\token_to_str:N \Ldots,~ @@ -8340,14 +8559,6 @@ version 2005/12/01 or later. } % \end{macrocode} % -% \begin{macrocode} -\@@_msg_new:nn { last-col~empty~for~NiceMatrix } - { - In~the~\@@_full_name_env:, you~can't~use~the~option~ - 'last-col'~without~value.~You~must~give~the~number~of~that~last~column.\\ - If~you~go~on~this~option~will~be~ignored. - } -% \end{macrocode} % % \begin{macrocode} \@@_msg_new:nn { Block~too~large } @@ -8570,218 +8781,95 @@ version 2005/12/01 or later. % \bigskip % \subsection*{Obsolete environments} % -% \begin{macrocode} -\@@_msg_new:nn { Obsolete~environment } - { - The~environment~\{\@currenvir\}~is~obsolete.~You~should~use~#1~instead.~ - However,~it's~still~possible~to~use~the~environment~\{\@currenvir\}~(for~ - a~few~months)~by~loading~'nicematrix'~with~the~option~ - 'obsolete-environments'. - } -% \end{macrocode} +% The following environments are loaded only when the package \pkg{nicematrix} +% has been loaded with the option |obsolete-environments|. However, they will be +% completly deleted in a future version. % % \begin{macrocode} -\NewDocumentEnvironment { pNiceArrayC } { } - { - \@@_fatal:nn { Obsolete~environment } { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \pNiceArray - } - { \endpNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { bNiceArrayC } { } - { - \@@_fatal:nn { Obsolete~environment } { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \bNiceArray - } - { \endbNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { BNiceArrayC } { } - { - \@@_fatal:nn { Obsolete~environment } { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \BNiceArray - } - { \endBNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { vNiceArrayC } { } - { - \@@_fatal:nn { Obsolete~environment } { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \vNiceArray - } - { \endvNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { VNiceArrayC } { } - { - \@@_fatal:nn { Obsolete~environment } { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \VNiceArray - } - { \endVNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { pNiceArrayRC } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \pNiceArray - } - { \endpNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { bNiceArrayRC } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \bNiceArray - } - { \endbNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { BNiceArrayRC } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \BNiceArray - } - { \endBNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { vNiceArrayRC } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \vNiceArray - } - { \endvNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { VNiceArrayRC } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \VNiceArray - } - { \endVNiceArray } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { NiceArrayCwithDelims } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~option~'last-col' } - \int_zero:N \l_@@_last_col_int - \NiceArrayWithDelims - } - { \endNiceArrayWithDelims } -% \end{macrocode} -% -% \begin{macrocode} -\NewDocumentEnvironment { NiceArrayRCwithDelims } { } - { - \@@_fatal:nn { Obsolete~environment } - { the~options~'last-col'~and~'first-row' } - \int_zero:N \l_@@_last_col_int - \int_zero:N \l_@@_first_row_int - \NiceArrayWithDelims - } - { \endNiceArrayWithDelims } -% \end{macrocode} -% -% -% \subsection*{Command for creation of rectangle nodes} -% -% -% The following command should be used in a |{pgfpicture}|. It creates an -% rectangular (empty but with a name) when the four corners are given. -% -% |#1| is the name of the node which will be created; -% |#2| and |#3| are the coordinates of one of the corner of the rectangle; -% |#4| and |#5| are the coordinates of the opposite corner. -% \begin{macrocode} -\cs_new_protected:Npn \@@_pgf_rect_node:nnnnn #1 #2 #3 #4 #5 +\bool_if:NT \c_@@_obsolete_environments_bool { - \begin { pgfscope } - \pgfset + \NewDocumentEnvironment { pNiceArrayC } { } { - outer~sep = \c_zero_dim , - inner~sep = \c_zero_dim , - minimum~size = \c_zero_dim + \int_zero:N \l_@@_last_col_int + \pNiceArray } - \pgftransformshift { \pgfpoint { 0.5 * ( #2 + #4 ) } { 0.5 * ( #3 + #5 ) } } - \pgfnode - { rectangle } - { center } - { - \vbox_to_ht:nn - { \dim_abs:n { #5 - #3 } } - { - \vfill - \hbox_to_wd:nn { \dim_abs:n { #4 - #2 } } { } - } + { \endpNiceArray } + \NewDocumentEnvironment { bNiceArrayC } { } + { + \int_zero:N \l_@@_last_col_int + \bNiceArray + } + { \endbNiceArray } + \NewDocumentEnvironment { BNiceArrayC } { } + { + \int_zero:N \l_@@_last_col_int + \BNiceArray } - { #1 } - { } - \end { pgfscope } - } -% \end{macrocode} -% -% \medskip -% The command |\@@_pgf_rect_node:nnn| is a variant of |\@@_pgr_rect_node:nnnn|: -% it takes two \textsc{pgf} points as arguments instead of the four dimensions -% which are the coordinates. -% \begin{macrocode} -\cs_new_protected:Npn \@@_pgf_rect_node:nnn #1 #2 #3 - { - \begin { pgfscope } - \pgfset + { \endBNiceArray } + \NewDocumentEnvironment { vNiceArrayC } { } { - outer~sep = \c_zero_dim , - inner~sep = \c_zero_dim , - minimum~size = \c_zero_dim + \int_zero:N \l_@@_last_col_int + \vNiceArray } - \pgftransformshift { \pgfpointscale { 0.5 } { \pgfpointadd { #2 } { #3 } } } - \pgfpointdiff { #3 } { #2 } - \pgfgetlastxy \l_tmpa_dim \l_tmpb_dim - \pgfnode - { rectangle } - { center } - { - \vbox_to_ht:nn - { \dim_abs:n { \l_tmpb_dim } } - { \vfill \hbox_to_wd:nn { \dim_abs:n { \l_tmpa_dim } } { } } + { \endvNiceArray } + \NewDocumentEnvironment { VNiceArrayC } { } + { + \int_zero:N \l_@@_last_col_int + \VNiceArray } - { #1 } - { } - \end { pgfscope } + { \endVNiceArray } + \NewDocumentEnvironment { pNiceArrayRC } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \pNiceArray + } + { \endpNiceArray } + \NewDocumentEnvironment { bNiceArrayRC } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \bNiceArray + } + { \endbNiceArray } + \NewDocumentEnvironment { BNiceArrayRC } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \BNiceArray + } + { \endBNiceArray } + \NewDocumentEnvironment { vNiceArrayRC } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \vNiceArray + } + { \endvNiceArray } + \NewDocumentEnvironment { VNiceArrayRC } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \VNiceArray + } + { \endVNiceArray } + \NewDocumentEnvironment { NiceArrayCwithDelims } { } + { + \int_zero:N \l_@@_last_col_int + \NiceArrayWithDelims + } + { \endNiceArrayWithDelims } + \NewDocumentEnvironment { NiceArrayRCwithDelims } { } + { + \int_zero:N \l_@@_last_col_int + \int_zero:N \l_@@_first_row_int + \NiceArrayWithDelims + } + { \endNiceArrayWithDelims } } % \end{macrocode} % +% % % \vspace{1cm} % \section{History} @@ -9060,6 +9148,13 @@ version 2005/12/01 or later. % The code of \pkg{nicematrix} no longer uses Tikz but only \textsc{pgf}. By % default, Tikz is \emph{not} loaded by \pkg{nicematrix}. % +% \subsection*{Changes between versions 3.12 and 3.13} +% +% Correction of a bug (question 60761504 on |stakoverflow|). +% +% Best error messages when the user uses |&| or |\\| when |light-syntax| is in +% force. +% % \PrintIndex % % \tableofcontents diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf index fe0d364d95..8cddffc1b2 100644 Binary files a/macros/latex/contrib/nicematrix/nicematrix.pdf and b/macros/latex/contrib/nicematrix/nicematrix.pdf differ diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README index 382247cd44..4ef0694918 100644 --- a/macros/luatex/generic/luatexja/README +++ b/macros/luatex/generic/luatexja/README @@ -1,4 +1,4 @@ -The LuaTeX-ja Package 20200301.0 +The LuaTeX-ja Package 20200323.0 -------------------------------- Copyright (c) 2011--2020 The LuaTeX-ja project License: modified BSD (see COPYING) @@ -22,9 +22,10 @@ Installation 0. Please make sure that your TeX distribution is up-to-date. This version of LuaTeX-ja requires - - LuaTeX 1.07.0 (or later) + - LuaTeX 1.10.0 (or later) - luaotfload (v3.1 or later recommended) - adobemapping (Adobe CMap files) + - LaTeX 2020-02-02 patch level 5 or later (if you want to use with LaTeX) - everysel package - etoolbox package - ltxcmds package @@ -32,20 +33,21 @@ Installation - atbegshi package - filehook package - stfloats package - - IPAex fonts (http://ipafont.ipa.go.jp/) + - Harano Aji fonts (https://github.com/trueroad/HaranoAjiFonts) + more specifically, HaranoAjiMincho-Regular and HaranoAjiGothic-Medium Using LuaTeX-ja with LuaHBTeX is not well tested. One might be able to typeset documents without an error, but with some unwanted results. -1. If you are using TeX Live 2019, you can install LuaTeX-ja via tlmgr. +1. If you are using TeX Live 2020, you can install LuaTeX-ja via tlmgr. 2. If you must/want to install manually: a. Download the source archive from CTAN, - or tagged as 20200301.0 in the Git repository by + or tagged as 20200323.0 in the Git repository by + ;a=snapshot;h=refs/tags/20200323.0;sf=tgz> b. Extract the archive and process following three files by LuaLaTeX to generate classes for Japanese typesetting: @@ -93,4 +95,4 @@ Notes * src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use. -Last commit date: Sun Mar 1 09:56:08 2020 +0900 +Last commit date: Mon Mar 23 07:51:46 2020 +0900 diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf index f4f37cabfb..c850b984ca 100644 Binary files a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf and b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf differ diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf index 0687d280bb..e82c5aae28 100644 Binary files a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf and b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf differ diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx index 87654172e7..1cf7ea28d7 100644 --- a/macros/luatex/generic/luatexja/doc/luatexja.dtx +++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx @@ -505,8 +505,6 @@ By default, \LuaTeX-ja uses Japanese fonts to typeset Greek and Cyrillic letters From version~20150906.0, characters which belongs both ISO~8859-1 and JIS~X~0208, such as \P~and~\S, are now typeset in alphabetic fonts. -If you are using \LaTeXe\ prior to 2017/01/01, these characters are not typeset correctly -without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package. % %<*ja> \paragraph{ギリシャ文字・キリル文字とISO~8859-1の記号} @@ -523,9 +521,7 @@ without the \cs{fontspec} (and~\Pkg{luatexja-fontspec}) package. また,\P,~\S といったISO~8859-1の上位領域とJIS~X~0208の共通部分の文字は バージョン20150906.0から標準で欧文扱いとなった.\LaTeXe\ 2017/01/01以降では 標準でTUエンコーディングのLatin Modernフォントが使われるので, -特に何もせずソース中にそのまま記述してもこれらの文字が出力される -\footnote{\LaTeXe\ 2017/01/01より前では,ソース中に直接記述しても - \Pkg{fontspec}パッケージ(および\Pkg{luatexja-fontspec}パッケージ)非読み込みの状態では出力されない.}. +特に何もせずソース中にそのまま記述してもこれらの文字が出力される. 和文扱いで出力するには \verb+\ltjjachar`§+ のように \cs{ltjjachar} 命令 を使えばよい. % @@ -652,15 +648,29 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}. %The following packages are needed for the \LuaTeX-ja\ package. %\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である. \begin{itemize} -\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.07.0 (or later) +\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.10.0 (or later) \item recent \href{https://github.com/latex3/luaotfload}{\Pkg{luaotfload}} (v3.1 or later recommended) \item \Pkg{adobemapping} (Adobe cmap and pdfmapping files) +\item \LaTeX\ 2020-02-02 patch level 5 or later +% (if you want to use \LuaTeX-ja with \LaTeXe) +% (\LaTeX 下で\LuaTeX-jaを使う場合) \item \href{https://github.com/josephwright/etoolbox/}{\Pkg{etoolbox}}, - \Pkg{everysel} (if you want to use \LuaTeX-ja with \LaTeXe) + \Pkg{everysel} +% (if you want to use \LuaTeX-ja with \LaTeXe) +% (\LaTeX 下で\LuaTeX-jaを使う場合) \item \Pkg{ltxcmds}, \Pkg{pdftexcmds}, \Pkg{filehook}, \Pkg{atbegshi} \item \href{https://github.com/wspr/fontspec/}{\Pkg{fontspec}} v2.7c (or later) -%\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) -%\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} +%%% %\item \emph{IPAex fonts} (\url{http://ipafont.ipa.go.jp/}) +%%% %\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})} +%<*en> +\item \emph{Harano Aji fonts} (\url{https://github.com/trueroad/HaranoAjiFonts})\\ + More specifically, HaranoAjiMincho-Regular~and~HaranoAjiGothic-Medium. +% +%<*ja> +\item \emph{原ノ味フォント(\url{https://github.com/trueroad/HaranoAjiFonts})}\\ +\LuaTeX-jaの最低限の動作には原ノ味明朝Regular~(HaranoAjiMincho-Regular)と +原ノ味角ゴシックMedium~(HaranoAjiGothic-Medium)があれば十分である. +% \end{itemize} %<*en> @@ -668,26 +678,25 @@ Now \LuaTeX-ja is available from CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and the following distributions: \begin{itemize} - \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection - \item \href{https://www.tug.org/texlive/}{\TeX\ Live} (in \texttt{texmf-dist/tex/luatex/luatexja}) + \item \href{https://www.tug.org/texlive/}{\TeX~Live} (in \texttt{texmf-dist/tex/luatex/luatexja}) \item \href{http://w32tex.org/}{W32\TeX}\ (in \texttt{luatexja.tar.xz}) + \item MiK\TeX\ (in \texttt{luatexja.tar.lzma}); see the next subsection \end{itemize} -IPAex fonts are also available in these distributions. +Harano Aji fonts are available in \TeX~Live and MiK\TeX. % %<*ja> 現在,\LuaTeX-jaはCTAN (\texttt{macros/luatex/generic/luatexja})に収録されている他, 以下のディストリビューションにも収録されている: \begin{itemize} \item MiK\TeX\ (\texttt{luatexja.tar.lzma}) - \item \TeX\ Live (\texttt{texmf-dist/tex/luatex/luatexja}) + \item \TeX~Live (\texttt{texmf-dist/tex/luatex/luatexja}) \item W32\TeX\ (\texttt{luatexja.tar.xz}) \end{itemize} -これらのディストリビューションはIPAexフォントも収録している. -W32\TeX においてはIPAexフォントは \texttt{luatexja.tar.xz} 内にある. +\TeX~Live, MiK\TeX は原ノ味フォントも収録している. % %<*en> -\paragraph{Using \LuaTeX-ja with LuaHB\TeX} +\paragraph{HarfBuzz~and~\LuaTeX-ja} Using \LuaTeX-ja with LuaHB\TeX (\LuaTeX\ integrated with \href{https://github.com/harfbuzz/harfbuzz}{HarfBuzz}) is not well tested. Maybe documents can typeset without an error, @@ -698,13 +707,12 @@ Especially, by specifying \texttt{Renderer=Harfbuzz}~etc.\ (\Pkg{fontspec}) or~{mode=harf} (otherwise). % %<*ja> -\paragraph{LuaHB\TeX 下での\LuaTeX-jaの使用} -現時点では,LuaHB\TeX 下での\LuaTeX-jaの使用は十分にテストされていない. +\paragraph{HarfBuzzと\LuaTeX-ja} +現時点では,HarfBuzzの機能を用いたときの\LuaTeX-jaの使用は十分にテストされていない. エラーが発生せずにタイプセットできるかもしれないが,特に縦組時や \cs{CID}などで意図しない結果となりうる可能性が大きい. - -特に,\texttt{Renderer=Harfbuzz}等(\Pkg{fontspec})や\texttt{mode=harf}指定(それ以外)を用いて -\emph{和文フォントに対してHarfBuzzを用いることは推奨しない}. +特に,\emph{\texttt{Renderer=Harfbuzz}等(\Pkg{fontspec})や\texttt{mode=harf}指定(それ以外)を通じて + 和文フォントに対してHarfBuzzを用いることは推奨しない}. % %\paragraph{Manual installation} @@ -878,24 +886,20 @@ and finally delete the temporary directory. \item %<*en> -Note that when \LuaTeX-ja is loaded in plain \LuaTeX~nor \LaTeX~2019-10-01, +Note that when \LuaTeX-ja is loaded in plain \LuaTeX, we cannot use color specification on font loading, such as \begin{lstlisting} \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive - \DeclareFontShape{TU}{...}{...}{...}{<-> lmsans10-boldoblique:color=005599}{} % NFSS - \setmainfont{texgyretermes}[Color=220022] % fontspec \end{lstlisting} This is because codes for shifting baseline in math mode (\LuaTeX-ja) collide with and prevents loading codes for font color (\Pkg{luaotfload}) in these environments. -\emph{We recommend to use \LaTeX\ 2020-02-02}, since we can avoid this collision in \LaTeX\ 2020-02-02. +\emph{We recommend to use \LaTeX\ 2020-02-02 (or later)}, since we can avoid this collision in there. % %<*ja> -なお,\LuaTeX-jaをplain~\LuaTeX や\LaTeX\ 2019-10-01以前の環境下で用いる場合, +なお,\LuaTeX-jaをplain~\LuaTeX で用いる場合, 以下のような\emph{フォント読み込み時の色指定}(\cs{textcolor}命令ではなく!)\emph{は利用できない}. \begin{lstlisting} \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive - \DeclareFontShape{TU}{...}{...}{...}{<-> lmsans10-boldoblique:color=005599}{} % NFSS - \setmainfont{texgyretermes}[Color=220022] % fontspec \end{lstlisting} これは,\LuaTeX-jaによる数式内のベースライン補正(\ref{ssec:baseline}節)のコードが \Pkg{luaotfload}パッケージのフォント色処理のコードと衝突するためである. @@ -924,12 +928,12 @@ codes for font color (\Pkg{luaotfload}) in these environments. \textbf{direction}& \textbf{classification}&\textbf{font name}&\bfseries ``10\,pt''&\bfseries ``7\,pt''&\bfseries ``5\,pt''\\\midrule \smash{\raisebox{-1ex}{\emph{yoko} (horizontal)}}& -\emph{mincho}&IPAex Mincho&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&\emph{gothic}&IPAex Gothic&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +\emph{mincho}&HaranoAjiMincho-Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-1ex}{\emph{tate} (vertical)}}& -\emph{mincho}&IPAex Mincho&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&\emph{gothic}&IPAex Gothic&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +\emph{mincho}&HaranoAjiMincho-Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&\emph{gothic}&HaranoAjiGothic-Medium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} @@ -941,12 +945,12 @@ codes for font color (\Pkg{luaotfload}) in these environments. \toprule \emph{組方向}&\emph{字体}&\emph{フォント名}&\bfseries``10\,pt''&\bfseries``7\,pt''&\bfseries``5\,pt''\\\midrule \smash{\raisebox{-0.7\zh}{横組}}& -明朝体&IPAex明朝&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ -&\textgt{ゴシック体}&IPAexゴシック&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ +明朝体&原ノ味明朝Regular&\cs{tenmin}&\cs{sevenmin}&\cs{fivemin}\\ +&\textgt{ゴシック体}&原ノ味角ゴシックMedium&\cs{tengt} &\cs{sevengt} &\cs{fivegt}\\ \midrule \smash{\raisebox{-0.7\zh}{縦組}}& -明朝体&IPAex明朝&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ -&\textgt{ゴシック体}&IPAexゴシック&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ +明朝体&原ノ味明朝Regular&\cs{tentmin}&\cs{seventmin}&\cs{fivetmin}\\ +&\textgt{ゴシック体}&原ノ味角ゴシックMedium&\cs{tentgt} &\cs{seventgt} &\cs{fivetgt}\\ \bottomrule \end{tabular} \end{center} @@ -958,7 +962,7 @@ codes for font color (\Pkg{luaotfload}) in these environments. one inputs \texttt{luatexja.sty} (Subsection~\ref{ssec:cfg}). % %<*ja> -\item 標準和文フォントやJFMをIPAexフォントから別のものに置き換えるには, +\item 標準和文フォントやJFMを原ノ味フォントから別のものに置き換えるには, \cs{ltj@stdmcfont}等を\texttt{luatexja.sty}読み込み\emph{前}に定義すればよい. \ref{ssec:cfg}節を参照. % @@ -1056,8 +1060,8 @@ By default, the following fonts are used for these two families. \begin{tabular}{lllll} \toprule \textbf{classification}&\textbf{family}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\textbf{scale}\\\midrule -\emph{mincho} (明朝体)&\texttt{mc}&IPAexMincho&IPAexGothic&0.962216\\ -\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&IPAexGothic&IPAexGothic&0.962216\\ +\emph{mincho} (明朝体)&\texttt{mc}&HaranoAjiMincho-Regular&HaranoAjiGothic-Medium&0.962216\\ +\emph{gothic} (\textgt{ゴシック体})&\texttt{gt}&HaranoAjiGothic-Medium&HaranoAjiGothic-Medium&0.962216\\ \bottomrule \end{tabular} \end{center} @@ -1091,8 +1095,8 @@ By default, the following fonts are used for these two families. \begin{tabular}{lllll} \toprule \emph{字体}&\emph{ファミリ}&\textbf{\cs{mdseries}}&\textbf{\cs{bfseries}}&\emph{スケール}\\\midrule -明朝体&\texttt{mc}&IPAex明朝&IPAexゴシック&0.962216\\ -\textgt{ゴシック体}&\texttt{gt}&IPAexゴシック&IPAexゴシック&0.962216\\ +明朝体&\texttt{mc}&原ノ味明朝Regular&原ノ味角ゴシックMedium&0.962216\\ +\textgt{ゴシック体}&\texttt{gt}&原ノ味角ゴシックMedium&原ノ味角ゴシックMedium&0.962216\\ \bottomrule \end{tabular} \end{center} @@ -1293,15 +1297,6 @@ For \LaTeXe, \LuaTeX-ja adopted most of the font selection system of \pLaTeXe\ ( %<*ja> \LaTeX で用いる際には,\pLaTeXe\ (\texttt{plfonts.dtx})用のフォント選択機構の大部分を流用している. % -\begin{itemize} -%<*en> -\item Commands \cs{fontfamily}, \cs{fontseries}, and \cs{fontshape} can be used to change - attributes of Japanese fonts. -% -%<*ja> -\item 和文フォントの属性を変更するには,\cs{fontfamily}, \cs{fontseries}, \cs{fontshape} を使用する. - もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある. -% %<*en> \begin{center}\small @@ -1314,7 +1309,7 @@ Alphabetic fonts Japanese fonts &\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape} &\cs{usekanji}\\ -both&---&--&\cs{fontseries}&\cs{fontshape}&---\\ +both&---&--&\cs{fontseries}&\cs{fontshape}$^*$&---\\ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \bottomrule \end{tabular} @@ -1324,22 +1319,42 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \begin{center}\small \begin{tabular}{llllll} \toprule -&\emph{エンコーディング}&\emph{ファミリ}&\emph{シリーズ}&\emph{シェープ}&\emph{選択}\\\midrule +&\emph{エンコーディング}&\emph{ファミリ}&\emph{シリーズ}&\emph{シェイプ}&\emph{選択}\\\midrule \emph{欧文} &\cs{romanencoding}&\cs{romanfamily}&\cs{romanseries}&\cs{romanshape} &\cs{useroman}\\ \emph{和文} &\cs{kanjiencoding}&\cs{kanjifamily}&\cs{kanjiseries}&\cs{kanjishape} &\cs{usekanji}\\ -\emph{両方}&---&--&\cs{fontseries}&\cs{fontshape}&---\\ +\emph{両方}&---&--&\cs{fontseries}&\cs{fontshape}$^*$&---\\ \emph{自動選択}&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ \bottomrule \end{tabular} \end{center} % +\begin{itemize} +%<*en> +\item \cs{fontfamily}, \cs{fontseries}, and~\cs{fontshape} try to change + attributes of Japanese fonts, as well as those of alphabetic fonts. + Of course, \cs{selectfont} is needed to select current text fonts. + + Note that \cs{fontshape} always changes current alphabetic font shape, + but it does \emph{not} change current Japanese font shape if + the target shape is unavailable for current Japanese encoding/family/series. + For the detail, see Subsection~\ref{ssec:nfsspat}. +% +%<*ja> +\item \cs{fontfamily}, \cs{fontseries}, \cs{fontshape} は欧文・和文フォント両方の属性を変更しようとする. + もちろん,それらを実際に反映させるには手動で \cs{selectfont} を実行する必要がある. + + なお,\cs{fontshape\{\}}は常に欧文フォントのシェイプを設定するが, + もしも現在の和文フォントファミリ・シリーズで要求されたシェイプが利用不能だった場合には,和文フォントのシェイプは変更しない. + 詳細は\ref{ssec:nfsspat}節を参照すること. +% + %<*en> - \verb+\fontencoding{+\verb+}+ changes the encoding of alphabetic fonts +\item \verb+\fontencoding{+\verb+}+ changes the encoding of alphabetic fonts or Japanese fonts depending on the argument. For example, \verb+\fontencoding{JY3}+ changes the encoding of Japanese fonts to \texttt{JY3}, and \verb+\fontencoding{T1}+ changes the encoding of @@ -1349,7 +1364,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\ For the detail, see Subsection~\ref{ssec:nfsspat}. % %<*ja> - ここで,\verb+\fontencoding{+\verb+}+ は,引数により和文側か欧文 +\item ここで,\cs{fontencoding\{\}}は,引数により和文側か欧文 側かのどちらかのエンコーディングを変更する.例えば, \verb+\fontencoding{JY3}+ は和文フォントのエンコーディングを \texttt{JY3}に変更し,\verb+\fontencoding{T1}+ は欧文フォント側を @@ -3987,7 +4002,8 @@ For example, \def\ltj@stdgtfont{IPAGothic} \end{lstlisting} makes that IPA~Mincho and IPA~Gothic will be used as default Japanese fonts, instead of -IPAex~Mincho and IPAex~Gothic. +Harano Aji fonts. +%IPAex~Mincho and IPAex~Gothic. This feature is intended for classes which use special JFMs \footnote{This is because commands has \texttt{@} in their names.}. @@ -6476,13 +6492,75 @@ to . See Subsection~\ref{ssec:fontfamilycmd} for detail. 和文,\emph{もしくは両方})をに変更する.詳細は\ref{ssec:fontfamilycmd}節を参照すること. % +\item[\cs{fontshape}\{\}\textrm{, }\cs{fontshapeforce}\{\}] +%<*en> +As in \LaTeXe, this command changes current alphabetic font shape +according to shape change rules. + +Traditionally, \cs{fontshape} changes also current Japanese font shape always. +However, this leads a lot of \LaTeX\ font warning like +\begin{verbatim} + Font shape `JY3/mc/m/it' undefined + using `JY3/mc/m/n' instead on .... +\end{verbatim} +when \cs{itshape} is called, +because almost all Japanese fonts only have shape ``\texttt{n}'', and \cs{itshape} calls \cs{fontshape}. + +\LuaTeX-ja~20200323.0 change the behavior. Namely, +\cs{fontshape\{\}}~and~\cs{fontshapeforce\{\}} change current Japanese font shape, only if +the required shape (according to shape changing rules) or is avaliable in current Japanese font family/series. +When this is not the case, an info such as +\begin{verbatim} + Kanji font shape JY3/mc/m/it' undefined + No change on ... +\end{verbatim} +is issued instead of a warning. +% +%<*ja> +元々の\LaTeXe におけるものと同様に,このコマンドは現在の欧文フォントシェイプを +\cs{DeclareFontShapeChangeRule}によるシェイプ更新規則によって変更する. + +伝統的には,\cs{fontshape}は無条件に和文フォントシェイプも変更した.しかし,例えば多くの和文フォントは +シェイプが``\texttt{n}''しか持たないことと\cs{itshape}が\cs{fontshape}を呼び出すことから, +\begin{verbatim} + Font shape `JY3/mc/m/it' undefined + using `JY3/mc/m/n' instead on .... +\end{verbatim} +といった警告をもたらしてしまっていた. + +一方,\LuaTeX-ja 20200323.0以降では, +\cs{fontshape\{\}}, \cs{fontshapeforce\{\}}が和文フォントシェイプを更新するのは, +シェイプ更新規則に基づいた値やの少なくとも一つが現在の和文フォントファミリ・シリーズで利用可能なときに限られる. +どちらでもなく,和文フォントシェイプが変更されなかった場合には +\begin{verbatim} + Kanji font shape JY3/mc/m/it' undefined + No change on ... +\end{verbatim} +というinfo(警告でなく)を出力する. +% + +\item[\cs{kanjishape}\{\}\textrm{, }\cs{kanjishapeforce}\{\}] +%<*en> +\cs{kanjishape\{\}} changes current Japanese font shape according to shape change rules, and +\cs{kanjishapeforce\{\}} changes current Japanese font shape to , regardless of the rules. +Hence \cs{kanjishape\{it\}} produces a warning +\begin{verbatim} + Font shape `JY3/mc/m/it' undefined + using `JY3/mc/m/n' instead on .... +\end{verbatim} +which is not produced by \cs{fontshape\{it\}}. +% +%<*ja> + ... +% + \begin{figure}[!tb] \begin{LTXexample}[pos=b] \DeclareKanjiFamily{JY3}{edm}{} -\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis;}{} -\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*KozGoPr6N-Regular:jfm=ujis}{} -\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*KozGoPr6N-Medium:jfm=ujis}{} +\DeclareFontShape{JY3}{edm}{m}{n} {<-> s*KozMinPr6N-Regular:jfm=ujis}{} +\DeclareFontShape{JY3}{edm}{m}{fb} {<-> s*KozGoPr6N-Regular:jfm=ujis;color=003FFF}{} +\DeclareFontShape{JY3}{edm}{m}{fb2} {<-> s*KozGoPr6N-Regular:jfm=ujis;color=FF1900}{} \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb}{ "4E00-"67FF,{-2}-{-2}} \DeclareAlternateKanjiFont{JY3}{edm}{m}{n}{JY3}{edm}{m}{fb2}{"6800-"9FFF} {\kanjifamily{edm}\selectfont @@ -6862,11 +6940,11 @@ will not be embedded in the output PDF file. See Subsection~\ref{ssec:psft}. \begin{figure}[!tb] \begin{LTXexample}[width=0.25\textwidth] \jfontspec[ - YokoFeatures={FakeBold=3}, TateFeatures={FakeBold=6}, + YokoFeatures={Color=FF1900}, TateFeatures={Color=003FFF}, TateFont=KozGoPr6N-Regular ]{KozMinPr6N-Regular} \hbox{\yoko 横組のテスト}\hbox{\tate 縦組のテスト} -\addjfontfeatures{FakeBold=0} +\addjfontfeatures{Color=00AF00} \hbox{\yoko 横組}\hbox{\tate 縦組} \end{LTXexample} %\caption{\texttt{TateFeatures} 等の使用例} @@ -6912,9 +6990,9 @@ A demonstrarion is shown in \autoref{fig:yokotate-fontspec}. \begin{LTXexample}[pos=b] \jfontspec[ AltFont={ - {Range="4E00-"67FF, Font=KozGoPr6N-Medium}, - {Range="6800-"9EFF, FakeBold=4}, - {Range="3040-"306F, Font=KozGoPr6N-Regular}, + {Range="4E00-"67FF, Font=KozGoPr6N-Regular, Color=003FFF}, + {Range="6800-"9EFF, Color=FF1900}, + {Range="3040-"306F, Font=KozGoPr6N-Regular, Color=35A16B}, } ]{KozMinPr6N-Regular} 日本国民は、正当に選挙された国会における代表者を通じて行動し、われらとわれらの子孫のために、 @@ -6976,7 +7054,7 @@ For example, \begin{lstlisting} AltFont = { { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, - Range="3000-"30FF, BoldFeatures={FakeBold=1} } + Range="3000-"30FF, BoldFeatures={Color=FF1900} } } \end{lstlisting} does \emph{not} work. Instead, one have to write @@ -6985,7 +7063,7 @@ UprightFeatures = { AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, }, BoldFeatures = { - AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } }, + AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=FF1900 } }, } \end{lstlisting} @@ -7008,7 +7086,7 @@ has no effect, because a color specification is already done in \begin{lstlisting} AltFont = { { Font=HogeraMin-Light, BoldFont=HogeraMin-Bold, - Range="3000-"30FF, BoldFeatures={FakeBold=1} } + Range="3000-"30FF, BoldFeatures={Color=FF1900} } } \end{lstlisting} のように指定することは出来ず, @@ -7017,7 +7095,7 @@ UprightFeatures = { AltFont = { { Font=HogeraMin-Light, Range="3000-"30FF, } }, }, BoldFeatures = { - AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, FakeBold=1 } }, + AltFont = { { Font=HogeraMin-Bold, Range="3000-"30FF, Color=FF1900 } }, } \end{lstlisting} のように指定しなければならない. @@ -8060,17 +8138,15 @@ There is not rounded gothic family in Kozuka fonts. %<*en> Hiragino fonts (except Hiragino~Mincho~W2) are bundled with Mac OS~X 10.5 or later. -Some editions of a Japanese word-processor ``一太郎2012'' includes Hiragino ProN fonts. Note that fonts for gothic extra~bold (HiraKakuStd[N]-W8) only contains characters in Adobe-Japan1-3 character collection, while others contains those in Adobe-Japan1-5 character collection. % %<*ja> -ヒラギノフォントは,Mac OS~X以外にも,一太郎2012の上位エディションにもバンドルされている. 極太ゴシック体として用いるヒラギノ角ゴW8は,Adobe-Japan1-3の範囲しかカバーしていない Std/StdNフォントであり,その他はAdobe-Japan1-5対応である. -なお,明朝体細字として用いるヒラギノ明朝体W2はOS~Xや一太郎にはバンドルされておらず, +なお,明朝体細字として用いるヒラギノ明朝体W2はOS~Xにはバンドルされておらず, 別途購入する必要がある. % \begin{center}\small diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty index 050f78e915..c561df00a6 100644 --- a/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty +++ b/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty @@ -1,5 +1,5 @@ % luatexja-preset.sty -\ProvidesPackage{luatexja-preset}[2020/01/26 Japanese font presets] +\ProvidesPackage{luatexja-preset}[2020/03/19 Japanese font presets] \RequirePackage{expl3,l3keys2e} \RequirePackage{luatexja} @@ -359,7 +359,7 @@ __custom = false, __office = false, __noembed = true, } -\keys_set:nn {luatexja-preset} { ipaex } +\keys_set:nn {luatexja-preset} { haranoaji } %% old: ipaex \ProcessKeysOptions { luatexja-preset } \@ifpackageloaded{luatexja-fontspec}{ \bool_if:NT \g__ltjpreset_nfssonly_bool diff --git a/macros/luatex/generic/luatexja/src/ltj-plain.sty b/macros/luatex/generic/luatexja/src/ltj-plain.sty index eb78843f47..16e71e1060 100644 --- a/macros/luatex/generic/luatexja/src/ltj-plain.sty +++ b/macros/luatex/generic/luatexja/src/ltj-plain.sty @@ -23,8 +23,10 @@ %! ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ % LuaTeX-ja macros against plain TeX -\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi -\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi +\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi +\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi +%\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi +%\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi \newread\ltj@@cfgread diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty index e3f36d1e45..0af38a01af 100644 --- a/macros/luatex/generic/luatexja/src/luatexja.sty +++ b/macros/luatex/generic/luatexja/src/luatexja.sty @@ -41,7 +41,7 @@ \ProcessOptions\relax \fi % %%%% VERSION -\def\LuaTeXjaversion{20200301.0} +\def\LuaTeXjaversion{20200323.0} \directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs diff --git a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty index 3efb01116b..29f38b367a 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty @@ -3,10 +3,12 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjdefs}[2020/02/27 Default font settings of LuaTeX-ja] +\ProvidesPackage{lltjdefs}[2020/03/16 Default font settings of LuaTeX-ja] -\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi -\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi +\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{file:HaranoAjiMincho-Regular.otf}\fi +\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{file:HaranoAjiGothic-Medium.otf}\fi +%\ifdefined\ltj@stdmcfont\else\def\ltj@stdmcfont{IPAExMincho}\fi +%\ifdefined\ltj@stdgtfont\else\def\ltj@stdgtfont{IPAExGothic}\fi \ifdefined\ltj@stdyokojfm\else\def\ltj@stdyokojfm{ujis}\fi \ifdefined\ltj@stdtatejfm\else\def\ltj@stdtatejfm{ujisv}\fi \InputIfFileExists{luatexja.cfg}{% diff --git a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty index cfa8e2343a..69ab7441c2 100644 --- a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty +++ b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{lltjfont}[2020/03/01 Patch to NFSS2 for LuaTeX-ja] +\ProvidesPackage{lltjfont}[2020/03/20 Patch to NFSS2 for LuaTeX-ja] %% patching \DeclareTextComposite \def\ltj@chardef@text@cmd#1{% @@ -571,6 +571,8 @@ \newcount\ltj@@latex@plv \ltj@@latex@plv=-1 \ifdefined\@rmfamilyhook %%%% LaTeX 2020-02-02 +\newif\if@shape@roman@kanji +%%%%%% 2020-02-02 patchlevel detection \ifx\@forced@seriestrue\@undefined % 2020-02-02 pl0--2 \@latex@error {Please update LaTeX2e!^^J\space\space @@ -580,12 +582,11 @@ \ltj@@latex@plv=300 \unless\ifx\series@maybe@drop@one@m@x\@undefined % pl5 + develop \ltj@@latex@plv=501 - \else - \unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5 - \ltj@@latex@plv=500 - \fi - \fi + \else\unless\ifx\series@maybe@drop@one@m\@undefined % patch level 5 + \ltj@@latex@plv=500 + \fi\fi \fi +%%%%%% \def\merge@kanji@series#1{% \expandafter\expandafter\expandafter @@ -595,17 +596,17 @@ \@nil } -\ifnum\ltj@@latex@plv>500 % pl5 + develop +\ifnum\ltj@@latex@plv>500 % !!! pl5 + develop \def\set@target@series@kanji#1{% \edef\k@series{#1}% \series@maybe@drop@one@m\k@series\k@series } -\else\ifnum\ltj@@latex@plv>300 % pl5 +\else\ifnum\ltj@@latex@plv>300 % !!! pl5 \def\set@target@series@kanji#1{% \edef\k@series{#1}% \expandafter\series@maybe@drop@one@m\expandafter{\k@series}\k@series } -\else % pl 3, 4 +\else % !!! pl 3, 4 \def\set@target@series@kanji#1{% \edef\k@series{#1}% \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}% @@ -643,7 +644,11 @@ \def\merge@kanji@shape@#1#2#3\@nil{% \def\reserved@a{#3}% \ifx\reserved@a\@empty - \edef\k@shape{#2}% + \if@shape@roman@kanji + \set@safe@kanji@shape{#2}{}% + \else + \edef\k@shape{#2}% + \fi \else \begingroup\let\f@encoding\k@encoding\let\f@family\k@family \maybe@load@fontshape\endgroup @@ -655,13 +660,31 @@ \edef\k@shape{#2}% {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% \else - \edef\k@shape{#3}% - {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \if@shape@roman@kanji + \set@safe@kanji@shape{#3}% + {{\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}}% + \else + \edef\k@shape{#3}% + {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}% + \fi \fi \fi \fi } -\ifnum\ltj@@latex@plv=300 % pl3, 4 +\def\set@safe@kanji@shape#1#2{% + \edef\reserved@b{\k@encoding /\k@family /\k@series/#1}% + \ifcsname \reserved@b\endcsname + \edef\k@shape{#1}% + #2% + \else + \@kanji@shape@nochange@info{\reserved@b}% + \fi +} +\def\@kanji@shape@nochange@info#1{% + \@font@info{Kanji font shape `#1' undefined\MessageBreak + No change}% +} +\ifnum\ltj@@latex@plv=300 % !!! pl3, 4 \DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}} \DeclareRobustCommand\kanjiseries[1]{\merge@kanji@series{#1}} \DeclareRobustCommand\fontseries[1]{% @@ -670,7 +693,7 @@ \DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}} \DeclareRobustCommand\fontseriesforce[1]{% \edef\f@series{#1}\edef\k@series{#1}} -\else % pl 5 +\else % !!! pl 5 \DeclareRobustCommand\romanseries[1]{\@forced@seriesfalse\merge@font@series{#1}} \DeclareRobustCommand\kanjiseries[1]{\@forced@seriesfalse\merge@kanji@series{#1}} \DeclareRobustCommand\fontseries[1]{% @@ -683,10 +706,13 @@ \DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}} \DeclareRobustCommand\kanjishape[1]{\merge@kanji@shape{#1}} \DeclareRobustCommand\fontshape[1]{% - \merge@font@shape{#1}\merge@kanji@shape{#1}} + \@shape@roman@kanjitrue + \merge@font@shape{#1}\merge@kanji@shape{#1}% + \@shape@roman@kanjifalse +} \DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}} \DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}} -\DeclareRobustCommand\fontshapeforce[1]{\kanjishapeforce{#1}\romanshapeforce{#1}} +\DeclareRobustCommand\fontshapeforce[1]{\set@safe@kanji@shape{#1}{}\romanshapeforce{#1}} \DeclareRobustCommand\usekanji[4]{% \kanjiencoding{#1}\edef\k@family{#2}\edef\k@series{#3}\edef\k@shape{#4}% \selectfont\ignorespaces} @@ -718,8 +744,7 @@ \fi} \DeclareRobustCommand\normalfont{% \useroman\encodingdefault\familydefault\seriesdefault\shapedefault - \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault - \ignorespaces} + \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault} \let\reset@font\normalfont \ifdefined\@rmfamilyhook @@ -743,36 +768,49 @@ \patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} \patchcmd\update@series@target@value@kanji{\f@series}{\k@series}{}{} \def\@meta@family@list@kanji{\@elt{mc}\@elt{gt}\@elt{jtt}} -\DeclareRobustCommand\bfseries{% - \not@math@alphabet\bfseries\mathbf - \expand@font@defaults - \ifx\f@family\rmdef@ult \romanseries\bfseries@rm - \else\ifx\f@family\sfdef@ult \romanseries\bfseries@sf - \else\ifx\f@family\ttdef@ult \romanseries\bfseries@tt - \else \romanseries\bfdefault - \fi\fi\fi + +\expandafter\patchcmd\csname bfseries \endcsname{% + \let\bfseries@rm\bfdef@ult + \let\bfseries@sf\bfdef@ult + \let\bfseries@tt\bfdef@ult +}{% + \let\bfseries@rm\bfdef@ult + \let\bfseries@sf\bfdef@ult + \let\bfseries@tt\bfdef@ult + \let\bfseries@mc\bfdef@ult + \let\bfseries@gt\bfdef@ult + \let\bfseries@jtt\bfdef@ult +}{}{} +\expandafter\patchcmd\csname mdseries \endcsname{% + \let\mdseries@rm\mddef@ult + \let\mdseries@sf\mddef@ult + \let\mdseries@tt\mddef@ult +}{% + \let\mdseries@rm\mddef@ult + \let\mdseries@sf\mddef@ult + \let\mdseries@tt\mddef@ult + \let\mdseries@mc\mddef@ult + \let\mdseries@gt\mddef@ult + \let\mdseries@jtt\mddef@ult +}{}{} +\expandafter\patchcmd\csname bfseries \endcsname{\selectfont}% +{% \ifx\k@family\mcdef@ult \kanjiseries\bfseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\bfseries@gt \else\ifx\k@family\jttdef@ult\kanjiseries\bfseries@jtt \else \kanjiseries\bfdefault \fi\fi\fi - \selectfont -} -\DeclareRobustCommand\mdseries{% - \not@math@alphabet\mdseries\relax - \expand@font@defaults - \ifx\f@family\rmdef@ult \romanseries\mdseries@rm - \else\ifx\f@family\sfdef@ult \romanseries\mdseries@sf - \else\ifx\f@family\ttdef@ult \romanseries\mdseries@tt - \else \romanseries\mddefault - \fi\fi\fi + \selectfont +}{}{} +\expandafter\patchcmd\csname mdseries \endcsname{\selectfont}% +{% \ifx\k@family\mcdef@ult \kanjiseries\mdseries@mc \else\ifx\k@family\gtdef@ult \kanjiseries\mdseries@gt \else\ifx\k@family\jttdef@ult\kanjiseries\mdseries@jtt \else \kanjiseries\mddefault \fi\fi\fi \selectfont -} +}{}{} \appto\expand@font@defaults{% \edef\mcdef@ult{\mcdefault}% \edef\gtdef@ult{\gtdefault}% diff --git a/macros/luatex/latex/arabluatex/arabluatex.dtx b/macros/luatex/latex/arabluatex/arabluatex.dtx index 4d3fb48e01..735c95b3c7 100644 --- a/macros/luatex/latex/arabluatex/arabluatex.dtx +++ b/macros/luatex/latex/arabluatex/arabluatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -% Copyright (C) 2016--2020 Robert Alesssi +% Copyright (C) 2016--2020 Robert Alessi % % Please send error reports and suggestions for improvements to Robert % Alessi @@ -27,7 +27,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{arabluatex} %<*package> - [2020/03/15 v1.19 ArabTeX for LuaLaTeX] + [2020/03/23 v1.20 ArabTeX for LuaLaTeX] % % %<*driver> @@ -166,7 +166,7 @@ \babelfont{sf}{NewComputerModern Sans} \babelfont{tt}{NewComputerModern Mono} \usepackage{metalogox} -\usepackage{arabluatex}[2020/03/15] +\usepackage{arabluatex}[2020/03/23] \SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this \usepackage[nopar]{quran} \usepackage[noindex]{nameauth} @@ -269,7 +269,7 @@ % % \fi % -% \CheckSum{1014} +% \CheckSum{1059} % % \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 @@ -2187,7 +2187,7 @@ % environment must end with |\\|. % % \DescribeEnv{arabverse} The |arabverse| environment may take up to -% six optional \enquote*{named arguments} each of which is set using +% eight optional \enquote*{named arguments} each of which is set using % the syntax \meta{key}$=$\meta{value}, like so:---% % \iffalse %<*example> @@ -2369,6 +2369,20 @@ % warping may be even more perceptible in Roman than in Arabic % characters. % +% \DescribeMacro{\StretchBayt} \cs{StretchBayt}\verb+[true|false]+ +% \hfill\tcboxverb{Default: true}\\ +% \NEWfeature{v1.20} \cs{StretchBayt} takes one optional argument, +% either |true| or |false| and can be used to remove the stretching +% form lines of Arabic poetry. As a side effect, there will be more +% space between words, but this can be compensated by inserting double +% hyphens between letters (on this technique, see +% \vref{sec:tatwil}). Should it be desired to extend further the +% strokes, four hyphens may be inserted (|----|), viz. a multiple of +% two. \cs{StretchBayt} may be used at any point of the document, even +% between two subsequent lines of poetry. Note that +% \cs{StretchBayt}|[false]| may require to carefuly adjust the width +% of the hemistichs to avoid overlapping. +% % \paragraph{Footnotes} % Footnotes are not set by default inside the \cs{bayt} command, but % there are two easy ways to have them printed. @@ -2429,13 +2443,16 @@ \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA tahlik 'asaN_A wa-ta^gammali}\\ \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda - rasmiN dAsiriN min mu`awwali}\\ + rasmiN dArisiN min mu`awwali}\\ \end{linenumbers*} \end{arabverse} \end{code} % \iffalse % % \fi% +% +% \medskip +% \noindent\textbf{\cs{StretchBayt}|[true]| (Default)}:--- % \begin{arab}[fullvoc] % qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: % \end{arab} @@ -2451,12 +2468,11 @@ % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA % ka-'anna-hu .habbu fulfuli}\\ % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A -% samurAti -% 'l-.hayyi nAqifu .han.zali}\\ +% samurAti 'l-.hayyi nAqifu .han.zali}\\ % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA % tahlik 'asaN_A wa-ta^gammali}\\ % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN -% dAsiriN min mu`awwali}\\ +% dArisiN min mu`awwali}\\ % \end{linenumbers*} % \end{arabverse} % @@ -2477,14 +2493,71 @@ % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA % ka-'anna-hu .habbu fulfuli}\\ % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A -% samurAti -% 'l-.hayyi nAqifu .han.zali}\\ +% samurAti 'l-.hayyi nAqifu .han.zali}\\ +% \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA +% tahlik 'asaN_A wa-ta^gammali}\\ +% \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN +% dArisiN min mu`awwali}\\ +% \end{linenumbers*} +% \end{arabverse} +% +% \medskip +% \noindent\textbf{\cs{StretchBayt}|[false]|}:--- +% \StretchBayt[false]\\ +% In what follows, |width| has been set to |0.3\linewidth| and double +% hyphens have been inserted between some letters to prolong their +% horizontal strokes. +% \begin{arab}[fullvoc] +% qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: +% \end{arab} +% +% \begin{arabverse}[mode=fullvoc, metre={(al-.darbu 'l-_tAnI mina +% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.3\linewidth] +% \SetArbDflt* +% \begin{linenumbers*} +% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti +% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ +% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`--fu +% rasmu---hA}{limA nasa^gat-hA mi--n ^gan----UbiN wa-^sam'ali}\\ +% \bayt{ta--r_A ba--`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI--`Ani-hA +% ka-'anna---hu .ha----bbu fu--{l}--fu----li}\\ +% \bayt{ka-'annI .ga--dATa 'l-bay--ni ya--wma ta.hammalUA}{lad_A +% samurAti 'l-.hayyi nAqifu .han.zali}\\ +% \bayt{wuq--UfaN bi-hA .sa.hbI `a--layya ma--.tiyya---hu--m} +% {ya--q--Ul--Una lA tahli--k 'asaN_A wa-ta^gamma----li}\\ +% \bayt{wa-'inna ^si----f----A'I `a--{b}----raTuN muharAqa----TuN} +% {fa---ha--l `inda rasmiN dArisiN min mu`awwali}\\ +% \end{linenumbers*} +% \end{arabverse} +% +% \medskip +% +% In what follows, |width| has been set to |0.375\linewidth| and +% |\scriptsize| has been used so as to avoid overlapping. +% \begin{arab}[trans] +% qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: +% \end{arab} +% +% \begin{arabverse}[mode=trans, metre={(al-.darbu 'l-_tAnI mina +% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.375\linewidth] +% \SetArbDflt* +% \scriptsize +% \begin{linenumbers*} +% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti +% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ +% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu +% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ +% \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA +% ka-'anna-hu .habbu fulfuli}\\ +% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A +% samurAti 'l-.hayyi nAqifu .han.zali}\\ % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA % tahlik 'asaN_A wa-ta^gammali}\\ % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN -% dAsiriN min mu`awwali}\\ +% dArisiN min mu`awwali}\\ % \end{linenumbers*} % \end{arabverse} +% \StretchBayt[true] % % \section{Special applications} % \label{sec:special-applications} @@ -4883,6 +4956,14 @@ % \arb[trans]{tadwIr}. In some of these cases, the hemistichs may be % connected by a prominent horizontal flexible stroke which is drawn % by the \cs{al@verse@stroke} command. +% \begin{macro}{\StretchBayt} +% \changes{v1.20}{2020/03/23}{Optionally removes stretching from lines +% of poetry} \cs{StretchBayt}\oarg{true\textbar false} Allows to +% remove stretching and undesirable warping effect from Arabic lines of +% poetry. This command accepts one fixed optional argument, either +% |true| or |false|, and may be used either in the preamble or at any +% point of the document. By default, it is set to |true|. +% \end{macro} % \begin{macro}{\SetHemistichDelim} % \changes{v1.6}{2016/12/17}{New \cs{SetHemistichDelim} command for % changing the default delimiter between hemistichs} A hemistich @@ -4892,6 +4973,21 @@ % point of the document to change this default setting. % \end{macro} % \begin{macrocode} +\newif\ifal@warp@bayt +\al@warp@bayttrue +\NewDocumentCommand{\StretchBayt}{O{true}}{ + \edef\oarg@true{true} + \edef\oarg@false{false} + \edef\@tempa{#1} + \ifx\@tempa\oarg@true\al@warp@bayttrue + \else + \ifx\@tempa\oarg@false\al@warp@baytfalse + \else + \PackageError{arabluatex}{\string\StretchBayt\space must be + either 'true' or 'false'}{} + \fi + \fi +} \NewDocumentCommand{\arb@utf}{m}{% \ifal@verse@utf\txarb{#1}\else\arb{#1}\fi} \def\al@hemistich@delim{*} @@ -4901,7 +4997,11 @@ \IfBooleanTF{#1}{\relax}{\relax}% \ifdefined\savenotes\savenotes\else\fi% \edef\al@tatweel{--}% - \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% + \ifal@warp@bayt% + \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% + \else% + \makebox[\al@bayt@width][s]{\arb@utf{#2}}% + \fi% \IfNoValueTF{#3}{% \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% \else% @@ -4917,11 +5017,19 @@ \fi% \else% \ifx\al@mode\al@mode@trans% - \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% + \ifal@warp@bayt% + \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% + \else% + \makebox[\al@gutter@width][s]{\arb@utf{#3}}% + \fi% \else% \makebox[\al@gutter@width][s]{\arb@utf{#3}}% \fi\fi}% - \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% + \ifal@warp@bayt% + \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% + \else% + \makebox[\al@bayt@width][s]{\arb@utf{#4}}% + \fi% \ifdefined\spewnotes\spewnotes\else\fi% } % \end{macrocode} diff --git a/macros/luatex/latex/arabluatex/arabluatex.pdf b/macros/luatex/latex/arabluatex/arabluatex.pdf index dd09d3127e..23b2fb592b 100644 Binary files a/macros/luatex/latex/arabluatex/arabluatex.pdf and b/macros/luatex/latex/arabluatex/arabluatex.pdf differ diff --git a/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf b/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf index 10e5ab3ca8..c65048ef48 100644 Binary files a/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf and b/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf differ diff --git a/macros/luatex/latex/arabluatex/samples/exporting.pdf b/macros/luatex/latex/arabluatex/samples/exporting.pdf index f1072cae6f..1d7805183a 100644 Binary files a/macros/luatex/latex/arabluatex/samples/exporting.pdf and b/macros/luatex/latex/arabluatex/samples/exporting.pdf differ diff --git a/macros/luatex/latex/arabluatex/samples/template-01.pdf b/macros/luatex/latex/arabluatex/samples/template-01.pdf index e964923f32..e039afce9b 100644 Binary files a/macros/luatex/latex/arabluatex/samples/template-01.pdf and b/macros/luatex/latex/arabluatex/samples/template-01.pdf differ -- cgit v1.2.3