From c628b1aa9cf528de739c1de45acf3739561619ed Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 5 Nov 2021 03:01:04 +0000 Subject: CTAN sync 202111050301 --- macros/latex/contrib/easybook/easybook.dtx | 8 +- macros/latex/contrib/easybook/easybook.pdf | Bin 581906 -> 581901 bytes macros/latex/contrib/easybook/easybook.tex | 4 +- macros/latex/contrib/ejpecp/README.md | 2 + macros/latex/contrib/ejpecp/ejpecp.dtx | 5 +- macros/latex/contrib/ejpecp/ejpecp.pdf | Bin 105240 -> 105161 bytes macros/latex/contrib/ejpecp/sample.pdf | Bin 155435 -> 155433 bytes macros/latex/contrib/glossaries-extra/CHANGES | 42 +- macros/latex/contrib/glossaries-extra/README | 2 +- .../glossaries-extra/glossaries-extra-code.pdf | Bin 1387050 -> 1397520 bytes .../glossaries-extra/glossaries-extra-manual.html | 16890 ++++++++++--------- .../glossaries-extra/glossaries-extra-manual.pdf | Bin 818478 -> 825115 bytes .../glossaries-extra/glossaries-extra-manual.tex | 126 +- .../contrib/glossaries-extra/glossaries-extra.dtx | 373 +- .../contrib/glossaries-extra/glossaries-extra.ins | 2 +- .../samples/sample-abbr-styles.pdf | Bin 556798 -> 556783 bytes .../glossaries-extra/samples/sample-abbrv.pdf | Bin 47272 -> 47261 bytes .../glossaries-extra/samples/sample-accsupp.pdf | Bin 83788 -> 83775 bytes .../samples/sample-acronym-desc.pdf | Bin 53686 -> 53665 bytes .../glossaries-extra/samples/sample-acronym.pdf | Bin 39250 -> 39238 bytes .../glossaries-extra/samples/sample-alias.pdf | Bin 46970 -> 46956 bytes .../samples/sample-altmodifier.pdf | Bin 37816 -> 37805 bytes .../samples/sample-alttree-marginpar.pdf | Bin 94539 -> 94452 bytes .../samples/sample-alttree-sym.pdf | Bin 74492 -> 74451 bytes .../glossaries-extra/samples/sample-alttree.pdf | Bin 58146 -> 58134 bytes .../samples/sample-autoindex-hyp.pdf | Bin 147083 -> 149292 bytes .../glossaries-extra/samples/sample-autoindex.pdf | Bin 171657 -> 171547 bytes .../glossaries-extra/samples/sample-crossref.pdf | Bin 44640 -> 44626 bytes .../glossaries-extra/samples/sample-crossref2.pdf | Bin 44943 -> 44932 bytes .../glossaries-extra/samples/sample-docdef.pdf | Bin 48587 -> 48575 bytes .../glossaries-extra/samples/sample-entrycount.pdf | Bin 58670 -> 58659 bytes .../glossaries-extra/samples/sample-external.pdf | Bin 36694 -> 36681 bytes .../glossaries-extra/samples/sample-fmt.pdf | Bin 89113 -> 81516 bytes .../glossaries-extra/samples/sample-footnote.pdf | Bin 68245 -> 68233 bytes .../glossaries-extra/samples/sample-header.pdf | Bin 135383 -> 135372 bytes .../glossaries-extra/samples/sample-indexhook.pdf | Bin 46049 -> 46037 bytes .../samples/sample-initialisms.pdf | Bin 87251 -> 87240 bytes .../glossaries-extra/samples/sample-linkcount.pdf | Bin 40776 -> 40764 bytes .../samples/sample-mixed-abbrv-styles.pdf | Bin 62798 -> 62787 bytes .../glossaries-extra/samples/sample-mixedsort.pdf | Bin 48427 -> 48415 bytes .../glossaries-extra/samples/sample-mixture.pdf | Bin 169231 -> 169119 bytes .../glossaries-extra/samples/sample-name-font.pdf | Bin 214732 -> 214720 bytes .../glossaries-extra/samples/sample-nested.pdf | Bin 72406 -> 72457 bytes .../samples/sample-noidx-restricteddocdefs.pdf | Bin 50840 -> 50828 bytes .../glossaries-extra/samples/sample-onelink.pdf | Bin 25876 -> 47017 bytes .../samples/sample-onthefly-utf8.pdf | Bin 111705 -> 111694 bytes .../samples/sample-onthefly-xetex.pdf | Bin 19673 -> 19671 bytes .../glossaries-extra/samples/sample-onthefly.pdf | Bin 46377 -> 46363 bytes .../glossaries-extra/samples/sample-pages.pdf | Bin 41301 -> 41286 bytes .../glossaries-extra/samples/sample-postdot.pdf | Bin 39567 -> 39556 bytes .../glossaries-extra/samples/sample-postlink.pdf | Bin 73859 -> 73848 bytes .../glossaries-extra/samples/sample-prefix.pdf | Bin 35615 -> 35603 bytes .../samples/sample-record-nameref.pdf | Bin 76228 -> 76220 bytes .../glossaries-extra/samples/sample-record.pdf | Bin 53526 -> 53514 bytes .../samples/sample-restricteddocdefs.pdf | Bin 51149 -> 51137 bytes .../glossaries-extra/samples/sample-suppl-hyp.pdf | Bin 37492 -> 37481 bytes .../samples/sample-suppl-main-hyp.pdf | Bin 49676 -> 49663 bytes .../glossaries-extra/samples/sample-suppl-main.pdf | Bin 34110 -> 34098 bytes .../glossaries-extra/samples/sample-suppl.pdf | Bin 14259 -> 14247 bytes .../glossaries-extra/samples/sample-trans.pdf | Bin 53230 -> 53229 bytes .../glossaries-extra/samples/sample-undef.pdf | Bin 35740 -> 35728 bytes .../samples/sample-unitentrycount.pdf | Bin 64568 -> 65125 bytes .../contrib/glossaries-extra/samples/sample.pdf | Bin 48278 -> 48266 bytes macros/latex/contrib/srdp-mathematik/README.txt | 4 +- .../contrib/srdp-mathematik/srdp-mathematik.pdf | Bin 176727 -> 42330 bytes .../contrib/srdp-mathematik/srdp-mathematik.sty | 39 +- .../contrib/srdp-mathematik/srdp-mathematik.tex | 2042 ++- .../latex/contrib/srdp-mathematik/srdp-tables.sty | 2491 +++ 68 files changed, 12588 insertions(+), 9442 deletions(-) create mode 100644 macros/latex/contrib/srdp-mathematik/srdp-tables.sty (limited to 'macros/latex') diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 659bc9e1e8..bfa05c7e21 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/10/30}{1.40I} +\ProvidesExplClass{easybook}{2021/11/04}{1.40J} {Typeset Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -325,7 +325,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2021/10/30}{1.40I} +\ProvidesExplPackage{easybase}{2021/11/04}{1.40J} {Typeset Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -533,9 +533,9 @@ \LoadPackage { - spbmark[ctex]+ ulem[normalem]+ enumitem[shortlabels,inline]+ + spbmark[ctex,newsupb = {text,math}]+ chemformula+siunitx+pifont+ amsthm+thmtools+ geometry+marginnote+ @@ -2454,7 +2454,7 @@ } % %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2021/10/30}{1.40I} +\ProvidesExplFile{eb-tcolorbox.cfg}{2021/11/04}{1.40J} {Customization of tcolorbox for easybook} \tl_gset:Nn \eb@tc@line@skip { 0.5\baselineskip } diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf index 43e2e4af1f..d9f3e6c007 100644 Binary files a/macros/latex/contrib/easybook/easybook.pdf and b/macros/latex/contrib/easybook/easybook.pdf differ diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index abea3e943a..4b46cb1e39 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -20,8 +20,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK 使用手册, - version = v1.40I, - date = 2021/10/30, + version = v1.40J, + date = 2021/11/04, authors = 瞿毅, info = 排版简体中文学位论文和书籍, email = q1jx@foxmail.com, diff --git a/macros/latex/contrib/ejpecp/README.md b/macros/latex/contrib/ejpecp/README.md index 7f350b041e..a87fc50f43 100644 --- a/macros/latex/contrib/ejpecp/README.md +++ b/macros/latex/contrib/ejpecp/README.md @@ -101,6 +101,8 @@ https://github.com/vtex-soft/texsupport.ims-ejpecp ## CHANGELOG +- 2021/11/04 v1.11.3 + - Removed dash in MR - 2021/09/07 v1.11.2 - Added `nobera` and `nofontexpansion` options - 2021/08/17 v1.11.1 diff --git a/macros/latex/contrib/ejpecp/ejpecp.dtx b/macros/latex/contrib/ejpecp/ejpecp.dtx index ebdf588ba8..f5c38b6377 100644 --- a/macros/latex/contrib/ejpecp/ejpecp.dtx +++ b/macros/latex/contrib/ejpecp/ejpecp.dtx @@ -26,7 +26,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{ejpecp} %<*class> - [2021/09/07 v1.11.2 class for EJP and ECP journals] + [2021/11/04 v1.11.3 class for EJP and ECP journals] % %\ClassInfo{ejpecp}{Copyright (c) 2019-2021 Edgaras SAKURAS, VTeX, Lithuania.} %\ClassInfo{ejpecp}{Copyright (c) 2018 Deimantas GALCIUS, VTeX, Lithuania.} @@ -86,6 +86,7 @@ % \changes{v1.11.0}{2021/04/20}{preprint option} % \changes{v1.11.1}{2021/08/17}{removed dependency on lastpage package} % \changes{v1.11.2}{2021/09/07}{nobera and nofontexpansion options added} +% \changes{v1.11.3}{2021/11/04}{removed dash in MR} % \GetFileInfo{ejpecp.dtx} % % \DoNotIndex{\newcommand,\newenvironment} @@ -472,7 +473,7 @@ \def\@MRExtract#1 #2!{#1} % thanks, Martin! \newcommand{\MR}[1]{% we need to strip the "(...)" \xdef\@MRSTRIP{\@MRExtract#1 !}% - \href{https://mathscinet.ams.org/mathscinet-getitem?mr=\@MRSTRIP}{MR-\@MRSTRIP}} + \href{https://mathscinet.ams.org/mathscinet-getitem?mr=\@MRSTRIP}{MR\@MRSTRIP}} \newcommand{\ARXIV}[1]{\href{https://arXiv.org/abs/#1}{arXiv:#1}} \def\bibliography@size{\small} \renewenvironment{thebibliography}[1] diff --git a/macros/latex/contrib/ejpecp/ejpecp.pdf b/macros/latex/contrib/ejpecp/ejpecp.pdf index 47f1bb8d65..b880068e09 100644 Binary files a/macros/latex/contrib/ejpecp/ejpecp.pdf and b/macros/latex/contrib/ejpecp/ejpecp.pdf differ diff --git a/macros/latex/contrib/ejpecp/sample.pdf b/macros/latex/contrib/ejpecp/sample.pdf index f6e975a52f..3d54fe8607 100644 Binary files a/macros/latex/contrib/ejpecp/sample.pdf and b/macros/latex/contrib/ejpecp/sample.pdf differ diff --git a/macros/latex/contrib/glossaries-extra/CHANGES b/macros/latex/contrib/glossaries-extra/CHANGES index ca2536846a..b941eff1a7 100644 --- a/macros/latex/contrib/glossaries-extra/CHANGES +++ b/macros/latex/contrib/glossaries-extra/CHANGES @@ -1,3 +1,43 @@ +1.47 (2021-11-04): + + * glossaries-extra.sty: + + - bug fix #185: \s@GlsXtrIfFieldNonZero not defined + https://www.dickimaw-books.com/bugtracker.php?key=185 + + - bug fix: bug fix #175 causes \glscurrentfieldvalue to be redefined + + - new commands: + + \glsxtrapptocsvfield + \GlsXtrIfValueInFieldCsvList + \xGlsXtrIfValueInFieldCsvList + \glsunsetcategoryattribute + + - \glsseeitem list (provided by glossaries.sty) is now redefined + to make it more flexible. New helper commands: + + \glsseefirstitem + \glsseelastoxfordsep + + - added starred version of \glsxtrforcsvfield + + - added check for existence of \glscapitalisewords + + * glossaries-extra-stylemods.sty: + + - added + + \glslistitem + \glsaltlistitem + \glslistgroupheaderitem + \glslistgroupafterheader + \glslistinit + + * glossaries-extra-bib2gls.sty: + + - added starred version of \GlsXtrIfHasNonZeroChildCount + 1.46 (2021-09-20): * Test bib files added to provide bib2gls support for the @@ -8,7 +48,7 @@ * glossaries-extra.sty: - - Package option record=alsoindex is has been changed to record=hybrid + - Package option record=alsoindex has been changed to record=hybrid (alsoindex is now a deprecated synonym). This name change is to avoid ambiguity. The "alsoindex" refers to not diff --git a/macros/latex/contrib/glossaries-extra/README b/macros/latex/contrib/glossaries-extra/README index f61f7ca805..948405acc1 100644 --- a/macros/latex/contrib/glossaries-extra/README +++ b/macros/latex/contrib/glossaries-extra/README @@ -1,4 +1,4 @@ -LaTeX Package : glossaries-extra v1.46 (2021-09-20) +LaTeX Package : glossaries-extra v1.47 (2021-11-04) 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 350f8ec1b9..9d7f2242e6 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 8f52130edf..54799bd40f 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html @@ -76,7 +76,6 @@ img.math{vertical-align:middle;} div.par-math-display, div.math-display{text-align:center;} li p.indent { text-indent: 0em } li p:first-child{ margin-top:0em; } -li p:first-child{ margin-bottom; } li p:last-child, li div:last-child { margin-bottom:0.5em; } li p:first-child{ margin-bottom:0; } li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } @@ -130,6 +129,7 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } .hline hr, .cline hr{ height : 0px; margin:0px; } .hline td, .cline td{ padding: 0; } .hline hr, .cline hr{border:none;border-top:1px solid black;} +.hline {border-top: 1px solid black;} .tabbing-right {text-align:right;} div.float, div.figure {margin-left: auto; margin-right: auto;} div.float img {text-align:center;} @@ -222,7 +222,7 @@ a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;} >

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

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

2021-09-20

+class="cmr-12">2021-11-04

@@ -393,102 +393,109 @@ href="#sec:nested" id="QQ2-1-13">Nested Links href="#sec:acronymmods" id="QQ2-1-14">Acronym Style Modifications
 2.10 Glossaries -
  2.10.1  2.11 Glossary Style Modifications +
  2.11.1 Style Hooks +
  2.11.2 Number List +
  2.11.3 The glossaries-extra-stylemods Package
3 New Glossary Styles +href="#newglossarystyles" id="QQ2-1-24">New Glossary Styles
 3.1 glossary-bookindex package
 3.2 glossary-longextra package
 3.3 glossary-topic package
4 Abbreviations +href="#sec:abbreviations" id="QQ2-1-28">Abbreviations
 4.1 Tagging Initials +href="#sec:tagging" id="QQ2-1-29">Tagging Initials
 4.2 Abbreviation Styles +href="#sec:abbrstyle" id="QQ2-1-30">Abbreviation Styles
 4.3 Shortcut Commands +href="#sec:abbrshortcuts" id="QQ2-1-31">Shortcut Commands
 4.4 Predefined Abbreviation Styles +href="#sec:predefabbrvstyles" id="QQ2-1-33">Predefined Abbreviation Styles
  4.4.1 Predefined Abbreviation Styles that Set the Regular Attribute +href="#sec:predefregabbrvstyles" id="QQ2-1-34">Predefined Abbreviation Styles that Set the Regular Attribute
  4.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute +href="#sec:predefnonregabbrvstyles" id="QQ2-1-35">Predefined Abbreviation Styles that Don’t Set the Regular Attribute
 4.5 Defining New Abbreviation Styles +href="#sec:newabbrvstyle" id="QQ2-1-36">Defining New Abbreviation Styles
5 Entries in Sectioning Titles, Headers, Captions and Contents +href="#sec:headtitle" id="QQ2-1-37">Entries in Sectioning Titles, Headers, Captions and Contents
 5.1 Simplistic Approach +href="#simplisticapproach" id="QQ2-1-38">Simplistic Approach
 5.2 New Commands Designed for Chapter/Section Headings +href="#newcommandsdesignedforchaptersectionheadings" id="QQ2-1-39">New Commands Designed for Chapter/Section Headings
6 Categories +href="#sec:categories" id="QQ2-1-40">Categories
7 Counting References -
 7.1 Entry Counting (First Use Flag) -
 7.2 Link Counting -
8 Auto-Indexing +href="#sec:countref" id="QQ2-1-41">Counting References +
 7.1 Entry Counting (First Use Flag) +
 7.2 Link Counting +
8 Auto-Indexing
9 bib2gls: Managing Reference Databases
 9.1 Selection +href="#selection" id="QQ2-1-46">Selection
 9.2 Sorting and Displaying the Glossary +href="#sortinganddisplayingtheglossary" id="QQ2-1-47">Sorting and Displaying the Glossary
 9.3 The The glossaries-extra-bib2gls package
  9.3.1 Supplemental Locations +href="#sec:supplocations" id="QQ2-1-49">Supplemental Locations
  9.3.2 Nameref Record +href="#sec:recordnameref" id="QQ2-1-50">Nameref Record
  9.3.3 Helper Commands for Resource Options +href="#sec:resourcecommands" id="QQ2-1-51">Helper Commands for Resource Options
 9.4 Supplementary Commands +href="#supplementarycommands" id="QQ2-1-52">Supplementary Commands
 9.5 Record Counting +href="#sec:recordcount" id="QQ2-1-53">Record Counting
10 Miscellaneous New Commands +href="#sec:miscnew" id="QQ2-1-54">Miscellaneous New Commands
 10.1 Entry Fields +href="#sec:fields" id="QQ2-1-55">Entry Fields
 10.2 Display All Entries Without Sorting or Indexing +href="#sec:printunsrt" id="QQ2-1-56">Display All Entries Without Sorting or Indexing
  10.2.1 Hooks +href="#sec:printunsrthooks" id="QQ2-1-57">Hooks
  10.2.2 Filtering +href="#sec:printunsrtfilter" id="QQ2-1-58">Filtering
 10.3 Partial Glossaries +href="#sec:printunsrtinner" id="QQ2-1-59">Partial Glossaries
 10.4 Standalone Entry Items +href="#sec:glossentry" id="QQ2-1-60">Standalone Entry Items
 10.5 Entry Aliases +href="#sec:alias" id="QQ2-1-61">Entry Aliases
11 On-the-Fly Document Definitions +href="#sec:onthefly" id="QQ2-1-62">On-the-Fly Document Definitions
12 Supplemental Packages +href="#sec:supplemental" id="QQ2-1-63">Supplemental Packages
 12.1 Prefixes or Determiners +href="#sec:prefix" id="QQ2-1-64">Prefixes or Determiners
 12.2 Accessibility Support +href="#sec:accsupp" id="QQ2-1-65">Accessibility Support
13 Sample Files +href="#sec:samples" id="QQ2-1-66">Sample Files
14 Multi-Lingual Support +href="#sec:lang" id="QQ2-1-67">Multi-Lingual Support
Glossary
@@ -626,7 +633,7 @@ modifications to commands provided by glossaries (see §??sec:modifications +class="cmbx-10">2 Modifications to Existing Commands and Styles).

@@ -896,7 +903,7 @@ before \newacronym. See §??sec:abbreviations 4 Abbreviations for further details.)

@@ -1217,7 +1224,7 @@ class="cmitt-10">xxx⟩ commands will add the accessibility information. (See §??sec:accsupp 12.2 Accessibility Support for further details.)

Note that the value⟩ if it contains any commas.) The value may b omitted if no options need to be passed. See §??sec:glosstylemods 2.11 Glossary Style Modifications for further details. There are two special keyword values: =warn§??sec:glsunset 2.6 First Use Flag for further details.

@@ -1457,7 +1464,7 @@ class="cmtt-10">bib2gls (see §??sec:bib2gls 9 bib2gls: Managing Reference Databases). If you want to use class="cmtt-10">bib2gls (see §??sec:bib2gls +class="cmbx-10">9 bib2gls: Managing Reference Databases). @@ -1627,7 +1634,7 @@ class="cmss-10">indexcounter§??sec:recordnameref 9.3.2 Nameref Record for further details.

This option is best used with .aux file.) See §??sec:bib2gls 9 bib2gls: Managing Reference Databases for further details. @@ -1863,7 +1870,7 @@ class="cmtt-10">\glsfmttext and \glsfmtshort, don’t index. (See §??sec:headtitle +class="cmbx-10">5 Entries in Sectioning Titles, Headers, Captions and Contents). You may want to consider using \newabbreviation, but not the “on-the-fly” co §??sec:onthefly 11 On-the-Fly Document Definitions.

@@ -2310,7 +2317,7 @@ class="cmss-10">babel§??sec:lang 14 Multi-Lingual Support for further details.)

If you don’t use the =abbrglossaries-extra. (See §??sec:abbrshortcuts +class="cmbx-10">4.3 Shortcut Commands.) These settings don’t switch on the acronym shortcuts provided by the \glspostdescription, see §??sec:glossentry 10.4 Standalone Entry Items).

The commands used by glossaries to automatically produce an error if an entry is @@ -2775,7 +2782,7 @@ class="cmss-10">categorygeneral. See §??sec:categories 6 Categories for further information about categories.

@@ -2785,7 +2792,7 @@ class="cmss-10">alias, which allows an entry to be alias to another entry. See §??sec:alias +class="cmbx-10">10.5 Entry Aliases for further details.

@@ -2798,7 +2805,7 @@ class="cmss-10">see§??sec:see 2.3 Cross-References (“see” and “see also”) for further details.

@@ -2902,7 +2909,7 @@ the new abbreviation interface provided by glossaries-extra. (See §??sec:abbreviations +class="cmbx-10">4 Abbreviations.)

The indexonlyfirst attribute, see §??sec:categories 6 Categories for further details.) Note that the noindexsoul example in §??sec:glsunset 2.6 First Use Flag.

@@ -3848,7 +3855,7 @@ class="cmss-10">glossaries-extra§??sec:modifications 2 Modifications to Existing Commands and Styles. This now displays the value of the text}

which fully expands its argument and passes it to \glsseelist. -

The seealso key implements the automatic indexing using -


As from v1.47, glossaries-extra redefines \glsseelist to make it more flexible. +The base package provides \glsseeitem{label} which is used to format each element +in the list and \glsseelastsep for the separator between the final two items +(\glsseesep is used between the other items). The modifications provide two +additional commands: +


\glsseefirstitem{label}

+

+This defaults to \glsseeitem{label} and is used to format the first label in the +list. +


\glsseelastoxfordsep

+ + + +

+This defaults to \glsseelastsep and is used if the list consists of three or more +labels. +

The seealso key implements the automatic indexing using +


\glsxtrindexseealso{label}{xr list}

-

+

which just does

}{xr list} - - -
unless the xindy option is used with option is used with glossaries v4.30+, in which case a distinct + id="dx1-8078"> v4.30+, in which case a distinct seealso cross-reference class is used instead. -

The command that produces this “see also” text is -


The command that produces this “see also” text is +


\seealsoname

-

+

If \alsoname (provided by language packages) is defined then (provided by language packages) is defined then \seealsoname will simply be defined to \alsoname otherwise it will be defined to see also. -

The language-sensitive

The language-sensitive \alsoname is used by general indexing packages, such as makeidx, so if you redefine , so if you redefine \alsoname the change will apply to normal indexes as well as glossaries. If you only want to change the text produced by the seealso key + id="dx1-8082"> key without affecting general indexing (with \index) then redefine \seealsoname instead. -

+

-

Top

2.4 Entry Display Style Modifications

-

Recall from the

Recall from the glossaries package that commands such as \gls display text at that point in the document (optionally with a hyperlink to the relevant @@ -4244,7 +4281,7 @@ whether or not it actually has a hyperlink. The actual text and the way it’s displayed depends on the command used (such as \gls) and the entry format. -

The default entry format (

The default entry format (\glsentryfmt) used in the link-text by commands like @@ -4268,14 +4305,17 @@ entries, which are determined as follows:

-

This means that entries with a short form can be treated as regular entries rather +

This means that entries with a short form can be treated as regular entries rather than abbreviations if it’s more appropriate for the desired style. -

As from version 1.04,

As from version 1.04, \glsentryfmt now puts \glsgenentry in the argument of the new command -



\glsxtrregularfont{text}

-

+

This just does its argument ⟨text⟩ by default. This means that if you want regular entries in a different font but don’t want that font to apply to abbreviations, then @@ -4362,7 +4399,7 @@ overridden by the textformat attribute. -

For example: +

For example: @@ -4370,7 +4407,7 @@ class="cmss-10">textformat \renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}} -

You can access the label through

You can access the label through \glslabel. For example, you can query the category: @@ -4381,7 +4418,7 @@ category: \renewcommand*{\glsxtrregularfont}[1]{%  \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}} -

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

or query the category attribute, for example, provide a custom attribute called font: @@ -4393,7 +4430,7 @@ class="cmtt-10">font: \renewcommand*{\glsxtrregularfont}[1]{%  \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}} -

As from version 1.21, it’s simpler to just do, for example: +

As from version 1.21, it’s simpler to just do, for example: @@ -4401,21 +4438,21 @@ class="cmtt-10">font:

 \glssetcategoryattribute{general}{textformat}{textsf}
 
-

without redefining

without redefining \glsxtrregularfont. -

As from version 1.30, there is also a command for abbreviations that encapsulates +

As from version 1.30, there is also a command for abbreviations that encapsulates \glsxtrgenabbrvfmt: -



\glsxtrabbreviationfont{text}

-

+

This also just does its argument by default. Font changes made by abbreviation styles are within ⟨text⟩. -

The

The \glspostlinkhook provided by the glossaries package to insert information after the link-text produced by commands like \gls and \glstext is redefined to -



\glsxtrpostlinkhook

-

+

This command will discard a following full stop (period) if the discardperiod attribute is set to “true” for the current entry’s category. It will also do -



\glsxtrpostlink

-

+

if a full stop hasn’t be discarded and -



\glsxtrpostlinkendsentence

-

+

if a full stop has been discarded. -

It may be that you want to check some other setting (rather than a category +

It may be that you want to check some other setting (rather than a category attribute) to determine whether or not to discard a following full stop. In which case you can redefine: -



\glsxtrifcustomdiscardperiod{true}{false}

-

+

You can access the field’s label using \glslabel. This command should do ⟨true⟩ if the @@ -4467,9 +4504,9 @@ definition is simply:

 \newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
 
-

which means that no additional checks are performed. (Only the recognised category +

which means that no additional checks are performed. (Only the recognised category attributes will be checked.) -

Avoid the use of

Avoid the use of \gls-like and \glstext-like commands within the post-link hook as they will cause interference. Consider using commands like @@ -4479,11 +4516,11 @@ class="cmtt-10">\glsaccesstext or \glsxtrp (§??sec:nested 2.8 Nested Links) instead.
-

-

By default

+

By default \glsxtrpostlink just does \glsxtrpostlinkcategorygeneral category, \glsxtrpostlinkgeneral if it has been defined.) -

You can define the post-link hook command using

You can define the post-link hook command using \newcommand, for example: @@ -4507,15 +4544,15 @@ example:  \glsxtrpostlinkAddDescOnFirstUse } -

or, as from v1.31, you can use -


or, as from v1.31, you can use +


\glsdefpostlink{category}{definition}

-

+

This is simply a shortcut for:

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

The sentence-ending hook is slightly more complicated. If the command +

The sentence-ending hook is slightly more complicated. If the command \glsxtrpostlinkcategory

There are some convenient commands you might want to use when customizing +

There are some convenient commands you might want to use when customizing the post-link-text category hooks: -



\glsxtrpostlinkAddDescOnFirstUse

-

+

This will add the description in parentheses on first use. -

For example, suppose you want to append the description in parentheses on

For example, suppose you want to append the description in parentheses on first use for entries in the symbolsymbol -

-


+


\glsxtrpostlinkAddSymbolOnFirstUse

-

+

This will append the symbol (if defined) in parentheses on first use. (Does nothing if the symbol hasn’t been set.) -



\glsxtrpostlinkAddSymbolDescOnFirstUse

-

+

(New to v1.31.) On first use, this will append \space(⟨description⟩) if the symbol is defined otherwise it just appends \space(⟨description⟩). -

If you want to provide your own custom format be aware that you can’t use +

If you want to provide your own custom format be aware that you can’t use \ifglsused within the post-link-text hook as by this point the first use flag will have been unset. Instead you can use -



\glsxtrifwasfirstuse{true}{false}

-

+

This will do ⟨true⟩ if the last used entry was the first use for that entry, otherwise it @@ -4617,7 +4654,7 @@ locally set by commands like \gls, so don’t rely on it outside of the post-link-text hook. -

Note that commands like

Note that commands like \glsfirst and \glsxtrfull\glsxtrfull so that it fakes non-first use otherwise the inline full format would include the footnote, which is inappropriate.
-

-

For example, if you want to place the description in a footnote after the

+

For example, if you want to place the description in a footnote after the link-text on first use for the general -

-

The

+

The short-postfootnote abbreviation style uses the post-link-text hook to place the footnote after trailing punctuation characters. -

+

-

Top

2.5 Entry Counting Modifications

-

If you are using

If you are using bib2gls you may find it more convenient to use the record count commands described in §??sec:bib2gls 9 bib2gls: Managing Reference Databases instead. -

The

The \glsenableentrycount command is modified to allow for the \glsenableentrycount, but you also need to set the approp §??sec:categories 6 Categories). -

For example, instead of just doing: +

For example, instead of just doing: @@ -4702,7 +4739,7 @@ href="#sec:categories">Categories).

 \glsenableentrycount
 
-

you now need to do: +

you now need to do: @@ -4711,24 +4748,24 @@ href="#sec:categories">Categories). \glsenableentrycount \glssetcategoryattribute{abbreviation}{entrycount}{1} -

This will enable the entry counting for entries in the

This will enable the entry counting for entries in the abbreviation category, but any entries assigned to other categories will be unchanged. -

Further information about entry counting, including the new per-unit feature, is +

Further information about entry counting, including the new per-unit feature, is described in §??sec:entrycount 7.1 Entry Counting (First Use Flag). -

+

-

Top

2.6 First Use Flag

-

The

The glossaries package provides -



\ifglsused{true}{false}

-

+

to determine whether or not an entry has been used. This requires the entry to have been defined. If the entry is undefined, then the underlying boolean variable doesn’t exist and so is neither true nor false. This command will produce an error with the @@ -4757,7 +4794,7 @@ class="cmti-10">true⟩ nor ⟨false⟩ will be performed if ⟨label⟩ doesn’t exist. -

The

The record option automatically implements bib2gls. In this case, you may prefer to use: -



\GlsXtrIfUnusedOrUndefined{labeltrue}{false}

-

+

(new to v1.34) which does ⟨true⟩ if the entry given by ⟨label⟩ is undefined or if @@ -4795,23 +4832,23 @@ class="cmtt-10">\glsxtrifwasfirstuse should be used, see §??sec:entryfmtmods 2.4 Entry Display Style Modifications.) -

There are two new commands provided with version 1.31+: -


There are two new commands provided with version 1.31+: +


\glslocalreseteach{list}

-

+

and -



\glslocalunseteach{list}

-

+

These behave like \glslocalreset and \glslocalunset but the argument is a @@ -4819,7 +4856,7 @@ comma-separated list of labels. -

The internal command used by

The internal command used by \glsunset is modified first to allow for the changing in entry counting, described above, but also to allow for buffering pending unsets when commands like \ul{Some text about \gls{html}.} -

This causes the confusing error: +

This causes the confusing error: @@ -4843,7 +4880,7 @@ the commands provided with the Glossary entry `{html}' has not been defined. -

The simplest workaround is to put

The simplest workaround is to put \gls{html} inside the argument of \mbox. For example: @@ -4854,7 +4891,7 @@ example:

 \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 +

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: @@ -4863,15 +4900,15 @@ first use flag causes a problem and results in the error:

 ! Package soul Error: Reconstruction failed.
 
-

The

The glossaries-extra package provides a way of temporarily switching off \glsunset so that it just makes a note of the entry’s label but doesn’t actually perform the change: -



\GlsXtrStartUnsetBuffering

-

+

The unstarred version doesn’t check for duplicates, so the internal list may end up with multiple occurrences of the same label. The starred version only adds a label to the internal list if it’s not already in it. Note that this @@ -4879,12 +4916,12 @@ buffering only applies to the global \glsunset and does not affect the local \glslocalunset. -

Later you can restore

Later you can restore \glsunset and unset all buffered labels using: -



\GlsXtrStopUnsetBuffering

-

+

The starred form \GlsXtrStopUnsetBuffering* uses \glslocalunset instead. For @@ -4906,37 +4943,37 @@ example: Next use: \gls{html}. \end{document} -

Before you stop the unset buffering, you can iterate over the current buffer +

Before you stop the unset buffering, you can iterate over the current buffer using -



\GlsXtrForUnsetBufferedList{cs}

-

+

where ⟨cs⟩ is a control sequence that takes a single argument (which is the entry label). This is best used with the starred version \GlsXtrStartUnsetBuffering* to avoid duplicates. -

You can discard the buffer and restore

You can discard the buffer and restore \glsunset to its normal behaviour with (new to v1.42): -



\GlsXtrDiscardUnsetBuffering

-

-

Note that since the change in the first use flag now doesn’t occur until +

+

Note that since the change in the first use flag now doesn’t occur until \GlsXtrStopUnsetBuffering, multiple references of the same term within the buffering zone will always be treated as first use (if the term wasn’t used before the buffering started).
-

-

There can still be a problem here as content within

+

There can still be a problem here as content within \mbox can’t break across a line so you may end up with an overfull line or excessive white space within the paragraph. -

An alternative is to use

An alternative is to use \protect: @@ -4947,7 +4984,7 @@ class="cmtt-10">\protect: \ul{Some text about \protect\gls{html}.} \GlsXtrStopUnsetBuffering -

but the formatting (underlining in this example) won’t be applied. Another +

but the formatting (underlining in this example) won’t be applied. Another possibility is: @@ -4970,7 +5007,7 @@ possibility is: Next use: \gls{html}. \end{document} -

This moves

This moves \gls outside of \ul and uses textformattextformat\gul, which locally changes the regular font and the default abbreviation font to use \ul. It then uses -



\GlsXtrExpandedFmt{cs}{text}

-

+

which (protected) fully expands ⟨text⟩ before applying ⟨cs⟩, which must be a control @@ -5004,12 +5041,12 @@ something that \ul can’t deal with. For example, if an abbreviation style is used that contains complex formatting or if the field value contains problematic content. -

+

-

Top

2.7 Plurals

-

Some languages, such as English, have a general rule that plurals are formed from +

Some languages, such as English, have a general rule that plurals are formed from the singular with a suffix appended. This isn’t an absolute rule. There are plenty of exceptions (for example, geese, children, churches, elves, fairies, sheep). The

To make life easier for languages where the majority of plurals can simply be +

To make life easier for languages where the majority of plurals can simply be formed by appending a suffix to the singular, the glossaries package lets the plural supplied as well, and you only need to use it for the exceptions. -

For languages that don’t have this general rule, the

For languages that don’t have this general rule, the plural field will always need to be supplied, where needed. -

There are other plural fields, such as

There are other plural fields, such as firstplural, longpluralshortplural

If these fields are omitted, the

If these fields are omitted, the glossaries package follows these rules:

  • -

    If

    If firstplural is missing, then \glspluralsuffix is appended to the text\glspluralsuffix appended.

  • -

    If the

    If the longplural field is missing, then \glspluralsuffix is appended to @@ -5103,7 +5140,7 @@ class="cmss-10">long field has been supplied.

  • -

    If the

    If the shortplural field is missing then, with the base short field.

-

This

This last case is changed with glossaries-extra. With this extension package, the \abbrvpluralsuffix is redefined. In most cases its redefined to use -



\glsxtrabbrvpluralsuffix

-

+

which defaults to just \glspluralsuffix. Some of the abbreviation styles have their @@ -5152,7 +5189,7 @@ class="cmtt-10">\abbrvpluralsuffix, which changes with the style. Redefining \acrpluralsuffix will have no affect, since it’s not used by the new abbreviation mechanism. -

If you require a mixture (for example, in a multilingual document), there are two +

If you require a mixture (for example, in a multilingual document), there are two attributes that affect the short plural suffix formation. The first is aposplural '\abbrvpluralsuffix -

That is, an apostrophe followed by

That is, an apostrophe followed by \abbrvpluralsuffix is appended. The second attribute is shortpluralshort. -

+

-

Top

2.8 Nested Links

-

Complications arise when you use

Complications arise when you use \gls in the value of the name

Things can go wrong if we try the following with the

Things can go wrong if we try the following with the glossaries package: @@ -5205,12 +5242,12 @@ class="cmss-10">glossaries package: \newacronym{html}{HTML}{Hypertext Markup Language} \newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}} -

-

The main problems are: +

+

The main problems are:

  1. -

    The first letter upper casing commands, such as \Gls, won’t work for the @@ -5227,7 +5264,7 @@ href="#glo:firstuse">first use if the long form is displayed before the shor

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

    which just doesn’t work. Grouping the

    which just doesn’t work. Grouping the \gls{ssi} doesn’t work either as this will effectively try to do @@ -5237,7 +5274,7 @@ class="cmtt-10">\gls{ssi} doesn’t work either as this

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

    This will upper case the label

    This will upper case the label ssi so the entry won’t be recognised. This problem will also occur if you use the all capitals version, such as \GLS

  2. -

    The long and abbreviated forms accessed through \glsentrylong and @@ -5257,7 +5294,7 @@ class="cmtt-10">\glsentryshort

  3. -

    The nested commands may end up in the sort key, which will confuse the @@ -5265,7 +5302,7 @@ class="cmss-10">sort

  4. -

    The shtml entry produces inconsistent results depending on whether the ssi @@ -5282,15 +5319,15 @@ class="cmtt-10">shtml. For example:

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

    This produces: +

    This produces:

    -

    This section discusses server side includes (SSI), hypertext +

    This section discusses server side includes (SSI), hypertext markup language (HTML) and SSI enabled HTML (SHTML).

    -

    So the

    So the first use of the shtml entry produces “SSI enabled HTML (SHTML)”. -

    Now let’s suppose the

    Now let’s suppose the html entry is used before the shtml but the ssi entry is @@ -5304,17 +5341,17 @@ class="cmtt-10">shtml entry, for example: The sample files are either \gls{html} or \gls{shtml}, but let's first discuss \gls{ssi}. -

    This produces: +

    This produces:

    -

    The sample files are either hypertext markup language (HTML) +

    The sample files are either hypertext markup language (HTML) or server side includes (SSI) enabled HTML (SHTML), but let’s first discuss SSI.

    -

    So the

    So the first use of the shtml entry now produces “server side includes (SSI) enabled HTML (SHTML)”, which looks a bit strange. -

    Now let’s suppose the

    Now let’s suppose the shtml entry is used before (or without) the other two entries: @@ -5324,17 +5361,17 @@ class="cmtt-10">shtml entry is used before (or without) the other two

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

    This produces: +

    This produces:

    -

    This article is an introduction to server side includes (SSI) +

    This article is an introduction to server side includes (SSI) enabled hypertext markup language (HTML) (SHTML).

    -

    So the

    So the first use of the shtml entry now produces “server side includes (SSI) enabled hypertext markup language (HTML) (SHTML)”, which is even more strange. -

    This is all aggravated by setting the style using the

    This is all aggravated by setting the style using the glossaries package’s \setacronymstyle. For example: @@ -5345,7 +5382,7 @@ class="cmtt-10">\setacronymstyle. For example:

          \setacronymstyle{long-short}
     
    -

    as this references the label through the use of

    as this references the label through the use of \glslabel when displaying the long and short forms, but this value changes with each use of \gls, so @@ -5357,7 +5394,7 @@ class="cmtt-10">\glslabel has been changed to html by \gls{html}. -

    Another oddity occurs if you reset the

    Another oddity occurs if you reset the html entry between uses of the shtml entry. For example: @@ -5368,10 +5405,10 @@ class="cmtt-10">shtml

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

    The next use of

    The next use of shtml produces “Shypertext markup language (HTML)”, which is downright weird. -

    Even without this, the short form has nested formatting commands, which +

    Even without this, the short form has nested formatting commands, which amount to \acronymfont{S\acronymfont{HTML}}. This may not be a problem for some styles, but if you use one of the “sm” styles (that use \textsmaller

  5. -

    Each time the shtml entry is used, the html entry will also be indexed and @@ -5395,7 +5432,7 @@ class="cmtt-10">html

  6. -

    If hyperref is in use, you’ll get nested hyperlinks and there’s no consistent way @@ -5407,7 +5444,7 @@ class="cmss-10">hyperref

-

For these reasons it’s better to use the simple expandable commands +

For these reasons it’s better to use the simple expandable commands like \glsentrytext or -

with

with glossaries or: @@ -5435,7 +5472,7 @@ class="cmss-10">glossaries or:  [description={\glsxtrshort{ssi} enabled \glsxtrshort{html}}]  {shtml}{SHTML}{SSI enabled HTML} -

with

with glossaries-extra. This fixes all the above listed problems (as long as you don’t use \glsdescfirst use issue, but it doesn’t fix any of the other problems listed above. -

If it’s simply that you want to use the abbreviation font, you can use +

If it’s simply that you want to use the abbreviation font, you can use \glsabbrvfont: @@ -5460,10 +5497,10 @@ class="cmtt-10">\glsabbrvfont: \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). +

This will pick up the font style setting of the outer entry (shtml, in the above case). This isn’t a problem in the above example as all the abbreviations use the same style. -

However if you’re really determined to use

However if you’re really determined to use \gls in a field that may be included within some \gls{ssi} enabled \gls{html} -

is treated as +

is treated as @@ -5496,7 +5533,7 @@ form {\glstext[hyper=false,noindex]{ssi}} enabled {\glstext[hyper=false,noindex]{html}} -

This overcomes problems 

This overcomes problems 4, 5 and 6 listed above, but still doesn’t fix problems long-noshort-desc). -

Additionally, any instance of the long form commands, such as

Additionally, any instance of the long form commands, such as \glsxtrlong or shtml entry had instead been defined as:

 \newacronym{shtml}{SHTML}{\acrshort{ssi} enabled \acrshort{html}}
 
-

then (using the

then (using the long-short style) the first use will be like {\acronymfont{\glsentryshort{ssi}}} enabled {\acronymfont{\glsentryshort{html}}} (SHTML) -

whereas if the entry is defined as: +

whereas if the entry is defined as: @@ -5573,7 +5610,7 @@ href="#glo:firstuse">first use will be like \newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi} enabled \glsxtrshort{html}} -

then the

then the first use will be like: @@ -5584,7 +5621,7 @@ href="#glo:firstuse">first use will be like: {\glsabbrvfont{\glsentryshort{ssi}}} enabled {\glsabbrvfont{\glsentryshort{html}}} (SHTML) -

Note that the first optional argument of

Note that the first optional argument of \acrshort or \glsxtrshort is ignored in this context. (The final optional argument will be inserted, if present.) The @@ -5595,15 +5632,15 @@ class="cmtt-10">\glsxtrshort. Note that \acrshort doesn’t set the abbreviation style. -

Alternatively you can use: -


Alternatively you can use: +


\glsxtrp{field}{label}

-

+

where ⟨field⟩ is the field label and corresponds to a command in the form \gls\glstext) or in the form \glsxtrfield⟩ (e.g. \glsxtrshort). -

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


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


\glsps{label}

-

+

which is equivalent to \glsxtrp{short}{label}, and -



\glspt{label}

-

+

which is equivalent to \glsxtrp{text}{label}. -

The

The \glsxtrp command behaves much like the \glsfmtfield⟩ commands described in §??sec:headtitle 5 Entries in Sectioning Titles, Headers, Captions and Contents but the post-link hook is also suppressed and extra grouping is added. It automatically sets noindex to true. If you want to change this, you can use -



\glsxtrsetpopts{options}

-

+

For example: @@ -5668,15 +5705,15 @@ For example:

 \glsxtrsetpopts{hyper=false}
 
-

will just switch off the hyperlinks but not the indexing. Be careful using +

will just switch off the hyperlinks but not the indexing. Be careful using this command or you can end up back to the original problem of nested links. -

The hyper link is re-enabled within glossaries. This is done through the +

The hyper link is re-enabled within glossaries. This is done through the command: -



\glossxtrsetpopts

-

+

which by default just does @@ -5685,7 +5722,7 @@ which by default just does

 \glsxtrsetpopts{noindex}
 
-

You can redefine this if you want to adjust the setting when

You can redefine this if you want to adjust the setting when \glsxtrp is used in the glossary. For example: @@ -5695,8 +5732,8 @@ glossary. For example:

 \renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}}
 
-

-

For example, +

+

For example, @@ -5704,7 +5741,7 @@ glossary. For example:

 \glsxtrp{short}{ssi}
 
-

is equivalent to +

is equivalent to @@ -5714,7 +5751,7 @@ glossary. For example:  \glsxtrshort[hyper=false,noindex]{ssi}[]% } -

in the main body of the document or +

in the main body of the document or @@ -5724,8 +5761,8 @@ glossary. For example:  \glsxtrshort[noindex]{ssi}[]% } -

inside the glossary. (Note the post-link hook is locally disabled.) -

If

inside the glossary. (Note the post-link hook is locally disabled.) +

If \glsxtrp{short}{ssi} occurs in a sectioning mark, it’s equivalent to @@ -5735,37 +5772,37 @@ to

 {\glsxtrheadshort{ssi}}
 
-

(which recognises the

(which recognises the headuc attribute.) -

If

If hyperref has been loaded, then the bookmark will use \glsentryfield⟩ (\glsentryshort{ssi} in the above example). -

There are similar commands -


There are similar commands +


\Glsxtrp{field}{label}

-

+

for first letter upper case and -



\GLSxtrp{field}{label}

-

+

for all upper case. -

If you use any of the case-changing commands, such as

If you use any of the case-changing commands, such as \Gls or \Glstext\gls\glstext, in the definition of entries for any of the fields that may be used by those case-changing commands.
-

-

You can, with care, protect against issue 

+

You can, with care, protect against issue 1 by inserting an empty group at the start if the long form starts with a command that breaks the first letter uppercasing commands like \Gls, but you still won’t be able to use the all caps commands, such as \GLS. -

If you

If you really need nested commands, the safest method is @@ -5795,8 +5832,8 @@ class="cmti-10">really need nested commands, the safest method is \newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi} enabled \glsxtrp{short}{html}} -

but be aware that it may have some unexpected results occasionally. -

Example document: +

but be aware that it may have some unexpected results occasionally. +

Example document: @@ -5826,13 +5863,13 @@ Next page. \printglossaries \end{document} -

-

+

+

-

Top

2.9 Acronym Style Modifications

-

The

The glossaries-extra package provides a new way of dealing with abbreviations and @@ -5843,7 +5880,7 @@ class="cmtt-10">\newacronym\newabbreviation (see §??sec:abbreviations +class="cmbx-10">4 Abbreviations). The simplest way to update a document that uses \newacronym from @@ -5857,7 +5894,7 @@ class="cmss-10">glossaries-extra is do just add

 \setabbreviationstyle[acronym]{long-short}
 
-

before you define any entries. If you have used commands like

before you define any entries. If you have used commands like \acrshort, \acrlong\glsxtrshort\acrshort etc. -

For example, the following document using just

For example, the following document using just glossaries @@ -5908,7 +5945,7 @@ class="cmss-10">glossaries \printglossaries \end{document} -

can be easily adapted to use

can be easily adapted to use glossaries-extra: @@ -5925,7 +5962,7 @@ class="cmss-10">glossaries-extra: \printglossaries \end{document} -

Table 

Table 2.1 lists the nearest equivalent glossaries-extra abbreviation styles for the predefined acronym styles provided by glossaries, but note that the new styles use different formatting commands. See §??sec:predefabbrvstyles 4.4 Predefined Abbreviation Styles for further details.

@@ -5941,7 +5978,7 @@ Abbreviation Styles for further det -


@@ -5965,34 +6002,34 @@ class="cmtt-10">}
id="TBL-2-1" />

Old Style Name

New Style Name

long-sc-short

long-short-sc

long-sm-short

long-short-sm

long-sp-short

long-short
#1}}

short-long

short-long

sc-short-long

short-sc-long

sm-short-long

short-sm-long

long-short-desc

long-short-desc

long-sc-short-desc

long-short-sc-desc

long-sm-short-desc

long-short-sm-desc

long-sp-short-desc

long-short-desc
#1}}

short-long-desc

short-long-desc

sc-short-long-desc

short-sc-long-desc

sm-short-long-desc

short-sm-long-desc

dua

long-noshort

dua-desc

long-noshort-desc

footnote

short-footnote

footnote-sc

short-sc-footnote

footnote-sm

short-sm-footnote

footnote-desc

short-footnote-desc

footnote-sc-desc

short-sc-footnote-desc

footnote-sm-desc

short-sm-footnote-desc

@@ -6185,7 +6222,7 @@ class="cmss-10">short-sm-footnote-desc
-

The reason for introducing the new style of abbreviation commands provided by +

The reason for introducing the new style of abbreviation commands provided by glossaries-extra is because the original acronym commands provided by glossaries are @@ -6194,13 +6231,13 @@ class="cmss-10">glossaries-extra. However, if you really want to restore the generic acronym function provided by glossaries you can use -



\RestoreAcronyms

-

+

(before any use of \newacronym). -

\RestoreAcronyms should not be used in combination with the newer glossaries-extra abbreviations. Don’t combine old and new style entries with the same @@ -6210,7 +6247,7 @@ class="cmss-10">typeglossaries acronym mechanism doesn’t work well with the newer glossaries-extra commands. -

If you use

-

-

In general, there’s rarely any need for

+

In general, there’s rarely any need for \RestoreAcronyms. If you have a document that uses \newacronymstyle\newabbreviationstyle§??sec:newabbrvstyle 4.5 Defining New Abbreviation Styles for further details.) -



\glsacspace{label}

-

+

The space command \glsacspace used by the long-sp-short acronym style provided by glossaries is modified so that it uses -



\glsacspacemax

-

+

instead of the hard-coded 3em. This is a command not a length and so can be changed using \renewcommand. -

Any of the new abbreviation styles that use

Any of the new abbreviation styles that use \glsxtrfullsep (such as \glsacspace with

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

-

The

+

The first use acronym font command -



\firstacronymfont{text}

-

+

is redefined to use the first use abbreviation font command \glsfirstabbrvfont. This will be reset if you use \RestoreAcronyms. -

The subsequent use acronym font command -


The subsequent use acronym font command +


\acronymfont{text}

-

+

is redefined to use the subsequent use abbreviation font command \glsabbrvfont. This will be reset if you use \RestoreAcronyms.

-

Top

2.10 Glossaries

-

The

The \newignoredglossary{targeturl§??sec:categories 6 Categories for further details.) As from v1.12 both the starred and unstarred version check that the glossary doesn’t already exist. (The glossaries package omits this check.) -

You can now provide an ignored glossary with: -


You can now provide an ignored glossary with: +


\provideignoredglossary{type}

-

+

which will only define the glossary if it doesn’t already exist. This also has a starred version that doesn’t automatically switch off hyperlinks. -

The individual glossary displaying commands

The individual glossary displaying commands \printglossary, \printnoidxglossary\printunsrtglossary have extra keys:

  • -

    target. This is a boolean key which can be used to switch off the automatic hypertarget for each entry. Unlike \glsdisablehyper this doesn’t switch

  • -

    targetnameprefix={\glolinkprefix class="cmtt-10">\gls).

  • -

    prefix={prefix\gls.

  • -

    label={} and also defines class="cmtt-10">\@currentlabelname to the glossary’s TOC title (to provide text for \nameref). You can also set the label before the glossary using: -



    \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 variations). It has no effect with \printglossary and \printnoidxglossary. -

    If true (default), group formation (group header and group skip) will be +

    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 @@ -6424,7 +6461,7 @@ class="cmss-10">group

  • -

    leveloffset. This key (new to v1.44) is designed for use with \printunsrtglossary @@ -6434,7 +6471,7 @@ class="cmtt-10">… variations). It has no effect with \printglossary and \printnoidxglossary. -

    The value may either be a simple integer ⟨

    The value may either be a simple integer ⟨n⟩ to indicate assignment or in the form ++N is 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 +

    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 but can be switched off with groups. See Gallery: Inner or Nested Glossaries for an example.

-

+

-

Top

2.10.1 Glossary Style Modifications

-

The

Top

2.11 Glossary Style Modifications

+

The glossaries-extra-stylemods package (more conveniently loaded through the stylemodsglossaries package. These modifications are described in more detail in §??sec:stylemods The 2.11.3 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: @@ -6516,21 +6553,22 @@ For example:

 \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

Top

2.11.1 Style Hooks

+

The commands \glossentryname and \glossentrydesc\glossentrydescglossname, glossnamefont, glossnamefont, glossdescglossdescfont§??sec:categories 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 glosssymbolfont. Note that, unlike the above, there’s no corresponding -attribute to change the case as it’s usually not appropriate to change the case of a -symbol (and for some symbols, such as pictographs, there’s no concept of case). If - attribute. Note that, unlike the above, there’s no +corresponding attribute to change the case as it’s usually not appropriate to change +the case of a symbol (and for some symbols, such as pictographs, there’s no concept +of case). If \texorpdfstring has been defined \glossentrysymbol will be defined to do: -

+ id="dx1-17010"> will be defined to +do:

\texorpdfstringTeX code⟩ part is robust and deals with the actual typesetting of the symbol. The ⟨PDF⟩ part is simply: -



\glsentrypdfsymbol{label}

-

+

which is defined to just do \glsentrysymbol{labelsymbol\glsentrypdfsymbol to use a more appropriate field. (If you do redefine this command, remember that it needs to fully expand.) -

For example, if you are using

For example, if you are using glossaries-accsupp, you could use the symbolaccess \renewcommand{\glsentrypdfsymbol}[1]{\glsentrysymbolaccess{#1}} -

Alternatively, if you are using

Alternatively, if you are using bib2gls you can use the TeX parser library to @@ -6630,7 +6669,7 @@ options:   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: @@ -6641,59 +6680,60 @@ 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 \glossentryname (that is, it obeys the glossname, attribute, +uses either the glossnamefont or -\glsnamefont and uses the post-name hook) but it uses the given ⟨field⟩ instead of - attribute or \glsnamefont to format the text, and uses +the post-name hook) but it uses the given ⟨field⟩ instead of name. The ⟨field⟩ argument must be the internal field name (for example desc rather -than field⟩ +argument must be the internal field name (for example desc rather than +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 §??sec:autoindex 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 -

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 @@ -6833,10 +6873,10 @@ do: \renewcommand{\glsxtrpostdescgeneral}{\space  (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 nopostdot option to suppress the terminating full stop.) See §??sec:stylemods The +class="cmbx-10">2.11.3 The glossaries-extra-stylemods Package to patch the predefined styles provided by glossaries that are missing \glspostdescription.
-

-

+

+

-
Number List
-

The

Top

2.11.2 Number List

+

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 @@ -6920,25 +6961,25 @@ class="cmti-10">pages⟩ is the text to display otherwise. For examp

 \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 @@ -6958,42 +6999,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 @@ -7037,7 +7078,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 @@ -7047,14 +7088,15 @@ 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,

Top

2.11.3 The glossaries-extra-stylemods Package

+

As from v1.02, glossaries-extra now includes the package glossaries-extra-stylemods that @@ -7071,7 +7113,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 -

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 @@ -7116,7 +7158,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: @@ -7124,13 +7166,17 @@ identifiers. For example:

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

-

Note that the

+

+

Inline Style + Note that the inline style is dealt with slightly differently. The original definition + id="dx1-20001"> style is dealt with slightly differently. The original definition provided by the glossary-inline package uses package uses \glspostdescription at the end of the glossary (not after each entry description) within the definition of \glspostinline. @@ -7145,23 +7191,27 @@ class="cmtt-10">\glsxtrpostdescription (not \glspostdescription). This means that the modified inline style isn’t affected by the style isn’t affected by the nopostdot option, but the post-description + id="dx1-20004"> option, but the post-description category hook can still be used. -

The +

Tabular Styles + The tabular-like styles, such as -like styles, such as long are adjusted so that the are adjusted so that the \ifglsnogroupskip + id="dx1-21004"> conditional (set with nogroupskip) is moved outside of the definition of + id="dx1-21005">) is moved outside of the definition of \glsgroupskip to avoid problems that cause an “Incomplete \iftrue” error with @@ -7171,21 +7221,21 @@ class="cmtt-10">\printnoidxglossary. This means that if you want to change this conditional using \setupglossaries or using the nogroupskip option in + id="dx1-21006"> option in \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: @@ -7195,85 +7245,130 @@ class="cmtt-10">\space but may be redefined as required. For example:

 \renewcommand{\glsxtrprelocation}{\dotfill}
 
-

-

The

+

+

List Styles + The list styles use -


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 and altlist styles (but not the styles (but not the listdotted variations). -

For just the variations). +

As from v1.47, the item is governed by: +


\glslistitem{label}

+

+The altlist styles use: +


\glsaltlistitem{label}

+

+which internally uses \glslistitem. The header item (for the list styles that should +the group title) is governed by: +


\glslistgroupheaderitem{group-label}{header code}

+

+This ignores the ⟨group-label⟩ by default and simply places the second argument in the +optional argument of \item. The ⟨header code⟩ is the formatted group title, +possibly including a hypertarget. The spacing after the group item is given +by: +


\glslistgroupafterheader

+

+

For just the list style and its letter group variations (not the style and its letter group variations (not the altlist or or listdotted + id="dx1-22015"> variations) the number 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 + id="dx1-22018"> 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: -


) 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 is set. +

The glossary-tree package introduced new commands in v4.22, package introduced new commands in v4.22, \glstreegroupheaderfmt + id="dx1-22023"> and \glstreenavigationfmt, which are used to format the letter group + id="dx1-22024">, which are used to format the letter group headings and the navigation elements for the appropriate styles. These two new commands are defined in terms of \glstreenamefmt since that was + id="dx1-22025"> since that was the command originally used for the group headings and navigation. This now allows these different elements to be defined independently, but the most common redefinition is for \glstreenamefmt has been defined, as from v1.31 glossaries-extra-stylemods + id="dx1-22026"> 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 + id="dx1-22029"> without penalties. This command isn’t used if nogroupskip is set. (The penalties introduced in v1.41 were moved to + id="dx1-22030"> is set. (The penalties introduced in v1.41 were moved to \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 + + + default and is inserted before the group title. You can redefine it to add the group title to the PDF bookmarks. For example, if the glossary title uses \chapter @@ -7359,198 +7454,198 @@ then:  \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 glossary-tree package provides the commands -


package provides the commands +


\glstreepredesc

-

+

and -



\glstreechildpredesc

-

+

(which both default to a space) and uses them in the tree-like styles, but not for the + id="dx1-22036">-like styles, but not for the alttree style. The style. The glossaries-extra-stylemods package modifies the package modifies the alttree style so that it + id="dx1-22039"> style so that it has equivalent hooks: -



\glsalttreepredesc

-

+

and -



\glsalttreechildpredesc

-

+

These do nothing by default. -

The

The index-like and -like and tree-like styles insert the pre--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 + id="dx1-22048"> 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 + id="dx1-22050"> styles, so there’s only a command for the child description: -



\glstreenonamechilddesc{label}

-

+

-

For the

For the tree styles (but not the styles (but not the treenoname or or alttree styles), the description is + id="dx1-22054"> 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 alttree style to make it easier to modify. These + id="dx1-22062"> style to make it easier to modify. These commands are only defined if the glossary-tree package has already been loaded, + id="dx1-22063"> package has already been loaded, which is typically the case unless the notree option has been used when loading + id="dx1-22064"> option has been used when loading glossaries. -



\gglssetwidest[level]{name}

-

+

(New to version 1.21.) This is like \glssetwidest (provided by glossary-tree) but + id="dx1-22066">) but performs a global assignment. -



\eglssetwidest[level]{}

-

+

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 set-widest which will try to determine the widest name of all the selected entries. This isn’t guaranteed to work as it may depend on fonts or commands that 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 + id="dx1-22077"> 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 alttree style occur at the end of the document. + id="dx1-22080"> style occur at the end of the document. This command should be placed just before the start of the glossary. (Alternatively, place it at the end of the document and save the value in the auxiliary file for the next run.) -



\glsFindWidestUsedAnyName[glossary list]

-

+

This is like the previous command but if doesn’t check the parent key. This is useful if + id="dx1-22082"> 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]{register}

-

+

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 list]{register}{location register}

-

+

This is like \glsFindWidestUsedAnyNameSymbol but also measures the number list. This requires \glsentrynumberlist (see the (see the glossaries user manual). The length of the widest symbol is stored in ⟨symbol register⟩ and the length of the widest number + id="dx1-22091">number list is stored in ⟨location register⟩. -



\glsFindWidestAnyNameSymbolLocation[glossary list]{register}{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 ⟨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 number list is governed by +

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 + id="dx1-22099"> 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, + id="dx1-22102"> style, see the documented code (glossaries-extra-code.pdf). See also the accompanying sample files 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 use the stylemods option. + id="dx1-23001"> option.

-

Top

3.1 glossary-bookindex package

-

As from v1.21,

As from v1.21, glossaries-extra has a new supplementary package glossary-bookindex + id="dx1-24001"> which provides the glossary style bookindex. This is very similar to the . This is very similar to the mcolindexgroup + id="dx1-24003"> style but is designed for indexes, so by default only the name and location list are displayed. You can either load this package explicitly and then set the style: @@ -7876,12 +7971,12 @@ style: \usepackage{glossary-bookindex} \setglossarystyle{bookindex} -

or use both the

or use both the stylemods and and style options: + id="dx1-24005"> options: @@ -7889,38 +7984,38 @@ class="cmss-10">style \usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} -

The

The bookindex style only supports a maximum hierarchical level of 2 (top-level, + id="dx1-24006"> style only supports a maximum hierarchical level of 2 (top-level, level 1 and level 2). It’s primarily designed for use with bib2gls. It may be used with other indexing options, but some features may not be present and UTF-8 characters may cause a problem with non-Unicode engines in letter group headings or PDF bookmarks. (bib2gls uses numeric identifies by default to avoid these problems. If numbers show up in the group headings instead of the appropriate characters, check that you have used the record package + id="dx1-24009"> 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 -


environment. If the command +


\glsxtrbookindexcolspread

-

+

isn’t empty then it’s supplied as the optional argument following \begin{multicols} {n}. You can switch from multicols to to multicols* by redefining -


by redefining +


\glsxtrbookindexmulticolsenv

-

+

For example @@ -7945,14 +8040,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{ -

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

or if you want the description (if set): @@ -7980,30 +8075,30 @@ default. For example, if you want the symbol to be included:  \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 @@ -8015,125 +8110,125 @@ 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 -


field won’t be set. +

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 bib2gls to omit the -

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 @@ -8176,43 +8271,43 @@ with the sub-entries, and a level 1 entry has its cross-reference aligned sub-sub-entries. In the event that a level 2 entry has a cross-reference, this is indented a bit further (but it won’t be aligned with any deeper level as the bookindex + id="dx1-24036"> style only supports a maximum of two sub-levels). -

The

The bookindex style uses group headings. (If you use 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 section=chapter is set (default if chapters are defined) then this + id="dx1-24040"> is set (default if chapters are defined) then this uses level 1 otherwise it uses level 2. You can redefine this command if this isn’t appropriate. If \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 @@ -8223,58 +8318,58 @@ which is defined as   \par{\centering\glstreegroupheaderfmt{#1}\par}% } -

where

where \glstreegroupheaderfmt is provided by the glossary-tree package, which is + id="dx1-24042"> 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 + id="dx1-24043"> package provides some supplementary commands that aren’t used by default, but may be used when adjusting the style. These commands should only be used within one of the \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: @@ -8288,7 +8383,7 @@ current entry:   \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: @@ -8301,10 +8396,10 @@ class="cmtt-10">\glsxtrbookindexname:   \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 + id="dx1-24049"> you can set the page style to show the first and last entry for the current page with: @@ -8317,35 +8412,35 @@ entry for the current page with:   \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-longextra that provides additional styles, listed below, that use the + id="dx1-25001"> that provides additional styles, listed below, that use the longtable environment. If you know that your glossary won’t span more than a page + id="dx1-25002"> environment. If you know that your glossary won’t span more than a page and you need to use it in a context that’s incompatible with longtable, you can + id="dx1-25004">, you can instead setup these styles to use tabular instead. In order to do this you must + id="dx1-25006"> instead. In order to do this you must use -



\GlsLongExtraUseTabulartrue

-

+

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

or +

or @@ -8365,52 +8460,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 + id="dx1-25011"> 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 + id="dx1-25013"> 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 + id="dx1-25015"> and the column alignment is given by: -



\glslongextraLocationAlign

-

+

which expands to @@ -8419,20 +8514,20 @@ which expands to

 >{\raggedright}p{\glspagelistwidth}
 
-

by default. (Ragged-right paragraph,

by default. (Ragged-right paragraph, \glspagelistwidth is defined in is defined in glossary-long, + id="dx1-25018">, which is automatically loaded.) -

The description column has the title given by

The description column has the title given by \descriptionname and the column + id="dx1-25019"> and the column alignment is given by: -



\glslongextraDescAlign

-

+

which expands to @@ -8441,22 +8536,22 @@ which expands to

 >{\raggedright}p{\glsdescwidth}
 
-

by default. (Ragged-right paragraph,

by default. (Ragged-right paragraph, \glsdescwidth is defined in is defined in glossary-long, + id="dx1-25022">, 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: @@ -8465,7 +8560,7 @@ class="cmtt-10">\glsdescwidth is computed as: \glsdescwidth = \linewidth- 4\tabcolsep- W

-

where

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

@@ -8479,55 +8574,55 @@ 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 provided with the alttree style, but in this case there’s no hierarchy. The default + id="dx1-25026"> style, but in this case there’s no hierarchy. The default widest name is obtained from the alttree top-level name if set, otherwise it’s empty, + id="dx1-25027"> top-level name if set, otherwise it’s empty, so you can use 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 bib2gls’s 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: @@ -8539,8 +8634,8 @@ to redefine this command:  \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: @@ -8552,14 +8647,14 @@ class="cmtt-10">\glslongextraSetDescWidth. For example:   \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 @@ -8577,7 +8672,7 @@ you can redefine this command. For example:   \addtolength{\glsdescwidth}{-3cm}% } -

or +

or @@ -8587,14 +8682,14 @@ you can redefine this command. For example:   \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 @@ -8604,13 +8699,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 @@ -8618,13 +8713,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:

@@ -8701,35 +8796,35 @@ 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: -



\glslongextraSubLocationFmtlevel{label}{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: @@ -8767,11 +8862,11 @@ happen to be the same).   \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 \descriptionname and (where present) the symbol column \symbolname, as for the other long styles that have headers.

-

+

-

long-name-desc This is like the This is like the longragged-booktabs style but doesn’t show + id="dx1-25045"> style but doesn’t show the location list (regardless of the nonumberlist option). The name is shown + id="dx1-25046"> 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 + id="dx1-25048"> but makes it easier to adjust the header without having to define a new style. This is defined as: @@ -8810,30 +8905,30 @@ class="cmss-10">longragged-booktabs -

where: -


where: +


\glslongextraNameDescTabularHeader

-

+

sets up the header and -



\glslongextraNameDescTabularFooter

-

+

sets up the footer. If you have setup the tabular version of this style then the + id="dx1-25051"> version of this style then the above two commands are used at the start and end of the tabular environment + id="dx1-25053"> 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 + id="dx1-25055"> version of the style): @@ -8842,7 +8937,7 @@ class="cmss-10">longtable \renewcommand{\glslongextraNameDescHeader}{} -

Or to change the name alignment to centred: +

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

+

-

+

-

long-name-desc-loc This is like the This is like the long-name-desc style but has a third column + id="dx1-25058"> style but has a third column for the location list. The longtable header is given by: -


header is given by: +


\glslongextraNameDescLocationHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25062"> version: -



\glslongextraNameDescLocationTabularHeader

-

+

and -



\glslongextraNameDescLocationTabularFooter

-

+

-

+

-

long-desc-name This is like the This is like the long-name-desc style but swaps the columns. + id="dx1-25067"> style but swaps the columns. Note that if the entry counter is displayed it will appear at the start of the second column by default. The longtable header is formatted according + id="dx1-25068"> header is formatted according to: -



\glslongextraDescNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25071"> version: -



\glslongextraDescNameTabularHeader

-

+

and -



\glslongextraDescNameTabularFooter

-

+

-

+

-

long-loc-desc-name This has three columns containing the location list, + id="dx1-25075"> This has three columns containing the location list, description and name. The longtable header is formatted according + id="dx1-25076"> header is formatted according to: -



\glslongextraLocationDescNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25079"> version: -



\glslongextraLocationDescNameTabularHeader

-

+

and -



\glslongextraLocationDescNameTabularFooter

-

+

-

+

-

long-name-desc-sym This is has three columns, with the name in the first, the + id="dx1-25083"> 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: -


header row is produced with: +


\glslongextraNameDescSymHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25087"> version: -



\glslongextraNameDescSymTabularHeader

-

+

and -



\glslongextraNameDescSymTabularFooter

-

+

-

+

-

long-name-desc-sym-loc This is has four columns, with the name in the first, the + id="dx1-25091"> 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: -


header row is produced with: +


\glslongextraNameDescSymLocationHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25095"> version: -



\glslongextraNameDescSymLocationTabularHeader

-

+

and -



\glslongextraNameDescSymLocationTabularFooter

-

+

-

+

-

long-name-sym-desc This is like the This is like the long-name-desc-sym but the second and + id="dx1-25100"> but the second and third column are swapped. The longtable header row is given by: -


header row is given by: +


\glslongextraNameSymDescHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25104"> version: -



\glslongextraNameSymDescTabularHeader

-

+

and -



\glslongextraNameSymDescTabularFooter

-

+

-

+

-

long-name-sym-desc-loc This is like the This is like the long-name-desc-sym-loc but the + id="dx1-25109"> but the second and third column are swapped. The longtable header row is given + id="dx1-25110"> header row is given by: -



\glslongextraNameSymDescLocationHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25113"> version: -



\glslongextraNameSymDescLocationTabularHeader

-

+

and -



\glslongextraNameSymDescLocationTabularFooter

-

+

-

+

-

long-sym-desc-name This has the symbol in the first column, the description in + id="dx1-25117"> This has the symbol in the first column, the description in the second and the name in the third. The longtable header row is given + id="dx1-25118"> header row is given by: -



\glslongextraSymDescNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25121"> version: -



\glslongextraSymDescNameTabularHeader

-

+

and -



\glslongextraSymDescNameTabularFooter

-

+

-

+

-

long-loc-sym-desc-name This has the location list in the first column, symbol in + id="dx1-25125"> This has the location list in the first column, symbol in the second column, the description in the third and the name in the fourth. The longtable header row is given by: -


header row is given by: +


\glslongextraLocationSymDescNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25129"> version: -



\glslongextraLocationSymDescNameTabularHeader

-

+

and -



\glslongextraLocationSymDescNameTabularFooter

-

+

-

+

-

long-desc-sym-name This has the description in the first column, the symbol in + id="dx1-25133"> This has the description in the first column, the symbol in the second and the name in the third. The longtable header row is given + id="dx1-25134"> header row is given by: -



\glslongextraDescSymNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25137"> version: -



\glslongextraDescSymNameTabularHeader

-

+

and -



\glslongextraDescSymNameTabularFooter

-

+

-

+

-

long-loc-desc-sym-name This has the location list in the first column, the + id="dx1-25141"> This has the location list in the first column, the description in the second column, the symbol in the third and the name in the fourth. The longtable header row is given by: -


header row is given by: +


\glslongextraLocationDescSymNameHeader

-

+

which similarly defined in terms of the commands used for the tabular + id="dx1-25145"> 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-topic that provides glossary styles designed for hierarchical glossaries + id="dx1-26001"> that provides glossary styles designed for hierarchical glossaries where the top-level entries are topic titles. This package automatically loads the multicols package. If the package. If the glossary-tree package is also loaded then commands like + id="dx1-26003"> package is also loaded then commands like \glssetwidest can be used on these styles in much the same way as for the alttree + id="dx1-26004"> style. If a widest value isn’t set then these styles behave more like the tree + id="dx1-26005"> style.

-

+

topic

-

This style is similar to the

This style is similar to the tree style but the indentation doesn’t start until + id="dx1-26007"> style but the indentation doesn’t start until the second sub-item level. The top-level entries have the name displayed in a larger font with the description following in a new paragraph. This style doesn’t support the nogroupskip setting. + id="dx1-26008"> setting.

-

+

topicmcols

-

This style is like the

This style is like the topic style but the sub-entries are placed inside a style but the sub-entries are placed inside a multicols + id="dx1-26011"> environment. The environment name is supplied in the value of the command: -



\glstopicColsEnv

-

+

You can change this to the starred form. For example: @@ -9272,24 +9367,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 @@ -9299,32 +9394,32 @@ class="cmsy-10">- 1)×\glstopicSubIndent. The hanging indent depends on whether or not a widest name has been set for the level. -

As from v1.46, there is also a length for additional indentation used +

As from v1.46, there is also a length for additional indentation used in the second paragraph onwards for child entries with multi-paragraph descriptions: -



\glstopicSubItemParIndent

-

+

This is initialised to \parindent when when glossary-topic is loaded. -


is loaded. +


\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 @@ -9339,114 +9434,114 @@ example:   \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{level}{label}{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 @@ -9524,17 +9619,17 @@ 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. -

Don’t use

Don’t use \glsfirst, , \Glsfirst or or \GLSfirst with abbreviations as they aren’t + id="dx1-27003"> with abbreviations as they aren’t flexible enough to handle some abbreviation styles and unexpected results may occur. (To a lesser degree, this also applies to \glstext etc.) Use commands like + id="dx1-27004"> etc.) Use commands like \glsfmttext, \glsfmtshort or \gls. If you don’t want the full form to show on first use of \gls use one of the “nolong” or “noshort” styles.
-

-

This lack of flexibility in

+

This lack of flexibility in \glsfirst can be demonstrated with the following document: @@ -9560,8 +9655,8 @@ document: Compare \gls{ex}['s] with \glsfirst{ex}['s]. \end{document} -

The

The first use \gls has the footnote marker after the inserted material “EX’s1” but @@ -9571,17 +9666,17 @@ class="cmr-9">1’s” which is inappropriate. Note that if the style is changed to postfootnote, the footnote marker appears after the + id="dx1-27006">, the footnote marker appears after the inserted material as \footnote is in the post-link hook. -

There are some instances where is in the post-link hook. +

There are some instances where \glstext can be useful. It’s used internally by \glsfmttext, which in turn is used by , which in turn is used by \glsseelistformat if the entry has a + id="dx1-27009"> if the entry has a short form. If \glsfmtshort is used, this enforces the short form, but if \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 @@ -9598,16 +9693,16 @@ replaced by an apostrophe, such as “don’t”). The “acrony class="cmss-10">glossaries package is misnamed as it’s more often than not used for initialisms instead. Acronyms tend not to be expanded on first use (although they may need + id="dx1-27010">first use (although they may need 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[options]{short}{long}

-

-

This sets the

+

This sets the category key to key to abbreviation by default, but that value may be overridden in ⟨options⟩. The category may have attributes that modify the way abbreviations are defined. For example, the insertdots attribute + id="dx1-27013"> attribute will automatically insert full stops (periods) into ⟨short⟩ or the noshortplural + id="dx1-27014"> attribute will set the default value of the shortplural key to just ⟨ key to just ⟨short⟩ (without appending the plural suffix). See §??sec:categories 6 Categories for further details. -

See

See §??sec:nested 2.8 Nested Links regarding the pitfalls of using commands like \gls + id="dx1-27016"> or \glsxtrshort within ⟨ within ⟨short⟩ or ⟨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 command provided by the glossaries package is redefined by glossaries-extra to use \newabbreviation with the category set to set to acronym (see also §??sec:acronymmods 2.9 Acronym Style Modifications) so -



\newacronym[options]{short}{long}

-

+

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

The

The \newabbreviation command is superficially similar to the glossaries package’s \newacronym but you can apply different styles to differe default style is short-nolong for entries in the for entries in the acronym category and category and short-long for + id="dx1-27023"> for entries in the abbreviation category. (These aren’t the same as the acronym + id="dx1-27024"> category. (These aren’t the same as the acronym styles provided by the glossaries 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 \gls and the inline full form, which is used by + id="dx1-27026"> and the inline full form, which is used by commands like \glsxtrfull. For some of the abbreviation styles, such as + id="dx1-27027">. For some of the abbreviation styles, such as long-short, the display and inline forms are the same. In the case of styles + id="dx1-27028">, the display and inline forms are the same. In the case of styles such as short-nolong or or short-footnote, the display and inline full forms are + id="dx1-27030">, 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, , long or + id="dx1-27033"> or longplural fields, which means they won’t be used within commands like + id="dx1-27034"> fields, which means they won’t be used within commands like \glsentryshort (but they are used within commands like \glsxtrshort and \glsfmtshort). Note that \glsxtrlong and the case-changing variants don’t use + id="dx1-27035"> 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}{category}

-

+

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 \setacronymstyle, \acrshort etc are described in §??sec:abbrstyle +class="cmbx-10">4.2 Abbreviation Styles. The acronymlists package option and associated commands + id="dx1-27038"> package option and associated commands aren’t supported. The \forallacronyms command, which iterates over all acronym + id="dx1-27039"> 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 the glossary it’s activated for those categories that have the tagging attribute set to + id="dx1-28002"> 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 @@ -9872,29 +9967,29 @@ 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 tagging attribute will automatically be set for + id="dx1-28005"> attribute will automatically be set for those categories. You can later set this attribute for other categories (see §??sec:categories 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 acronym and and abbreviation categories: + id="dx1-28007"> categories: @@ -9902,7 +9997,7 @@ class="cmss-10">abbreviation \GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag} -

This defines the command

This defines the command \itag which can be used in the definitions. For example: @@ -9921,25 +10016,25 @@ example: \newabbreviation{xml}{XML}  {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. -

+ id="dx1-28008"> 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 @@ -9952,22 +10047,22 @@ modify one or more of the attributes associated with the given category. For example, the long-noshort and and short-nolong styles set the styles set the regular attribute to + id="dx1-29004"> 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 is disabled by glossaries-extra. Use

}
instead. The original acronym interface can be restored with \RestoreAcronyms (see + id="dx1-29006"> (see §??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, + id="dx1-29007">, but don’t use the acronym commands like \acrshort (which use (which use \acronymfont). + id="dx1-29009">). The short form can be produced with: -



\glsxtrshort[options]{label}[insert]

-

+

(Use this instead of \acrshort.) -

The long form can be produced with -


.) +

The long form can be produced with +


\glsxtrlong[options]{label}[insert]

-

+

(Use this instead of \acrlong.) -

The .) +

The inline full form can be produced with -



\glsxtrfull[options]{label}[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, + id="dx1-29016"> 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 \gls. For example, the short-nolong style only displays the + id="dx1-29018"> style only displays the short form on first use, but the full form will display the long form followed by the + id="dx1-29019">first 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 §??sec:headtitle 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[options]{label}[insert]

-

-

First letter upper case long form: -


+

First letter upper case long form: +


\Glsxtrlong[options]{label}[insert]

-

-

First letter upper case inline full form: -


+

First letter upper case inline full form: +


\Glsxtrfull[options]{label}[insert]

-

-

All upper case short form: +

+

All upper case short form: -



\GLSxtrshort[options]{label}[insert]

-

-

All upper case long form: -


+

All upper case long form: +


\GLSxtrlong[options]{label}[insert]

-

-

All upper case inline full form: -


+

All upper case inline full form: +


\GLSxtrfull[options]{label}[insert]

-

-

Plural forms are also available. -

Short form plurals: -


+

Plural forms are also available. +

Short form plurals: +


\glsxtrshortpl[options]{label}[insert]

-

-


+


\Glsxtrshortpl[options]{label}[insert]

-

-


+


\GLSxtrshortpl[options]{label}[insert]

-

-

Long form plurals: -


+

Long form plurals: +


\glsxtrlongpl[options]{label}[insert]

-

-


+


\Glsxtrlongpl[options]{label}[insert]

-

-


+


\GLSxtrlongpl[options]{label}[insert]

-

-

Full form plurals: -


+

Full form plurals: +


\glsxtrfullpl[options]{label}[insert]

-

-


+


\Glsxtrfullpl[options]{label}[insert]

-

-


+


\GLSxtrfullpl[options]{label}[insert]

-

-

Be careful about using

+

Be careful about using \glsentryfull, \Glsentryfull, \glsentryfullpl and @@ -10245,41 +10340,41 @@ class="cmtt-10">\Glsentryfullpl. These commands will use the currently ap than the style in use when the entry was defined. If you have mixed styles, you’ll need to use \glsxtrfull instead. Similarly for instead. Similarly for \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=abbreviations + id="dx1-30001"> package option (or shortcuts=abbr) or ) or shortcuts=ac. (You can use both settings at the + id="dx1-30003">. (You can use both settings at the same time.) The provided shortcut commands listed in table ??tab:abbrshortcuts. +class="cmbx-10">4.1.

-


@@ -10287,7 +10382,7 @@ class="cmbx-10">??tab:abbrshortcuts.
Table 4.1: Abbreviation Shortcut Commands
+class="content">Abbreviation Shortcut Commands
(shortcuts=abbreviations) + id="dx1-30009"> + id="dx1-30012"> + id="dx1-30015"> + id="dx1-30018"> + id="dx1-30021"> + id="dx1-30024"> + id="dx1-30027"> + id="dx1-30030"> + id="dx1-30033"> + id="dx1-30036"> + id="dx1-30039"> + id="dx1-30042"> + id="dx1-30045"> + id="dx1-30048"> + id="dx1-30051"> + id="dx1-30054"> + id="dx1-30057"> + id="dx1-30060"> + id="dx1-30063"> + id="dx1-30066"> + id="dx1-30069"> + id="dx1-30072"> + id="dx1-30075"> + id="dx1-30078">
(shortcuts=ac)
\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
+ id="dx1-30081">

-

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 uses \glsgenentryfmt) and those that don’t treat the + id="dx1-31002">) and those that don’t treat the abbreviation as a regular entry (so that \gls uses uses \glsxtrgenabbrvfmt). -

The regular entry abbreviation styles set the ). +

The regular entry abbreviation styles set the regular attribute to “true” for the + id="dx1-31005"> attribute to “true” for the category assigned to each abbreviation with that style. This means that on first use, \gls uses the value of the uses the value of the first field and on subsequent use field and on subsequent use \gls uses the value of the + id="dx1-31009"> uses the value of the text field (and analogously for the plural and case-changing versions). The field (and analogously for the plural and case-changing versions). The short and + id="dx1-31011"> and long fields are set as appropriate and may be accessed through commands like + id="dx1-31012"> fields are set as appropriate and may be accessed through commands like \glsxtrshort. -

The other abbreviation styles don’t modify the . +

The other abbreviation styles don’t modify the regular attribute. The attribute. The first + id="dx1-31015"> and text fields (and their plural forms) are set and can be accessed through + id="dx1-31016"> fields (and their plural forms) are set and can be accessed through commands like \glsfirst, but they aren’t used by commands like \gls, which + id="dx1-31017">, which instead use the short form (stored in the short key) and the display full + id="dx1-31018"> key) and the display full format (through commands like \glsxtrfullformat that are defined by the + id="dx1-31019"> that are defined by the style). -

In both cases, the first use of

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

The sample file (and likewise for the plural and case-changing versions). +

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 + id="dx1-31023">, be careful about your choice of fonts as some only have limited support. For example, you may not be able to combine bold and small-caps. I recommend that you at least use the fontenc package with the 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 name and and sort fields when the + id="dx1-31026"> fields when the abbreviation is defined. These commands may use the helper token registers available within \newabbreviation, such as \glsshorttok. The contents of a register can be + id="dx1-31027">. The contents of a register can be accessed with \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 -


, 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 and short-long use -


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 and short-sc-long, use -


, use +


\glsabbrvscfont{text}

-

+

which uses \textsc.4.1 + id="x1-31042f1"> 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 @@ -10807,111 +10902,111 @@ This is defined as

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

The

The \glstextup command is provided by command is provided by glossaries and is used to switch off the small caps font for the suffix. If you override the default short plural using the shortplural key when you define the abbreviation you will need to + id="dx1-31046"> key when you define the abbreviation you will need to make the appropriate adjustment if necessary. (Remember that the default plural suffix behaviour can be modified through the use of the aposplural + id="dx1-31047"> and noshortplural attributes. See attributes. See §??sec:categories 6 Categories for further details.) -

The small styles, such as

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


, use +


\glsabbrvsmfont{text}

-

+

which uses \textsmaller. (This requires the relsizes package, which isn’t loaded by + id="dx1-31052"> 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

-

+


\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 or short-em-long, + id="dx1-31056">, 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 or short-em-long-em, + id="dx1-31061">, 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: @@ -11058,17 +11153,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 + id="dx1-31081">, 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 @@ -11082,8 +11177,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: @@ -11093,14 +11188,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: @@ -11110,7 +11205,7 @@ default, but may be changed as required. For example:

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

or +

or @@ -11118,11 +11213,11 @@ 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⟩[-modifier1⟩]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 + id="dx1-31084"> value, if provided, is inserted into the parenthetical material . (The field used for the inserted material may be changed.) -

    Examples:

    +

    Examples:

    • -

      long-noshort-sc: ⟨: ⟨field1⟩ is the long form, the short form is set in smallcaps but omitted in the display style.

    • -

      long-em-short-em: both the long form and the short form are + id="dx1-31086">: both the long form and the short form are emphasized. The short form is in parentheses.

    • -

      long-short-em: the short form is emphasized but not the long form. + id="dx1-31087">: the short form is emphasized but not the long form. The short form is in parentheses.

    • -

      long-short-user: if the : if the user1 key has been set, this produces the style + id="dx1-31089"> key has been set, this produces the style ⟨long⟩ (⟨short⟩, ⟨short⟩).

    • -

      long-hyphen-postshort-hyphen: the short form and the inserted + id="dx1-31090">: the short form and the inserted material (provided by the final optional argument of commands like \gls) is moved to the post-link hook. The long form is formatted @@ -11218,160 +11313,160 @@ class="cmtt-10">\glsfirstabbrvhyphenfont on first use).

  • -

    style-noreg -

    Some styles set the

    Some styles set the regular attribute. In some cases, there’s a version of the + id="dx1-31091"> attribute. In some cases, there’s a version of the style that doesn’t set this attribute. For example, long-em-noshort-em sets the + id="dx1-31092"> sets the regular attribute. The attribute. The long-em-noshort-em-noreg style is a minor variation that + id="dx1-31094"> 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 + id="dx1-31095">, that have “-noreg” version without a regular version. This is because the style won’t work properly with the regular set, but the naming scheme is maintained for + id="dx1-31096"> set, but the naming scheme is maintained for consistency with the other “noshort” styles.

  • -

    field1⟩[-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-footnote: short form in the text with the long form in the + id="dx1-31098">: short form in the text with the long form in the footnote.

    • -

      short-sc-postfootnote: short form in smallcaps with the long form in + id="dx1-31099">: 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 + id="dx1-31100">link-text.

+

Take care with the footnote styles. Remember that there are some situations where \footnote doesn’t work.
+ id="dx1-31101"> doesn’t work.
-

+

  • -

    style-desc -

    Like ⟨

    Like ⟨style⟩ but the description key must be provided when defining abbreviations + id="dx1-31102"> 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 + id="dx1-32001"> attribute to “true” for all categories that have abbreviations defined with any of these styles.

    -

    +

    short-nolong

    -

    This only displays the short form on

    This only displays the short form on first use. The name is set to the short form + id="dx1-32004"> 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 ⟨ is set to the long form. The inline full form displays ⟨short⟩ (⟨long⟩). The long form on its own can be displayed through commands like \glsxtrlong. + id="dx1-32007">.

    -

    +

    short

    -

    A synonym for

    A synonym for short-nolong. + id="dx1-32009">.

    -

    +

    nolong-short

    -

    Like

    Like short-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩).

    -

    +

    short-sc-nolong

    -

    Like

    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvscfont (which + id="dx1-32014"> (which defaults to \textsc).

    -

    +

    short-sc

    -

    A synonym for

    A synonym for short-sc-nolong + id="dx1-32016">

    -

    +

    nolong-short-sc

    -

    Like

    Like short-sc-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩). The name is still obtained from -shortmodifier⟩ unless indicated otherwise).

    -

    +

    short-sm-nolong

    -

    Like

    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont (which + id="dx1-32021"> (which defaults to \textsmaller).

    -

    +

    short-sm

    -

    A synonym for

    A synonym for short-sm-nolong. + id="dx1-32023">.

    -

    +

    nolong-short-sm

    -

    Like

    Like short-sm-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩).

    -

    +

    short-em-nolong

    -

    Like

    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-32028">.

    -

    +

    short-em

    -

    A synonym for

    A synonym for short-em-nolong + id="dx1-32030">

    -

    +

    nolong-short-em

    -

    Like

    Like short-em-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩).

    -

    +

    short-nolong-desc

    -

    Like the

    Like the short-nolong style, but the style, but the name is set to the full form obtained by + id="dx1-32035"> 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 + id="dx1-32037"> must be supplied by the user. You may prefer to use the short-nolong style with the post-description hook set to display + id="dx1-32038"> style with the post-description hook set to display the long form and override the description key. (See the sample file + id="dx1-32039"> key. (See the sample file sample-acronym-desc.tex.)

    -

    +

    short-desc

    -

    A synonym for

    A synonym for short-nolong-desc. + id="dx1-32041">.

    -

    +

    short-sc-nolong-desc

    -

    Like

    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvscfont (which + id="dx1-32044"> (which defaults to \textsc).

    -

    +

    short-sc-desc

    -

    A synonym for

    A synonym for short-sc-nolong-desc. + id="dx1-32046">.

    -

    +

    short-sm-nolong-desc

    -

    Like

    Like short-nolong-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont + id="dx1-32049"> (which defaults to \textsmaller).

    -

    +

    short-sm-desc

    -

    A synonym for

    A synonym for short-sm-nolong-desc. + id="dx1-32051">.

    -

    +

    short-em-nolong-desc

    -

    Like

    Like short-nolong-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-32054">.

    -

    +

    short-em-desc

    -

    A synonym for

    A synonym for short-em-nolong-desc. + id="dx1-32056">.

    -

    +

    long-noshort-desc

    -

    This style only displays the long form, regardless of first or subsequent use of +

    This style only displays the long form, regardless of first or subsequent use of commands \gls. The short form may be accessed through commands like + id="dx1-32058">. The short form may be accessed through commands like \glsxtrshort. The inline full form displays ⟨. The inline full form displays ⟨long⟩ (⟨short⟩). -

    The

    The sort key are set to the long form. The key are set to the long form. The name key is also set to the long form, + id="dx1-32061"> 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 + id="dx1-32063"> must be provided by the user. The predefined glossary styles won’t display the short form. You can use the post-description hook to automatically append the short form to the description. The inline full form will display ⟨long⟩ (⟨short⟩).

    -

    +

    long-desc

    -

    A synonym for

    A synonym for long-noshort-desc. + id="dx1-32065">.

    -

    +

    long-noshort-sc-desc

    -

    Like the

    Like the long-noshort-desc style but the short form (accessed through commands + id="dx1-32067"> style but the short form (accessed through commands like \glsxtrshort) use ) use \glsabbrvscfont. (This style was originally called + id="dx1-32069">. (This style was originally called long-desc-sc. Renamed in version 1.04, but original name retained as a + id="dx1-32070">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-noshort-sm-desc

    -

    Like

    Like long-noshort-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-32073">. (This style was originally called long-desc-sm. Renamed in version 1.04, but + id="dx1-32074">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-noshort-em-desc

    -

    Like

    Like long-noshort-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-32077">. The long form isn’t emphasized. (This style was originally called long-desc-em. + id="dx1-32078">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-em-noshort-em-desc

    -

    New to version 1.04, like

    New to version 1.04, like long-noshort-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. The long form uses . The long form uses \glsfirstlongemfont and + id="dx1-32082"> and \glslongemfont. + id="dx1-32083">.

    -

    +

    long-noshort

    -

    This style doesn’t really make sense if you don’t use the short form +

    This style doesn’t really make sense if you don’t use the short form anywhere in the document, but is provided for completeness. This is like the long-noshort-desc style, but the style, but the sort key is set to the short + id="dx1-32086"> key is set to the short form. The name key is also set to the short form, but this is done by + id="dx1-32087"> 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. + id="dx1-32089"> is set to the long form.

    -

    +

    long

    -

    A synonym for

    A synonym for long-noshort + id="dx1-32091">

    -

    +

    long-noshort-sc

    -

    Like the

    Like the long-noshort style but the short form (accessed through commands like + id="dx1-32093"> style but the short form (accessed through commands like \glsxtrshort) use ) use \glsabbrvscfont. (This style was originally called . (This style was originally called long-sc. + id="dx1-32096">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-noshort-sm

    -

    Like

    Like long-noshort but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. (This + id="dx1-32099">. (This style was originally called long-sm. Renamed in version 1.04, but original name + id="dx1-32100">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-noshort-em

    -

    This style is like

    This style is like long-noshort but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. The long form isn’t emphasized. (This style was originally + id="dx1-32103">. The long form isn’t emphasized. (This style was originally called long-em. Renamed in version 1.04, but original name retained as a + id="dx1-32104">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    long-em-noshort-em

    -

    New to version 1.04, this style is like

    New to version 1.04, this style is like long-noshort but redefines but redefines \glsabbrvfont to use \glsabbrvemfont, , \glsfirstlongfont to use \glsfirstlongemfont and \glslongfont to use \glslongemfont. The short form isn’t used by commands like \gls, but can be obtained using , but can be obtained using \glsxtrshort. The related + id="dx1-32109">. The related style long-em-noshort-em-noreg doesn’t set the doesn’t set the regular attribute. + id="dx1-32111"> 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 + id="dx1-33001"> attribute to “false” if it has previously been set. If it hasn’t already been set, it’s left unset. Other attributes may also be set, depending on the style.

    -

    +

    long-short

    -

    On

    On first use, this style uses the format ⟨long⟩ (⟨short⟩). The inline and display full forms are the same. The sort key is set to the short form. The key is set to the short form. The name is also set + id="dx1-33005"> 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 + id="dx1-33007"> is set to the long form. The long and short forms are separated by \glsxtrfullsep. If you want to insert material within the parentheses (such as a translation), try the long-short-user style. + id="dx1-33008"> style.

    -

    +

    long-short-sc

    -

    Like

    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33011">.

    -

    +

    long-short-sm

    -

    Like

    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33014">.

    -

    +

    long-short-em

    -

    Like

    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33017">.

    -

    +

    long-em-short-em

    -

    New to version 1.04, this style is like

    New to version 1.04, this style is like long-short-em but redefines + id="dx1-33019"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-33020">.

    -

    +

    long-only-short-only

    -

    New to version 1.17, this style only shows the long form on first use and only +

    New to version 1.17, this style only shows the long form on first use and only shows the short form on subsequent use. The inline full form \glsxtrfull shows the long form followed by the short form in parentheses. The name field + id="dx1-33022"> 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 @@ -12096,26 +12191,26 @@ class="cmtt-10">\the\glslongtok and the short form can be referenced with \the\glsshorttok.

    -

    +

    long-only-short-only-desc

    -

    New to version 1.17, this style is like

    New to version 1.17, this style is like long-only-short-only but the user must + id="dx1-33025"> but the user must supply the description. The name field is obtained from -


    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 @@ -12124,46 +12219,46 @@ class="cmtt-10">\the\glslongtok and the short form can be referenced with \the\glsshorttok.

    -

    +

    long-em-noshort-em-noreg

    -

    New to version 1.17, this style is like

    New to version 1.17, this style is like long-em-noshort-em but doesn’t set the + id="dx1-33029"> but doesn’t set the regular attribute. + id="dx1-33030"> attribute.

    -

    +

    long-short-user

    -

    This style was introduced in version 1.04. It’s like the

    This style was introduced in version 1.04. It’s like the long-short style but + id="dx1-33032"> 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 \ifglshasfield (provided by (provided by glossaries). If the field hasn’t been set, the style behaves like the long-short style and produces + id="dx1-33035"> style and produces ⟨long⟩ (⟨short⟩) but if the field has been set, the contents of that field are inserted @@ -12172,46 +12267,46 @@ class="cmti-10">long⟩ (⟨short⟩, ⟨field-value⟩). The format is governed by -



    \glsxtruserparen{text}{label}

    -

    +

    where ⟨text⟩ is the short form (for the long-short-user style) or the long form (for + id="dx1-33037"> style) or the long form (for the short-long-user style). This command first inserts a space using + id="dx1-33038"> style). This command first inserts a space using \glsxtrfullsep and then the parenthetical content (using \glsxtrparen). + id="dx1-33039">). The description is set to -


    is set to +


    \glsuserdescription{long}{label}

    -

    +

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

    The

    The name is obtained by expanding is obtained by expanding \glsxtrlongshortname (see above). The ⟨text⟩ argument includes the font formatting command, short} in the case of the long-short-user style and style and \glsfirstlongfont{long} in the case of the short-long-user style. -

    For example: + id="dx1-33044"> style. +

    For example: @@ -12242,32 +12337,32 @@ class="cmss-10">short-long-user -

    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, +

    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-sc + id="dx1-33047"> style: @@ -12277,60 +12372,60 @@ class="cmss-10">long-short-sc -

    +

    -

    +

    long-noshort-noreg

    -

    This style is like

    This style is like long-noshort but it doesn’t set the but it doesn’t set the regular attribute. + id="dx1-33050"> attribute.

    -

    +

    long-noshort-desc-noreg

    -

    This style is like

    This style is like long-noshort-desc but it doesn’t set the but it doesn’t set the regular attribute. + id="dx1-33053"> attribute.

    -

    +

    long-short-desc

    -

    On

    On first use, this style uses the format ⟨long⟩ (⟨short⟩). The inline and display full forms are the same. The name is set to the full form. The is set to the full form. The sort key is set to ⟨ key is set to ⟨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: @@ -12339,18 +12434,18 @@ class="cmtt-10">\glsxtrlongshortdescsort


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

    The

    The description must be supplied by the user. The long and short + id="dx1-33059"> must be supplied by the user. The long and short forms are separated by \glsxtrfullsep. The name field is obtained + id="dx1-33060"> field is obtained from -



    \glsxtrlongshortdescname

    -

    +

    (Similarly for other longmodifier\the\glslongtok and the short form can be referenced with \the\glsshorttok.

    -

    +

    long-short-sc-desc

    -

    Like

    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33064">.

    -

    +

    long-short-sm-desc

    -

    Like

    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33067">.

    -

    +

    long-short-em-desc

    -

    Like

    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33070">.

    -

    +

    long-em-short-em-desc

    -

    New to version 1.04, this style is like

    New to version 1.04, this style is like long-short-em-desc but redefines + id="dx1-33072"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-33073">.

    -

    +

    long-em-noshort-em-desc-noreg

    -

    New to version 1.17, this style is like

    New to version 1.17, this style is like long-em-noshort-em-desc but doesn’t set + id="dx1-33075"> but doesn’t set the regular attribute. + id="dx1-33076"> attribute.

    -

    +

    long-short-user-desc

    -

    New to version 1.04, this style is like a cross between the

    New to version 1.04, this style is like a cross between the long-short-desc style + id="dx1-33078"> style and the long-short-user style. The display and inline forms are as for + id="dx1-33079"> style. The display and inline forms are as for long-short-user and the and the name key is obtained from -


    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 + id="dx1-33083"> key must be supplied in the optional argument of \newabbreviation (or \newacronym). The sort key is set to ⟨ key is set to ⟨long⟩ (⟨short⟩) as per the long-short-desc style. + id="dx1-33085"> style.

    -

    +

    short-nolong-noreg

    -

    This is like

    This is like short-nolong but doesn’t set the but doesn’t set the regular attribute. + id="dx1-33088"> attribute.

    -

    +

    nolong-short-noreg

    -

    This is like

    This is like nolong-short but doesn’t set the but doesn’t set the regular attribute. + id="dx1-33091"> attribute.

    -

    +

    short-long

    -

    On

    On first use, this style uses the format ⟨short⟩ (⟨long⟩). The inline and display full forms are the same. The name and and sort keys are set to the + id="dx1-33095"> keys are set to the short form. The description is set to the long form. The short and long + id="dx1-33096"> is set to the long form. The short and long forms are separated by \glsxtrfullsep. If you want to insert material within the parentheses (such as a translation), try the short-long-user + id="dx1-33097"> style. -

    The

    The name field is obtained from -


    field is obtained from +


    \glsxtrshortlongname

    -

    +

    (Similarly for other shortmodifier\the\glsshorttok.

    -

    +

    short-sc-long

    -

    Like

    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33102">.

    -

    +

    short-sm-long

    -

    Like

    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33105">.

    -

    +

    short-em-long

    -

    Like

    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33108">.

    -

    +

    short-em-long-em

    -

    New to version 1.04, this style is like

    New to version 1.04, this style is like short-em-long but redefines + id="dx1-33110"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-33111">.

    -

    +

    short-long-user

    -

    New to version 1.04. This style is like the

    New to version 1.04. This style is like the long-short-user style but with the long + id="dx1-33113"> style but with the long and short forms switched. The parenthetical material is governed by the same command \glsxtruserparen, but the first argument supplied to it is the + id="dx1-33114">, but the first argument supplied to it is the long form instead of the short form. The name field is obtained by + id="dx1-33115"> field is obtained by expanding -



    \glsxtrshortlongname

    -

    +

    Again, this should only be redefined before \newabbreviation (or \newacronym) and commands that should be expanded need to be protected. The description is set to is set to \glsuserdescription{long}{label}.

    -

    +

    short-nolong-desc-noreg

    -

    This style is like

    This style is like short-nolong-desc but it doesn’t set the but it doesn’t set the regular attribute. + id="dx1-33120"> attribute.

    -

    +

    short-long-desc

    -

    On

    On first use, this style uses the format ⟨short⟩ (⟨long⟩). The inline and display full forms are the same. The name is set to the full form. The is set to the full form. The description must + id="dx1-33124"> must be supplied by the user. The short and long forms are separated by \glsxtrfullsep. The name field is obtained from -


    field is obtained from +


    \glsxtrshortlongdescname

    -

    +

    (Similarly for other shortmodifier\the\glslongtok and the short form can be referenced with \the\glsshorttok.

    -

    +

    short-sc-long-desc

    -

    Like

    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33129">.

    -

    +

    short-sm-long-desc

    -

    Like

    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33132">.

    -

    +

    short-em-long-desc

    -

    Like

    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33135">.

    -

    +

    short-em-long-em-desc

    -

    New to version 1.04, this style is like

    New to version 1.04, this style is like short-em-long-desc but redefines + id="dx1-33137"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-33138">.

    -

    +

    short-long-user-desc

    -

    New to version 1.04, this style is like a cross between the

    New to version 1.04, this style is like a cross between the short-long-desc style + id="dx1-33140"> style and the short-long-user style. The display and inline forms are as for + id="dx1-33141"> style. The display and inline forms are as for short-long-user, but the , but the name key is obtained from -


    key is obtained from +


    \glsxtrshortlonguserdescname

    -

    +

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

    The

    The description key must be supplied in the optional argument of + id="dx1-33145"> key must be supplied in the optional argument of \newabbreviation (or \newacronym).

    -

    +

    short-footnote

    -

    On

    On first use, this style displays the short form with the long form as a footnote. This style automatically sets the nohyperfirst attribute to “true” for the + id="dx1-33148"> attribute to “true” for the supplied category, so the first use won’t be hyperlinked (but the footnote + id="dx1-33149">first use won’t be hyperlinked (but the footnote marker may be, if the hyperref package is used). -

    The inline full form uses the ⟨ package is used). +

    The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short + id="dx1-33151"> is set to the short form. The description is set to the long form. The is set to the long form. The name key is obtained by + id="dx1-33153"> 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 -


    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{long} (the first argument is ignored). For @@ -12890,7 +12985,7 @@ class="cmtt-10">} (the first argument is ignored). For   \footnote{\glshyperlink[#2]{#1}}% } -

    or to include the short form with a hyperlink: +

    or to include the short form with a hyperlink: @@ -12900,122 +12995,122 @@ class="cmtt-10">} (the first argument is ignored). For   \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 §??sec:entryfmtmods 2.4 Entry Display Style Modifications and §??sec:nested +class="cmbx-10">2.8 Nested Links).

    -

    +

    footnote

    -

    A synonym for

    A synonym for short-footnote. + id="dx1-33161">.

    -

    +

    short-sc-footnote

    -

    Like

    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33164">. (This style was originally called footnote-sc. Renamed in version 1.04, but + id="dx1-33165">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-sc-footnote

    -

    Like

    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33168">. (This style was originally called footnote-sm. Renamed in version 1.04, but + id="dx1-33169">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-em-footnote

    -

    Like

    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33172">. (This style was originally called footnote-em. Renamed in version 1.04, but + id="dx1-33173">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-footnote-desc

    -

    (New to v1.42.) This is similar to

    (New to v1.42.) This is similar to short-footnote, but the , but the description must be + id="dx1-33176"> must be supplied by the user. The name field is obtained from: + id="dx1-33177"> field is obtained from: -



    \glsxtrfootnotedescname

    -

    +

    which defaults to ⟨short⟩ followed by ⟨long⟩ in parentheses, and the sort field is + id="dx1-33179"> field is obtained from: -



    \glsxtrfootnotedescsort

    -

    +

    which defaults to just the short form. (Similarly for other shortmodifier-[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 \the\glslongtok and the short form can be referenced with \the\glsshorttok.

    -

    +

    footnote-desc

    -

    A synonym for

    A synonym for short-footnote-desc. + id="dx1-33182">.

    -

    +

    short-sc-footnote-desc

    -

    Like

    Like short-footnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33185">.

    -

    +

    short-sm-footnote-desc

    -

    Like

    Like short-footnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33188">.

    -

    +

    short-em-footnote-desc

    -

    Like

    Like short-footnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33191">.

    -

    +

    short-postfootnote

    -

    This is similar to the

    This is similar to the short-footnote style but doesn’t modify the category + id="dx1-33193"> style but doesn’t modify the category attribute. Instead it changes \glsxtrpostlinkcategory to insert the + id="dx1-33194"> to insert the footnote after the link-text on first use. This will also defer the footnote until after any following punctuation character that’s recognised by \glsxtrifnextpunc. + id="dx1-33197">. -

    The inline full form uses the ⟨

    The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short + id="dx1-33198"> is set to the short form. The description is set to the long form. Note that this style will change + id="dx1-33199"> is set to the long form. Note that this style will change \glsxtrfull (and its variants) so that it fakes non-first use. (Otherwise the + id="dx1-33200">first use. (Otherwise the footnote would appear after the inline form.)

    -

    +

    postfootnote

    -

    A synonym for

    A synonym for short-postfootnote. + id="dx1-33202">.

    -

    +

    short-sc-postfootnote

    -

    Like

    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33205">. (This style was originally called postfootnote-sc. Renamed in version 1.04, but + id="dx1-33206">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-sm-postfootnote

    -

    Like

    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33209">. (This style was originally called postfootnote-sm. Renamed in version 1.04, but + id="dx1-33210">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-em-postfootnote

    -

    Like

    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33213">. (This style was originally called postfootnote-em. Renamed in version 1.04, but + id="dx1-33214">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)

    -

    +

    short-postfootnote-desc

    -

    (New to v1.42.) This is similar to

    (New to v1.42.) This is similar to short-postfootnote, but the , but the description must be + id="dx1-33217"> must be supplied by the user. The name and and sort are set as for are set as for short-footnote-desc. + id="dx1-33220">.

    -

    +

    postfootnote-desc

    -

    A synonym for

    A synonym for short-postfootnote-desc. + id="dx1-33222">.

    -

    +

    short-sc-postfootnote-desc

    -

    Like

    Like short-postfootnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-33225">.

    -

    +

    short-sm-postfootnote-desc

    -

    Like

    Like short-postfootnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-33228">.

    -

    +

    short-em-postfootnote-desc

    -

    Like

    Like short-postfootnote-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-33231">.

    -

    +

    short-postlong-user

    -

    This style was introduced in version 1.12. It’s like the

    This style was introduced in version 1.12. It’s like the short-long-user style but + id="dx1-33233"> style but defers the parenthetical material to after the link-text. This means that you don’t have such a long hyperlink (which can cause problems for the DVI LaTeX format) and it also means that the user supplied material can include a hyperlink to another location. The name key is obtained from + id="dx1-33234"> key is obtained from \glsxtrshortlongname.

    -

    +

    short-postlong-user-desc

    -

    This style was introduced in version 1.12. It’s like the above

    This style was introduced in version 1.12. It’s like the above short-postlong-user + id="dx1-33236"> style but the description must be specified. The must be specified. The name is obtained from + id="dx1-33238"> is obtained from \glsxtrshortlonguserdescname.

    -

    +

    long-postshort-user

    -

    This style was introduced in version 1.12. It’s like the above

    This style was introduced in version 1.12. It’s like the above short-postlong-user + id="dx1-33240"> style but the long form is shown first and the short form is in the parenthetical material (as for long-short-user) style. + id="dx1-33241">) style.

    -

    +

    long-postshort-user-desc

    -

    This style was introduced in version 1.12. It’s like the above

    This style was introduced in version 1.12. It’s like the above long-postshort-user + id="dx1-33243"> style but the description must be specified. The must be specified. The name is obtained from + id="dx1-33245"> is obtained from \glsxtrlongshortuserdescname.

    -

    +

    long-hyphen-short-hyphen

    -

    This style (new to v1.17) is designed to work with the

    This style (new to v1.17) is designed to work with the markwords category + id="dx1-33247"> category attribute. The full form is formatted using -



    \glsxtrlonghyphenshort{label}{short}{insert}

    -

    +

    where ⟨insert⟩ is the inserted material provided in the final optional argument of commands like \insert. If ⟨insert⟩ start with a hyphen, then this locally redefines \glsxtrwordsep to a hyphen, which means that if the to a hyphen, which means that if the markwords + id="dx1-33250"> attribute is set then the long form will become hyphenated. (If this attribute isn’t set, there’s no alteration to the way the long form is displayed.) The name + id="dx1-33251"> key is obtained from \glsxtrlongshortname. -

    Unlike the other ⟨

    Unlike the other ⟨long⟩ (⟨short⟩) type of styles, such as long-short, this style also + id="dx1-33252">, this style also repeats the insertion in the parenthetical part, so that the first use form is:

    -

    \glsfirstlonghyphenfont{long}\glsfirstabbrvhyphenfont{short}insert⟩)

    -

    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: @@ -13413,7 +13508,7 @@ class="cmtt-10">ip is defined using: \setabbreviationstyle[english]{long-hyphen-short-hyphen} \newabbreviation[category=english]{ip}{IP}{Internet Protocol} -

    then +

    then @@ -13421,10 +13516,10 @@ 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 @@ -13432,11 +13527,11 @@ class="cmtt-10">ip is defined using:

          \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 @@ -13446,15 +13541,15 @@ 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 + id="dx1-33253"> attribute hadn’t been set, then the first use of @@ -13462,20 +13557,20 @@ 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 the inserted material ⟨insert⟩ is likely to contain commands like \gls, then use long-hyphen-postshort-hyphen instead to avoid nested links. + id="dx1-33254"> instead to avoid nested links.
    -

    -

    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 @@ -13488,18 +13583,18 @@ 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-noreg

    -

    New to version 1.17, this style is like

    New to version 1.17, this style is like long-hyphen-short-hyphen-desc + id="dx1-33256"> except that the parenthetical part is omitted and the long form is displayed on subsequent use. The short form can be accessed with \glsxtrshort but just uses the default abbreviation font. no regular version of this style as the regular form doesn’t have the flexibility to deal with the hyphen switch. The name is obtained from + id="dx1-33257"> is obtained from \glsxtrlongnoshortdescname.

    -

    +

    long-hyphen-noshort-noreg

    -

    New to version 1.17, this style is like

    New to version 1.17, this style is like long-hyphen-noshort-desc-noreg but the + id="dx1-33259"> but the name is set to the short form and the description is set to the long form.

    -

    +

    long-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 + id="dx1-33261"> but the user supplies the description. The name is obtained from is obtained from \glsxtrlongshortdescname.

    -

    +

    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 + id="dx1-33264"> but the inserted and parenthetical material are moved to the post-link hook. On first use, \gls{insert
    where -



    \glsxtrposthyphenshort{label}insert

    -

    +

    is in the post-link hook. This uses the format:
    insert⟩ (short}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{long}{label}{insert}

    -

    +

    checks if ⟨insert⟩ starts with a hyphen. If it does, then \glsxtrwordsep is locally @@ -13621,15 +13716,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 @@ -13641,40 +13736,40 @@ class="cmti-10">label⟩} if you want to ensure the full format.

    -

    +

    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 + id="dx1-33269"> but the user supplies the description. The name is obtained from + id="dx1-33270"> is obtained from \glsxtrlongshortdescname.

    -

    +

    short-hyphen-long-hyphen

    -

    This style (new to v1.17) is like

    This style (new to v1.17) is like long-hyphen-short-hyphen, except that the short + id="dx1-33272">, except that the short form is displayed first followed by the long form in parentheses. The full form is formatted using -



    \glsxtrshorthyphenlong{label}{long}{insert}

    -

    +

    which behaves in an analogous way to \glsxtrlonghyphenshort. The name is + id="dx1-33274"> is obtained from \glsxtrshortlongname.

    -

    +

    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 + id="dx1-33276"> but the user supplies the description. The name is obtained from is obtained from \glsxtrshortlongdescname.

    -

    +

    short-hyphen-postlong-hyphen

    -

    This style (new to v1.17) is like

    This style (new to v1.17) is like long-hyphen-postshort-hyphen, but the short + id="dx1-33279">, but the short form is displayed first followed by the long form in parentheses. On first use, \gls{}insert
    where -



    \glsxtrposthyphenlong{label}insert

    -

    +

    is in the post-link hook. These commands behave in an analogous manner to those used with long-hyphen-postshort-hyphen. The . The name is obtained from + id="dx1-33282"> 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 @@ -13776,35 +13871,35 @@ class="cmti-10">label⟩} if you want to ensure the full format.

    -

    +

    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 + id="dx1-33284"> but the user supplies the description. The name is obtained from + id="dx1-33285"> is obtained from \glsxtrshortlongdescname.

    -

    +

    -

    Top

    4.5 Defining New Abbreviation Styles

    -

    New abbreviation styles may be defined using: -


    New abbreviation styles may be defined using: +


    \newabbreviationstyle{name}{setup}{fmts}

    -

    -

    where ⟨

    +

    where ⟨name⟩ is the name of the new style (as used in the mandatory argument of \setabbreviationstyle). This is similar but not identical to the ). This is similar but not identical to the glossaries package’s \newacronymstyle command. -

    You can’t use styles defined by command. +

    You can’t use styles defined by \newacronymstyle with glossaries-extra unless you have reverted \newacronym back to its generic definition from + id="dx1-34004"> back to its generic definition from glossaries (using \RestoreAcronyms). The acronym styles from the ). The acronym styles from the 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), + id="dx1-34007"> (defaults to the short form if omitted), sort, , first, , firstplural. Other fields may also be set, such as . Other fields may also be set, such as text, , plural and + id="dx1-34012"> and description. -

    . +

    \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 ⟨ style has the following in ⟨setup⟩: @@ -13889,24 +13984,24 @@ class="cmti-10">setup⟩:     plural={\protect\glsabbrvfont{\the\glsshortpltok}},%     description={\the\glslongtok}}% -

    Note that the

    Note that the first and and firstplural are set even though they’re not used by + id="dx1-34016"> 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 , use commands like \glsabbrvfont (which are redefined whenever the style formatting is set) within \CustomAbbreviationFields. Other styles, such as long-em-short-em directly use their own custom commands, such + id="dx1-34018"> directly use their own custom commands, such as \glsabbrvemfont. With these styles, commands like \glsabbrvfont still need to @@ -13914,18 +14009,18 @@ be defined as appropriate in the ⟨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 ⟨ includes the following in ⟨setup⟩: @@ -13941,115 +14036,115 @@ class="cmti-10">setup⟩:     {}%   }% -

    This sets the

    This sets the nohyperfirst attribute to “true”. It also unsets the attribute to “true”. It also unsets the regular attribute if it + id="dx1-34022"> attribute if it has previously been set. Note that the nohyperfirst attribute doesn’t get unset by + id="dx1-34023"> 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 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 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 + id="dx1-34032">). The above registers reflect the modification. If you want to access the original (unmodified) short or long form (as provided in the final two arguments of \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 + id="dx1-34035"> key to avoid any formatting that may be added by the attribute setting.) -

    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 long-noshort-sc-desc + id="dx1-34041"> style simply does @@ -14058,99 +14153,99 @@ style simply does

     \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 + id="dx1-34042"> 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 first use or in the full forms: -


    +

    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 + id="dx1-34051"> on first use for abbreviations without the regular attribute set): -


    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 + id="dx1-34055"> on first use for abbreviations without the first use for abbreviations without the regular attribute set): -


    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 + id="dx1-34059"> on first use for abbreviations without the regular attribute set): -


    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 + id="dx1-34063"> on first use for abbreviations without the regular attribute set): -


    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 and + id="dx1-34068"> and \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 + id="dx1-34071"> and \Glsxtrfull): -


    ): +


    \Glsxtrinlinefullformat{label}{insert}

    -

    -

    Inline plural no case-change (used by

    +

    Inline plural no case-change (used by \glsentryfullpl, , \glsxtrfullpl and + id="dx1-34075"> and \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 + id="dx1-34078"> 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 + id="dx1-34081"> 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 + id="dx1-34086"> use the following \glsaccessxxx⟩ commands (§??sec:accsupp 12.2 Accessibility Support) within the definitions of \glsxtrfullformat etc instead of the analogous \glsentryxxx⟩ commands. (If you don’t use glossaries-accsupp, they will just do the corresponding + id="dx1-34087">, they will just do the corresponding \glsentryxxx⟩ command.) -

    For example, the

    For example, the short-long style has the following in ⟨ style has the following in ⟨fmts⟩: @@ -14345,22 +14440,22 @@ class="cmti-10">fmts⟩:     \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%   }% -

    Since the inline full commands aren’t redefined, they default to the same as the +

    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 long-short-desc style has the following in ⟨ style has the following in ⟨fmts⟩: @@ -14369,11 +14464,11 @@ class="cmti-10">fmts⟩:

       \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 + id="dx1-34091"> that displays the short form within \textsf: @@ -14391,83 +14486,83 @@ class="cmtt-10">\textsf:   \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-long as they explicitly use their own formatting commands, such as + id="dx1-34092"> as they explicitly use their own formatting commands, such as \glsabbrvemfont. The base styles, such as short-long, use the more generic + id="dx1-34093">, use the more generic \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:

    • -

      if you have a table of contents, the

      if you have a table of contents, the first use flag will be unset in the contents rather than later in the document;

    • -

      if you have the location lists displayed in the glossary, unwanted locations +

      if you have the location lists displayed in the glossary, unwanted locations will be added to it corresponding to the table of contents (if present) and every page that contains the entry in the page header (if the page style in use adds the chapter or section title to the header);

    • -

      if the page style in use adds the chapter or section title to the header and +

      if the page style in use adds the chapter or section title to the header and attempts to convert it to upper case, the entry label (in the argument of \gls etc) will be converted to upper case and the entry won’t be recognised;

    • -

      if you use

      if you use hyperref, commands like , commands like \gls can’t be expanded to a simple string and only the label will appear in the PDF bookmark (with a warning from hyperref); + id="dx1-35003">);

    • -

      if you use

      if you use hyperref, you will end up with nested hyperlinks in the table of + id="dx1-35004">, 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 + id="dx1-36001"> (for regular entries) or \glsentryshort (for abbreviations). This is the + id="dx1-36002"> (for abbreviations). This is the simplest solution, but doesn’t allow for special formatting that’s applied to the entry through commands like \glstext or \glsxtrshort. This means that if, for example, you are using one of the abbreviation styles that uses \textsc then the short form displayed with then the short form displayed with \glsentryshort won’t use small caps. If you only have one abbreviation style in use, you can explicitly enclose \chapter{A Chapter about \glsabbrvfont{\glsentryshort{html}}} -

    Or, if you are using

    Or, if you are using hyperref: + id="dx1-36004">: @@ -14505,8 +14600,8 @@ 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 + id="dx1-36006"> and \markboth and 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}} -

    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 if if hyperref has been loaded so that the expandable non-formatted + id="dx1-37002"> has been loaded so that the expandable non-formatted version is added to the PDF bookmarks. Note that since the commands that convert the first letter to upper case aren’t expandable, the non-case-changing version is used for the bookmarks. If the required field contains non-expandable (robust or fragile) commands that cause a problem for the bookmarks then \texorpdfstring will be + id="dx1-37003"> 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 noindex and and hyper=false. The text produced won’t be + id="dx1-37005">. The text produced won’t be converted to upper case in the page headings by default. If you want the text converted to upper case you need to set the headuc attribute to “true” for the + id="dx1-37006"> 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 + id="dx1-37007"> styles, be aware that the default fonts don’t provide bold small-caps or italic small-caps. This means that if the chapter or section title style uses bold, this may override the small-caps setting, in which case the abbreviation will just appear as lower case bold. If the @@ -14609,299 +14704,299 @@ heading style uses italic, the abbreviation may appear in upright small-caps, class="cmti-10">even if you have set the headuc attribute since the all-capitals form still uses \glsabbrvfont. You may want to consider using the slantsc package in this case. + id="dx1-37009"> 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: -


    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: -


    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: -


    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}

    -

    +

    @@ -14909,83 +15004,83 @@ class="cmtt-10">}


    -

    -

    +

    Top

    6. Categories

    -

    Each entry defined by

    Each entry defined by \newglossaryentry (or commands that internally use it + id="dx1-38001"> (or commands that internally use it such as \newabbreviation) is assigned a category through the ) is assigned a category through the category key. You may + id="dx1-38003"> key. You may add any category that you like, but since the category is a label used in the creation of some control sequences, avoid problematic characters within the category label. (So take care if you have babel shorthands on that make some characters + id="dx1-38004"> 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 with type. -

    The default category assumed by . +

    The default category assumed by \newglossaryentry is labelled general. + id="dx1-38007">. Abbreviations defined with \newabbreviation have the category set to abbreviation + id="dx1-38008"> by default. Abbreviations defined with \newacronym have the category set to acronym by default. -

    Additionally, if you have enabled by default. +

    Additionally, if you have enabled \newterm with the with the index package option + id="dx1-38011"> package option that command will set the category to index by default. If you have enabled + id="dx1-38012"> by default. If you have enabled \glsxtrnewsymbol with the with the symbols package option, that command will set the + id="dx1-38014"> package option, that command will set the category to symbol. If you have enabled . If you have enabled \glsxtrnewnumber with the with the numbers package + id="dx1-38017"> package option, that command will set the category to number. -

    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

    \ifglsfieldeq{entry-label}}
    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 and acronym + id="dx1-38023"> categories have the attribute regular set to “true” to indicate that all entries with + id="dx1-38024"> set to “true” to indicate that all entries with either of those categories are regular entries (as opposed to abbreviations). This attribute is accessed by \glsentryfmt to determine whether to use \glsgenentryfmt or \glsxtrgenabbrvfmt. -

    Other attributes recognised by

    Other attributes recognised by glossaries-extra are:

    -

    +

    nohyperfirst

    -

    When using commands like

    When using commands like \gls this will automatically suppress the hyperlink + id="dx1-38026"> this will automatically suppress the hyperlink on first use for entries with a category that has this attribute set to “true”. (This settings can be overridden by explicitly setting the hyper + id="dx1-38028"> key on or off in the optional argument of commands like \gls.) As from version 1.07, \glsfirst, \Glsfirst, \GLSfirst and their plural versions (which should ideally behave in a similar way to the first use of + id="dx1-38029">first use of \gls or \glspl) now honour this attribute (but not the package-wide @@ -15073,73 +15168,73 @@ class="cmtt-10">\glspl) now honour this attribute (but not the package-wi href="#styopt.hyperfirst">hyperfirst=false option, which matches the behaviour of option, which matches the behaviour of glossaries). If you want + id="dx1-38031">). If you want commands like \glsfirst to ignore the nohyperfirst attribute then just + id="dx1-38032"> attribute then just redefine -



    \glsxtrchecknohyperfirst{label}

    -

    +

    to do nothing.

    -

    +

    nohyper

    -

    When using commands like

    When using commands like \gls this will automatically suppress the hyperlink + id="dx1-38035"> this will automatically suppress the hyperlink for entries with a category that has this attribute set to “true”. (This settings can be overridden by explicitly setting the hyper key on or off in the optional + id="dx1-38036"> key on or off in the optional argument of commands like \gls.)

    -

    +

    indexonlyfirst

    -

    This is similar to the

    This is similar to the indexonlyfirst package option but only for entries that have + id="dx1-38038"> package option but only for entries that have a category with this attribute set to “true”.

    -

    +

    wrgloss

    -

    When using commands like

    When using commands like \gls, if this attribute is set to “after”, it will + id="dx1-38040">, if this attribute is set to “after”, it will automatically implement wrgloss=after. (New to v1.14.)

    -

    +

    discardperiod

    -

    If set to “true”, the post-

    If set to “true”, the post-link-text hook will discard a full stop (period) that follows non-plural commands like \newabbreviation.) This attribute doesn’t apply to -

    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: @@ -15167,13 +15262,13 @@ class="cmtt-10">\newabbreviation.) This attribute doesn’t apply to  {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ e.V.} -

    Here the

    Here the short and and long fields end with a full stop, but the fields end with a full stop, but the user1 field doesn’t. + id="dx1-38046"> field doesn’t. The simplest solution in this situation is to put the sentence terminator in the final optional argument. For example: @@ -15183,22 +15278,22 @@ class="cmss-10">user1 \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.

    -

    +

    pluraldiscardperiod

    -

    If this attribute is set to “true”

    If this attribute is set to “true” and the discardperiod attribute is set to “true”, + id="dx1-38049"> attribute is set to “true”, this will behave as above for the plural commands like \glspl or \glsplural. @@ -15208,22 +15303,22 @@ class="cmtt-10">\newabbreviation (or class="cmtt-10">\newacronym if it’s using \newabbreviation.)

    -

    +

    retainfirstuseperiod

    -

    If this attribute is set to “true” then the full stop won’t be discarded +

    If this attribute is set to “true” then the full stop won’t be discarded for first use instances, even if discardperiod or or pluraldiscardperiod are + id="dx1-38053"> are set. This is useful for ⟨short⟩ (⟨long⟩) abbreviation styles where only the @@ -15235,27 +15330,27 @@ class="cmtt-10">\newacronym if it’s using class="cmtt-10">\newabbreviation.) This attribute doesn’t apply to the accessibility fields.

    -

    +

    markwords

    -

    If this attribute is set to “true” any entry defined using

    If this attribute is set to “true” any entry defined using \newabbreviation will + id="dx1-38055"> will automatically have spaces in the long form replaced with -



    \glsxtrwordsep

    -

    +

    and each word is encapsulated with -



    \glsxtrword{word}

    -

    +

    For example: @@ -15265,7 +15360,7 @@ class="cmtt-10">}


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

    is essentially the same as +

    is essentially the same as @@ -15274,14 +15369,14 @@ 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 + id="dx1-38058">, take advantage of this markup. If the inserted material (provided in the final argument of commands like \gls) starts with a hyphen then ) starts with a hyphen then \glsxtrwordsep is locally redefined to a hyphen. (The default value is a space). Note that this only applies to commands like \glsxtrlong. You can provide your own \newcommand{\hyplong}[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.
    -

    + id="dx1-38060"> field, depending on the style in use.

    +

    -

    +

    markshortwords

    -

    This is similar to

    This is similar to markwords but applies to the short form. (Only useful for + id="dx1-38062"> but applies to the short form. (Only useful for abbreviations that contain spaces.) This attribute is only applicable to entries defined using \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. + id="dx1-38063"> 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.
    -

    + id="dx1-38065"> field, depending on the style in use.

    +

    -

    +

    insertdots

    -

    If this attribute is set to “true” any entry defined using

    If this attribute is set to “true” any entry defined using \newabbreviation will + id="dx1-38067"> will automatically have full stops (periods) inserted after each letter. The entry will be defined with those dots present as though they had been present in the ⟨short⟩ @@ -15364,7 +15459,7 @@ class="cmti-10">This setting is class="cmti-10">incompatible with markshortwords. This attribute is only applicable to entries defined using \newabbreviation (or \newabbreviation.) -

    If you explicitly override the short plural using the

    If you explicitly override the short plural using the shortplural key, you must + id="dx1-38069"> 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”. + id="dx1-38070"> attribute set to “true”.

    -

    +

    aposplural

    -

    If this attribute is set to “true”,

    If this attribute is set to “true”, \newabbreviation will insert an + id="dx1-38072"> will insert an apostrophe (’) before the plural suffix for the short plural form (unless explicitly overridden with the shortplural key). The long plural form is + id="dx1-38073"> key). The long plural form is unaffected by this setting. This setting overrides noshortplural. This + id="dx1-38074">. This attribute is only applicable to entries defined using \newabbreviation (or \newabbreviation.) Check with your supervisor, publisher or editor if you want to use this attribute as this usage is controversial.

    -

    +

    noshortplural

    -

    If this attribute is set to “true”,

    If this attribute is set to “true”, \newabbreviation won’t append + id="dx1-38076"> won’t append the plural suffix for the short plural form. This means the short and + id="dx1-38077"> and shortplural values will be the same unless explicitly overridden. values will be the same unless explicitly overridden. This setting is incompatible with aposplural. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.)

    -

    +

    headuc

    -

    If this attribute is set to “true”, commands like

    If this attribute is set to “true”, commands like \glsfmtshort will use the + id="dx1-38081"> will use the upper case version in the page headers.

    -

    +

    tagging

    -

    If this attribute is set to “true”, the tagging command defined by +

    If this attribute is set to “true”, the tagging command defined by \GlsXtrEnableInitialTagging will be activated to use will be activated to use \glsxtrtagfont in + id="dx1-38084"> in the glossary (see §??sec:tagging 4.1 Tagging Initials).

    -

    +

    entrycount

    -

    Unlike the above attributes, this attribute isn’t boolean but instead must be an +

    Unlike the above attributes, this attribute isn’t boolean but instead must be an integer value and is used in combination with \glsenableentrycount (see + id="dx1-38086"> (see §??sec:entrycountmods 2.5 Entry Counting Modifications). Leave blank or undefined for categories that shouldn’t have this facility enabled. The value of this attribute is used by \glsxtrifcounttrigger to determine how commands + id="dx1-38087"> to determine how commands such as \cgls should behave. -

    With should behave. +

    With glossaries, commands like \cgls use \cglsformat only if the previous @@ -15503,80 +15598,89 @@ class="cmss-10">glossaries-extra the test is now for entries that have the entrycount attribute set and where the previous + id="dx1-38089"> attribute set and where the previous usage count for that entry is less than or equal to the value of that attribute.

    -

    +

    linkcount

    -

    This attribute is set to

    This attribute is set to true by \GlsXtrEnableLinkCounting (see + id="dx1-38091"> (see §??sec:linkcount 7.2 Link Counting).

    -

    +

    linkcountmaster

    -

    This attribute is set to the name of the master counter by +

    This attribute is set to the name of the master counter by \GlsXtrEnableLinkCounting if the optional argument is provided (see + id="dx1-38093"> if the optional argument is provided (see §??sec:linkcount 7.2 Link Counting).

    -

    +

    glossdesc

    -

    The

    The \glossentrydesc command (used in the predefined glossary styles) is + id="dx1-38095"> command (used in the predefined glossary styles) is modified by glossaries-extra to check for this attribute. The attribute may have one of the following values:

    • -

      firstuc: the first letter of the description will be converted to upper case (using \Glsentrydesc). + id="dx1-38096">).

    • -

      title: the description will be used in the argument of the title casing - command

      title: the description will be used in the argument of the title + casing command. If you have at least glossaries v4.48, the title + casing is indirectly performed by \glscapitalisewords, which + defaults to \capitalisewords (provided by (provided by mfirstuc). If you want to use a - different command you can redefine: -


      \glsxtrfieldtitlecasecs{phrase cs}

      + id="dx1-38098">). You can either -

      + redefine \glscapitalisewords if you want the change to also affect + \glsentrytitlecase or if you only want the change to apply to the + attribute case-changing then redefine: +


      \glsxtrfieldtitlecasecs{phrase cs}

      +

      For example: @@ -15585,7 +15689,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 user manual for further details. + id="dx1-38101"> user manual for further details.

    -

    +

    glossdescfont

    -

    (New to version 1.04) In addition to the above, the modified

    (New to version 1.04) In addition to the above, the modified \glossentrydesc + id="dx1-38103"> command also checks this attribute. If set, it should be the name of a control sequence (without the leading backslash) that takes one argument. This control sequence will be applied to the description text. For example: @@ -15618,50 +15722,50 @@ class="cmtt-10">\glossentrydesc \glssetcategoryattribute{general}{glossdescfont}{emph} -

    +

    -

    +

    glossname

    -

    As

    As glossdesc but applies to but applies to \glossentryname. Additionally, if this attribute is + id="dx1-38106">. Additionally, if this attribute is set to “uc” the name is converted to all capitals.

    -

    +

    indexname

    -

    If set, the

    If set, the \glsxtrpostnamehook hook used at the end of \glossentryname + id="dx1-38108"> will index the entry using \index. See . See §??sec:autoindex 8 Auto-Indexing for further details.

    -

    +

    glossnamefont

    -

    (New to version 1.04) In addition to the above, the modified

    (New to version 1.04) In addition to the above, the modified \glossentryname + id="dx1-38111"> command also checks this attribute. If set, it should be the name of a control sequence (without the leading backslash) that takes one argument. This control sequence will be applied to the name text. For example: @@ -15672,38 +15776,38 @@ class="cmtt-10">\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.

    -

    +

    glosssymbolfont

    -

    (New to version 1.42.) This is similar to

    (New to version 1.42.) This is similar to glossnamefont and and glossdescfont but is + id="dx1-38114"> but is used by \glossentrysymbol. + id="dx1-38115">.

    -

    +

    textformat

    -

    (New to version 1.21.) Commands like

    (New to version 1.21.) Commands like \gls and \glstext have the link text encapsulated in the argument of \glstextformat by default. If this attribute is Remember that the abbreviation styles may apply an additional font change.

    -

    +

    hyperoutside

    -

    (New to v1.21.) The attribute value may be

    (New to v1.21.) The attribute value may be false, true or unset. If unset, true is assumed. This indicates the default setting of the hyperoutside key, + id="dx1-38118"> key, described in §??sec:wrglossary 2.2 Entry Indexing.

    -

    +

    dualindex

    -

    If set, whenever a glossary entry has information written to the external +

    If set, whenever a glossary entry has information written to the external glossary file through commands like \gls and and \glsadd, a corresponding line + id="dx1-38121">, a corresponding line will be written to the indexing file using \index. See . See §??sec:autoindex +class="cmbx-10">8 Auto-Indexing for further details.

    -

    +

    targeturl

    -

    If set, the hyperlink generated by commands like

    If set, the hyperlink generated by commands like \gls will be set to the URL provided by this attributes value. For example: @@ -15773,7 +15877,7 @@ class="cmtt-10">\gls will be set to the URL

          \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 ~) remember that the base glossaries package provides commands like \glspercentchar and 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 targetname to the anchor ⟨ to the anchor ⟨name⟩. You may use \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 entries to link to glossaries in the URL given by targeturl, you can just + id="dx1-38126">, you can just do: @@ -15813,23 +15917,23 @@ 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 targetname for the ⟨ for the ⟨name2⟩ part and targetcategory for the ⟨ for the ⟨name1⟩ part. -

    For example: +

    For example: @@ -15839,15 +15943,15 @@ 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 for the external list. For + id="dx1-38129"> for the external list. For example: @@ -15863,66 +15967,66 @@ class="cmtt-10">\newignoredglossary -

    +

    -

    +

    externallocation

    -

    The value should be the file name of the target document when manually +

    The value should be the file name of the target document when manually indexing an external location (see §??sec:wrglossary 2.2 Entry Indexing). In general, it’s better to use 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 + id="dx1-38132"> and accessibility support has been supplied via the accsupp package option then the following attributes are also + id="dx1-38133"> package option then the following attributes are also available. If shortaccess isn’t set its value will be obtained from: -


    isn’t set its value will be obtained from: +


    \glsdefaultshortaccess{short}{long}

    -

    +

    This is defined by glossaries-accsupp to just do ⟨ to just do ⟨long⟩ but glossaries-extra redefines it to + id="dx1-38137"> redefines it to do ⟨long⟩ (⟨short⟩). The accessinsertdots, , accessaposplural and and accessnoshortplural + id="dx1-38140"> 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 \newabbreviation). They have no effect if the accsupp package option hasn’t been used. + id="dx1-38141"> package option hasn’t been used.

    -

    +

    accessinsertdots

    -

    If this attribute is set to “true” and the

    If this attribute is set to “true” and the glossaries-accsupp package has + id="dx1-38143"> package has been loaded (with the accsupp option), then this behaves like option), then this behaves like insertdots + id="dx1-38145"> but for the ⟨short⟩ part used in the shortaccess field instead of the field instead of the short + id="dx1-38147"> field. This setting will be overridden by an explicit use of the shortaccess + id="dx1-38148"> key in the optional argument of \newabbreviation (or \newacronym).

    -

    +

    accessaposplural

    -

    This boolean attribute overrides

    This boolean attribute overrides aposplural for the for the shortpluralaccess key. + id="dx1-38151"> key. Has no effect if there’s no accessibility support or if the shortaccess key + id="dx1-38152"> key hasn’t been set or if the shortpluralaccess key is explicitly set. If the + id="dx1-38153"> key is explicitly set. If the aposplural is set and this attribute isn’t set and the is set and this attribute isn’t set and the shortaccess key is set, + id="dx1-38155"> key is set, then the aposplural setting governs the default setting governs the default shortpluralaccess setting. + id="dx1-38157"> setting. If you want aposplural but don’t want it applied to the accessibility + id="dx1-38158"> but don’t want it applied to the accessibility support, set the accessaposplural attribute to “false”. This attribute is only + id="dx1-38159"> attribute to “false”. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.)

    -

    +

    accessnoshortplural

    -

    This boolean attribute overrides

    This boolean attribute overrides noshortplural for the for the shortpluralaccess key. + id="dx1-38162"> key. The same conditions apply as for accessaposplural. This attribute is only + id="dx1-38163">. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.)

    -

    +

    nameshortaccess

    -

    If this attribute is set to “true”, the

    If this attribute is set to “true”, the access field (used for the field (used for the name field’s + id="dx1-38166"> field’s accessibility support) automatically assigned if it’s not provided.

    -

    +

    textshortaccess

    -

    Like

    Like nameshortaccess but applies to the but applies to the textaccess field automatically + id="dx1-38169"> field automatically assigned if it’s not provided.

    -

    +

    firstshortaccess

    -

    Like

    Like nameshortaccess but applies to the but applies to the firstaccess field automatically + id="dx1-38172"> 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”: -


    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-label}{attribute-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: -


    The above use local assignments so they can be placed inside a group to limit +their definition. As from v1.47, the value can be unset using: +


    \glsunsetcategoryattribute{category-label}{attribute-label} +

    +

    +

    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-label}{code}{false code}

    -

    +

    This uses etoolbox’s ’s \ifcsvoid and does ⟨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-label}{false 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-label}{true-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: @@ -16207,25 +16325,25 @@ class="cmti-10">false part⟩ is done.

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

    This does “NO HYPER” if the

    This does “NO HYPER” if the general category has the category has the nohyper attribute set to + id="dx1-38185"> 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 , 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 + id="dx1-38188"> attribute set to “true”: -



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

    -

    +

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



    \glsifregular{entry-label}{true-part}{false-part}

    -

    +

    Note that if the regular attribute hasn’t be set, the above do ⟨ attribute hasn’t be set, the above do ⟨false-part⟩. There are also reverse commands that test if the regular attribute has been set to + id="dx1-38192"> attribute has been set to “false”: -



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

    -

    +

    or for a particular entry: -



    \glsifnotregular{entry-label}{true-part}{false-part}

    -

    +

    Again, if the regular attribute hasn’t been set, the above do ⟨ 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-labels]{label-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 + id="dx1-38197">. 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 ⟨entry-labels⟩. This command uses \glsfieldxdef so it will + id="dx1-38199"> 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 +

      Counting the total number of times \glsunset is used (\glsreset resets the count and is best avoided). This is provided by the base glossaries 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 §??sec:entrycount 7.1 Entry Counting (First Use Flag).

    2. -

      Counting the total number of records. This method is only available with + class="enumerate" id="x1-39004x2"> +

      Counting the total number of records. This method is only available with bib2gls and is intended for documents where the term should be displayed differently if it’s only been recorded (indexed) a certain number of times. See §??sec:recordcount 9.5 Record Counting for further details.

    3. -

      Counting the number of times the +

      Counting the number of times the \gls-like or \glstext-like commands are used. (That is, those commands that internally use @@ -16456,36 +16574,36 @@ class="cmtt-10">\glslinkpostsetkeys or class="cmtt-10">\glslinkpresetkeys. See §??sec:linkcount 7.2 Link Counting for further details.

    -

    Top

    7.1 Entry Counting (First Use Flag)

    -

    As mentioned in

    As mentioned in §??sec:entrycountmods 2.5 Entry Counting Modifications, glossaries-extra modifies the \glsenableentrycount command to allow for the command to allow for the entrycount + id="dx1-40002"> attribute. This means that you not only need to enable entry counting with \glsenableentrycount, but you also need to set the appropriate attribute (see + id="dx1-40003">, but you also need to set the appropriate attribute (see §??sec:categories 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 @@ -16493,59 +16611,59 @@ href="#glo:firstuseflag">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 instead of \gls even if you haven’t enabled + id="dx1-40006"> even if you haven’t enabled entry counting. You will only get a warning if you use \glsenableentrycount without setting the entrycount attribute. (With attribute. (With glossaries, commands like \cgls will + id="dx1-40008"> will generate a warning if \glsenableentrycount hasn’t been used.) The abbreviation shortcut \ab uses uses \cgls (see §??sec:abbrshortcuts 4.3 Shortcut Commands). The acronym shortcut \ac uses uses \cgls if it’s been defined with shortcuts=ac (or + id="dx1-40011"> (or shortcuts=all) but uses ) but uses \gls if it’s been defined with shortcuts=acronyms (or + id="dx1-40013"> (or shortcuts=acro). -

    All upper case versions (not provided by ). +

    All upper case versions (not provided by glossaries) are also available: -



    \cGLS[options]{label}[insert]

    -

    +

    and -



    \cGLSpl[options]{label}[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: @@ -16608,12 +16726,12 @@ Used twice: \cgls{xml} and \cgls{xml}. \printglossaries \end{document} -

    -

    If you switch to

    +

    If you switch to glossaries-extra you must set the entrycount attribute: + id="dx1-40019"> attribute: @@ -16632,14 +16750,14 @@ Used twice: \cgls{xml} and \cgls{xml}. \printglossaries \end{document} -

    -

    When activated with

    +

    When activated with \glsenableentrycount, commands such as \cgls now + id="dx1-40020"> now use -



    \glsxtrifcounttrigger{label}{trigger code}{normal code}

    -

    +

    to determine if the entry trips the entry count trigger. The ⟨trigger code⟩ uses commands like \cglsformat and unsets the first use flag. The ⟨normal code⟩ is the code that would ordinarily be performed by whatever the equivalent command is (for @@ -16663,7 +16781,7 @@ class="cmti-10">trigger code⟩ but the usual \gls behaviour in ⟨normal code⟩). -

    The default definition is: +

    The default definition is: @@ -16681,15 +16799,15 @@ class="cmti-10">normal code⟩).  {#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 + id="dx1-40023"> 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: @@ -16698,30 +16816,30 @@ 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 attribute and redefine attribute and redefine \gls, etc to use , etc to use \cgls etc: -


    etc: +


    \GlsXtrEnableEntryCounting{categories}{value}

    -

    +

    The first argument ⟨categories⟩ is a comma-separated list of categories. For each category, the entrycount attribute is set to ⟨ attribute is set to ⟨value⟩. In addition, this does: @@ -16735,14 +16853,14 @@ class="cmti-10">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: + id="dx1-40029"> attribute for each listed category. +

    The above example document can then become: @@ -16760,13 +16878,13 @@ 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 + id="dx1-40031"> counter.

    +

    +

    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 hyperref also has a similar requirement and provides + id="dx1-40032"> also has a similar requirement and provides \theHcounter-name⟩ as an expandable alternative, \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 + id="dx1-40033"> (as before) and unitcount (the name of the counter). -

    Both the original document-wide counting mechanism and the per-unit counting + id="dx1-40034"> (the name of the counter). +

    Both the original document-wide counting mechanism and the per-unit counting mechanism provide a command that can be used to access the current count value for this run: -



    \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: @@ -16877,11 +16995,11 @@ 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 first use with the short form used on subsequent use, and the css entries in that @@ -16891,31 +17009,31 @@ only used once, which trips the suppression trigger, so in that chapter, the long form is used and \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 category, which hasn’t been listed in + id="dx1-40040"> category, which hasn’t been listed in \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 -


    by modifying the hook +


    \glslinkcheckfirsthyperhook

    -

    +

    which is used at the end of the macro the determines whether or not to suppress the hyperlink. @@ -16943,22 +17061,22 @@ 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 + id="dx1-40043"> 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 @@ -16972,17 +17090,17 @@ class="cmtt-10">\hyperlink although \@gls@link may use \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 @@ -16992,22 +17110,22 @@ present, the associated link counter will be reset when the master counter is incremented. This command automatically sets the linkcount attribute for the given + id="dx1-41003"> attribute for the given categories. If the optional argument is present, it also sets the linkcountmaster + id="dx1-41004"> 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{label}{true}{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 @@ -17074,7 +17192,7 @@ without any check for existence. For example, to change the display command class="cmtt-10">\the⟨counter⟩) using etoolbox: + id="dx1-41010">: @@ -17082,7 +17200,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: @@ -17097,12 +17215,12 @@ class="cmtt-10">\GlsXtrTheLinkCounter. For example:  {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 (which is used by both \gls and \glstext) instead of \glstext). \printglossaries \end{document} -

    The use of

    The use of \glslinkpresetkeys means that the options can override this. For + id="dx1-41012"> means that the options can override this. For example @@ -17148,21 +17266,21 @@ example

     \gls[hyper=true]{sample1}
     
    -

    will override the

    will override the hyper=false setting in \glslinkpresetkeys. If . If \glslinkpostsetkeys + id="dx1-41014"> is used instead, the hyper=false setting will override the setting provided in the optional argument. -

    The

    The abbreviation category doesn’t have the category doesn’t have the linkcount attribute set (since it’s not + id="dx1-41016"> attribute set (since it’s not listed in the argument of \GlsXtrEnableLinkCounting). This means that \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 @@ -17189,9 +17307,9 @@ applied. If the test is changed to  \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: @@ -17200,103 +17318,103 @@ 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: indexname and + id="dx1-42001"> and dualindex. -

    The auto-indexing is designed for . +

    The auto-indexing is designed for makeindex syntax. If you’ve used the xindy + id="dx1-42004"> package option, the automatic escaping of xindy special characters in the sort field + id="dx1-42006"> field may result in an incorrect sort value for the \index command used by the auto-indexing. Note also that texindy has a fixed set of special characters + id="dx1-42007"> has a fixed set of special characters (corresponding to makeindex’s defaults) that can’t be customized. You may want to consider using bib2gls and its dual entries as an alternative approach.
    -

    -

    The

    +

    The \glsxtrpostnamehook macro, used at the end of macro, used at the end of \glossentryname and + id="dx1-42011"> and \Glossentryname, checks the , checks the indexname attribute for the category associated with + id="dx1-42013"> attribute for the category associated with that entry. Since \glossentryname is used in the default glossary styles, this makes a convenient way of automatically indexing each entry name at its location in the glossary without fiddling around with the value of the name + id="dx1-42014"> 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 -


    attribute. +

    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 + id="dx1-42017"> command with the sort value taken from the entry’s sort key and the actual value set to key and the actual value set to \glsentryname{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: @@ -17306,19 +17424,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 @@ -17332,44 +17450,44 @@ sort value. The default definition is:   \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 + id="dx1-42021">’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 + id="dx1-42023"> 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. + id="dx1-42025"> 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 key, instead of the name key: + id="dx1-42027"> key: @@ -17377,12 +17495,12 @@ class="cmss-10">name \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 + id="dx1-42028"> field, if present, otherwise the sort field: + id="dx1-42029"> field: @@ -17394,8 +17512,8 @@ class="cmss-10">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: @@ -17405,7 +17523,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 @@ -17415,124 +17533,124 @@ 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 key won’t be used with the dualindex attribute. You can + id="dx1-42031"> attribute. You can allow the format key to override the attribute value by using the preamble-only + id="dx1-42032"> 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 has been loaded, then the theindex + id="dx1-42035"> environment will be modified to redefine \glshypernumber to allow formats that use + id="dx1-42037"> to allow formats that use that command. -

    The

    The dualindex attribute will still be used on subsequent use even if the + id="dx1-42038"> attribute will still be used on subsequent use even if the indexonlyfirst attribute (or attribute (or indexonlyfirst package option) is set. However, the package option) is set. However, the dualindex + id="dx1-42041"> attribute will honour the noindex key.
    -

    -

    The key.

    +

    +

    The \glsxtrdoautoindexname command will attempt to escape any of \makeindex’s special characters, but there may be special cases where it fails, so take + id="dx1-42043">’s special characters, but there may be special cases where it fails, so take care. This assumes the default makeindex actual, level, quote and encap values (unless any of the commands \actualchar, , \levelchar, , \quotechar or or \encapchar + id="dx1-42048"> 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 the same way as a combination of \input or \loadglsentries, the entries can instead be stored in a .bib file and bib2gls can selectively write the appropriate commands to a .glstex file which is loaded using \glsxtrresourcefile (or \GlsXtrLoadResources). -

    This means that you can use a reference managing system, such as JabRef, to +

    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 @@ -17563,26 +17681,26 @@ class="cmtt-10">.tex file containing glossary definitions to a .bib file using convertgls2bib, supplied with + id="dx1-43003">, supplied with bib2gls.) -

    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: @@ -17604,8 +17722,8 @@ class="cmtt-10">bib2gls:   description={a waterbird with a long neck} } -

    -

    The follow provides some abbreviations: +

    +

    The follow provides some abbreviations: @@ -17629,8 +17747,8 @@ class="cmtt-10">bib2gls:   description={a simple interpreted server-side scripting language} } -

    -

    Here are some symbols: +

    +

    Here are some symbols: @@ -17653,15 +17771,15 @@ preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}   description={a set} } -

    -

    To ensure that

    +

    To ensure that bib2gls can find out which entries have been used in the document, you need the record package option: + id="dx1-43010"> package option: @@ -17669,53 +17787,53 @@ 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 xindy rule), then just use record=hybrid and continue to use and continue to use \makeglossaries and \printglossary (or \printglossaries), but you also need to instruct bib2gls to omit sorting to save time and to prevent the sort key from being + id="dx1-43015"> 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-43019f1"> 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

    filename.glstex if it exists.9.2 + id="x1-43020f2"> -

    Since the

    Since the .glstex file won’t exist on the first LaTeX run, the record package + id="dx1-43021"> package option additionally switches on undefaction=warn. Any use of commands like . Any use of commands like \gls or \glstext will produce ?? in the document, since the entries are undefined at this point. Once bib2gls has created the .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 .aux file, and any dependent entries (including parent an class="cmtt-10">glsignore format (for example, \gls[format=glsignore]{duck}) is recognised by bib2gls as a special ignored record. This means that it will match the selection criteria but the record won’t be added to the location list. This means that you won’t get spurious commas in the location list (as can happen with the other indexing @@ -17821,7 +17939,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 @@ -17829,23 +17947,23 @@ 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 as the command has to iterate over the internal lists of defined entry labels, which will be empty on the first run and on subsequent runs will only contain those entries that have been selected by 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: @@ -17855,29 +17973,29 @@ 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 sort=doc to instruct bib2gls to sort according to that. (The language tag obtained from tracklang’s interface is written to the ’s interface is written to the .aux file.) For a multilingual document you need to explicitly set the locale using a well-formed language tag. For example: @@ -17891,20 +18009,20 @@ example:   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 the order corresponding to bib2gls’s sorted list, the glossaries can simply be displayed using \printunsrtglossary (or \printunsrtglossaries), described in §??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, -

    The document build process (assuming the document is called

    The document build process (assuming the document is called mydoc) is: @@ -17948,7 +18066,7 @@ 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, bird, shtml and M entries were added because bib2gls detected (from the .aux file) that they had been used in the document. The other entries were added because bib2gls detected (from the .bib files) that they are referenced by the used entries. In the case of duck and goose, they are in the see field for field for bird. In the case of ssi and html, they are referenced in the description field of field of 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: @@ -18007,8 +18125,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: @@ -18034,10 +18152,10 @@ 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 bib2gls with the --group (or -

    The value of the

    The value of the group field must always be a label. You can set the corresponding + id="dx1-45011"> field must always be a label. You can set the corresponding title with \glsxtrsetgrouptitle (see §??sec:glosstylemods 2.11 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 +

    You can provide your own custom sort rule. For example, if you are using XƎLATEX or LuaLATEX:

    ]
    Remember that if you are using inputenc then extended characters, such as é or ø, + id="dx1-45012"> then extended characters, such as é or ø, are active and will expand when written to the .aux file. So with PDFLaTeX the above would have to be changed to protect against expansion. Some of the @@ -18214,7 +18332,7 @@ class="cmti-10">hex
    ⟩) in the .aux file. bib2gls will recognise this as the character given by the hexadecimal value ⟨\string\uE6 and so on. This is quite cumbersome, but you can use the shortcut \glshex E6 instead, so the above needs to be written as:
    @@ -18361,50 +18479,50 @@ class="cmsy-10">}]
    -

    +

    -

    Top

    9.3 The The glossaries-extra-bib2gls package

    -

    The package option

    The package option record=only (or simply (or simply record) automatically loads the + id="dx1-46002">) automatically loads the supplementary package glossaries-extra-bib2gls, which provides some commands that + id="dx1-46003">, which provides some commands that are specific to bib2gls. The package isn’t loaded by record=hybrid as that option is + id="dx1-46005"> as that option is intended for sorting with makeindex or xindy 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 is loaded via the record package option then the check for + id="dx1-46009"> package option then the check for associated language resource files (see §??sec:lang 14 Multi-Lingual Support) will also search for the existence of glossariesxtr-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 + id="dx1-46010"> if the relevant package option has defined the associated glossary: \printunsrtabbreviations, + id="dx1-46011">, \printunsrtacronyms, , \printunsrtsymbols, , \printunsrtnumbers and + id="dx1-46014"> and \printunsrtindex. -

    The . +

    The savenumberlist package option doesn’t have any effect with package option doesn’t have any effect with bib2gls. The location lists are saved by default, so glossaries-extra-bib2gls patches + id="dx1-46018"> patches \glsentrynumberlist and and \glsdisplaynumberlist to work with the to work with the location + id="dx1-46021"> field -



    \glsxtrprovidecommand{cs}[default]{definition}

    -

    +

    This command is intended for use in @preamble. It’s simply defined to \providecommand in glossaries-extra-bib2gls but but bib2gls’s interpreter treats it as \renewcommand. This means that you can override bib2gls’s internal definition of a command without overriding the command definition in the document (if it’s already defined before the resource file is input). For example @@ -18480,8 +18598,8 @@ defined before the resource file is input). For example

     @preamble{"\glsxtrprovidecommand{\int}{integral}"}
     
    -

    This will force

    This will force bib2gls to treat \int as the word “integral” to assist sorting but if @@ -18489,7 +18607,7 @@ this preamble code is written to the .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 @@ -18498,8 +18616,8 @@ class="cmtt-10">\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{cs}[default]{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, command has been defined (that is, hyperref has been + id="dx1-46030"> has been loaded before glossaries-extra) then this command checks for the existence of the text⟩. This command is provided for use with the indexcounter package option combined with package option combined with bib2gls’s save-index-counter resource option. See the 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{type}{level}{text}

    -

    +

    (if it has been defined) to set the widest name for the given glossary type and level. This allows for both the alttree style and the styles provided by style and the styles provided by glossary-longextra, + id="dx1-46037">, 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 glossaries-extra-stylemods + id="dx1-46041"> package with the alttree style enabled. In this case, it may be simpler to just use + id="dx1-46042"> style enabled. In this case, it may be simpler to just use \glssetwidest. -

    + id="dx1-46043">. +

    -

    Top

    9.3.1 Supplemental Locations

    -



    \glsxtrdisplaysupploc{prefix}{}{location}

    -

    +

    This is used by bib2gls version 1.7+ for supplemental locations, instead of using \glsxtrsupphypernumber with the externallocation attribute. This command sets up + id="dx1-47003"> attribute. This command sets up the location counter and prefix (used in the formation of hyperlinks) and then uses -



    \glsxtrmultisupplocation{location}{src}{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=nameref option, which requires at least option, which requires at least bib2gls v1.8, instead uses: -



    \glsxtr@record@nameref{label}{href}{hcounter}

    -

    +

    where ⟨title⟩ is obtained from \@currentlabelname and ⟨href ⟩ is obtained from \@currentHref. These commands require hyperref. If they are undefined, ⟨. If they are undefined, ⟨title⟩ and ⟨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 partial target name associated with the indexing counter. With the original makeindex/xindy approach, it’s not possible to include this information in the location, so the base glossaries package attempts to derive a prefix from which the + id="dx1-48007"> package attempts to derive a prefix from which the ⟨hcounter⟩ value can be reconstituted by appending the prefix. Unfortunately, not all definitions of counter⟩ (most notably the equation counter with chapters) so this can fail. -

    Since counter with chapters) so this can fail. +

    Since bib2gls is customized specifically for use with glossaries-extra, it’s now @@ -18757,7 +18875,7 @@ class="cmti-10">hcounter⟩, so the record=nameref option does this. By providing both + id="dx1-48010"> option does this. By providing both ⟨href ⟩ and ⟨hcounter⟩, you can determine which target you would rather use. The default @@ -18768,10 +18886,10 @@ class="cmtt-10">\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: -


    package and is simply defined to do: +


    \setentrycounter[prefix]{}{location}

    -

    +

    Earlier versions of bib2gls only used this in the loclist field and explicitly used + id="dx1-48014"> field and explicitly used \setentrycounter in the location field followed by field followed by \format{}, which follows the code that’s created with the default makeindex setting. The setting. 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{prefix}{hcounter}{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: @@ -18872,9 +18990,9 @@ class="cmti-10">file⟩ will be the external file reference.   }% } -

    which uses: -


    which uses: +


    \glsxtrnamereflink{format}{target}{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 page + id="dx1-48020"> or if ⟨title⟩ is empty, then just the location is used as the hyperlink text. If the counter equation, then the text is the location in parentheses. Otherwise the text is obtained + id="dx1-48021">, 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{target}{format}{title}

    -

    +

    otherwise an external link is created with: -



    \glsxtrfmtexternalnameref{target}{title}{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 -

    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 @@ -18984,8 +19102,8 @@ class="cmti-10">format⟩ is hyperbf then it will simply behave like textbf. -

    For compactness,

    For compactness, bib2gls merges normal records if the ⟨prefix⟩, ⟨location⟩ all match. (An order of precedence can b With nameref records, you can use the --merge-nameref-on switch provided by bib2gls v1.8+ to determine how to merge nameref records. This switch must be followed by one of the following keywords: hcounter (merge on @@ -19010,29 +19128,29 @@ class="cmtt-10">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 bib2gls version 1.5). For example: @@ -19042,14 +19160,14 @@ version 1.5). For example:

     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{label}{true}{false}

    -

    +

    This internally uses \GlsXtrIfFieldNonZero and will do ⟨false⟩ if the field isn’t set. -Within ⟨false⟩ if the field isn’t +set. Within ⟨true⟩ and ⟨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 \glscurrentfieldvalue to access +the value. (It will be 0 in ⟨false⟩ if the field isn’t set.) As from v1.47, there +is also a starred version which uses \GlsXtrIfFieldNonZero* (don’t add +grouping). +

    A convenient shortcut for use in the entry-type-aliases setting: -



    \GlsXtrBibTeXEntryAliases

    -

    +

    This provides aliases for BibTeX’s standard entry types to bib2gls’s @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 glossaries package’s package’s type key, so + id="dx1-49010"> key, so this command provides the key bibtextype instead. You can alias it with bibtextype 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 + id="dx1-49011"> package also provides definitions of the missing mathematical Greek commands: \Alpha, , \Beta, , \Epsilon, , \Zeta, , \Eta, , \Iota, + id="dx1-49017">, \Kappa, , \Mu, , \Nu, , \Omicron, , \Rho, , \Tau, , \Chi, , \Digamma, , \omicron. These are all + id="dx1-49026">. These are all defined with \providecommand, so they won’t override any definitions provided by any package loaded before glossaries-extra. Since . Since bib2gls’s interpreter recognises these commands, using them instead of explicitly using the Latin characters with the same shape helps to keep the Greek symbols together when sorting. Similarly, if upgreek has been loaded, the missing upright Greek commands are also + id="dx1-49029"> 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 tag.ldf, where ⟨tag⟩ identifies the dialect, locale, region or root language. See the description of + + + \IfTrackedLanguageFileExists in the tracklang documentation for further details. + id="dx1-49030"> documentation for further details. If this file is on TeX’s path and the tracklang package (automatically loaded by - - - + id="dx1-49031"> package (automatically loaded by glossaries) detects that the document has requested that language or locale, then the file will automatically be loaded. For example, if you want to provide a rule @@ -19221,7 +19342,7 @@ contains: } {}% 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. @@ -19229,7 +19350,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:   % 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 + id="dx1-49032"> package, in order for these files to be automatically loaded. This essentially means ensuring you load the appropriate language package before tracklang is loaded by the base is loaded by the base glossaries package or any other package that uses it. + id="dx1-49034"> package or any other package that uses it. See the tracklang documentation for further details.) -

    Alternatively, if the rules are specific to a subject rather than a region or + id="dx1-49035"> documentation for further details.) +

    Alternatively, if the rules are specific to a subject rather than a region or language, then you can provide a supplementary package. For example, if you have a package called, say, mapsymbols that provides map symbols, then the file @@ -19288,10 +19409,10 @@ class="cmtt-10">mapsymbols.sty might contain:  \string< \glshex 26BD % football 0x26BD } -

    and the supplementary file

    and the supplementary file mapsymbols.bib can provide the appropriate definitions for bib2gls: @@ -19303,7 +19424,7 @@ class="cmtt-10">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: @@ -19330,10 +19451,10 @@ class="cmtt-10">bib2gls:  } ] -

    -

    The following commands are provided by

    +

    The following commands are provided by glossaries-extra-bib2gls. They should be + id="dx1-49037">. They should be separated by the rule separator characters ; (semi-colon) or , (comma) or @@ -19342,16 +19463,16 @@ class="cmtt-10">& (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, + id="dx1-49038">, \Alpha, , \beta, , \Beta etc) in a block before Latin characters: + id="dx1-49041"> etc) in a block before Latin characters: @@ -19371,38 +19492,38 @@ sort-rule={\glsxtrcontrolrules  <\glsxtrLatinOslash } -

    -


    +


    \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 aren’t checked for by 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: @@ -19418,27 +19539,27 @@ of sub-block commands:  \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 @@ -19450,29 +19571,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 @@ -19489,11 +19610,11 @@ different order is required:   \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, @@ -19502,26 +19623,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 … 9). -



    \glsxtrSuperScriptDigitrules

    -

    +

    This rule block contains just the superscript digits (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 +

    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 @@ -19567,10 +19688,10 @@ class="cmtt-10">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, , \beta etc) and upright Greek + id="dx1-49096"> etc) and upright Greek (\upalpha, etc, from the , etc, from the upgreek package) characters that includes digamma + id="dx1-49098"> package) characters that includes digamma (\digamma and and \Digamma) between epsilon and zeta. The upright and italic versions + id="dx1-49100">) between epsilon and zeta. The upright and italic versions are gathered together into the same letter group. -



    \glsxtrMathGreekIIrules

    -

    +

    As \glsxtrMathGreekIrules but doesn’t include digamma. -



    \glsxtrMathUpGreekIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the , etc, from the upgreek package) + id="dx1-49104"> package) characters that includes digamma (\digamma and and \Digamma) between epsilon and + id="dx1-49106">) between epsilon and zeta. -



    \glsxtrMathUpGreekIIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the , etc, from the upgreek package) that + id="dx1-49109"> package) that doesn’t include digamma. -



    \glsxtrMathItalicGreekIrules

    -

    +

    A rule block for mathematical Greek (\alpha, , \Alpha, etc) characters that includes + id="dx1-49112">, etc) characters that includes digamma (\diagamma and and \Digamma) between epsilon and zeta. Note that even + id="dx1-49114">) between epsilon and zeta. Note that even though the upper case \Delta etc are actually rendered upright by LaTeX, 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 + id="dx1-49118">, etc) characters that doesn’t include digamma. -



    \glsxtrMathItalicUpperGreekIrules

    -

    +

    A rule block for upper case mathematical Greek (\Alpha, , \Beta, etc) characters that + id="dx1-49121">, etc) characters that includes digamma (\Digamma) between epsilon and zeta. -


    ) between epsilon and zeta. +


    \glsxtrMathItalicUpperGreekIIrules

    -

    +

    A rule block for upper case mathematical Greek (\Alpha, , \Beta, etc) characters that + id="dx1-49125">, etc) characters that doesn’t include digamma. -



    \glsxtrMathItalicLowerGreekIrules

    -

    +

    A rule block for lower case mathematical Greek (\alpha, , \beta, etc) characters that + id="dx1-49128">, etc) characters that includes digamma (\digamma) between epsilon and zeta. -


    ) between epsilon and zeta. +


    \glsxtrMathItalicLowerGreekIIrules

    -

    +

    A rule block for lower case mathematical Greek (\alpha, , \beta, etc) characters that + id="dx1-49132">, 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

    @@ -19951,13 +20072,13 @@ class="cmtt-10">}
    where ⟨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: @@ -19968,19 +20089,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 \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: @@ -19989,8 +20110,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: @@ -20017,7 +20138,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: @@ -20026,13 +20147,13 @@ 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 options]{prefix}{cs}

    -

    +

    which defines the command ⟨cs⟩ that behaves like

    @@ -20068,7 +20189,7 @@ class="cmtt-10">]
     \glsxtrnewgls{sym.}{\sym}
     
    -

    or (to default to no hyperlinks) +

    or (to default to no hyperlinks) @@ -20076,13 +20197,13 @@ 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: @@ -20107,9 +20228,9 @@ 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: @@ -20130,11 +20251,11 @@ For example:

     \glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl}
     
    -

    -

    There’s an analogous command for

    +

    There’s an analogous command for \rgls: -



    \glsxtrnewrgls[default options]{prefix}{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 [options]{label}, 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 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{prefix}{true}{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 @@ -20248,10 +20369,10 @@ 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[options]{label}[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[options]{label}[insert]

    -

    +

    (uses \glspl), -



    \dGls[options]{label}[insert]

    -

    +

    (uses \Gls), -



    \dGlspl[options]{label}[insert]

    -

    +

    (uses \Glspl), -



    \dGLS[options]{label}[insert]

    -

    +

    (uses \GLS), -



    \dGLSpl[options]{label}[insert]

    -

    +

    (uses \GLSpl), -



    \dglslink[options]{label}[insert]

    -

    +

    (uses \glslink), -



    \dglsdisp[options]{label}[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: @@ -20384,7 +20505,7 @@ class="cmtt-10">entries.bib contains:     diameter} } -

    and suppose the document code is: +

    and suppose the document code is: @@ -20404,7 +20525,7 @@ Next use: \gls{duck}, \gls{svm}, \gls{pi}. \printunsrtglossaries \end{document} -

    This uses the default empty primary prefix and

    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 \gls{pi}, which references the primary @index entry rather than the symbol. -

    What’s really needed is: +

    What’s really needed is: @@ -20423,7 +20544,7 @@ symbol.

     \gls{duck}, \gls{dual.svm}, \gls{dual.pi}.
     
    -

    or with +

    or with @@ -20434,7 +20555,7 @@ symbol.  dual-prefix={} ] -

    then only the entries without a dual need a prefix: +

    then only the entries without a dual need a prefix: @@ -20442,7 +20563,7 @@ symbol.

     \gls{idx.duck}, \gls{svm}, \gls{pi}.
     
    -

    Using

    Using \glsxtrnewglslike, as earlier, this can be simplified to: @@ -20451,8 +20572,8 @@ class="cmtt-10">\glsxtrnewglslike, as earlier, this can be simplified to:

     \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: @@ -20475,7 +20596,7 @@ 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 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 .glstex file exists, then \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 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 .glstex file:

    @@ -20539,19 +20660,19 @@ class="cmtt-10">.glstex file:

    \bibglstertiaryprefixlabel{prefix}
    \bibglsdualprefixlabel{prefix}
    \bibglsprimaryprefixlabel{prefix} @@ -20566,7 +20687,7 @@ loaded to set up the prefix list. For example: \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 @@ -20581,57 +20702,57 @@ 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 invoking bib2gls with the --record-count or --record-count-unit switches. These options will ensure that when each entry is written to the .glstex file bib2gls will additionally set the following internal fields for that entry:

    • -

      recordcount: set to the total number of records found for the entry;

    • -

      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:

    • -

      recordcount.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 @@ -20641,8 +20762,8 @@ 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 records. For example, if 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⟩. @@ -20682,15 +20803,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 @@ -20702,7 +20823,7 @@ counter name. For example:

     \GlsXtrRecordCount{bird}{page}
     
    -

    expands to 7 and +

    expands to 7 and @@ -20710,9 +20831,9 @@ counter name. For example:

     \GlsXtrRecordCount{bird}{section}
     
    -

    expands to 1. -


    expands to 1. +


    \GlsXtrLocationRecordCount{label}{counter}{location}

    -

    +

    This expands to the total for the given location. For example @@ -20729,18 +20850,18 @@ 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. -



    \rglsmodifier[label}[insert]

    -

    -


    +


    \rglsplmodifier[label}[insert]

    -

    -


    +


    \rGlsmodifier[label}[insert]

    -

    -


    +


    \rGlsplmodifier[label}[insert]

    -

    -


    +


    \rGLSmodifier[label}[insert]

    -

    -


    +


    \rGLSplmodifier[label}[insert]

    -

    +

    These commands check the recordcount attribute which, if set, should be a number. + id="dx1-51015"> attribute which, if set, should be a number. For example: @@ -20823,27 +20944,27 @@ For example:

     \glssetcategoryattribute{abbreviation}{recordcount}{1}
     
    -

    For convenience, you can use -


    For convenience, you can use +


    \GlsXtrSetRecordCountAttribute{category list}{n}

    -

    +

    to set the recordcount attribute to ⟨ attribute to ⟨n⟩ for all the categories listed in ⟨category list⟩. -

    The

    The \rgls-like commands use -



    \glsxtrifrecordtrigger{label}{trigger 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 + id="dx1-51019"> attribute is set. If not is just does ⟨normal⟩, otherwise it tests if -



    \glsxtrrecordtriggervalue{label}

    -

    +

    is greater than the value given in the recordcount attribute for that entry’s category. + id="dx1-51021"> attribute for that entry’s category. If true, this does ⟨normal⟩ otherwise it does ⟨trigger code⟩. The default definition of the @@ -20887,85 +21008,85 @@ trigger value command is:  \GlsXtrTotalRecordCount{#1}% } -

    The ⟨

    The ⟨trigger code⟩ part writes a record with the format set to set to glstriggerrecordformat (which bib2gls v1.1+ recognises as a special type of ignored location format) and does ⟨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 + id="dx1-51031"> 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. @@ -21006,7 +21127,7 @@ For example: \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 + id="dx1-52001"> entry to cross-reference entries when used with the entrycounter or or subentrycounter options. The options. The glossaries-extra package provides a supplementary command -



    \glsxtrpageref{label}

    -

    +

    that works in the same way except that it uses \pageref instead of 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 ⟨glossary-type⟩. Be careful if you use the hyperref package as this may cause duplicate + id="dx1-52008"> package as this may cause duplicate hypertargets. You will need to change \glolinkprefix to another value or disable hyperlinks when you display the duplicate. Alternatively, use the new target key to + id="dx1-52009"> key to switch off the targets: @@ -21072,46 +21193,46 @@ switch off the targets:

     \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: @@ -21141,11 +21262,11 @@ class="cmti-10">without the initial backslash.    $\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[options]{label}{text}

    -

    +

    This effectively does

    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*[options]{text}[insert]

    -

    +

    Both the starred and unstarred versions use: -



    \glsxtrfmtdisplay{cs name}{text}{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 @@ -21231,7 +21352,7 @@ warning if undefaction=warn). There won’t be a warning or error if the entry is + id="dx1-53006">). There won’t be a warning or error if the entry is defined by the given field is missing. In either case, (the entry is undefined or the field is missing) ⟨cs name⟩ will be \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: @@ -21267,12 +21388,12 @@ class="cmti-10">text⟩.

      \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 hyperref has been loaded). This can be changed so that it also + id="dx1-53007"> has been loaded). This can be changed so that it also suppresses the hyperlink: @@ -21281,30 +21402,30 @@ suppresses the hyperlink:

     \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 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{key}{default}{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{key}{true}{false}

    -

    +

    This tests if ⟨key⟩ is available for use in the ⟨key⟩= list in the second argument of @@ -21359,20 +21480,20 @@ 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 text field won’t update the field won’t update the plural field. There are also + id="dx1-53014"> field. There are also some fields that should really only be set when entries are defined (such as the parent field). Unexpected results may occur if they are subsequently + id="dx1-53015"> field). Unexpected results may occur if they are subsequently changed. -



    \GlsXtrSetField{label}{field}{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{label}{field}{code}

    -

    +

    where ⟨label⟩ is the entry label and ⟨code⟩ is the assignment code. -

    This command just uses

    This command just uses \glsdoifexists{label}{undefaction=warn. You can redefine + id="dx1-53019">. You can redefine \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 ’s \csdef without any checks. This command isn’t robust. There is also a version that uses \protected@csedef instead:10.1 -


    +


    \glsxtredeffield{label}{{replacement text}

    -

    -


    +

    The following command was added to glossaries-extra v1.47 primarily for the +convenience of bib2gls: +


    \glsxtrapptocsvfield{label}{field}{value}

    +

    +There’s no check for the existence of either the entry or the field. If the entry +identified by ⟨label⟩ has the given field set then this command will append a comma +followed by ⟨value⟩ to the existing value, otherwise it will set the field to just ⟨value⟩. +This uses \csdef or \csappto so the effect can be localised. +


    \gGlsXtrSetField{label}{field}{value}

    -

    +

    As \GlsXtrSetField but globally. -



    \eGlsXtrSetField{label}{field}{value}

    -

    +

    As \GlsXtrSetField but uses protected expansion. -



    \xGlsXtrSetField{label}{field}{value}

    -

    +

    As \gGlsXtrSetField but uses protected expansion. -



    \GlsXtrLetField{label}{field}{cs}

    -

    +

    Sets the field given by ⟨field⟩ to the replacement text of ⟨cs⟩ for the entry given by ⟨label⟩ (using \let). -



    \csGlsXtrLetField{label}{field}{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 @@ -21559,17 +21708,14 @@ class="cmti-10">code⟩} is still used, as for \GlsXtrSetField. - - - -

    The

    The glossaries package provides \ifglshasfield to determine if a field has been + id="dx1-53032"> to determine if a field has been set. The glossaries-extra package provides a simpler version: -



    \glsxtrifhasfield{field}{true}{false}

    -

    +

    (New to v1.19.) Note that in this case the ⟨field⟩ must be the internal field label (for @@ -21596,16 +21742,16 @@ 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*{field}{true}{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 + id="dx1-53036">). 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{field}{true}{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{field}{true}{false}

    -

    +

    If the entry exists and has the given field set to the given text then this does ⟨true⟩ otherwise it does ⟨\glscurrentfieldvalue with ⟨text⟩ using etoolbox’s ’s \ifdefstring. Version 1.39 introduced a starred form of this command, - - - 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{field}{true}{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 ⟨false⟩ is done. This internally uses \DTLifinlist provided by datatool-base which performs + id="dx1-53043"> which performs a one level expansion on ⟨list⟩. See the datatool documentation for further + id="dx1-53044"> 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: @@ -21779,8 +21925,8 @@ the category is one of a set of labels:  {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: -


    As from v1.47 there’s a similar command: +


    \GlsXtrIfValueInFieldCsvList{label}{field}{value}{true}{false} +

    +

    +This is essentially the opposite situation where the list is stored in the given field and +⟨value⟩ is the element to find in the list. Again the unstarred versions add implicit +grouping. Note that the ⟨value⟩ isn’t expanded. If you need it to be fully expanded +before searching for it use: +


    \xGlsXtrIfValueInFieldCsvList{label}{field}{value}{true}{false} +

    +

    +(To add a value to a field containing a comma-separated list, use \glsxtrapptocsvfield. +To iterate over the field use \glsxtrforcsvfield.) +

    To test if the value is non-zero: +


    \GlsXtrIfFieldNonZero{field}{true}{false}

    -

    +

    Alternatively, you can test if the field expands to a specific number using: -



    \GlsXtrIfFieldEqNum{field}{true}{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 + id="dx1-53050"> 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 ⟨field-label⟩ corresponds to the internal field tag, which isn’t always the same as the key name. See Table 4.1 of the glossaries + id="dx1-53052"> 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}{field-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 + id="dx1-53055"> internal list, you can use the following command that adds an item to the field using etoolbox’s ’s \listcsadd: -



    \glsxtrfieldlistadd{label}{field}{item}

    -

    +

    where ⟨label⟩ is the entry’s label, ⟨field⟩ is the entry’s field and ⟨\listgadd, \listeadd and \listxadd: -



    \glsxtrfieldlistgadd{label}{field}{item}

    -

    -


    +


    \glsxtrfieldlisteadd{label}{field}{item}

    -

    -


    +


    \glsxtrfieldlistxadd{label}{field}{item}

    -

    +

    You can then iterate over the list using: -



    \glsxtrfielddolistloop{label}{field}

    -

    +

    or -



    \glsxtrfieldforlistloop{label}{field}{handler}

    -

    +

    that internally use \dolistcsloop and \forlistloop, respectively. You can use \listbreak to break out of the loop (see the to break out of the loop (see the etoolbox manual for further + id="dx1-53064"> 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 ’s \DTLformatlist, this iterates over an (, this iterates over an (etoolbox) internal list and + id="dx1-53068">) internal list and formats each item. Uses all the same helper commands as \DTLformatlist (the same + + + list handler macro is used). Unlike the datatool-base command, this command has no + id="dx1-53069"> command, this command has no starred version. Grouping is automatically applied. -

    For example, with

    For example, with bib2gls’s save-child-count resource option: @@ -22027,13 +22217,13 @@ class="cmtt-10">save-child-count resource option:   {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{label}{true}{false}

    -

    +

    and \xifinlistcs -



    \glsxtrfieldxifinlist{label}{true}{false}

    -

    -

    See the

    +

    See the etoolbox’s user manual for further details of these commands, in particular + id="dx1-53073">’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{label}{field}{handler}

    -

    +

    where again ⟨handler⟩ is a control sequence that takes a single argument. Unlike the etoolbox loops, this doesn’t ignore empty elements nor does it discard leading / + id="dx1-53075"> loops, this doesn’t ignore empty elements nor does it discard leading / trailing spaces. Internally it uses \@for (modified by xfor which is automatically + id="dx1-53076"> which is automatically loaded by glossaries). The ). The xfor package modifies the behaviour of package modifies the behaviour of \@for to allow the loop to be broken prematurely using \@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: -


    \glsxtrforcsvfield* which +will use \glsxtrifhasfield* instead but take care if you nest these starred +commands as unexpected results can occur without the scoping. +

    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 -


    \GlsXtrForeignTextField

    -

    +

    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{} where ⟨dialect⟩ is obtained from the locale tag through tracklang’s ’s \GetTrackedDialectFromLanguageTag + id="dx1-53084"> command. You need at least tracklang v1.3.6 for this to work properly. The ⟨ v1.3.6 for this to work properly. The ⟨dialect⟩ must be one that’s tracked (which typically means that babel or or polyglossia has been + id="dx1-53087"> has been loaded with the appropriate setting for that language). If \foreignlanguage hasn’t been defined, this just does ⟨text⟩. For example: \gls{abnt}, \gls{din}. \end{document} -

    -

    When using the

    +

    When using the record option, in addition to recording the usual location, you can + id="dx1-53088"> 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: @@ -22216,7 +22410,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 \makenoidxglossaries). If you want to use one of the tabular-like styles with + id="dx1-54002">-like styles with \printunsrtglossary, make sure you load glossaries-extra-stylemods which modifies + id="dx1-54004"> which modifies 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

    \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 +

    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 bib2gls (see §??sec:bib2gls 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 + id="dx1-54008"> key is defined. If not defined (default), the group label will be formed from the first letter of the name field. The corresponding group title will be obtained as discussed in + id="dx1-54009"> field. The corresponding group title will be obtained as discussed in §??sec:glosstylemods 2.11 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 key is defined (which it is with the record option) then the group label + id="dx1-54011"> option) then the group label will be obtained from the value of that field. If the field is empty, no grouping is performed, even if the style supports it. (That is, there won’t be a header or a vertical separation.) If the group field is non-empty, then the corresponding title is obtained + id="dx1-54012"> field is non-empty, then the corresponding title is obtained as described earlier. -

    In either case, if the

    In either case, if the groups option is set to false then no group formation will be + id="dx1-54013"> 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 -


    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-54019"> package option seenoindex=ignore or or seenoindex=warn to prevent an error occurring from the + id="dx1-54021"> to prevent an error occurring from the automated \glssee normally triggered by this key. The record=only package option + id="dx1-54022"> package option will automatically deal with this. -

    For example: +

    For example: @@ -22435,98 +22629,98 @@ will automatically deal with this. \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 + id="dx1-54023"> 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-54024"> 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⟩]. -

    +

    -

    Top

    10.2.1 Hooks

    -

    To avoid complications caused by

    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 +

    There’s another hook immediately before the internal command containing the glossary code is performed: -



    \printunsrtglossarypredoglossary

    -

    -

    The internal command uses -


    +

    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: @@ -22535,31 +22729,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-55013"> field.

    +

    You can instruct bib2gls to omit setting the loclist field with the resource option + id="dx1-55015"> field with the resource option --save-loclist=false to prevent it from being used as a fallback. -

    +

    -

    Top

    10.2.2 Filtering

    -

    You can redefine the handler used by

    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: @@ -22585,7 +22779,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: @@ -22599,8 +22793,8 @@ class="cmtt-10">record.section field:   {}% } -

    -

    Alternatively you can use the starred form of

    +

    Alternatively you can use the starred form of \printunsrtglossary which will localise the change: @@ -22616,10 +22810,10 @@ localise the change:   }% } -

    -

    If you are using the

    +

    If you are using the hyperref package and want to display the same glossary more + id="dx1-56002"> 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: @@ -22643,7 +22837,7 @@ duplicate hypertarget names. For example:   }% } -

    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: @@ -22667,8 +22861,8 @@ better approach to use:   }% } -

    -

    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: @@ -22692,16 +22886,16 @@ the glossary header and add some vertical space afterwards:   \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: @@ -22710,16 +22904,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 @@ -22730,18 +22924,18 @@ so if you want to just make some minor modifications you can do   \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-56005"> (or record=hybrid) package option. -

    This temporary change in the hypertarget prefix means you need to explicitly use + id="dx1-56006">) 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 @@ -22753,27 +22947,27 @@ 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 Partial Glossaries

    -

    It’s possible that you may require greater customisation over the way the glossary is +

    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 or super, + id="dx1-57002">, 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 + id="dx1-57003"> package). -

    To get a better understanding of how this works, it’s useful to consider how a +

    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: @@ -22793,58 +22987,58 @@ class="cmtt-10">makeindex works. Here’s a simple example docume \printglossary \end{document} -

    When the document is built,

    When the document is built, makeindex creates a file that contains:

    \glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble + id="dx1-57009">
    \begin{theglossary}\glossaryheader + id="dx1-57010">
    \glsgroupheading{B}\relax \glsresetentrylist + id="dx1-57012">
    \glossentry{broccoli}{location list}\glsgroupskip + id="dx1-57014">
    \glsgroupheading{C}\relax \glsresetentrylist + id="dx1-57016">
    \glossentry{cabbage}{location list}%
    \end{theglossary}\glossarypostamble + id="dx1-57018">
    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

    The \printunsrtglossary command performs the same preliminary setup but there’s no file to input. Instead it then does the section heading (\glossarysection) @@ -22854,7 +23048,7 @@ class="cmtt-10">\glossarypreamble) and constructs a control sequence that class="cmtt-10">\begin{theglossary} ⟨content\end{theglossary}. -

    The letter group markup (

    The letter group markup (\glsgroupheading and \glsgroupskip) is inserted whenever the group label changes between top-level entries. In this case, ⟨

    \glossentry{broccoli}{location list{broccoli}
    This internal handler uses \printunsrtglossaryhandler to determine the required + id="dx1-57020"> 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 + id="dx1-57021"> 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 + id="dx1-57023"> key simply provides the glossary title and doesn’t identify the content. -

    This environment essentially does:

    +

    This environment essentially does:

    initial setup
    \glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble + id="dx1-57027">
    \begin{theglossary}\glossaryheader\glsresetentrylist
    content⟩ @@ -22938,12 +23132,12 @@ class="cmtt-10">\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 +

    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 @@ -22963,15 +23157,15 @@ the following silly example: \printunsrtglossaryhandler\glscurrententrylabel \end{printunsrtglossarywrap} -

    This trivial example will work with a tabular-like style, such as

    This trivial example will work with a tabular-like style, such as long (although the + id="dx1-57031"> (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 + id="dx1-57033">. The optional argument ⟨options⟩ is similar to \printunsrtglossary but the following keys are unavailable: title, , toctitle, , style, , numberedsection and and label. -

    This will do:

    + id="dx1-57039">. +

    This will do:

     \begingroup @@ -23025,7 +23219,7 @@ class="cmtt-10"> \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. @@ -23034,9 +23228,9 @@ class="cmti-10">content⟩ is the sequence of code that \printunsrtglossary would normally insert within the theglossary environment. -

    For example: + id="dx1-57041"> environment. +

    For example: @@ -23046,7 +23240,7 @@ class="cmss-10">theglossary -

    This produces a result very similar to that obtained with just: +

    This produces a result very similar to that obtained with just: @@ -23054,15 +23248,15 @@ class="cmss-10">theglossary \printunsrtglossary[style=indexgroup,type=main] -

    The first case is unsuitable for use with a tabular-style. It will also cause a +

    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 +

    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 @@ -23081,12 +23275,12 @@ you have multiple glossaries. For example: \printunsrtinnerglossary[type=mineral]{}{} \end{printunsrtglossarywrap} -

    In this case, the

    In this case, the list style doesn’t cause a problem as there will be three instances of + id="dx1-57044"> style doesn’t cause a problem as there will be three instances of \item on the first LaTeX run. -

    Here’s another example: +

    Here’s another example: @@ -23103,16 +23297,16 @@ class="cmtt-10">\item on the first LaTeX run. \printunsrtinnerglossary[type=mineral]{}{} \end{printunsrtglossarywrap} -

    Note that in both of the above cases, the inner glossaries have been arranged +

    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

    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

    This is a rather more complicated example that requires bib2gls. Suppose I have a file called topictitles.bib that contains: @indexplural{mineral} @indexplural{vegetable} -

    And also a file called

    And also a file called topics.bib that contains entries like: @@ -23149,14 +23343,14 @@ class="cmtt-10">topics.bib that contains entries like:   category={mineral} } -

    Note that the category labels in the second file match the entry labels in the first +

    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 +

    The simplest way of creating a hierarchical glossary from this data is to input both files and copy the category field to the field to the parent field: + id="dx1-57047"> field: @@ -23165,7 +23359,7 @@ class="cmss-10">parent -

    The glossary can then simply be displayed with: +

    The glossary can then simply be displayed with: @@ -23173,18 +23367,18 @@ class="cmss-10">parent \printunsrtglossary[style=indexgroup] -

    This will now be ordered: animal (followed by animal child entries), mineral +

    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, +

    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 +

    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

    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 @@ -23198,7 +23392,7 @@ type: \newignoredglossary*{mineral} \newignoredglossary*{vegetable} -

    The entries in

    The entries in topictitles.bib go in the default main glossary and are sorted in reverse: @@ -23209,19 +23403,19 @@ 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 +

    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

    Now the entries in topics.bib are selected but the type field is set to the field is set to the category + id="dx1-57051"> field: @@ -23231,7 +23425,7 @@ field: \GlsXtrLoadResources[src=topics,type={same as category},selection=all,  sort=en-GB] -

    The aim here is to use

    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 @@ -23255,30 +23449,30 @@ appearance:   \let\printunsrtglossaryhandler\nestedhandler } -

    -

    I’ve used

    +

    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 +

    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 s href="#styopt.sort">sort=none to + id="dx1-58001"> to skip the construction of the sort field.) For example, in the preamble provide a + id="dx1-58002"> field.) For example, in the preamble provide a custom command: @@ -23303,7 +23497,7 @@ custom command:  \par\medskip } -

    define your entries +

    define your entries @@ -23313,7 +23507,7 @@ custom command:   description={a relation or expression involving variables} } -

    and then later in the text: +

    and then later in the text: @@ -23321,27 +23515,27 @@ custom command:

     \displayterm{function}
     
    -

    -

    However, if may be that you want to use

    +

    However, if may be that you want to use hyperref and have commands like 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

      Defines \glscurrententrylabel to the entry’s label. This is usually done at the start of the glossary style commands \glossentry and @@ -23352,7 +23546,7 @@ class="cmtt-10">\subglossentry and may be used by hooks, such as class="cmtt-10">\glossentryname.

    • -

      Defines

      Defines \currentglossary to the entry’s glossary type. This is usually done at the start of commands like \printglossary and may be used by style hooks. @@ -23361,39 +23555,39 @@ class="cmtt-10">\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-58006"> field for the current entry.

    • -

      Increments and display the entry counters if the

      Increments and display the entry counters if the entrycounter or or subentrycounter + id="dx1-58008"> package options are set. If the entry doesn’t have a parent, then this does

      • -

        \glsentryitem{label}

      -

      otherwise it does (as from v1.31)

      +

      otherwise it does (as from v1.31)

      • -

        \GlsXtrStandaloneSubEntryItem + id="dx1-58009"> {label\glssubentryitem{label} if the entry has a parent but not a grandparent.

      -

      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 @@ -23414,18 +23608,18 @@ class="cmtt-10">\glsentryitem for all child levels, which doesn’t m

            \renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}}
       
      -

      +

    • -

      Sets the hyper-target if supported (using

      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-58013"> 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

    @@ -23464,11 +23658,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 \glsxtrtitleorpdforheading. It may be left empty in which determined as follows:

    • -

      If

      If \glsxtrheadfield⟩ is defined, then ⟨header⟩ is }.

    • -

      Otherwise ⟨

      Otherwise ⟨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-58019"> option) then accessibility support will be provided if there’s a corresponding command

    @@ -23547,7 +23741,7 @@ 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: @@ -23560,12 +23754,12 @@ class="cmtt-10">\glssymbolaccessdisplay).  \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-58020"> or subentrycounter and remove the colon: + id="dx1-58021"> and remove the colon: @@ -23578,7 +23772,7 @@ class="cmss-10">subentrycounter -

    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: @@ -23587,13 +23781,13 @@ 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: @@ -23610,9 +23804,9 @@ the following modification:  \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: @@ -23621,7 +23815,7 @@ class="cmtt-10">\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.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-59001"> 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

      If the see field wasn’t provided when ⟨ field wasn’t provided when ⟨entry-1⟩ was defined, the alias key will + id="dx1-59004"> key will automatically trigger

      }
    • -

      If the

      If the hyperref package has been loaded then package has been loaded then \gls{entry-1} will link to @@ -23685,7 +23879,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.)

    • @@ -23693,24 +23887,24 @@ class="cmti-10">entry-1⟩’s -

      With

      With record=off or or record=hybrid, the , the noindex setting will automatically + id="dx1-59009"> 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 @@ -23718,41 +23912,41 @@ class="cmtt-10">\glssee) unless it’s been explicitly class="cmtt-10">\glsadd or if the indexing has been explicitly set using noindex=false. -

      Note that with

      Note that with record=only, the , 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-59015"> 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: @@ -23764,25 +23958,25 @@ For example:  \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-60001"> environment. As mentioned in §??sec:pkgopts 1.2 New or Modified Package Options above, this ability is disabled by default with 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-60004"> 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-60008"> 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 @@ -23882,32 +24076,32 @@ class="cmitt-10">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-60010"> 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: @@ -23919,8 +24113,8 @@ below:  ... later \glsxtr[][plural=geese]{goose} -

    -

    If you are considering doing something like: +

    +

    If you are considering doing something like: @@ -23931,15 +24125,15 @@ below:  ... 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 +

    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 @@ -23988,34 +24182,34 @@ without switching to X\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-61001"> (for prefixing) and glossaries-accsupp (for accessibility support). These packages aren’t + id="dx1-61002"> (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: @@ -24037,25 +24231,25 @@ 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-63001"> 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-63003"> package option: @@ -24063,11 +24257,11 @@ class="cmss-10">accsupp \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-63007"> 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-63010"> package isn’t loaded, this is simply defined as: @@ -24109,7 +24303,7 @@ class="cmss-10">glossaries-accsupp \newcommand*{\glsaccessname}[1]{\glsentryname{#1}} -

    otherwise it’s defined as: +

    otherwise it’s defined as: @@ -24123,21 +24317,21 @@ class="cmss-10">glossaries-accsupp -

    (

    (\glsnameaccessdisplay is defined by the is defined by the glossaries-accsupp package.) The first + id="dx1-63012"> package.) The first letter upper case version is: -



    \Glsaccessname{label}

    -

    +

    Without the glossaries-accsupp package this is just defined as: + id="dx1-63014"> package this is just defined as: @@ -24145,9 +24339,9 @@ class="cmss-10">glossaries-accsupp \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}} -

    With the

    With the glossaries-accsupp package this is defined as: + id="dx1-63015"> package this is defined as: @@ -24161,355 +24355,355 @@ class="cmss-10">glossaries-accsupp -

    -

    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-63019"> 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-63023"> 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-63027"> 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-63031"> 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-63035"> 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-63039"> 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-63043"> 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-63047"> 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-63051"> 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-63055"> 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-63059"> 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-63063"> 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

    -

    Simple sample file that uses one of the dummy files provided by the +

    Simple sample file that uses one of the dummy files provided by the glossaries package for testing.

    -

    +

    sample-abbr-styles.tex

    -

    Demonstrates all predefined abbreviation styles. +

    Demonstrates all predefined abbreviation styles.

    -

    +

    sample-mixture.tex

    -

    General entries, acronyms and initialisms all treated differently. +

    General entries, acronyms and initialisms all treated differently.

    -

    +

    sample-name-font

    -

    Categories and attributes are used to customize the way different entries +

    Categories and attributes are used to customize the way different entries appear.

    -

    +

    sample-abbrv.tex

    -

    General abbreviations. +

    General abbreviations.

    -

    +

    sample-acronym.tex

    -

    Acronyms aren’t initialisms and don’t expand on

    Acronyms aren’t initialisms and don’t expand on first use.

    -

    +

    sample-acronym-desc.tex

    -

    Acronyms that have a separate long form and description. +

    Acronyms that have a separate long form and description.

    -

    +

    sample-crossref.tex

    -

    Unused entries that have been cross-referenced automatically are added +

    Unused entries that have been cross-referenced automatically are added at the end of the document.

    -

    +

    sample-indexhook.tex

    -

    Use the index hook to track which entries have been indexed (and therefore +

    Use the index hook to track which entries have been indexed (and therefore find out which ones haven’t been indexed).

    -

    +

    sample-footnote.tex

    -

    Footnote abbreviation style that moves the footnote marker outside of +

    Footnote abbreviation style that moves the footnote marker outside of the hyperlink generated by \gls and moves it after certain punctuation characters for neatness.

    -

    +

    sample-undef.tex

    -

    Warn on undefined entries instead of generating an error. +

    Warn on undefined entries instead of generating an error.

    -

    +

    sample-mixed-abbrv-styles.tex

    -

    Different abbreviation styles for different entries. +

    Different abbreviation styles for different entries.

    -

    +

    sample-initialisms.tex

    -

    Automatically insert dots into initialisms. +

    Automatically insert dots into initialisms.

    -

    +

    sample-postdot.tex

    -

    Another initialisms example. +

    Another initialisms example.

    -

    +

    sample-postlink.tex

    -

    Automatically inserting text after the

    Automatically inserting text after the link-text produced by commands like \gls (outside of hyperlink, if present). @@ -24517,255 +24711,255 @@ class="cmtt-10">\gls (outside of hyperlink, if present). -

    +

    sample-header.tex

    -

    Using entries in section/chapter headings. +

    Using entries in section/chapter headings.

    -

    +

    sample-autoindex.tex

    -

    Using the

    Using the dualindex and and indexname attributes to automatically add + id="dx1-64004"> attributes to automatically add glossary entries to the index (in addition to the glossary location list).

    -

    +

    sample-autoindex-hyp.tex

    -

    As previous but uses

    As previous but uses hyperref. + id="dx1-64006">.

    -

    +

    sample-nested.tex

    -

    Using

    Using \gls within the value of the within the value of the name key. + id="dx1-64008"> key.

    -

    +

    sample-entrycount.tex

    -

    Enable entry-use counting (only index if used more than

    Enable entry-use counting (only index if used more than n times, see §??sec:entrycount 7.1 Entry Counting (First Use Flag)).

    -

    +

    sample-unitentrycount.tex

    -

    Enable use of per-unit entry-use counting (

    Enable use of per-unit entry-use counting (§??sec:entrycount 7.1 Entry Counting (First Use Flag)).

    -

    +

    sample-onelink.tex

    -

    Using the per-unit entry counting (

    Using the per-unit entry counting (§??sec:entrycount 7.1 Entry Counting (First Use Flag)) to only have one hyperlink per entry per page.

    -

    +

    sample-linkcount.tex

    -

    Using link counting (

    Using link counting (§??sec:linkcount 7.2 Link Counting) to only have one hyperlink per entry.

    -

    +

    sample-pages.tex

    -

    Insert “page” or “pages” before the location list. +

    Insert “page” or “pages” before the location list.

    -

    +

    sample-altmodifier.tex

    -

    Set the default options for commands like

    Set the default options for commands like \gls and add an alternative modifier.

    -

    +

    sample-mixedsort.tex

    -

    Uses the optional argument of

    Uses the optional argument of \makeglossaries to allow a mixture of \printglossary and \printnoidxglossary.

    -

    +

    sample-external.tex

    -

    Uses the

    Uses the targeturl attribute to allow for entries that should link to an + id="dx1-64009"> attribute to allow for entries that should link to an external URL rather than to an internal glossary.

    -

    +

    sample-fmt.tex

    -

    Provides text-block commands associated with entries in order to use +

    Provides text-block commands associated with entries in order to use \glsxtrfmt.

    -

    +

    sample-alias.tex

    -

    Uses the

    Uses the alias key. (See key. (See §??sec:alias 10.5 Entry Aliases.)

    -

    +

    sample-alttree.tex

    -

    Uses the

    Uses the glossaries-extra-stylemods package with the package with the alttree style (see + id="dx1-64012"> style (see §??sec:stylemods The 2.11.3 The glossaries-extra-stylemods Package).

    -

    +

    sample-alttree-sym.tex

    -

    Another

    Another alttree example that measures the symbol widths. + id="dx1-64013"> example that measures the symbol widths.

    -

    +

    sample-alttree-marginpar.tex

    -

    Another

    Another alttree example that puts the example that puts the number list in the margin.

    -

    +

    sample-onthefly.tex

    -

    Using on-the-fly commands. Terms with accents must have the

    Using on-the-fly commands. Terms with accents must have the name key + id="dx1-64016"> key explicitly set.

    -

    +

    sample-onthefly-xetex.tex

    -

    Using on-the-fly commands with XƎLATEX. Terms with UTF-8 characters +

    Using on-the-fly commands with XƎLATEX. Terms with UTF-8 characters don’t need to have the name key explicitly set. Terms that contain + id="dx1-64017"> key explicitly set. Terms that contain commands must have the name key explicitly set with the commands + id="dx1-64018"> key explicitly set with the commands removed from the label.

    -

    +

    sample-onthefly-utf8.tex

    -

    Tries to emulate the previous sample file for use with LaTeX through the +

    Tries to emulate the previous sample file for use with LaTeX through the starred version of \GlsXtrEnableOnTheFly. This is a bit iffy and may + id="dx1-64019">. This is a bit iffy and may not always work. Terms that contain commands must have the name key + id="dx1-64020"> key explicitly set with the commands removed from the label.

    -

    +

    sample-accsupp.tex

    -

    Integrate

    Integrate glossaries-accsupp. + id="dx1-64021">.

    -

    +

    sample-prefix.tex

    -

    Integrate

    Integrate glossaries-prefix. + id="dx1-64022">.

    -

    +

    sample-suppl-main.tex

    -

    Uses

    Uses thevalue to reference a location in the supplementary file + id="dx1-64023"> to reference a location in the supplementary file sample-suppl.tex.

    -

    +

    sample-suppl-main-hyp.tex

    -

    A more complicated version to the above that uses the

    A more complicated version to the above that uses the hyperref package + id="dx1-64024"> package to reference a location in the supplementary file sample-suppl-hyp.tex.

    @@ -24773,33 +24967,33 @@ class="cmtt-10">sample-suppl-hyp.tex. -

    -

    +

    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 ( (§??sec:pkgopts 1.2 New or Modified Package Options) if you use the abbreviations package option to + id="dx1-65002"> 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-65003"> 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: @@ -24807,11 +25001,11 @@ class="cmss-10">glossaries).

     \renewcommand*{\abbreviationsname}{List of Abbreviations}
     
    -

    Or using

    Or using babel or or polyglossia captions hook: + id="dx1-65005"> captions hook: @@ -24821,10 +25015,10 @@ class="cmss-10">polyglossia -

    -

    Alternatively you can use the

    +

    Alternatively you can use the title key when you print the list of abbreviations. + id="dx1-65006"> key when you print the list of abbreviations. For example: @@ -24833,7 +25027,7 @@ For example:

     \printabbreviations[title={List of Abbreviations}]
     
    -

    or +

    or @@ -24841,10 +25035,10 @@ For example:

     \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-65008"> 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: @@ -24905,75 +25099,75 @@ class="cmtt-10">glossariesxtr-french.ldf.   {}% } -

    -

    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 §??sec:bib2glssty The 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 @@ -25020,15 +25214,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-65021"> 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. @@ -25069,7 +25263,7 @@ details.

    @@ -25078,90 +25272,90 @@ details.

    Top

    Glossary

    + id="x1-660001">Glossary
    -

    +

    bib2gls

    -

    A command line Java application that selects entries from a .bib file and +

    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 +

    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.

    -

    +

    first use

    -

    The first time a glossary entry is used (from the start of the document +

    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-66008">, \glspl, , \Glspl, , \GLSpl or or \glsdisp. + id="dx1-66012">.

    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 first use, which is governed by the first and + id="dx1-66017"> and firstplural keys of keys of \newglossaryentry. (May be overridden by . (May be overridden by \glsdisp.) + id="dx1-66020">.) @@ -25170,38 +25364,38 @@ class="cmtt-10">\glsdisplink-text

    The text produced by commands such as \gls. It may or may not have a + id="dx1-66022">. 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.

    @@ -25209,13 +25403,13 @@ class="cmtt-10">makeindex according to the document settings. 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 @@ -25237,576 +25431,576 @@ class="cmtt-10">makeglossaries-lite.exe. makeindex

    An indexing application.

    -

    +

    number list

    -

    A list of entry locations (also called a location list). The number list can +

    A list of entry locations (also called a location list). The number list can be suppressed using the nonumberlist package option. + id="dx1-66036"> package option.

    -

    +

    xindy

    -

    An flexible indexing application with multilingual support written in Perl.

    +

    An flexible indexing application with multilingual support written in Perl.

    Index

    + id="x1-6700014">Index

    A

    abbreviation styles (deprecated):
        footnote-em  1
    +href="glossaries-extra-manual.html#dx1-33173" >1
        footnote-sc  2
    +href="glossaries-extra-manual.html#dx1-33165" >2
        footnote-sm  3
    +href="glossaries-extra-manual.html#dx1-33169" >3
        long-desc-em  4
    +href="glossaries-extra-manual.html#dx1-32078" >4
        long-desc-sc  5
    +href="glossaries-extra-manual.html#dx1-32070" >5
        long-desc-sm  6
    +href="glossaries-extra-manual.html#dx1-32074" >6
        long-em  7
    +href="glossaries-extra-manual.html#dx1-32104" >7
        long-sc  8
    +href="glossaries-extra-manual.html#dx1-32096" >8
        long-sm  9
    +href="glossaries-extra-manual.html#dx1-32100" >9
        postfootnote-em  10
    +href="glossaries-extra-manual.html#dx1-33214" >10
        postfootnote-sc  11
    +href="glossaries-extra-manual.html#dx1-33206" >11
        postfootnote-sm  12
    +href="glossaries-extra-manual.html#dx1-33210" >12
    abbreviation styles:
        footnote  13
    +href="glossaries-extra-manual.html#dx1-33160" >13
        footnote-desc  14
    +href="glossaries-extra-manual.html#dx1-33181" >14
        long  15
    +href="glossaries-extra-manual.html#dx1-32090" >15
        long-desc  16
    +href="glossaries-extra-manual.html#dx1-32064" >16
        long-em-noshort-em  17, 18, 19
    +href="glossaries-extra-manual.html#dx1-31092" >17, 18, 19
        long-em-noshort-em-desc  20, 21
    +href="glossaries-extra-manual.html#dx1-32079" >20, 21
        long-em-noshort-em-desc-noreg  22
    +href="glossaries-extra-manual.html#dx1-33074" >22
        long-em-noshort-em-noreg  23, 24, 25
    +href="glossaries-extra-manual.html#dx1-31094" >23, 24, 25
        long-em-short-em  26, 27, 28, 29
    +href="glossaries-extra-manual.html#dx1-31060" >26, 27, 28, 29
        long-em-short-em-desc  30
    +href="glossaries-extra-manual.html#dx1-33071" >30
        long-hyphen-long-hyphen  31
    +href="glossaries-extra-manual.html#dx1-33266" >31
        long-hyphen-noshort-desc-noreg  32, 33
    +href="glossaries-extra-manual.html#dx1-33255" >32, 33
        long-hyphen-noshort-noreg  34, 35
    +href="glossaries-extra-manual.html#dx1-31095" >34, 35
        long-hyphen-postshort-hyphen  36, 37, 38, 39, 40, 41
    +href="glossaries-extra-manual.html#dx1-31090" >36, 37, 38, 39, 40, 41
        long-hyphen-postshort-hyphen-desc  42
    +href="glossaries-extra-manual.html#dx1-33268" >42
        long-hyphen-short-hyphen  43, 44, 45, 46, 47
    +href="glossaries-extra-manual.html#dx1-33246" >43, 44, 45, 46, 47
        long-hyphen-short-hyphen-desc  48, 49
    +href="glossaries-extra-manual.html#dx1-33256" >48, 49
        long-noshort  50, 51, 52, 53, 54, 55, 56, 57, 58
    +href="glossaries-extra-manual.html#dx1-29002" >51, 52, 53, 54, 55, 56, 57, 58
        long-noshort-desc  59, 60, 61, 62, 63, 64, 65, 66, 67, 68
    +href="glossaries-extra-manual.html#dx1-32057" >61, 62, 63, 64, 65, 66, 67, 68
        long-noshort-desc-noreg  69
    +href="glossaries-extra-manual.html#dx1-33051" >69
        long-noshort-em  70
    +href="glossaries-extra-manual.html#dx1-32101" >70
        long-noshort-em-desc  71
    +href="glossaries-extra-manual.html#dx1-32075" >71
        long-noshort-noreg  72
    +href="glossaries-extra-manual.html#dx1-33048" >72
        long-noshort-sc  73, 74
    +href="glossaries-extra-manual.html#dx1-31085" >73, 74
        long-noshort-sc-desc  75, 76
    +href="glossaries-extra-manual.html#dx1-32066" >75, 76
        long-noshort-sm  77
    +href="glossaries-extra-manual.html#dx1-32097" >77
        long-noshort-sm-desc  78
    +href="glossaries-extra-manual.html#dx1-32071" >78
        long-only-short-only  79, 80, 81
    +href="glossaries-extra-manual.html#dx1-31074" >79, 80, 81
        long-only-short-only-desc  82
    +href="glossaries-extra-manual.html#dx1-33024" >82
        long-postshort-user  83, 84
    +href="glossaries-extra-manual.html#dx1-33239" >83, 84
        long-postshort-user-desc  85
    +href="glossaries-extra-manual.html#dx1-33242" >85
        long-short  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101
    +href="glossaries-extra-manual.html#dx1-27028" >89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101
        long-short-desc  102, 103, 104, 105, 106, 107, 108, 109, 110
    +href="glossaries-extra-manual.html#dx1-33054" >104, 105, 106, 107, 108, 109, 110
        long-short-em  111, 112, 113, 114
    +href="glossaries-extra-manual.html#dx1-31055" >111, 112, 113, 114
        long-short-em-desc  115, 116
    +href="glossaries-extra-manual.html#dx1-33068" >115, 116
        long-short-sc  117, 118, 119, 120
    +href="glossaries-extra-manual.html#dx1-31039" >118, 119, 120
        long-short-sc-desc  121, 122
    +href="glossaries-extra-manual.html#dx1-33062" >122
        long-short-sm  123, 124, 125
    +href="glossaries-extra-manual.html#dx1-31049" >124, 125
        long-short-sm-desc  126, 127
    +href="glossaries-extra-manual.html#dx1-33065" >127
        long-short-user  128, 129, 130, 131, 132, 133, 134, 135, 136
    +href="glossaries-extra-manual.html#dx1-31088" >128, 129, 130, 131, 132, 133, 134, 135, 136
        long-short-user-desc  137
    +href="glossaries-extra-manual.html#dx1-33077" >137
        nolong-short  138, 139
    +href="glossaries-extra-manual.html#dx1-32010" >138, 139
        nolong-short-em  140
    +href="glossaries-extra-manual.html#dx1-32031" >140
        nolong-short-noreg  141
    +href="glossaries-extra-manual.html#dx1-33089" >141
        nolong-short-sc  142
    +href="glossaries-extra-manual.html#dx1-32017" >142
        nolong-short-sm  143
    +href="glossaries-extra-manual.html#dx1-32024" >143
        postfootnote  144, 145
    +href="glossaries-extra-manual.html#dx1-27006" >144, 145
        postfootnote-desc  146
    +href="glossaries-extra-manual.html#dx1-33221" >146
        short  147
    +href="glossaries-extra-manual.html#dx1-32008" >147
        short-desc  148
    +href="glossaries-extra-manual.html#dx1-32040" >148
        short-em  149
    +href="glossaries-extra-manual.html#dx1-32029" >149
        short-em-desc  150
    +href="glossaries-extra-manual.html#dx1-32055" >150
        short-em-footnote  151, 152
    +href="glossaries-extra-manual.html#dx1-31106" >151, 152
        short-em-footnote-desc  153, 154
    +href="glossaries-extra-manual.html#dx1-31105" >153, 154
        short-em-long  155, 156, 157
    +href="glossaries-extra-manual.html#dx1-31056" >155, 156, 157
        short-em-long-desc  158, 159
    +href="glossaries-extra-manual.html#dx1-33133" >158, 159
        short-em-long-em  160, 161
    +href="glossaries-extra-manual.html#dx1-31061" >160, 161
        short-em-long-em-desc  162
    +href="glossaries-extra-manual.html#dx1-33136" >162
        short-em-nolong  163, 164, 165
    +href="glossaries-extra-manual.html#dx1-32026" >163, 164, 165
        short-em-nolong-desc  166, 167
    +href="glossaries-extra-manual.html#dx1-32052" >166, 167
        short-em-postfootnote  168
    +href="glossaries-extra-manual.html#dx1-33211" >168
        short-em-postfootnote-desc  169
    +href="glossaries-extra-manual.html#dx1-33229" >169
        short-footnote  170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180
    +href="glossaries-extra-manual.html#dx1-27030" >171, 172, 173, 174, 175, 176, 177, 178, 179, 180
        short-footnote-desc  181, 182, 183, 184, 185, 186, 187
    +href="glossaries-extra-manual.html#dx1-33174" >182, 183, 184, 185, 186, 187
        short-hyphen-long-hyphen  188, 189
    +href="glossaries-extra-manual.html#dx1-33271" >188, 189
        short-hyphen-long-hyphen-desc  190
    +href="glossaries-extra-manual.html#dx1-33275" >190
        short-hyphen-postlong-hyphen  191, 192
    +href="glossaries-extra-manual.html#dx1-33278" >191, 192
        short-hyphen-postlong-hyphen-desc  193
    +href="glossaries-extra-manual.html#dx1-33283" >193
        short-long  194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204
    +href="glossaries-extra-manual.html#dx1-27023" >195, 196, 197, 198, 199, 200, 201, 202, 203, 204
        short-long-desc  205, 206, 207, 208, 209, 210, 211
    +href="glossaries-extra-manual.html#dx1-31103" >206, 207, 208, 209, 210, 211
        short-long-user  212, 213, 214, 215, 216, 217, 218
    +href="glossaries-extra-manual.html#dx1-33038" >212, 213, 214, 215, 216, 217, 218
        short-long-user-desc  219
    +href="glossaries-extra-manual.html#dx1-33139" >219
        short-nolong  220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234
    +href="glossaries-extra-manual.html#dx1-27021" >221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234
        short-nolong-desc  235, 236, 237, 238, 239
    +href="glossaries-extra-manual.html#dx1-32033" >235, 236, 237, 238, 239
        short-nolong-desc-noreg  240
    +href="glossaries-extra-manual.html#dx1-33118" >240
        short-nolong-noreg  241
    +href="glossaries-extra-manual.html#dx1-33086" >241
        short-postfootnote  242, 243, 244, 245, 246, 247, 248, 249
    +href="glossaries-extra-manual.html#dx1-33192" >244, 245, 246, 247, 248, 249
        short-postfootnote-desc  250, 251, 252, 253, 254
    +href="glossaries-extra-manual.html#dx1-33215" >250, 251, 252, 253, 254
        short-postlong-user  255, 256, 257
    +href="glossaries-extra-manual.html#dx1-33232" >255, 256, 257
        short-postlong-user-desc  258
    +href="glossaries-extra-manual.html#dx1-33235" >258
        short-sc  259
    +href="glossaries-extra-manual.html#dx1-32015" >259
        short-sc-desc  260
    +href="glossaries-extra-manual.html#dx1-32045" >260
        short-sc-footnote  261, 262, 263
    +href="glossaries-extra-manual.html#dx1-33162" >262, 263
        short-sc-footnote-desc  264, 265
    +href="glossaries-extra-manual.html#dx1-33183" >265
        short-sc-long  266, 267, 268, 269
    +href="glossaries-extra-manual.html#dx1-31040" >267, 268, 269
        short-sc-long-desc  270, 271
    +href="glossaries-extra-manual.html#dx1-33127" >271
        short-sc-nolong  272, 273, 274
    +href="glossaries-extra-manual.html#dx1-32012" >272, 273, 274
        short-sc-nolong-desc  275, 276
    +href="glossaries-extra-manual.html#dx1-32042" >275, 276
        short-sc-postfootnote  277, 278
    +href="glossaries-extra-manual.html#dx1-31099" >277, 278
        short-sc-postfootnote-desc  279
    +href="glossaries-extra-manual.html#dx1-33223" >279
        short-sm  280
    +href="glossaries-extra-manual.html#dx1-32022" >280
        short-sm-desc  281
    +href="glossaries-extra-manual.html#dx1-32050" >281
        short-sm-footnote  282
        short-sm-footnote-desc  283, 284
    +href="glossaries-extra-manual.html#dx1-33186" >284
        short-sm-long  285, 286, 287
    +href="glossaries-extra-manual.html#dx1-31050" >286, 287
        short-sm-long-desc  288, 289
    +href="glossaries-extra-manual.html#dx1-33130" >289
        short-sm-nolong  290, 291, 292
    +href="glossaries-extra-manual.html#dx1-32019" >290, 291, 292
        short-sm-nolong-desc  293, 294
    +href="glossaries-extra-manual.html#dx1-32047" >293, 294
        short-sm-postfootnote  295
    +href="glossaries-extra-manual.html#dx1-33207" >295
        short-sm-postfootnote-desc  296
    +href="glossaries-extra-manual.html#dx1-33226" >296
    \abbreviationsname  297
    \abbrvpluralsuffix  298
    acronym styles (glossaries):
        amsmath package  322
    \apptoglossarypreamble  323

    B @@ -25895,10 +26089,10 @@ href="glossaries-extra-manual.html#dx1-3014" >325, 326, 327, 328, 329, 330, 331, 332
    +href="glossaries-extra-manual.html#dx1-38004" >329, 330, 331, 332
    bib2gls  333, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459
    +href="glossaries-extra-manual.html#dx1-22075" >367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460

    C categories:
        abbreviation  460, 461, 462, 463, 464
    +href="glossaries-extra-manual.html#dx1-10004" >461, 462, 463, 464, 465
        acronym  465, 466, 467, 468, 469, 470
    +href="glossaries-extra-manual.html#dx1-3028" >466, 467, 468, 469, 470, 471
        general  471, 472, 473, 474, 475, 476, 477, 478
    -    glossnamefont  479
    +href="glossaries-extra-manual.html#dx1-9037" >472, 473, 474, 475, 476, 477, 478, 479
        index  480, 481
    +href="glossaries-extra-manual.html#dx1-38012" >481
        number  482
    +href="glossaries-extra-manual.html#dx1-38018" >482
        symbol  483, 484
    +href="glossaries-extra-manual.html#dx1-38015" >484
    category attributes:
        accessaposplural  485, 486, 487, 488
    +href="glossaries-extra-manual.html#dx1-38139" >485, 486, 487, 488
        accessinsertdots  489, 490
    +href="glossaries-extra-manual.html#dx1-38138" >489, 490
        accessnoshortplural  491, 492
    +href="glossaries-extra-manual.html#dx1-38140" >491, 492
        aposplural  493, 494, 495, 496, 497, 498, 499, 500
    +href="glossaries-extra-manual.html#dx1-31047" >494, 495, 496, 497, 498, 499, 500
        discardperiod  501, 502, 503, 504, 505
    +href="glossaries-extra-manual.html#dx1-38042" >502, 503, 504, 505
        dualindex  506, 507, 508, 509, 510, 511, 512
    +href="glossaries-extra-manual.html#dx1-38119" >506, 507, 508, 509, 510, 511, 512
        entrycount  513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523
    +href="glossaries-extra-manual.html#dx1-38085" >514, 515, 516, 517, 518, 519, 520, 521, 522, 523
        externallocation  524, 525, 526, 527
    +href="glossaries-extra-manual.html#dx1-38130" >526, 527
        firstshortaccess  528
    +href="glossaries-extra-manual.html#dx1-38170" >528
        glossdesc  529, 530, 531
    +href="glossaries-extra-manual.html#dx1-38094" >530, 531
        glossdescfont  532, 533, 534
    +href="glossaries-extra-manual.html#dx1-38102" >533, 534
        glossname  535, 536, 537
    +href="glossaries-extra-manual.html#dx1-38104" >537
    +    glossnamefont  538, 539, 540, 541, 542
    -    glossnamefont  538, 539, 540, 541
        glosssymbolfont  542, 543
    +href="glossaries-extra-manual.html#dx1-17008" >543, 544
        headuc  544, 545, 546, 547
    +href="glossaries-extra-manual.html#dx1-13059" >545, 546, 547, 548
        hyperoutside  548, 549
    +href="glossaries-extra-manual.html#dx1-7019" >549, 550
        indexname  550, 551, 552, 553, 554
    +href="glossaries-extra-manual.html#dx1-17027" >551, 552, 553, 554, 555
        indexonlyfirst  555, 556, 557
    +href="glossaries-extra-manual.html#dx1-7007" >556, 557, 558
        insertdots  558, 559, 560, 561
    +href="glossaries-extra-manual.html#dx1-27013" >559, 560, 561, 562
        linkcount  562, 563, 564
    +href="glossaries-extra-manual.html#dx1-38090" >563, 564, 565
        linkcountmaster  565, 566
    +href="glossaries-extra-manual.html#dx1-38092" >566, 567
        markshortwords  567, 568
    +href="glossaries-extra-manual.html#dx1-38061" >568, 569
        markwords  569, 570, 571, 572, 573, 574
    +href="glossaries-extra-manual.html#dx1-33247" >570, 571, 572, 573, 574, 575
        nameshortaccess  575
    +href="glossaries-extra-manual.html#dx1-38164" >576
        nohyper  576, 577, 578
    +href="glossaries-extra-manual.html#dx1-38034" >577, 578, 579
        nohyperfirst  579, 580, 581, 582, 583
    +href="glossaries-extra-manual.html#dx1-33148" >580, 581, 582, 583, 584
        noshortplural  584, 585, 586, 587, 588, 589
    +href="glossaries-extra-manual.html#dx1-12037" >585, 586, 587, 588, 589, 590
        pluraldiscardperiod  590, 591
    +href="glossaries-extra-manual.html#dx1-38048" >591, 592
        recordcount  592, 593, 594, 595
    +href="glossaries-extra-manual.html#dx1-51015" >593, 594, 595, 596
        regular  596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627
    +href="glossaries-extra-manual.html#dx1-9010" >597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628
        retainfirstuseperiod  628
    +href="glossaries-extra-manual.html#dx1-38050" >629
        tagging  629, 630, 631, 632
    +href="glossaries-extra-manual.html#dx1-28002" >630, 631, 632, 633
        targetcategory  633
    +href="glossaries-extra-manual.html#dx1-38128" >634
        targetname  634, 635
    +href="glossaries-extra-manual.html#dx1-38125" >635, 636
        targeturl  636, 637, 638, 639, 640
    +href="glossaries-extra-manual.html#dx1-15002" >637, 638, 639, 640, 641
        textformat  641, 642, 643, 644, 645
    +href="glossaries-extra-manual.html#dx1-7020" >642, 643, 644, 645, 646
        textshortaccess  646
    +href="glossaries-extra-manual.html#dx1-38167" >647
        unitcount  647
    +href="glossaries-extra-manual.html#dx1-40034" >648
        wrgloss  648, 649
    +href="glossaries-extra-manual.html#dx1-7015" >649, 650
    \cGLS  650
    +href="glossaries-extra-manual.html#dx1-40015" >651
    \cGLSformat  651
    +href="glossaries-extra-manual.html#dx1-40017" >652
    \cGLSpl  652
    +href="glossaries-extra-manual.html#dx1-40016" >653
    \cGLSplformat  653
    +href="glossaries-extra-manual.html#dx1-40018" >654
    convertgls2bib  654
    +href="glossaries-extra-manual.html#dx1-43003" >655
    \csGlsXtrLetField  655
    +href="glossaries-extra-manual.html#dx1-53030" >656
    \CustomAbbreviationFields  656
    +href="glossaries-extra-manual.html#dx1-34006" >657

    D datatool package  657
    +href="glossaries-extra-manual.html#dx1-53044" >658
    datatool-base package  658, 659, 660, 661
    +href="glossaries-extra-manual.html#dx1-9" >659, 660, 661, 662
    \dGLS  662
    +href="glossaries-extra-manual.html#dx1-50022" >663
    \dGls  663
    +href="glossaries-extra-manual.html#dx1-50020" >664
    \dgls  664
    +href="glossaries-extra-manual.html#dx1-50018" >665
    \dglsdisp  665
    +href="glossaries-extra-manual.html#dx1-50025" >666
    \dglslink  666
    +href="glossaries-extra-manual.html#dx1-50024" >667
    \dGLSpl  667
    +href="glossaries-extra-manual.html#dx1-50023" >668
    +\dGlspl  669
    -\dGlspl  668
    \dglspl  669
    +href="glossaries-extra-manual.html#dx1-50019" >670

    E \eglssetwidest  670
    +href="glossaries-extra-manual.html#dx1-22067" >671
    \eglsupdatewidest  671
    +href="glossaries-extra-manual.html#dx1-22071" >672
    \eGlsXtrSetField  672
    +href="glossaries-extra-manual.html#dx1-53027" >673
    entry location  673, 674, 675
    +href="glossaries-extra-manual.html#dx1-66004" >674, 675, 676
    entrycounter package  676
    +href="glossaries-extra-manual.html#dx1-58020" >677
    equation (counter)  677, 678, 679, 680, 681
    +href="glossaries-extra-manual.html#dx1-4130" >678, 679, 680, 681, 682
    etoolbox package  682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692
    +href="glossaries-extra-manual.html#dx1-5" >683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693

    F \false options
        groups  693
    +href="glossaries-extra-manual.html#dx1-15016" >694
    fancyhdr package  694
    +href="glossaries-extra-manual.html#dx1-24049" >695
    file types
        bib  695
    +href="glossaries-extra-manual.html#dx1-4109" >696
        glg-abr  696
    +href="glossaries-extra-manual.html#dx1-4216" >697
        glo-abr  697
    +href="glossaries-extra-manual.html#dx1-4218" >698
        gls-abr  698
    +href="glossaries-extra-manual.html#dx1-4217" >699
    first use  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, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753
    +href="glossaries-extra-manual.html#dx1-3017" >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, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754
    first use flag  754, 755, 756, 757, 758, 759, 760
    +href="glossaries-extra-manual.html#dx1-9052" >755, 756, 757, 758, 759, 760, 761
    first use text  761, 762
    +href="glossaries-extra-manual.html#dx1-66015" >762, 763
    fontenc package  763
    +href="glossaries-extra-manual.html#dx1-31024" >764
    \forallabbreviationlists  764
    +href="glossaries-extra-manual.html#dx1-27040" >765

    G \gglssetwidest  765
    +href="glossaries-extra-manual.html#dx1-22065" >766
    \gglsupdatewidest  766
    +href="glossaries-extra-manual.html#dx1-22070" >767
    \gGlsXtrSetField  767
    +href="glossaries-extra-manual.html#dx1-53026" >768
    glossaries package  768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787
    +href="glossaries-extra-manual.html#dx1-4201" >769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788
    glossaries-accsupp package  788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809
    +href="glossaries-extra-manual.html#dx1-4036" >789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810
    glossaries-extra package  810, 811, 812, 813, 814, 815, 816
    +href="glossaries-extra-manual.html#dx1-6020" >811, 812, 813, 814, 815, 816, 817
    glossaries-extra-bib2gls package  817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831
    +href="glossaries-extra-manual.html#dx1-4083" >818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832
    glossaries-extra-stylemods package  832, 833, 834, 835, 836, 837, 838, 839, 840, 841
    +href="glossaries-extra-manual.html#dx1-4026" >833, 834, 835, 836, 837, 838, 839, 840, 841, 842
    glossaries-prefix package  842, 843, 844, 845
    +href="glossaries-extra-manual.html#dx1-4034" >843, 844, 845, 846
    \glossariesextrasetup  846
    +class="cmti-10">847
    glossary styles:
        altlist  847, 848
    +href="glossaries-extra-manual.html#dx1-22006" >848, 849, 850
        alttree  849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863
    +href="glossaries-extra-manual.html#dx1-22037" >851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865
    +    bookindex  866, 867, 868, 869
    -    bookindex  864, 865, 866, 867
        index  868
    +href="glossaries-extra-manual.html#dx1-22042" >870
        inline  869, 870
    +href="glossaries-extra-manual.html#dx1-20001" >871, 872
        list  871, 872, 873, 874
    +href="glossaries-extra-manual.html#dx1-22001" >873, 874, 875, 876
        listdotted  875, 876
    +href="glossaries-extra-manual.html#dx1-22007" >877, 878
        long  877, 878, 879
    +href="glossaries-extra-manual.html#dx1-21003" >879, 880, 881
        long-desc-name  880
    +href="glossaries-extra-manual.html#dx1-25066" >882
        long-desc-sym-name  881
    +href="glossaries-extra-manual.html#dx1-25133" >883
        long-loc-desc-name  882
    +href="glossaries-extra-manual.html#dx1-25075" >884
        long-loc-desc-sym-name  883
    +href="glossaries-extra-manual.html#dx1-25141" >885
        long-loc-sym-desc-name  884
    +href="glossaries-extra-manual.html#dx1-25125" >886
        long-name-desc  885, 886, 887
    +href="glossaries-extra-manual.html#dx1-25044" >887, 888, 889
        long-name-desc-loc  888
    +href="glossaries-extra-manual.html#dx1-25057" >890
        long-name-desc-sym  889, 890
    +href="glossaries-extra-manual.html#dx1-25083" >891, 892
        long-name-desc-sym-loc  891, 892
    +href="glossaries-extra-manual.html#dx1-25091" >893, 894
        long-name-sym-desc  893
    +href="glossaries-extra-manual.html#dx1-25099" >895
        long-name-sym-desc-loc  894
    +href="glossaries-extra-manual.html#dx1-25108" >896
        long-sym-desc-name  895
    +href="glossaries-extra-manual.html#dx1-25117" >897
        long3col  896
    +href="glossaries-extra-manual.html#dx1-19004" >898
        longragged-booktabs  897, 898
    +href="glossaries-extra-manual.html#dx1-25045" >899, 900
        mcolindexgroup  899
    +href="glossaries-extra-manual.html#dx1-24003" >901
        super  900
    +href="glossaries-extra-manual.html#dx1-57002" >902
        topic  901, 902
    +href="glossaries-extra-manual.html#dx1-26006" >903, 904
        topicmcols  903
    +href="glossaries-extra-manual.html#dx1-26009" >905
        tree  904, 905, 906, 907, 908
    +href="glossaries-extra-manual.html#dx1-22036" >906, 907, 908, 909, 910
        treenoname  909, 910, 911
    +href="glossaries-extra-manual.html#dx1-22048" >911, 912, 913
    glossary-bookindex package  912, 913
    +href="glossaries-extra-manual.html#dx1-24001" >914, 915
    glossary-inline package  914
    +href="glossaries-extra-manual.html#dx1-20002" >916
    glossary-list package  915
    +href="glossaries-extra-manual.html#dx1-57003" >917
    glossary-long package  916, 917
    +href="glossaries-extra-manual.html#dx1-25018" >918, 919
    glossary-longextra package  918, 919
    +href="glossaries-extra-manual.html#dx1-25001" >920, 921
    glossary-topic package  920, 921
    +href="glossaries-extra-manual.html#dx1-26001" >922, 923
    glossary-tree package  922, 923, 924, 925, 926, 927, 928
    +href="glossaries-extra-manual.html#dx1-22022" >924, 925, 926, 927, 928, 929, 930
    \glossentrynameother  929
    +class="cmti-10">931
    \glossxtrsetpopts  930
    +class="cmti-10">932
    \glsabbrvdefaultfont  931, 932
    +href="glossaries-extra-manual.html#dx1-31033" >933, 934
    \glsabbrvemfont  933
    +href="glossaries-extra-manual.html#dx1-31057" >935
    \glsabbrvfont  934
    +href="glossaries-extra-manual.html#dx1-34047" >936
    \glsabbrvhyphenfont  935
    +href="glossaries-extra-manual.html#dx1-31069" >937
    \glsabbrvonlyfont  936
    +href="glossaries-extra-manual.html#dx1-31075" >938
    \glsabbrvscfont  937
    +href="glossaries-extra-manual.html#dx1-31041" >939
    \glsabbrvsmfont  938
    +href="glossaries-extra-manual.html#dx1-31051" >940
    \glsabbrvuserfont  939, 940
    +href="glossaries-extra-manual.html#dx1-31064" >941, 942
    \Glsaccessdesc  941
    +href="glossaries-extra-manual.html#dx1-63042" >943
    \glsaccessdesc  942
    +href="glossaries-extra-manual.html#dx1-63040" >944
    \Glsaccessdescplural  943
    +href="glossaries-extra-manual.html#dx1-63046" >945
    +\glsaccessdescplural  946
    -\glsaccessdescplural  944
    \Glsaccessfirst  945
    +href="glossaries-extra-manual.html#dx1-63026" >947
    \glsaccessfirst  946
    +href="glossaries-extra-manual.html#dx1-63024" >948
    \Glsaccessfirstplural  947
    +href="glossaries-extra-manual.html#dx1-63030" >949
    \glsaccessfirstplural  948
    +href="glossaries-extra-manual.html#dx1-63028" >950
    \Glsaccesslong  949
    +href="glossaries-extra-manual.html#dx1-63058" >951
    \glsaccesslong  950
    +href="glossaries-extra-manual.html#dx1-63056" >952
    \Glsaccesslongpl  951
    +href="glossaries-extra-manual.html#dx1-63062" >953
    \glsaccesslongpl  952
    +href="glossaries-extra-manual.html#dx1-63060" >954
    \Glsaccessname  953
    +href="glossaries-extra-manual.html#dx1-63013" >955
    \glsaccessname  954
    +href="glossaries-extra-manual.html#dx1-63008" >956
    \Glsaccessplural  955
    +href="glossaries-extra-manual.html#dx1-63022" >957
    \glsaccessplural  956
    +href="glossaries-extra-manual.html#dx1-63020" >958
    \Glsaccessshort  957
    +href="glossaries-extra-manual.html#dx1-63050" >959
    \glsaccessshort  958
    +href="glossaries-extra-manual.html#dx1-63048" >960
    \Glsaccessshortpl  959
    +href="glossaries-extra-manual.html#dx1-63054" >961
    \glsaccessshortpl  960
    +href="glossaries-extra-manual.html#dx1-63052" >962
    \Glsaccesssymbol  961
    +href="glossaries-extra-manual.html#dx1-63034" >963
    \glsaccesssymbol  962
    +href="glossaries-extra-manual.html#dx1-63032" >964
    \Glsaccesssymbolplural  963
    +href="glossaries-extra-manual.html#dx1-63038" >965
    \glsaccesssymbolplural  964
    +href="glossaries-extra-manual.html#dx1-63036" >966
    \Glsaccesstext  965
    +href="glossaries-extra-manual.html#dx1-63018" >967
    \glsaccesstext  966
    +href="glossaries-extra-manual.html#dx1-63016" >968
    \glsacspace  967
    +class="cmti-10">969
    \glsacspacemax  968
    +class="cmti-10">970
    \glsadd options
        format  969
    +href="glossaries-extra-manual.html#dx1-7035" >971
        theHvalue  970, 971
    +href="glossaries-extra-manual.html#dx1-7047" >972, 973
        thevalue  972, 973, 974, 975, 976
    +href="glossaries-extra-manual.html#dx1-7046" >974, 975, 976, 977, 978
    \glsaddeach  977
    +class="cmti-10">979
    \glsaddpostsetkeys  978
    +class="cmti-10">980
    \glsaddpresetkeys  979
    +class="cmti-10">981
    +\glsaltlistitem  982
    \glsalttreechildpredesc  980
    +href="glossaries-extra-manual.html#dx1-22041" >983
    \glsalttreepredesc  981
    +href="glossaries-extra-manual.html#dx1-22040" >984
    \glscapturedgroup  982
    +href="glossaries-extra-manual.html#dx1-49002" >985
    \glscategory  983
    +href="glossaries-extra-manual.html#dx1-38019" >986
    \glscategorylabel  984
    +href="glossaries-extra-manual.html#dx1-34039" >987
    \glscurrententrylabel  985
    +class="cmti-10">988
    \glscurrentfieldvalue  986
    +href="glossaries-extra-manual.html#dx1-53034" >989
    \glsdefaultshortaccess  987
    +href="glossaries-extra-manual.html#dx1-38135" >990
    \glsdefpostdesc  988
    +class="cmti-10">991
    \glsdefpostlink  989
    +class="cmti-10">992
    \glsdefpostname  990
    +class="cmti-10">993
    \glsentrycurrcount  991
    +href="glossaries-extra-manual.html#dx1-40035" >994
    \glsentrypdfsymbol  992
    +class="cmti-10">995
    \glsentryprevcount  993
    +href="glossaries-extra-manual.html#dx1-40036" >996
    \glsentryprevmaxcount  994
    +href="glossaries-extra-manual.html#dx1-40038" >997
    \glsentryprevtotalcount  995
    +href="glossaries-extra-manual.html#dx1-40037" >998
    \glsextrapostnamehook  996
    +class="cmti-10">999
    \glsFindWidestAnyName  997
    +href="glossaries-extra-manual.html#dx1-22083" >1000
    \glsFindWidestAnyNameLocation  998
    +href="glossaries-extra-manual.html#dx1-22095" >1001
    \glsFindWidestAnyNameSymbol  999
    +href="glossaries-extra-manual.html#dx1-22087" >1002
    \glsFindWidestAnyNameSymbolLocation  1000
    +href="glossaries-extra-manual.html#dx1-22092" >1003
    \glsFindWidestLevelTwo  1001
    +href="glossaries-extra-manual.html#dx1-22085" >1004
    \glsFindWidestTopLevelName  1002
    +href="glossaries-extra-manual.html#dx1-22078" >1005
    \glsFindWidestUsedAnyName  1003
    +href="glossaries-extra-manual.html#dx1-22081" >1006
    \glsFindWidestUsedAnyNameLocation  1004
    +href="glossaries-extra-manual.html#dx1-22093" >1007
    \glsFindWidestUsedAnyNameSymbol  1005
    +href="glossaries-extra-manual.html#dx1-22086" >1008
    \glsFindWidestUsedAnyNameSymbolLocation  1006
    +href="glossaries-extra-manual.html#dx1-22088" >1009
    \glsFindWidestUsedLevelTwo  1007
    +href="glossaries-extra-manual.html#dx1-22084" >1010
    \glsFindWidestUsedTopLevelName  1008
    +href="glossaries-extra-manual.html#dx1-22079" >1011
    \glsfirstabbrvdefaultfont  1009
    +href="glossaries-extra-manual.html#dx1-31034" >1012
    \glsfirstabbrvemfont  1010
    +href="glossaries-extra-manual.html#dx1-31058" >1013
    \glsfirstabbrvfont  1011
    +href="glossaries-extra-manual.html#dx1-34045" >1014
    \glsfirstabbrvhyphenfont  1012
    +href="glossaries-extra-manual.html#dx1-31070" >1015
    \glsfirstabbrvonlyfont  1013
    +href="glossaries-extra-manual.html#dx1-31076" >1016
    \glsfirstabbrvsmfont  1014
    +href="glossaries-extra-manual.html#dx1-31053" >1017
    \glsfirstabbrvuserfont  1015
    +href="glossaries-extra-manual.html#dx1-31065" >1018
    \glsfirstlongdefaultfont  1016
    +href="glossaries-extra-manual.html#dx1-31036" >1019
    \glsfirstlongemfont  1017
    +href="glossaries-extra-manual.html#dx1-31062" >1020
    \glsfirstlongfont  1018
    +href="glossaries-extra-manual.html#dx1-34049" >1021
    \glsfirstlongfootnotefont  1019
    +href="glossaries-extra-manual.html#dx1-33155" >1022
    \glsfirstlonghyphenfont  1020
    +href="glossaries-extra-manual.html#dx1-31072" >1023
    \glsfirstlongonlyfont  1021
    +href="glossaries-extra-manual.html#dx1-31078" >1024
    \glsfirstlonguserfont  1022
    +href="glossaries-extra-manual.html#dx1-31067" >1025
    \GLSfmtfirst  1023
    +href="glossaries-extra-manual.html#dx1-37044" >1026
    \Glsfmtfirst  1024
    +href="glossaries-extra-manual.html#dx1-37043" >1027
    \glsfmtfirst  1025
    +href="glossaries-extra-manual.html#dx1-37042" >1028
    \GLSfmtfirstpl  1026
    +href="glossaries-extra-manual.html#dx1-37047" >1029
    \Glsfmtfirstpl  1027
    +href="glossaries-extra-manual.html#dx1-37046" >1030
    \glsfmtfirstpl  1028
    +href="glossaries-extra-manual.html#dx1-37045" >1031
    \GLSfmtfull  1029
    +href="glossaries-extra-manual.html#dx1-37028" >1032
    \Glsfmtfull  1030
    +href="glossaries-extra-manual.html#dx1-37026" >1033
    \glsfmtfull  1031
    +href="glossaries-extra-manual.html#dx1-37024" >1034
    \GLSfmtfullpl  1032
    +href="glossaries-extra-manual.html#dx1-37029" >1035
    \Glsfmtfullpl  1033
    +href="glossaries-extra-manual.html#dx1-37027" >1036
    \glsfmtfullpl  1034
    +href="glossaries-extra-manual.html#dx1-37025" >1037
    \GLSfmtlong  1035
    +href="glossaries-extra-manual.html#dx1-37020" >1038
    \Glsfmtlong  1036
    +href="glossaries-extra-manual.html#dx1-37018" >1039
    \glsfmtlong  1037
    +href="glossaries-extra-manual.html#dx1-37016" >1040
    \GLSfmtlongpl  1038
    +href="glossaries-extra-manual.html#dx1-37021" >1041
    \Glsfmtlongpl  1039
    +href="glossaries-extra-manual.html#dx1-37019" >1042
    \glsfmtlongpl  1040
    +href="glossaries-extra-manual.html#dx1-37017" >1043
    \GLSfmtname  1041
    +href="glossaries-extra-manual.html#dx1-37040" >1044
    \Glsfmtname  1042
    +href="glossaries-extra-manual.html#dx1-37039" >1045
    \glsfmtname  1043
    +href="glossaries-extra-manual.html#dx1-37038" >1046
    \GLSfmtplural  1044
    +href="glossaries-extra-manual.html#dx1-37036" >1047
    \Glsfmtplural  1045
    +href="glossaries-extra-manual.html#dx1-37035" >1048
    \glsfmtplural  1046
    +href="glossaries-extra-manual.html#dx1-37034" >1049
    \GLSfmtshort  1047
    +href="glossaries-extra-manual.html#dx1-37014" >1050
    \Glsfmtshort  1048
    +href="glossaries-extra-manual.html#dx1-37012" >1051
    \glsfmtshort  1049
    +href="glossaries-extra-manual.html#dx1-37010" >1052
    \Glsfmtshortpl  1050, 1051
    +href="glossaries-extra-manual.html#dx1-37013" >1053, 1054
    \glsfmtshortpl  1052
    +href="glossaries-extra-manual.html#dx1-37011" >1055
    \GLSfmttext  1053
    +href="glossaries-extra-manual.html#dx1-37033" >1056
    \Glsfmttext  1054
    +href="glossaries-extra-manual.html#dx1-37032" >1057
    \glsfmttext  1055
    +href="glossaries-extra-manual.html#dx1-37031" >1058
    \glsforeachwithattribute  1056
    +href="glossaries-extra-manual.html#dx1-38196" >1059
    \glsgetattribute  1057
    +href="glossaries-extra-manual.html#dx1-38179" >1060
    \glsgetcategoryattribute  1058
    +href="glossaries-extra-manual.html#dx1-38178" >1061
    \glsgetwidestname  1059
    +href="glossaries-extra-manual.html#dx1-22073" >1062
    \glsgetwidestsubname  1060
    +href="glossaries-extra-manual.html#dx1-22074" >1063
    \glshasattribute  1061
    +href="glossaries-extra-manual.html#dx1-38182" >1064
    \glshascategoryattribute  1062
    +href="glossaries-extra-manual.html#dx1-38180" >1065
    \glshex  1063
    +href="glossaries-extra-manual.html#dx1-49001" >1066
    \glsifattribute  1064
    +href="glossaries-extra-manual.html#dx1-38187" >1067
    \glsifcategory  1065
    +href="glossaries-extra-manual.html#dx1-38020" >1068
    \glsifcategoryattribute  1066
    +href="glossaries-extra-manual.html#dx1-38183" >1069
    \glsifnotregular  1067
    +href="glossaries-extra-manual.html#dx1-38194" >1070
    \glsifnotregularcategory  1068
    +href="glossaries-extra-manual.html#dx1-38193" >1071
    \glsifregular  1069
    +href="glossaries-extra-manual.html#dx1-38190" >1072
    \glsifregularcategory  1070
    +href="glossaries-extra-manual.html#dx1-38189" >1073
    \glskeylisttok  1071
    +href="glossaries-extra-manual.html#dx1-34037" >1074
    \glslabeltok  1072
    +href="glossaries-extra-manual.html#dx1-34036" >1075
    \glslink options
        counter  1073, 1074
    +href="glossaries-extra-manual.html#dx1-4135" >1076, 1077
        format  1075, 1076, 1077, 1078
    +href="glossaries-extra-manual.html#dx1-7058" >1078, 1079, 1080, 1081
        hyper  1079, 1080, 1081
    +href="glossaries-extra-manual.html#dx1-13055" >1082, 1083, 1084
        hyper=false  1082
    +href="glossaries-extra-manual.html#dx1-37005" >1085
        hyperoutside  1083, 1084
    +href="glossaries-extra-manual.html#dx1-7018" >1086, 1087
        noindex  1085, 1086, 1087, 1088, 1089, 1090, 1091
    +href="glossaries-extra-manual.html#dx1-7003" >1088, 1089, 1090, 1091, 1092, 1093, 1094
        prefix  1092, 1093
    +href="glossaries-extra-manual.html#dx1-7025" >1095, 1096
        textformat  1094, 1095
    +href="glossaries-extra-manual.html#dx1-7022" >1097, 1098
        theHvalue  1096, 1097
    +href="glossaries-extra-manual.html#dx1-7028" >1099, 1100
        thevalue  1098, 1099
    +href="glossaries-extra-manual.html#dx1-7027" >1101, 1102
        wrgloss  1100, 1101, 1102, 1103
    +href="glossaries-extra-manual.html#dx1-7011" >1103, 1104, 1105, 1106
    \glslinkcheckfirsthyperhook  1104
    +href="glossaries-extra-manual.html#dx1-40042" >1107
    \glslinkpresetkeys  1105
    +class="cmti-10">1108
    \glslistchildpostlocation  1106
    +href="glossaries-extra-manual.html#dx1-22017" >1109
    \glslistchildprelocation  1107
    +href="glossaries-extra-manual.html#dx1-22003" >1110
    \glslistdesc  1108
    +href="glossaries-extra-manual.html#dx1-22004" >1111
    +\glslistgroupafterheader  1112
    +\glslistgroupheaderitem  1113
    \glslistgroupskip  1109
    +href="glossaries-extra-manual.html#dx1-22020" >1114
    +\glslistitem  1115
    \glslistprelocation  1110
    +href="glossaries-extra-manual.html#dx1-22002" >1116
    \glslocalreseteach  1111
    +class="cmti-10">1117
    \glslocalunseteach  1112
    +class="cmti-10">1118
    \glslongdefaultfont  1113
    +href="glossaries-extra-manual.html#dx1-31035" >1119
    \glslongemfont  1114
    +href="glossaries-extra-manual.html#dx1-31063" >1120
    \glslongextraDescAlign  1115
    +href="glossaries-extra-manual.html#dx1-25020" >1121
    \glslongextraDescFmt  1116
    +href="glossaries-extra-manual.html#dx1-25036" >1122
    \glslongextraDescNameHeader  1117
    +href="glossaries-extra-manual.html#dx1-25070" >1123
    \glslongextraDescNameTabularFooter  1118
    +href="glossaries-extra-manual.html#dx1-25074" >1124
    \glslongextraDescNameTabularHeader  1119
    +href="glossaries-extra-manual.html#dx1-25073" >1125
    \glslongextraDescSymNameHeader  1120
    +href="glossaries-extra-manual.html#dx1-25136" >1126
    \glslongextraDescSymNameTabularFooter  1121
    +href="glossaries-extra-manual.html#dx1-25140" >1127
    \glslongextraDescSymNameTabularHeader  1122
    +href="glossaries-extra-manual.html#dx1-25139" >1128
    \glslongextraGroupHeading  1123
    +href="glossaries-extra-manual.html#dx1-25043" >1129
    \glslongextraHeaderFmt  1124
    +href="glossaries-extra-manual.html#dx1-25010" >1130
    \glslongextraLocationAlign  1125
    +href="glossaries-extra-manual.html#dx1-25016" >1131
    \glslongextraLocationDescNameHeader  1126
    +href="glossaries-extra-manual.html#dx1-25078" >1132
    \glslongextraLocationDescNameTabularFooter  1127
    +href="glossaries-extra-manual.html#dx1-25082" >1133
    \glslongextraLocationDescNameTabularHeader  1128
    +href="glossaries-extra-manual.html#dx1-25081" >1134
    \glslongextraLocationDescSymNameHeader  1129
    +href="glossaries-extra-manual.html#dx1-25144" >1135
    \glslongextraLocationDescSymNameTabularFooter  1130
    +href="glossaries-extra-manual.html#dx1-25148" >1136
    \glslongextraLocationDescSymNameTabularHeader  1131
    +href="glossaries-extra-manual.html#dx1-25147" >1137
    \glslongextraLocationFmt  1132, 1133
    +href="glossaries-extra-manual.html#dx1-25038" >1138, 1139
    \glslongextraLocationSymDescNameHeader  1134
    +href="glossaries-extra-manual.html#dx1-25128" >1140
    \glslongextraLocationSymDescNameTabularFooter  1135
    +href="glossaries-extra-manual.html#dx1-25132" >1141
    \glslongextraLocationSymDescNameTabularHeader  1136
    +href="glossaries-extra-manual.html#dx1-25131" >1142
    \glslongextraLocSetDescWidth  1137
    +href="glossaries-extra-manual.html#dx1-25033" >1143
    \glslongextraNameAlign  1138
    +href="glossaries-extra-manual.html#dx1-25012" >1144
    \glslongextraNameDescHeader  1139
    +href="glossaries-extra-manual.html#dx1-25047" >1145
    \glslongextraNameDescLocationHeader  1140
    +href="glossaries-extra-manual.html#dx1-25061" >1146
    \glslongextraNameDescLocationTabularFooter  1141
    +href="glossaries-extra-manual.html#dx1-25065" >1147
    \glslongextraNameDescLocationTabularHeader  1142
    +href="glossaries-extra-manual.html#dx1-25064" >1148
    \glslongextraNameDescSymHeader  1143
    +href="glossaries-extra-manual.html#dx1-25086" >1149
    \glslongextraNameDescSymLocationHeader  1144
    +href="glossaries-extra-manual.html#dx1-25094" >1150
    \glslongextraNameDescSymLocationTabularFooter  1145
    +href="glossaries-extra-manual.html#dx1-25098" >1151
    \glslongextraNameDescSymLocationTabularHeader  1146
    +href="glossaries-extra-manual.html#dx1-25097" >1152
    \glslongextraNameDescSymTabularFooter  1147
    +href="glossaries-extra-manual.html#dx1-25090" >1153
    \glslongextraNameDescSymTabularHeader  1148
    +href="glossaries-extra-manual.html#dx1-25089" >1154
    \glslongextraNameDescTabularFooter  1149
    +href="glossaries-extra-manual.html#dx1-25050" >1155
    + + + \glslongextraNameDescTabularHeader  1150
    +href="glossaries-extra-manual.html#dx1-25049" >1156
    \glslongextraNameFmt  1151
    +href="glossaries-extra-manual.html#dx1-25035" >1157
    \glslongextraNameSymDescHeader  1152
    - - - +href="glossaries-extra-manual.html#dx1-25103" >1158
    \glslongextraNameSymDescLocationHeader  1153
    +href="glossaries-extra-manual.html#dx1-25112" >1159
    \glslongextraNameSymDescLocationTabularFooter  1154
    +href="glossaries-extra-manual.html#dx1-25116" >1160
    \glslongextraNameSymDescLocationTabularHeader  1155
    +href="glossaries-extra-manual.html#dx1-25115" >1161
    \glslongextraNameSymDescTabularFooter  1156
    +href="glossaries-extra-manual.html#dx1-25107" >1162
    \glslongextraNameSymDescTabularHeader  1157
    +href="glossaries-extra-manual.html#dx1-25106" >1163
    \glslongextraSetDescWidth  1158
    +href="glossaries-extra-manual.html#dx1-25023" >1164
    \glslongextraSetWidest  1159
    +href="glossaries-extra-manual.html#dx1-25024" >1165
    \glslongextraSubDescFmt  1160
    +href="glossaries-extra-manual.html#dx1-25040" >1166
    \glslongextraSubNameFmt  1161
    +href="glossaries-extra-manual.html#dx1-25039" >1167
    \glslongextraSubSymbolFmt  1162
    +href="glossaries-extra-manual.html#dx1-25041" >1168
    \glslongextraSymbolAlign  1163
    +href="glossaries-extra-manual.html#dx1-25014" >1169
    \glslongextraSymbolFmt  1164
    +href="glossaries-extra-manual.html#dx1-25037" >1170
    \glslongextraSymDescNameHeader  1165
    +href="glossaries-extra-manual.html#dx1-25120" >1171
    \glslongextraSymDescNameTabularFooter  1166
    +href="glossaries-extra-manual.html#dx1-25124" >1172
    \glslongextraSymDescNameTabularHeader  1167
    +href="glossaries-extra-manual.html#dx1-25123" >1173
    \glslongextraSymLocSetDescWidth  1168
    +href="glossaries-extra-manual.html#dx1-25034" >1174
    \glslongextraSymSetDescWidth  1169
    +href="glossaries-extra-manual.html#dx1-25032" >1175
    \glslongextraTabularVAlign  1170
    +href="glossaries-extra-manual.html#dx1-25009" >1176
    \glslongextraUpdateWidest  1171
    +href="glossaries-extra-manual.html#dx1-25025" >1177
    \glslongextraUpdateWidestChild  1172
    +href="glossaries-extra-manual.html#dx1-25031" >1178
    \GlsLongExtraUseTabulartrue  1173
    +href="glossaries-extra-manual.html#dx1-25008" >1179
    \glslongfont  1174
    +href="glossaries-extra-manual.html#dx1-34050" >1180
    \glslongfootnotefont  1175
    +href="glossaries-extra-manual.html#dx1-33157" >1181
    \glslonghyphenfont  1176
    +href="glossaries-extra-manual.html#dx1-31071" >1182
    \glslongonlyfont  1177
    +href="glossaries-extra-manual.html#dx1-31077" >1183
    \glslongpltok  1178
    +href="glossaries-extra-manual.html#dx1-34029" >1184
    \glslongtok  1179
    +href="glossaries-extra-manual.html#dx1-34028" >1185
    \glslonguserfont  1180
    +href="glossaries-extra-manual.html#dx1-31066" >1186
    \glsnoidxdisplayloc  1181
    +class="cmti-10">1187
    \glspdffmtfull  1182
    +href="glossaries-extra-manual.html#dx1-37022" >1188
    \glspdffmtfullpl  1183
    +href="glossaries-extra-manual.html#dx1-37023" >1189
    \glsps  1184
    +class="cmti-10">1190
    \glspt  1185
    +class="cmti-10">1191
    \glsrenewcommand  1186
    +href="glossaries-extra-manual.html#dx1-46027" >1192
    +\glsseefirstitem  1193
    \glsseeitemformat  1187
    +class="cmti-10">1194
    +\glsseelastoxfordsep  1195
    \glssetattribute  1188
    +href="glossaries-extra-manual.html#dx1-38176" >1196
    \glssetcategoryattribute  1189
    +href="glossaries-extra-manual.html#dx1-38173" >1197
    \glssetregularcategory  1190
    +href="glossaries-extra-manual.html#dx1-38175" >1198
    \glsshortpltok  1191
    +href="glossaries-extra-manual.html#dx1-34025" >1199
    \glsshorttok  1192
    +href="glossaries-extra-manual.html#dx1-34024" >1200
    \glstopicAssignSubIndent  1193
    +href="glossaries-extra-manual.html#dx1-26032" >1201
    + + + \glstopicAssignWidest  1194
    +href="glossaries-extra-manual.html#dx1-26033" >1202
    \glstopicCols  1195
    +href="glossaries-extra-manual.html#dx1-26014" >1203
    \glstopicColsEnv  1196
    +href="glossaries-extra-manual.html#dx1-26013" >1204
    \glstopicDesc  1197
    +href="glossaries-extra-manual.html#dx1-26029" >1205
    \glstopicGroupHeading  1198
    - - - +href="glossaries-extra-manual.html#dx1-26021" >1206
    \glstopicInit  1199
    +href="glossaries-extra-manual.html#dx1-26020" >1207
    \glstopicItem  1200
    +href="glossaries-extra-manual.html#dx1-26023" >1208
    \glstopicLoc  1201
    +href="glossaries-extra-manual.html#dx1-26031" >1209
    \glstopicMarker  1202
    +href="glossaries-extra-manual.html#dx1-26025" >1210
    \glstopicMidSkip  1203
    +href="glossaries-extra-manual.html#dx1-26028" >1211
    \glstopicParIndent  1204
    +href="glossaries-extra-manual.html#dx1-26015" >1212
    \glstopicPostSkip  1205
    +href="glossaries-extra-manual.html#dx1-26030" >1213
    \glstopicPreSkip  1206
    +href="glossaries-extra-manual.html#dx1-26024" >1214
    \glstopicSubIndent  1207
    +href="glossaries-extra-manual.html#dx1-26016" >1215
    \glstopicSubItem  1208
    +href="glossaries-extra-manual.html#dx1-26034" >1216
    \glstopicSubItemBox  1209
    +href="glossaries-extra-manual.html#dx1-26037" >1217
    \glstopicSubItemParIndent  1210
    +href="glossaries-extra-manual.html#dx1-26017" >1218
    \glstopicSubItemSep  1211
    +href="glossaries-extra-manual.html#dx1-26036" >1219
    \glstopicSubLoc  1212
    +href="glossaries-extra-manual.html#dx1-26039" >1220
    \glstopicSubNameFont  1213
    +href="glossaries-extra-manual.html#dx1-26035" >1221
    \glstopicSubPreLocSep  1214
    +href="glossaries-extra-manual.html#dx1-26038" >1222
    \glstopicTitle  1215
    +href="glossaries-extra-manual.html#dx1-26026" >1223
    \glstopicTitleFont  1216
    +href="glossaries-extra-manual.html#dx1-26027" >1224
    \glstreechilddesc  1217
    +href="glossaries-extra-manual.html#dx1-22057" >1225
    \glstreeChildDescLoc  1218
    +href="glossaries-extra-manual.html#dx1-22060" >1226
    \glstreechildpredesc  1219
    +href="glossaries-extra-manual.html#dx1-22035" >1227
    \glstreechildprelocation  1220
    +href="glossaries-extra-manual.html#dx1-22046" >1228
    \glstreechildsymbol  1221
    +href="glossaries-extra-manual.html#dx1-22058" >1229
    \glstreedefaultnamefmt  1222
    +href="glossaries-extra-manual.html#dx1-22027" >1230
    \glstreedesc  1223
    +href="glossaries-extra-manual.html#dx1-22055" >1231
    \glstreeDescLoc  1224
    +href="glossaries-extra-manual.html#dx1-22059" >1232
    \glstreegroupskip  1225
    +href="glossaries-extra-manual.html#dx1-22028" >1233
    \glstreeheadergroupskip  1226
    +href="glossaries-extra-manual.html#dx1-22031" >1234
    \glstreeNoDescSymbolPreLocation  1227
    +href="glossaries-extra-manual.html#dx1-22061" >1235
    \glstreenonamechilddesc  1228
    +href="glossaries-extra-manual.html#dx1-22051" >1236
    \glstreenonamedesc  1229
    +href="glossaries-extra-manual.html#dx1-22047" >1237
    \glstreenonamesymbol  1230
    +href="glossaries-extra-manual.html#dx1-22049" >1238
    \glstreepredesc  1231
    +href="glossaries-extra-manual.html#dx1-22034" >1239
    \glstreePreHeader  1232
    +href="glossaries-extra-manual.html#dx1-22032" >1240
    \glstreeprelocation  1233
    +href="glossaries-extra-manual.html#dx1-22045" >1241
    \glstreesymbol  1234
    +href="glossaries-extra-manual.html#dx1-22056" >1242
    +\glsunsetcategoryattribute  1243
    \glsupdatewidest  1235
    +href="glossaries-extra-manual.html#dx1-22069" >1244
    \glsuseabbrvfont  1236
    +href="glossaries-extra-manual.html#dx1-27036" >1245
    \glsuselongfont  1237
    +href="glossaries-extra-manual.html#dx1-27037" >1246
    \glsuserdescription  1238
    +href="glossaries-extra-manual.html#dx1-33041" >1247
    + + + \Glsxtr  1239
    +href="glossaries-extra-manual.html#dx1-60014" >1248
    \glsxtr  1240
    +href="glossaries-extra-manual.html#dx1-60009" >1249
    \glsxtrabbreviationfont  1241
    +class="cmti-10">1250
    \glsxtrabbrvfootnote  1242
    +href="glossaries-extra-manual.html#dx1-33158" >1251
    \glsxtrabbrvpluralsuffix  1243, 1244
    +class="cmti-10">1252, 1253
    \glsxtractivatenopost  1245
    - - - +href="glossaries-extra-manual.html#dx1-58014" >1254
    \glsxtraddallcrossrefs  1246
    +class="cmti-10">1255
    \glsxtraddlabelprefix  1247
    +href="glossaries-extra-manual.html#dx1-50014" >1256
    \glsxtralias  1248
    +href="glossaries-extra-manual.html#dx1-59019" >1257
    \glsxtrAltTreeIndent  1249
    +href="glossaries-extra-manual.html#dx1-22101" >1258
    \glsxtralttreeInit  1250
    +href="glossaries-extra-manual.html#dx1-22100" >1259
    \glsxtralttreeSubSymbolDescLocation  1251
    +href="glossaries-extra-manual.html#dx1-22098" >1260
    \glsxtralttreeSymbolDescLocation  1252
    +href="glossaries-extra-manual.html#dx1-22097" >1261
    +\glsxtrapptocsvfield  1262
    \GlsXtrAutoAddOnFormat  1253
    +class="cmti-10">1263
    \glsxtrautoindex  1254
    +href="glossaries-extra-manual.html#dx1-42024" >1264
    \glsxtrautoindexassignsort  1255
    +href="glossaries-extra-manual.html#dx1-42020" >1265
    \glsxtrautoindexentry  1256
    +href="glossaries-extra-manual.html#dx1-42019" >1266
    \glsxtrautoindexesc  1257
    +href="glossaries-extra-manual.html#dx1-42022" >1267
    \glsxtrBasicDigitrules  1258
    +href="glossaries-extra-manual.html#dx1-49057" >1268
    \GlsXtrBibTeXEntryAliases  1259
    +href="glossaries-extra-manual.html#dx1-49005" >1269
    \glsxtrbookindexatendgroup  1260
    +href="glossaries-extra-manual.html#dx1-24034" >1270
    \glsxtrbookindexbetween  1261
    +href="glossaries-extra-manual.html#dx1-24029" >1271
    \glsxtrbookindexbookmark  1262
    +href="glossaries-extra-manual.html#dx1-24039" >1272
    \glsxtrbookindexcols  1263
    +href="glossaries-extra-manual.html#dx1-24010" >1273
    \glsxtrbookindexcolspread  1264
    +href="glossaries-extra-manual.html#dx1-24013" >1274
    \glsxtrbookindexfirstmark  1265
    +href="glossaries-extra-manual.html#dx1-24045" >1275
    \glsxtrbookindexfirstmarkfmt  1266
    +href="glossaries-extra-manual.html#dx1-24047" >1276
    \glsxtrbookindexformatheader  1267
    +href="glossaries-extra-manual.html#dx1-24041" >1277
    \glsxtrbookindexlastmark  1268
    +href="glossaries-extra-manual.html#dx1-24046" >1278
    \glsxtrbookindexlastmarkfmt  1269
    +href="glossaries-extra-manual.html#dx1-24048" >1279
    \glsxtrbookindexlocation  1270
    +href="glossaries-extra-manual.html#dx1-24025" >1280
    \glsxtrbookindexmarkentry  1271
    +href="glossaries-extra-manual.html#dx1-24044" >1281
    \glsxtrbookindexmulticolsenv  1272
    +href="glossaries-extra-manual.html#dx1-24018" >1282
    \glsxtrbookindexname  1273
    +href="glossaries-extra-manual.html#dx1-24019" >1283
    \glsxtrbookindexparentchildsep  1274
    +href="glossaries-extra-manual.html#dx1-24027" >1284
    \glsxtrbookindexparentsubchildsep  1275
    +href="glossaries-extra-manual.html#dx1-24028" >1285
    \glsxtrbookindexprelocation  1276
    +href="glossaries-extra-manual.html#dx1-24021" >1286
    \glsxtrbookindexsubatendgroup  1277
    +href="glossaries-extra-manual.html#dx1-24033" >1287
    \glsxtrbookindexsubbetween  1278
    +href="glossaries-extra-manual.html#dx1-24030" >1288
    \glsxtrbookindexsublocation  1279
    +href="glossaries-extra-manual.html#dx1-24026" >1289
    \glsxtrbookindexsubname  1280
    +href="glossaries-extra-manual.html#dx1-24020" >1290
    \glsxtrbookindexsubprelocation  1281
    +href="glossaries-extra-manual.html#dx1-24024" >1291
    \glsxtrbookindexsubsubatendgroup  1282
    +href="glossaries-extra-manual.html#dx1-24032" >1292
    \glsxtrbookindexsubsubbetween  1283
    +href="glossaries-extra-manual.html#dx1-24031" >1293
    \glsxtrchecknohyperfirst  1284
    +href="glossaries-extra-manual.html#dx1-38033" >1294
    + + + \glsxtrclearlabelprefixes  1285
    +href="glossaries-extra-manual.html#dx1-50016" >1295
    \glsxtrcombiningdiacriticIIIrules  1286
    +href="glossaries-extra-manual.html#dx1-49049" >1296
    \glsxtrcombiningdiacriticIIrules  1287
    +href="glossaries-extra-manual.html#dx1-49048" >1297
    \glsxtrcombiningdiacriticIrules  1288
    +href="glossaries-extra-manual.html#dx1-49047" >1298
    \glsxtrcombiningdiacriticIVrules  1289
    +href="glossaries-extra-manual.html#dx1-49050" >1299
    \glsxtrcombiningdiacriticrules  1290
    +href="glossaries-extra-manual.html#dx1-49046" >1300
    \glsxtrcontrolrules  1291
    - - - +href="glossaries-extra-manual.html#dx1-49042" >1301
    \glsxtrcopytoglossary  1292
    +href="glossaries-extra-manual.html#dx1-52007" >1302
    \glsxtrcurrencyrules  1293
    +href="glossaries-extra-manual.html#dx1-49054" >1303
    \GlsXtrDefaultResourceOptions  1294
    +href="glossaries-extra-manual.html#dx1-50004" >1304
    \glsxtrdeffield  1295
    +href="glossaries-extra-manual.html#dx1-53020" >1305
    \glsxtrdetoklocation  1296
    +href="glossaries-extra-manual.html#dx1-51004" >1306
    \glsxtrdigitrules  1297
    +href="glossaries-extra-manual.html#dx1-49056" >1307
    \GlsXtrDiscardUnsetBuffering  1298
    +class="cmti-10">1308
    \glsxtrdisplayendloc  1299
    +class="cmti-10">1309
    \glsxtrdisplayendlochook  1300
    +class="cmti-10">1310
    \glsxtrdisplaylocnameref  1301
    +href="glossaries-extra-manual.html#dx1-48018" >1311
    \glsxtrdisplaysingleloc  1302
    +class="cmti-10">1312
    \glsxtrdisplaystartloc  1303
    +class="cmti-10">1313
    \glsxtrdisplaysupploc  1304
    +href="glossaries-extra-manual.html#dx1-47001" >1314
    \glsxtrdoautoindexname  1305
    +href="glossaries-extra-manual.html#dx1-42016" >1315
    \glsxtrdowrglossaryhook  1306
    +class="cmti-10">1316
    \glsxtredeffield  1307
    +href="glossaries-extra-manual.html#dx1-53023" >1317
    \glsxtremsuffix  1308
    +href="glossaries-extra-manual.html#dx1-31059" >1318
    \GlsXtrEnableEntryCounting  1309
    +href="glossaries-extra-manual.html#dx1-40027" >1319
    \GlsXtrEnableEntryUnitCounting  1310
    +href="glossaries-extra-manual.html#dx1-40030" >1320
    \GlsXtrEnableIndexFormatOverride  1311
    +href="glossaries-extra-manual.html#dx1-42033" >1321
    \GlsXtrEnableInitialTagging  1312
    +href="glossaries-extra-manual.html#dx1-28001" >1322
    \GlsXtrEnableLinkCounting  1313
    +href="glossaries-extra-manual.html#dx1-41002" >1323
    \GlsXtrEnableOnTheFly  1314
    +href="glossaries-extra-manual.html#dx1-60007" >1324
    \GlsXtrEnablePreLocationTag  1315
    +class="cmti-10">1325
    \glsxtrenablerecordcount  1316
    +href="glossaries-extra-manual.html#dx1-51032" >1326
    \glsxtrendfor  1317
    +href="glossaries-extra-manual.html#dx1-53079" >1327
    \glsxtrentryfmt  1318
    +href="glossaries-extra-manual.html#dx1-53008" >1328
    \GlsXtrExpandedFmt  1319
    +class="cmti-10">1329
    \glsxtrfielddolistloop  1320
    +href="glossaries-extra-manual.html#dx1-53061" >1330
    \glsxtrfieldforlistloop  1321
    +href="glossaries-extra-manual.html#dx1-53062" >1331
    \glsxtrfieldformatcsvlist  1322
    +href="glossaries-extra-manual.html#dx1-53080" >1332
    \glsxtrfieldformatlist  1323
    +href="glossaries-extra-manual.html#dx1-53065" >1333
    \glsxtrfieldifinlist  1324
    +href="glossaries-extra-manual.html#dx1-53071" >1334
    \glsxtrfieldlistadd  1325
    +href="glossaries-extra-manual.html#dx1-53057" >1335
    \glsxtrfieldlisteadd  1326
    +href="glossaries-extra-manual.html#dx1-53059" >1336
    \glsxtrfieldlistgadd  1327
    +href="glossaries-extra-manual.html#dx1-53058" >1337
    \glsxtrfieldlistxadd  1328
    +href="glossaries-extra-manual.html#dx1-53060" >1338
    \glsxtrfieldtitlecasecs  1329
    +href="glossaries-extra-manual.html#dx1-38100" >1339
    \glsxtrfieldxifinlist  1330
    +href="glossaries-extra-manual.html#dx1-53072" >1340
    + + + \glsxtrfmt  1331
    +href="glossaries-extra-manual.html#dx1-53002" >1341
    \glsxtrfmt*  1332
    +href="glossaries-extra-manual.html#dx1-53004" >1342
    \GlsXtrFmtDefaultOptions  1333
    +href="glossaries-extra-manual.html#dx1-53003" >1343
    \glsxtrfmtdisplay  1334
    +href="glossaries-extra-manual.html#dx1-53005" >1344
    \glsxtrfmtexternalnameref  1335
    +href="glossaries-extra-manual.html#dx1-48023" >1345
    \GlsXtrFmtField  1336
    +href="glossaries-extra-manual.html#dx1-53001" >1346
    \glsxtrfmtinternalnameref  1337
    - - - +href="glossaries-extra-manual.html#dx1-48022" >1347
    \glsxtrfootnotedescname  1338
    +href="glossaries-extra-manual.html#dx1-33178" >1348
    \glsxtrfootnotedescsort  1339
    +href="glossaries-extra-manual.html#dx1-33180" >1349
    \glsxtrfootnotename  1340
    +href="glossaries-extra-manual.html#dx1-33154" >1350
    \glsxtrforcsvfield  1341
    +href="glossaries-extra-manual.html#dx1-53074" >1351
    \GlsXtrForeignText  1342
    +href="glossaries-extra-manual.html#dx1-53082" >1352
    \GlsXtrForeignTextField  1343
    +href="glossaries-extra-manual.html#dx1-53081" >1353
    \GlsXtrFormatLocationList  1344
    +class="cmti-10">1354
    \GlsXtrForUnsetBufferedList  1345
    +class="cmti-10">1355
    \glsxtrfractionrules  1346
    +href="glossaries-extra-manual.html#dx1-49060" >1356
    \GLSxtrfull  1347
    +href="glossaries-extra-manual.html#dx1-29025" >1357
    \Glsxtrfull  1348
    +href="glossaries-extra-manual.html#dx1-29022" >1358
    \glsxtrfull  1349
    +href="glossaries-extra-manual.html#dx1-29014" >1359
    \Glsxtrfullformat  1350
    +href="glossaries-extra-manual.html#dx1-34058" >1360
    \glsxtrfullformat  1351
    +href="glossaries-extra-manual.html#dx1-34054" >1361
    \GLSxtrfullpl  1352
    +href="glossaries-extra-manual.html#dx1-29034" >1362
    \Glsxtrfullpl  1353
    +href="glossaries-extra-manual.html#dx1-29033" >1363
    \glsxtrfullpl  1354
    +href="glossaries-extra-manual.html#dx1-29032" >1364
    \Glsxtrfullplformat  1355
    +href="glossaries-extra-manual.html#dx1-34066" >1365
    \glsxtrfullplformat  1356
    +href="glossaries-extra-manual.html#dx1-34062" >1366
    \glsxtrfullsep  1357
    +href="glossaries-extra-manual.html#dx1-31082" >1367
    \glsxtrGeneralLatinIIIrules  1358
    +href="glossaries-extra-manual.html#dx1-49063" >1368
    \glsxtrGeneralLatinIIrules  1359
    +href="glossaries-extra-manual.html#dx1-49062" >1369
    \glsxtrGeneralLatinIrules  1360
    +href="glossaries-extra-manual.html#dx1-49061" >1370
    \glsxtrGeneralLatinIVrules  1361
    +href="glossaries-extra-manual.html#dx1-49064" >1371
    \glsxtrGeneralLatinVIIIrules  1362
    +href="glossaries-extra-manual.html#dx1-49068" >1372
    \glsxtrGeneralLatinVIIrules  1363
    +href="glossaries-extra-manual.html#dx1-49067" >1373
    \glsxtrGeneralLatinVIrules  1364
    +href="glossaries-extra-manual.html#dx1-49066" >1374
    \glsxtrGeneralLatinVrules  1365
    +href="glossaries-extra-manual.html#dx1-49065" >1375
    \glsxtrgeneralpuncIIrules  1366
    +href="glossaries-extra-manual.html#dx1-49055" >1376
    \glsxtrgeneralpuncIrules  1367
    +href="glossaries-extra-manual.html#dx1-49053" >1377
    \glsxtrgeneralpuncrules  1368
    +href="glossaries-extra-manual.html#dx1-49052" >1378
    \glsxtrglossentry  1369
    +href="glossaries-extra-manual.html#dx1-58004" >1379
    \glsxtrglossentryother  1370
    +href="glossaries-extra-manual.html#dx1-58016" >1380
    \glsxtrgroupfield  1371
    +href="glossaries-extra-manual.html#dx1-54014" >1381
    \GLSXTRhiername  1372
    +class="cmti-10">1382
    \GLSxtrhiername  1373
    +class="cmti-10">1383
    \GlsXtrhiername  1374
    +class="cmti-10">1384
    \Glsxtrhiername  1375
    +class="cmti-10">1385
    \glsxtrhiername  1376
    +class="cmti-10">1386
    + + + \glsxtrhiernamesep  1377
    +class="cmti-10">1387
    \glsxtrhyphenrules  1378
    +href="glossaries-extra-manual.html#dx1-49051" >1388
    \glsxtrhyphensuffix  1379
    +href="glossaries-extra-manual.html#dx1-31073" >1389
    \glsxtridentifyglslike  1380
    +href="glossaries-extra-manual.html#dx1-50012" >1390
    \glsxtrifcounttrigger  1381
    +href="glossaries-extra-manual.html#dx1-40021" >1391
    \glsxtrifcustomdiscardperiod  1382
    +class="cmti-10">1392
    \GlsXtrIfFieldCmpNum  1383
    - - - +href="glossaries-extra-manual.html#dx1-53049" >1393
    \GlsXtrIfFieldEqNum  1384
    +href="glossaries-extra-manual.html#dx1-53048" >1394
    \GlsXtrIfFieldEqStr  1385
    +href="glossaries-extra-manual.html#dx1-53038" >1395
    \GlsXtrIfFieldEqXpStr  1386
    +href="glossaries-extra-manual.html#dx1-53040" >1396
    \GlsXtrIfFieldNonZero  1387
    +href="glossaries-extra-manual.html#dx1-53047" >1397
    \GlsXtrIfFieldUndef  1388
    +href="glossaries-extra-manual.html#dx1-53037" >1398
    \GlsXtrIfFieldValueInCsvList  1389
    +href="glossaries-extra-manual.html#dx1-53042" >1399
    \glsxtrifhasfield  1390
    +href="glossaries-extra-manual.html#dx1-53033" >1400
    \glsxtrifhasfield*  1391
    +href="glossaries-extra-manual.html#dx1-53035" >1401
    \GlsXtrIfHasNonZeroChildCount  1392
    +href="glossaries-extra-manual.html#dx1-49004" >1402
    \glsxtrifinlabelprefixlist  1393
    +href="glossaries-extra-manual.html#dx1-50017" >1403
    \glsxtrifkeydefined  1394
    +href="glossaries-extra-manual.html#dx1-53012" >1404
    \glsxtriflabelinlist  1395
    +href="glossaries-extra-manual.html#dx1-56001" >1405
    \GlsXtrIfLinkCounterDef  1396
    +href="glossaries-extra-manual.html#dx1-41008" >1406
    \glsxtrifrecordtrigger  1397
    +href="glossaries-extra-manual.html#dx1-51018" >1407
    \GlsXtrIfUnusedOrUndefined  1398
    +class="cmti-10">1408
    +\GlsXtrIfValueInFieldCsvList  1409
    \glsxtrifwasfirstuse  1399
    +class="cmti-10">1410
    \GlsXtrIfXpFieldEqXpStr  1400
    +href="glossaries-extra-manual.html#dx1-53041" >1411
    \glsxtrinclinkcounter  1401
    +href="glossaries-extra-manual.html#dx1-41005" >1412
    \glsxtrindexaliased  1402
    +href="glossaries-extra-manual.html#dx1-59017" >1413
    \GlsXtrIndexCounterLink  1403
    +href="glossaries-extra-manual.html#dx1-46028" >1414
    \glsxtrindexseealso  1404
    +href="glossaries-extra-manual.html#dx1-8076" >1415
    \glsxtrinitwrgloss  1405
    +class="cmti-10">1416
    \Glsxtrinlinefullformat  1406
    +href="glossaries-extra-manual.html#dx1-34073" >1417
    \glsxtrinlinefullformat  1407
    +href="glossaries-extra-manual.html#dx1-34070" >1418
    \Glsxtrinlinefullplformat  1408
    +href="glossaries-extra-manual.html#dx1-34080" >1419
    \glsxtrinlinefullplformat  1409
    +href="glossaries-extra-manual.html#dx1-34077" >1420
    \glsxtrinsertinsidetrue  1410
    +href="glossaries-extra-manual.html#dx1-31080" >1421
    \glsxtrLatinA  1411
    +href="glossaries-extra-manual.html#dx1-49069" >1422
    \glsxtrLatinAA  1412
    +href="glossaries-extra-manual.html#dx1-49093" >1423
    \glsxtrLatinAELigature  1413
    +href="glossaries-extra-manual.html#dx1-49086" >1424
    \glsxtrLatinE  1414
    +href="glossaries-extra-manual.html#dx1-49070" >1425
    \glsxtrLatinEszettSs  1415
    +href="glossaries-extra-manual.html#dx1-49082" >1426
    \glsxtrLatinEszettSz  1416
    +href="glossaries-extra-manual.html#dx1-49083" >1427
    \glsxtrLatinEth  1417
    +href="glossaries-extra-manual.html#dx1-49084" >1428
    \glsxtrLatinH  1418
    +href="glossaries-extra-manual.html#dx1-49071" >1429
    \glsxtrLatinI  1419
    +href="glossaries-extra-manual.html#dx1-49073" >1430
    \glsxtrLatinInsularG  1420
    +href="glossaries-extra-manual.html#dx1-49091" >1431
    \glsxtrLatinK  1421
    +href="glossaries-extra-manual.html#dx1-49072" >1432
    + + + \glsxtrLatinL  1422
    +href="glossaries-extra-manual.html#dx1-49074" >1433
    \glsxtrLatinLslash  1423
    +href="glossaries-extra-manual.html#dx1-49089" >1434
    \glsxtrLatinM  1424
    +href="glossaries-extra-manual.html#dx1-49075" >1435
    \glsxtrLatinN  1425
    +href="glossaries-extra-manual.html#dx1-49076" >1436
    \glsxtrLatinO  1426
    +href="glossaries-extra-manual.html#dx1-49077" >1437
    \glsxtrLatinOELigature  1427
    +href="glossaries-extra-manual.html#dx1-49087" >1438
    \glsxtrLatinOslash  1428
    +href="glossaries-extra-manual.html#dx1-49088" >1439
    \glsxtrLatinP  1429
    - - - +href="glossaries-extra-manual.html#dx1-49078" >1440
    \glsxtrLatinS  1430
    +href="glossaries-extra-manual.html#dx1-49079" >1441
    \glsxtrLatinSchwa  1431
    +href="glossaries-extra-manual.html#dx1-49092" >1442
    \glsxtrLatinT  1432
    +href="glossaries-extra-manual.html#dx1-49080" >1443
    \glsxtrLatinThorn  1433
    +href="glossaries-extra-manual.html#dx1-49085" >1444
    \glsxtrLatinWynn  1434
    +href="glossaries-extra-manual.html#dx1-49090" >1445
    \glsxtrLatinX  1435
    +href="glossaries-extra-manual.html#dx1-49081" >1446
    \GlsXtrLetField  1436
    +href="glossaries-extra-manual.html#dx1-53029" >1447
    \GlsXtrLetFieldToField  1437
    +href="glossaries-extra-manual.html#dx1-53031" >1448
    \GlsXtrLinkCounterName  1438
    +href="glossaries-extra-manual.html#dx1-41009" >1449
    \GlsXtrLinkCounterValue  1439
    +href="glossaries-extra-manual.html#dx1-41006" >1450
    \GlsXtrLoadResources  1440
    +href="glossaries-extra-manual.html#dx1-43018" >1451
    \glsxtrlocalsetgrouptitle  1441
    +class="cmti-10">1452
    \GlsXtrLocationField  1442
    +href="glossaries-extra-manual.html#dx1-55012" >1453
    \GlsXtrLocationRecordCount  1443
    +href="glossaries-extra-manual.html#dx1-51008" >1454
    \glsxtrlocrangefmt  1444
    +class="cmti-10">1455
    \Glsxtrlong  1445, 1446
    +href="glossaries-extra-manual.html#dx1-29021" >1456, 1457
    \glsxtrlong  1447
    +href="glossaries-extra-manual.html#dx1-29012" >1458
    \glsxtrlonghyphen  1448
    +href="glossaries-extra-manual.html#dx1-33267" >1459
    \glsxtrlonghyphenshort  1449
    +href="glossaries-extra-manual.html#dx1-33248" >1460
    \glsxtrlongnoshortdescname  1450
    +href="glossaries-extra-manual.html#dx1-32062" >1461
    \glsxtrlongnoshortname  1451
    +href="glossaries-extra-manual.html#dx1-32088" >1462
    \GLSxtrlongpl  1452
    +href="glossaries-extra-manual.html#dx1-29031" >1463
    \Glsxtrlongpl  1453
    +href="glossaries-extra-manual.html#dx1-29030" >1464
    \glsxtrlongpl  1454
    +href="glossaries-extra-manual.html#dx1-29029" >1465
    \glsxtrlongshortdescname  1455
    +href="glossaries-extra-manual.html#dx1-33061" >1466
    \glsxtrlongshortdescsort  1456
    +href="glossaries-extra-manual.html#dx1-33058" >1467
    \glsxtrlongshortname  1457
    +href="glossaries-extra-manual.html#dx1-33006" >1468
    \glsxtrlongshortuserdescname  1458
    +href="glossaries-extra-manual.html#dx1-33082" >1469
    \glsxtrMathGreekIIrules  1459
    +href="glossaries-extra-manual.html#dx1-49101" >1470
    \glsxtrMathGreekIrules  1460
    +href="glossaries-extra-manual.html#dx1-49094" >1471
    \glsxtrMathItalicGreekIIrules  1461
    +href="glossaries-extra-manual.html#dx1-49116" >1472
    \glsxtrMathItalicGreekIrules  1462
    +href="glossaries-extra-manual.html#dx1-49110" >1473
    \glsxtrMathItalicLowerGreekIIrules  1463
    +href="glossaries-extra-manual.html#dx1-49130" >1474
    \glsxtrMathItalicLowerGreekIrules  1464
    +href="glossaries-extra-manual.html#dx1-49126" >1475
    \glsxtrMathItalicNabla  1465
    +href="glossaries-extra-manual.html#dx1-49134" >1476
    \glsxtrMathItalicPartial  1466
    +href="glossaries-extra-manual.html#dx1-49133" >1477
    \glsxtrMathItalicUpperGreekIIrules  1467
    +href="glossaries-extra-manual.html#dx1-49123" >1478
    \glsxtrMathItalicUpperGreekIrules  1468
    +href="glossaries-extra-manual.html#dx1-49119" >1479
    + + + \glsxtrMathUpGreekIIrules  1469
    +href="glossaries-extra-manual.html#dx1-49107" >1480
    \glsxtrMathUpGreekIrules  1470
    +href="glossaries-extra-manual.html#dx1-49102" >1481
    \glsxtrmultisupplocation  1471
    +href="glossaries-extra-manual.html#dx1-47004" >1482
    \glsxtrnameloclink  1472
    +href="glossaries-extra-manual.html#dx1-48025" >1483
    \glsxtrnamereflink  1473
    +href="glossaries-extra-manual.html#dx1-48019" >1484
    \glsxtrnewgls  1474
    +href="glossaries-extra-manual.html#dx1-50005" >1485
    \glsxtrnewGLSlike  1475
    +href="glossaries-extra-manual.html#dx1-50007" >1486
    \glsxtrnewglslike  1476
    - - - +href="glossaries-extra-manual.html#dx1-50006" >1487
    \glsxtrnewnumber  1477
    +class="cmti-10">1488
    \glsxtrnewrgls  1478
    +href="glossaries-extra-manual.html#dx1-50008" >1489
    \glsxtrnewrGLSlike  1479
    +href="glossaries-extra-manual.html#dx1-50010" >1490
    \glsxtrnewrglslike  1480
    +href="glossaries-extra-manual.html#dx1-50009" >1491
    \glsxtrnewsymbol  1481
    +class="cmti-10">1492
    \GlsXtrNoGlsWarningAutoMake  1482
    +href="glossaries-extra-manual.html#dx1-65020" >1493
    \GlsXtrNoGlsWarningBuildInfo  1483
    +href="glossaries-extra-manual.html#dx1-65019" >1494
    \GlsXtrNoGlsWarningCheckFile  1484
    +href="glossaries-extra-manual.html#dx1-65015" >1495
    \GlsXtrNoGlsWarningEmptyMain  1485
    +href="glossaries-extra-manual.html#dx1-65013" >1496
    \GlsXtrNoGlsWarningEmptyNotMain  1486
    +href="glossaries-extra-manual.html#dx1-65014" >1497
    \GlsXtrNoGlsWarningEmptyStart  1487
    +href="glossaries-extra-manual.html#dx1-65012" >1498
    \GlsXtrNoGlsWarningHead  1488
    +href="glossaries-extra-manual.html#dx1-65011" >1499
    \GlsXtrNoGlsWarningMisMatch  1489
    +href="glossaries-extra-manual.html#dx1-65016" >1500
    \GlsXtrNoGlsWarningNoOut  1490
    +href="glossaries-extra-manual.html#dx1-65017" >1501
    \GlsXtrNoGlsWarningTail  1491
    +href="glossaries-extra-manual.html#dx1-65018" >1502
    \glsxtrnonprintablerules  1492
    +href="glossaries-extra-manual.html#dx1-49044" >1503
    \glsxtrnopostpunc  1493
    +class="cmti-10">1504
    \glsxtronlydescname  1494
    +href="glossaries-extra-manual.html#dx1-33027" >1505
    \glsxtronlyname  1495
    +href="glossaries-extra-manual.html#dx1-33023" >1506
    \glsxtronlysuffix  1496
    +href="glossaries-extra-manual.html#dx1-31079" >1507
    \glsxtrorglong  1497
    +href="glossaries-extra-manual.html#dx1-34034" >1508
    \glsxtrorgshort  1498
    +href="glossaries-extra-manual.html#dx1-34033" >1509
    \GLSxtrp  1499
    +class="cmti-10">1510
    \Glsxtrp  1500
    +class="cmti-10">1511
    \glsxtrp  1501
    +class="cmti-10">1512
    \glsxtrpageref  1502
    +href="glossaries-extra-manual.html#dx1-52004" >1513
    \glsxtrparen  1503
    +href="glossaries-extra-manual.html#dx1-31030" >1514
    \glsxtrpdfentryfmt  1504
    +href="glossaries-extra-manual.html#dx1-53010" >1515
    \Glsxtrpl  1505
    +href="glossaries-extra-manual.html#dx1-60015" >1516
    \glsxtrpl  1506
    +href="glossaries-extra-manual.html#dx1-60013" >1517
    \glsxtrpostdescription  1507
    +class="cmti-10">1518
    \glsxtrposthyphenlong  1508
    +href="glossaries-extra-manual.html#dx1-33280" >1519
    \glsxtrposthyphenshort  1509
    +href="glossaries-extra-manual.html#dx1-33265" >1520
    \glsxtrpostlink  1510
    +class="cmti-10">1521
    \glsxtrpostlinkAddDescOnFirstUse  1511
    +class="cmti-10">1522
    \glsxtrpostlinkAddSymbolDescOnFirstUse  1512
    +class="cmti-10">1523
    \glsxtrpostlinkAddSymbolOnFirstUse  1513
    +class="cmti-10">1524
    \glsxtrpostlinkendsentence  1514
    +class="cmti-10">1525
    + + + \glsxtrpostlinkhook  1515
    +class="cmti-10">1526
    \glsxtrpostlongdescription  1516
    +class="cmti-10">1527
    \glsxtrpostnamehook  1517
    +class="cmti-10">1528
    \GlsXtrPostNewAbbreviation  1518
    +href="glossaries-extra-manual.html#dx1-34019" >1529
    \glsxtrprelocation  1519
    +href="glossaries-extra-manual.html#dx1-21008" >1530
    \glsxtrprependlabelprefix  1520
    +href="glossaries-extra-manual.html#dx1-50015" >1531
    \GlsXtrProvideBibTeXFields  1521
    +href="glossaries-extra-manual.html#dx1-49008" >1532
    \glsxtrprovidecommand  1522
    - - - +href="glossaries-extra-manual.html#dx1-46022" >1533
    \glsxtrprovidestoragekey  1523
    +href="glossaries-extra-manual.html#dx1-53011" >1534
    \GlsXtrRecordCount  1524
    +href="glossaries-extra-manual.html#dx1-51007" >1535
    \GlsXtrRecordCounter  1525
    +href="glossaries-extra-manual.html#dx1-53089" >1536
    \glsxtrrecordtriggervalue  1526
    +href="glossaries-extra-manual.html#dx1-51020" >1537
    \glsxtrregularfont  1527
    +class="cmti-10">1538
    \glsxtrresourcefile  1528
    +href="glossaries-extra-manual.html#dx1-43017" >1539
    \glsxtrresourceinit  1529
    +href="glossaries-extra-manual.html#dx1-50003" >1540
    \glsxtrrestorepostpunc  1530
    +class="cmti-10">1541
    \glsxtrRevertMarks  1531
    +href="glossaries-extra-manual.html#dx1-36008" >1542
    \glsxtrRevertTocMarks  1532
    +href="glossaries-extra-manual.html#dx1-36009" >1543
    \glsxtrscsuffix  1533
    +href="glossaries-extra-manual.html#dx1-31044" >1544
    \glsxtrseealsolabels  1534
    +class="cmti-10">1545
    \glsxtrseelist  1535
    +class="cmti-10">1546
    \GlsXtrSetActualChar  1536
    +href="glossaries-extra-manual.html#dx1-42049" >1547
    \glsxtrsetaliasnoindex  1537
    +href="glossaries-extra-manual.html#dx1-59014" >1548
    \GlsXtrSetAltModifier  1538
    +class="cmti-10">1549
    \glsxtrsetcategory  1539
    +href="glossaries-extra-manual.html#dx1-38198" >1550
    \glsxtrsetcategoryforall  1540
    +href="glossaries-extra-manual.html#dx1-38200" >1551
    \GlsXtrSetDefaultGlsOpts  1541
    +class="cmti-10">1552
    \GlsXtrSetEncapChar  1542
    +href="glossaries-extra-manual.html#dx1-42052" >1553
    \GlsXtrSetEscChar  1543
    +href="glossaries-extra-manual.html#dx1-42051" >1554
    \GlsXtrSetField  1544
    +href="glossaries-extra-manual.html#dx1-53016" >1555
    \glsxtrsetfieldifexists  1545
    +href="glossaries-extra-manual.html#dx1-53017" >1556
    \glsxtrsetglossarylabel  1546
    +class="cmti-10">1557
    \glsxtrsetgrouptitle  1547
    +class="cmti-10">1558
    \GlsXtrSetLevelChar  1548
    +href="glossaries-extra-manual.html#dx1-42050" >1559
    \glsxtrsetpopts  1549
    +class="cmti-10">1560
    \GlsXtrSetRecordCountAttribute  1550
    +href="glossaries-extra-manual.html#dx1-51016" >1561
    \glsxtrSetWidest  1551
    +href="glossaries-extra-manual.html#dx1-46035" >1562
    \glsxtrSetWidestFallback  1552
    +href="glossaries-extra-manual.html#dx1-46040" >1563
    \Glsxtrshort  1553, 1554
    +href="glossaries-extra-manual.html#dx1-29020" >1564, 1565
    \glsxtrshort  1555
    +href="glossaries-extra-manual.html#dx1-29010" >1566
    \glsxtrshortdescname  1556
    +href="glossaries-extra-manual.html#dx1-32036" >1567
    \glsxtrshorthyphenlong  1557
    +href="glossaries-extra-manual.html#dx1-33273" >1568
    \glsxtrshortlongdescname  1558
    +href="glossaries-extra-manual.html#dx1-33126" >1569
    \glsxtrshortlongname  1559, 1560
    +href="glossaries-extra-manual.html#dx1-33099" >1570, 1571
    \glsxtrshortlonguserdescname  1561
    +href="glossaries-extra-manual.html#dx1-33144" >1572
    \glsxtrshortnolongname  1562
    +href="glossaries-extra-manual.html#dx1-32005" >1573
    + + + \GLSxtrshortpl  1563
    +href="glossaries-extra-manual.html#dx1-29028" >1574
    \Glsxtrshortpl  1564
    +href="glossaries-extra-manual.html#dx1-29027" >1575
    \glsxtrshortpl  1565
    +href="glossaries-extra-manual.html#dx1-29026" >1576
    \glsxtrsmsuffix  1566
    +href="glossaries-extra-manual.html#dx1-31054" >1577
    \glsxtrspacerules  1567
    +href="glossaries-extra-manual.html#dx1-49043" >1578
    \GlsXtrStandaloneEntryName  1568
    +href="glossaries-extra-manual.html#dx1-58010" >1579
    \GlsXtrStandaloneEntryOther  1569
    +href="glossaries-extra-manual.html#dx1-58017" >1580
    \GlsXtrStandaloneGlossaryType  1570
    - - - +href="glossaries-extra-manual.html#dx1-58005" >1581
    \GlsXtrStartUnsetBuffering  1571
    +class="cmti-10">1582
    \GlsXtrStopUnsetBuffering  1572
    +class="cmti-10">1583
    \glsxtrSubScriptDigitrules  1573
    +href="glossaries-extra-manual.html#dx1-49058" >1584
    \Glsxtrsubsequentfmt  1574
    +href="glossaries-extra-manual.html#dx1-34083" >1585
    \glsxtrsubsequentfmt  1575
    +href="glossaries-extra-manual.html#dx1-34082" >1586
    \Glsxtrsubsequentplfmt  1576
    +href="glossaries-extra-manual.html#dx1-34085" >1587
    \glsxtrsubsequentplfmt  1577
    +href="glossaries-extra-manual.html#dx1-34084" >1588
    \glsxtrSuperScriptDigitrules  1578
    +href="glossaries-extra-manual.html#dx1-49059" >1589
    \glsxtrtagfont  1579
    +href="glossaries-extra-manual.html#dx1-28003" >1590
    \GlsXtrTheLinkCounter  1580
    +href="glossaries-extra-manual.html#dx1-41007" >1591
    \GlsXtrTotalRecordCount  1581
    +href="glossaries-extra-manual.html#dx1-51006" >1592
    \glsxtrunsrtdo  1582
    +href="glossaries-extra-manual.html#dx1-55007" >1593
    \GlsXtrUseAbbrStyleFmts  1583
    +href="glossaries-extra-manual.html#dx1-34089" >1594
    \GlsXtrUseAbbrStyleSetup  1584
    +href="glossaries-extra-manual.html#dx1-34040" >1595
    \glsxtrusealias  1585
    +class="cmti-10">1596
    \GLSxtrusefield  1586
    +href="glossaries-extra-manual.html#dx1-53054" >1597
    \Glsxtrusefield  1587
    +href="glossaries-extra-manual.html#dx1-53053" >1598
    \glsxtrusefield  1588
    +href="glossaries-extra-manual.html#dx1-53051" >1599
    \glsxtruserfield  1589
    +href="glossaries-extra-manual.html#dx1-33033" >1600
    \glsxtruserparen  1590
    +href="glossaries-extra-manual.html#dx1-33036" >1601
    \glsxtrusersuffix  1591, 1592
    +href="glossaries-extra-manual.html#dx1-31068" >1602, 1603
    \glsxtrusesee  1593
    +class="cmti-10">1604
    \glsxtruseseealso  1594
    +class="cmti-10">1605
    \glsxtruseseeformat  1595, 1606, 1596
    +class="cmti-10">1607
    \GlsXtrWarnDeprecatedAbbrStyle  1597
    +href="glossaries-extra-manual.html#dx1-31107" >1608
    \GlsXtrWarning  1598
    +href="glossaries-extra-manual.html#dx1-60011" >1609
    \glsxtrword  1599
    +href="glossaries-extra-manual.html#dx1-38057" >1610
    \glsxtrwordsep  1600
    +href="glossaries-extra-manual.html#dx1-38056" >1611
    \glsxtrwrglossmark  1601
    +class="cmti-10">1612

    H hyperref package  1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627
    +href="glossaries-extra-manual.html#dx1-4096" >1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638

    I inputenc package  1628
    +href="glossaries-extra-manual.html#dx1-45012" >1639

    L + + + link-text  1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648
    +href="glossaries-extra-manual.html#dx1-9001" >1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659
    location list  1649, 1650, 1651, 1652, 1653
    +href="glossaries-extra-manual.html#dx1-18013" >1660, 1661, 1662, 1663, 1664
    \longnewglossaryentry  1654
    +class="cmti-10">1665

    M makeglossaries  1655, 1656, 1657, 1658, 1659
    - - - +href="glossaries-extra-manual.html#dx1-3034" >1666, 1667, 1668, 1669, 1670
    \makeglossaries  1660
    +class="cmti-10">1671
    makeglossaries-lite  1661, 1662
    +href="glossaries-extra-manual.html#dx1-6038" >1672, 1673
    makeglossaries-lite  1663, 1664
    +href="glossaries-extra-manual.html#dx1-6039" >1674, 1675
    makeidx package  1665
    +href="glossaries-extra-manual.html#dx1-8081" >1676
    makeindex  1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690
    +href="glossaries-extra-manual.html#dx1-3029" >1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701
    makeindex  1691, 1692, 1693, 1694, 1695
    +href="glossaries-extra-manual.html#dx1-7053" >1702, 1703, 1704, 1705, 1706
    memoir class  1696, 1697
    +href="glossaries-extra-manual.html#dx1-3024" >1707, 1708
    mfirstuc package  1698, 1699, 1700
    +href="glossaries-extra-manual.html#dx1-4" >1709, 1710, 1711
    multicols package  1701
    +href="glossaries-extra-manual.html#dx1-26002" >1712

    N \newabbreviation  1702
    +href="glossaries-extra-manual.html#dx1-27011" >1713
    \newabbreviationstyle  1703
    +href="glossaries-extra-manual.html#dx1-34001" >1714
    \newacronym  1704
    +href="glossaries-extra-manual.html#dx1-27020" >1715
    \newglossaryentry options
        access  1705
    +href="glossaries-extra-manual.html#dx1-38165" >1716
        alias  1706, 1707, 1708, 1709, 1710, 1711, 1712
    +href="glossaries-extra-manual.html#dx1-6008" >1717, 1718, 1719, 1720, 1721, 1722, 1723
        category  1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720
    +href="glossaries-extra-manual.html#dx1-6007" >1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731
        counter  1721
    +href="glossaries-extra-manual.html#dx1-7044" >1732
        description  1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747
    +href="glossaries-extra-manual.html#dx1-6002" >1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758
        descriptionplural  1748, 1749, 1750, 1751, 1752, 1753
    +href="glossaries-extra-manual.html#dx1-6016" >1759, 1760, 1761, 1762, 1763, 1764
        first  1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766
    +href="glossaries-extra-manual.html#dx1-9013" >1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777
        firstaccess  1767
    +href="glossaries-extra-manual.html#dx1-38172" >1778
        firstplural  1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777
    +href="glossaries-extra-manual.html#dx1-9014" >1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788
        group  1778, 1779, 1780, 1781, 1782, 1783
    +href="glossaries-extra-manual.html#dx1-15014" >1789, 1790, 1791, 1792, 1793, 1794
        location  1784, 1785, 1786, 1787, 1788
    +href="glossaries-extra-manual.html#dx1-24023" >1795, 1796, 1797, 1798, 1799
        loclist  1789, 1790, 1791, 1792
    +href="glossaries-extra-manual.html#dx1-48014" >1800, 1801, 1802, 1803
        long  1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801
    +href="glossaries-extra-manual.html#dx1-12026" >1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812
        longplural  1802, 1803, 1804, 1805, 1806, 1807
    +href="glossaries-extra-manual.html#dx1-12010" >1813, 1814, 1815, 1816, 1817, 1818
        name  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, 1836, 1837, 1838, 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
    +href="glossaries-extra-manual.html#dx1-8029" >1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 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, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875
        nameshortaccess  1865, 1866
    +href="glossaries-extra-manual.html#dx1-38168" >1876, 1877
        parent  1867, 1868, 1869, 1870
    +href="glossaries-extra-manual.html#dx1-22082" >1878, 1879, 1880, 1881
        plural  1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883
    +href="glossaries-extra-manual.html#dx1-9017" >1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894
    + + +     prefix  1884
    +href="glossaries-extra-manual.html#dx1-15009" >1895
        see  1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910
    +href="glossaries-extra-manual.html#dx1-4057" >1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921
        seealso  1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921
    +href="glossaries-extra-manual.html#dx1-4058" >1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932
        short  1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937
    +href="glossaries-extra-manual.html#dx1-8046" >1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948
        shortaccess  1938, 1939, 1940, 1941, 1942
    +href="glossaries-extra-manual.html#dx1-38134" >1949, 1950, 1951, 1952, 1953
        shortplural  1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957
    +href="glossaries-extra-manual.html#dx1-12011" >1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968
        shortpluralaccess  1958, 1959, 1960, 1961
    - - - +href="glossaries-extra-manual.html#dx1-38151" >1969, 1970, 1971, 1972
        sort  1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984
    +href="glossaries-extra-manual.html#dx1-4194" >1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995
        symbol  1985, 1986, 1987, 1988, 1989, 1990
    +href="glossaries-extra-manual.html#dx1-17013" >1996, 1997, 1998, 1999, 2000, 2001
        symbolaccess  1991
    +href="glossaries-extra-manual.html#dx1-17015" >2002
        symbolplural  1992, 1993
    +href="glossaries-extra-manual.html#dx1-63037" >2003, 2004
        text  1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
    +href="glossaries-extra-manual.html#dx1-8028" >2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
        textaccess  2009
    +href="glossaries-extra-manual.html#dx1-38169" >2020
        type  2010, 2011, 2012, 2013, 2014
    +href="glossaries-extra-manual.html#dx1-14058" >2021, 2022, 2023, 2024, 2025
        user1  2015, 2016, 2017, 2018
    +href="glossaries-extra-manual.html#dx1-17018" >2026, 2027, 2028, 2029
    number list  2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052
    +href="glossaries-extra-manual.html#dx1-4027" >2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063

    P package options:
        abbreviations  2053, 2054, 2055, 2056, 2057
    +href="glossaries-extra-manual.html#dx1-4215" >2064, 2065, 2066, 2067, 2068
        accsupp  2058, 2059, 2060, 2061, 2062, 2063, 2064
    +href="glossaries-extra-manual.html#dx1-4035" >2069, 2070, 2071, 2072, 2073, 2074, 2075
        acronym  2065, 2066
    +href="glossaries-extra-manual.html#dx1-4229" >2076, 2077
        acronymlists  2067, 2068
    +href="glossaries-extra-manual.html#dx1-4233" >2078, 2079
        acronyms  2069
    +href="glossaries-extra-manual.html#dx1-4245" >2080
        automake  2070, 2071
    +href="glossaries-extra-manual.html#dx1-6040" >2081, 2082
        autoseeindex  2072, 2073
    +href="glossaries-extra-manual.html#dx1-4066" >2083, 2084
            false  2074, 2075
    +href="glossaries-extra-manual.html#dx1-4059" >2085, 2086
        counter
            chapter  2076
    +href="glossaries-extra-manual.html#dx1-4098" >2087
            equation  2077
    +href="glossaries-extra-manual.html#dx1-4101" >2088
            section  2078
    +href="glossaries-extra-manual.html#dx1-4099" >2089
            wrglossary  2079
    +href="glossaries-extra-manual.html#dx1-4148" >2090
        debug  2080
    +href="glossaries-extra-manual.html#dx1-4002" >2091
            all  2081, 2082
    +href="glossaries-extra-manual.html#dx1-4005" >2092, 2093
            showtargets  2083, 2084
    +href="glossaries-extra-manual.html#dx1-4003" >2094, 2095
            showwrgloss  2085, 2086, 2087
    +href="glossaries-extra-manual.html#dx1-4004" >2096, 2097, 2098
            true  2088
    +href="glossaries-extra-manual.html#dx1-4007" >2099
        docdef  2089, 2090, 2091, 2092
    +href="glossaries-extra-manual.html#dx1-4174" >2100, 2101, 2102, 2103
            atom  2093
    +href="glossaries-extra-manual.html#dx1-4202" >2104
            restricted  2094, 2095, 2096, 2097
    +href="glossaries-extra-manual.html#dx1-4187" >2105, 2106, 2107, 2108
            true  2098, 2099
    +href="glossaries-extra-manual.html#dx1-4211" >2109, 2110
        docdefs  2100, 2101, 2102
    +href="glossaries-extra-manual.html#dx1-54023" >2111, 2112, 2113
    + + +         true  2103
    +href="glossaries-extra-manual.html#dx1-4186" >2114
        entrycounter  2104, 2105
    +href="glossaries-extra-manual.html#dx1-52002" >2115, 2116
        equations  2106, 2107
    +href="glossaries-extra-manual.html#dx1-4129" >2117, 2118
            true  2108
    +href="glossaries-extra-manual.html#dx1-4102" >2119
        floats  2109
    +href="glossaries-extra-manual.html#dx1-4136" >2120
        hyperfirst
            false  2110
    +href="glossaries-extra-manual.html#dx1-38030" >2121
        index  2111, 2112, 2113
    - - - +href="glossaries-extra-manual.html#dx1-4251" >2122, 2123, 2124
        indexcounter  2114, 2115, 2116, 2117
    +href="glossaries-extra-manual.html#dx1-4097" >2125, 2126, 2127, 2128
        indexcrossrefs  2118, 2119, 2120, 2121
    +href="glossaries-extra-manual.html#dx1-4056" >2129, 2130, 2131, 2132
            false  2122
    +href="glossaries-extra-manual.html#dx1-4065" >2133
        indexonlyfirst  2123, 2124, 2125, 2126
    +href="glossaries-extra-manual.html#dx1-7004" >2134, 2135, 2136, 2137
        makeindex  2127
    +href="glossaries-extra-manual.html#dx1-48016" >2138
        nogroupskip  2128, 2129, 2130, 2131, 2132
    +href="glossaries-extra-manual.html#dx1-21005" >2139, 2140, 2141, 2142, 2143
        nomain  2133
    +href="glossaries-extra-manual.html#dx1-3039" >2144
        nomissingglstext  2134
    +href="glossaries-extra-manual.html#dx1-4214" >2145
        nonumberlist  2135, 2136, 2137, 2138, 2139
    +href="glossaries-extra-manual.html#dx1-8053" >2146, 2147, 2148, 2149, 2150
        nopostdot  2140, 2141, 2142, 2143
    +href="glossaries-extra-manual.html#dx1-4022" >2151, 2152, 2153, 2154
            false  2144, 2145, 2146
    +href="glossaries-extra-manual.html#dx1-3004" >2155, 2156, 2157
            true  2147
    +href="glossaries-extra-manual.html#dx1-3003" >2158
        noredefwarn
            false  2148
    +href="glossaries-extra-manual.html#dx1-3009" >2159
            true  2149
    +href="glossaries-extra-manual.html#dx1-3006" >2160
        notree  2150
    +href="glossaries-extra-manual.html#dx1-22064" >2161
        numbers  2151, 2152, 2153
    +href="glossaries-extra-manual.html#dx1-4240" >2162, 2163, 2164
        postdot  2154, 2155, 2156
    +href="glossaries-extra-manual.html#dx1-3005" >2165, 2166, 2167
        postpunc  2157, 2158, 2159
    +href="glossaries-extra-manual.html#dx1-4018" >2168, 2169, 2170
            comma  2160
    +href="glossaries-extra-manual.html#dx1-4019" >2171
            dot  2161
    +href="glossaries-extra-manual.html#dx1-4020" >2172
            none  2162
    +href="glossaries-extra-manual.html#dx1-4021" >2173
        prefix  2163
    +href="glossaries-extra-manual.html#dx1-4033" >2174
        record  2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176
    +href="glossaries-extra-manual.html#dx1-4064" >2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187
            hybrid  2177, 2178, 2179, 2180, 2181, 2182, 2183
    +href="glossaries-extra-manual.html#dx1-4009" >2188, 2189, 2190, 2191, 2192, 2193, 2194
            nameref  2184, 2185, 2186, 2187
    +href="glossaries-extra-manual.html#dx1-4077" >2195, 2196, 2197, 2198
            off  2188, 2189
    +href="glossaries-extra-manual.html#dx1-6035" >2199, 2200
            only  2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201
    +href="glossaries-extra-manual.html#dx1-4069" >2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212
        savenumberlist  2202
    +href="glossaries-extra-manual.html#dx1-46016" >2213
        section
            chapter  2203
    +href="glossaries-extra-manual.html#dx1-24040" >2214
        seeautonumberlist  2204
    +href="glossaries-extra-manual.html#dx1-8054" >2215
        seenoindex  2205
    +href="glossaries-extra-manual.html#dx1-8011" >2216
            ignore  2206, 2207
    +href="glossaries-extra-manual.html#dx1-8013" >2217, 2218
            warn  2208
    +href="glossaries-extra-manual.html#dx1-54021" >2219
        shortcuts  2209, 2210, 2211
    +href="glossaries-extra-manual.html#dx1-4255" >2220, 2221, 2222
            abbr  2212, 2213
    +href="glossaries-extra-manual.html#dx1-4261" >2223, 2224
            abbreviations  2214, 2215, 2216, 2217
    +href="glossaries-extra-manual.html#dx1-4260" >2225, 2226, 2227, 2228
    + + +         ac  2218, 2219, 2220, 2221, 2222, 2223, 2224
    +href="glossaries-extra-manual.html#dx1-4258" >2229, 2230, 2231, 2232, 2233, 2234, 2235
            acro  2225, 2226
    +href="glossaries-extra-manual.html#dx1-4257" >2236, 2237
            acronyms  2227, 2228
    +href="glossaries-extra-manual.html#dx1-4256" >2238, 2239
            all  2229, 2230
    +href="glossaries-extra-manual.html#dx1-4271" >2240, 2241
            false  2231
    +href="glossaries-extra-manual.html#dx1-4277" >2242
            none  2232
    +href="glossaries-extra-manual.html#dx1-4276" >2243
            other  2233, 2234
    +href="glossaries-extra-manual.html#dx1-4262" >2244, 2245
            true  2235
    - - - +href="glossaries-extra-manual.html#dx1-4272" >2246
        sort
            none  2236, 2237
    +href="glossaries-extra-manual.html#dx1-4093" >2247, 2248
        stylemods  2238, 2239, 2240, 2241, 2242, 2243
    +href="glossaries-extra-manual.html#dx1-4045" >2249, 2250, 2251, 2252, 2253, 2254
            all  2244
    +href="glossaries-extra-manual.html#dx1-4048" >2255
            default  2245
    +href="glossaries-extra-manual.html#dx1-4047" >2256
        subentrycounter  2246, 2247
    +href="glossaries-extra-manual.html#dx1-52003" >2257, 2258
        symbols  2248, 2249, 2250
    +href="glossaries-extra-manual.html#dx1-4234" >2259, 2260, 2261
        toc
            false  2251
    +href="glossaries-extra-manual.html#dx1-3002" >2262
            true  2252
    +href="glossaries-extra-manual.html#dx1-3001" >2263
        translate
            babel  2253
    +href="glossaries-extra-manual.html#dx1-3011" >2264
            true  2254
    +href="glossaries-extra-manual.html#dx1-3013" >2265
        undefaction  2255, 2256
    +href="glossaries-extra-manual.html#dx1-4049" >2266, 2267
            error  2257, 2258, 2259
    +href="glossaries-extra-manual.html#dx1-4050" >2268, 2269, 2270
            warn  2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268
    +href="glossaries-extra-manual.html#dx1-4051" >2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279
        writeglslabelnames  2269
    +href="glossaries-extra-manual.html#dx1-4200" >2280
        writeglslabels  2270
    +href="glossaries-extra-manual.html#dx1-4199" >2281
        xindy  2271, 2272
    +href="glossaries-extra-manual.html#dx1-8077" >2282, 2283
    page (counter)  2273, 2274, 2275, 2276, 2277, 2278
    +href="glossaries-extra-manual.html#dx1-4100" >2284, 2285, 2286, 2287, 2288, 2289
    polyglossia package  2279, 2280
    +href="glossaries-extra-manual.html#dx1-53087" >2290, 2291
    \pretoglossarypreamble  2281
    +href="glossaries-extra-manual.html#dx1-52011" >2292
    \printabbreviations  2282
    +class="cmti-10">2293
    \printglossary options
        label  2283, 2284
    +href="glossaries-extra-manual.html#dx1-15011" >2294, 2295
        nogroupskip  2285
    +href="glossaries-extra-manual.html#dx1-21006" >2296
        numberedsection  2286
    +href="glossaries-extra-manual.html#dx1-57038" >2297
        prefix  2287
    +href="glossaries-extra-manual.html#dx1-15008" >2298
        style  2288
    +href="glossaries-extra-manual.html#dx1-57037" >2299
        target  2289, 2290
    +href="glossaries-extra-manual.html#dx1-15006" >2300, 2301
        targetnameprefix  2291
    +href="glossaries-extra-manual.html#dx1-15007" >2302
        title  2292, 2293
    +href="glossaries-extra-manual.html#dx1-57035" >2303, 2304
        toctitle  2294
    +href="glossaries-extra-manual.html#dx1-57036" >2305
        type  2295
    +href="glossaries-extra-manual.html#dx1-57023" >2306
    \printnoidxglossary options
        sort  2296
    +href="glossaries-extra-manual.html#dx1-54024" >2307
    \printunsrtabbreviations  2297
    +class="cmti-10">2308
    \printunsrtacronyms  2298
    +class="cmti-10">2309
    + + + \printunsrtglossaries  2299
    +href="glossaries-extra-manual.html#dx1-54025" >2310
    \printunsrtglossary  2300
    +href="glossaries-extra-manual.html#dx1-54001" >2311
    \printunsrtglossary options
        groups  2301, 2302
    +href="glossaries-extra-manual.html#dx1-15013" >2312, 2313
        leveloffset  2303
    +href="glossaries-extra-manual.html#dx1-15015" >2314
    \printunsrtglossary*  2304
    +href="glossaries-extra-manual.html#dx1-54005" >2315
    \printunsrtglossaryentryprocesshook  2305
    +href="glossaries-extra-manual.html#dx1-55003" >2316
    \printunsrtglossaryhandler  2306
    - - - +href="glossaries-extra-manual.html#dx1-55006" >2317
    \printunsrtglossarypredoglossary  2307
    +href="glossaries-extra-manual.html#dx1-55005" >2318
    \printunsrtglossaryskipentry  2308
    +href="glossaries-extra-manual.html#dx1-55004" >2319
    \printunsrtglossaryunit  2309
    +href="glossaries-extra-manual.html#dx1-56003" >2320
    \printunsrtglossaryunitsetup  2310
    +href="glossaries-extra-manual.html#dx1-56004" >2321
    \printunsrtindex  2311
    +class="cmti-10">2322
    \printunsrtnumbers  2312
    +class="cmti-10">2323
    \printunsrtsymbols  2313
    +class="cmti-10">2324
    \provideignoredglossary  2314
    +class="cmti-10">2325

    R relsizes package  2315
    +href="glossaries-extra-manual.html#dx1-31052" >2326
    \RestoreAcronyms  2316
    +class="cmti-10">2327
    \rGLS  2317
    +href="glossaries-extra-manual.html#dx1-51013" >2328
    \rGls  2318
    +href="glossaries-extra-manual.html#dx1-51011" >2329
    \rgls  2319
    +href="glossaries-extra-manual.html#dx1-51009" >2330
    \rGLSformat  2320
    +href="glossaries-extra-manual.html#dx1-51029" >2331
    \rGlsformat  2321
    +href="glossaries-extra-manual.html#dx1-51027" >2332
    \rglsformat  2322
    +href="glossaries-extra-manual.html#dx1-51025" >2333
    \rGLSpl  2323
    +href="glossaries-extra-manual.html#dx1-51014" >2334
    \rGlspl  2324
    +href="glossaries-extra-manual.html#dx1-51012" >2335
    \rglspl  2325
    +href="glossaries-extra-manual.html#dx1-51010" >2336
    \rGLSplformat  2326
    +href="glossaries-extra-manual.html#dx1-51030" >2337
    \rGlsplformat  2327
    +href="glossaries-extra-manual.html#dx1-51028" >2338
    \rglsplformat  2328
    +href="glossaries-extra-manual.html#dx1-51026" >2339

    S \seealsoname  2329
    +href="glossaries-extra-manual.html#dx1-8079" >2340
    \setabbreviationstyle  2330
    +href="glossaries-extra-manual.html#dx1-29001" >2341
    slantsc package  2331
    +href="glossaries-extra-manual.html#dx1-37009" >2342
    soul package  2332, 2333
    +href="glossaries-extra-manual.html#dx1-7024" >2343, 2344
    style package  2334
    +href="glossaries-extra-manual.html#dx1-24005" >2345
    subentrycounter package  2335
    +href="glossaries-extra-manual.html#dx1-58021" >2346

    T texindy  2336
    +href="glossaries-extra-manual.html#dx1-42007" >2347
    + + + textcase package  2337
    +href="glossaries-extra-manual.html#dx1-7" >2348
    tracklang package  2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347
    +href="glossaries-extra-manual.html#dx1-3" >2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358
    translator package  2348
    +href="glossaries-extra-manual.html#dx1-3012" >2359

    U upgreek package  2349, 2350, 2351, 2352
    +href="glossaries-extra-manual.html#dx1-49029" >2360, 2361, 2362, 2363

    W - - - wrglossary (counter)  2353, 2354, 2355, 2356, 2357
    +href="glossaries-extra-manual.html#dx1-4149" >2364, 2365, 2366, 2367, 2368

    X xfor package  2358, 2359, 2360
    +href="glossaries-extra-manual.html#dx1-8" >2369, 2370, 2371
    \xglssetwidest  2361
    +href="glossaries-extra-manual.html#dx1-22068" >2372
    \xglsupdatewidest  2362
    +href="glossaries-extra-manual.html#dx1-22072" >2373
    +\xGlsXtrIfValueInFieldCsvList  2374
    \xGlsXtrSetField  2363
    +href="glossaries-extra-manual.html#dx1-53028" >2375
    xindy  2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383
    +href="glossaries-extra-manual.html#dx1-3030" >2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395
    xindy  2384
    +href="glossaries-extra-manual.html#dx1-7056" >2396
    xkeyval package  2385
    +href="glossaries-extra-manual.html#dx1-6" >2397

    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.46: + \title{glossaries-extra.sty v1.47: an extension to the glossaries package} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} - \date{2021-09-20} + \date{2021-11-04} \maketitle \begin{abstract} @@ -2049,6 +2049,23 @@ For convenience, \styfmt{glossaries-extra} provides \end{definition} which fully expands its argument and passes it to \cs{glsseelist}. +As from v1.47, \styfmt{glossaries-extra} redefines \cs{glsseelist} +to make it more flexible. The base package provides +\cs{glsseeitem}\marg{label} which is used to format each element in +the list and \cs{glsseelastsep} for the separator between the final +two items (\cs{glsseesep} is used between the other items). The +modifications provide two additional commands: +\begin{definition}[\DescribeMacro\glsseefirstitem] +\cs{glsseefirstitem}\marg{label} +\end{definition} +This defaults to \cs{glsseeitem}\marg{label} and is used to format +the first label in the list. +\begin{definition}[\DescribeMacro\glsseelastoxfordsep] +\cs{glsseelastoxfordsep} +\end{definition} +This defaults to \cs{glsseelastsep} and is used if the list consists +of three or more labels. + The \gloskey{seealso} key implements the automatic indexing using \begin{definition}[\DescribeMacro\glsxtrindexseealso] \cs{glsxtrindexseealso}\marg{label}\marg{xr list} @@ -3230,7 +3247,7 @@ offset. This can cause odd results but can be switched off with Glossaries} for an example. \end{itemize} -\subsection{Glossary Style Modifications} +\section{Glossary Style Modifications} \label{sec:glosstylemods} The \sty{glossaries-extra-stylemods} package (more conveniently @@ -3265,19 +3282,19 @@ you can use \cs{glsxtrlocalsetgrouptitle}\marg{label}\marg{title} \end{definition} -\subsubsection{Style Hooks} +\subsection{Style Hooks} \label{sec:stylehooks} The commands \ics{glossentryname} and \ics{glossentrydesc} are modified to take into account the \catattr{glossname}, -\category{glossnamefont}, \catattr{glossdesc} and \catattr{glossdescfont} +\catattr{glossnamefont}, \catattr{glossdesc} and \catattr{glossdescfont} attributes (see \sectionref{sec: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 \ics{glossentrysymbol} is modified to take into account -the \catattr{glosssymbolfont}. Note that, unlike the above, there's +the \catattr{glosssymbolfont} attribute. Note that, unlike the above, there's no corresponding attribute to change the case as it's usually not appropriate to change the case of a symbol (and for some symbols, such as pictographs, there's no concept of case). If @@ -3323,13 +3340,13 @@ of \gloskey{name}, you can use \begin{definition}[\DescribeMacro\glossentrynameother] \cs{glossentrynameother}\marg{label}\marg{field} \end{definition} -This behaves just like \cs{glossentryname} (that is, it obeys -\catattr{glossname}, \catattr{glossnamefont} or \cs{glsnamefont} and uses the post-name -hook) but it uses the given \meta{field} instead of \gloskey{name}. -The \meta{field} argument must be the internal field name -(for example \texttt{desc} rather than \texttt{description}). -See the key to field mappings table in the \styfmt{glossaries} -user manual. +This behaves just like \cs{glossentryname} (that is, it obeys the +\catattr{glossname} attribute, uses either the \catattr{glossnamefont} +attribute or \cs{glsnamefont} to format the text, and uses the post-name hook) +but it uses the given \meta{field} instead of \gloskey{name}. The +\meta{field} argument must be the internal field name (for example +\texttt{desc} rather than \texttt{description}). See the key to +field mappings table in the \styfmt{glossaries} user manual. There is a hook after \ics{glossentryname} and \ics{Glossentryname}: @@ -3430,7 +3447,7 @@ the predefined styles provided by \styfmt{glossaries} that are missing \cs{glspostdescription}. \end{important} -\subsubsection{Number List} +\subsection{Number List} \label{sec:glosstylenumlist} The \gls{numberlist} is now placed inside the argument of @@ -3543,7 +3560,7 @@ doesn't display any differently from but it does make it easier to define your own custom list handler that can accommodate the ranges. -\subsubsection{The \styfmt{glossaries-extra-stylemods} Package} +\subsection{The \styfmt{glossaries-extra-stylemods} Package} \label{sec:stylemods} As from v1.02, \styfmt{glossaries-extra} now includes the package @@ -3581,6 +3598,8 @@ Remember to group the value if it contains any commas: \usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} \end{verbatim} +\paragraph{Inline Style} + Note that the \glostyle{inline} style is dealt with slightly differently. The original definition provided by the \sty{glossary-inline} package uses \cs{glspostdescription} at the @@ -3595,6 +3614,8 @@ that the modified \glostyle{inline} style isn't affected by the \pkgopt{nopostdot} option, but the post-description category hook can still be used. +\paragraph{Tabular Styles} + The \env{tabular}-like styles, such as \glostyle{long} are adjusted so that the \ics{ifglsnogroupskip} conditional (set with \pkgopt{nogroupskip}) is moved outside of the definition of @@ -3618,6 +3639,8 @@ For example: \renewcommand{\glsxtrprelocation}{\dotfill} \end{verbatim} +\paragraph{List Styles} + The \glostyle{list} styles use \begin{definition}[\DescribeMacro\glslistprelocation] \cs{glslistprelocation} @@ -3636,6 +3659,27 @@ is governed by: for the \glostyle{list} and \glostyle{altlist} styles (but not the \glostyle{listdotted} variations). +As from v1.47, the item is governed by: +\begin{definition}[\DescribeMacro\glslistitem] +\cs{glslistitem}\marg{label} +\end{definition} +The \glostyle{altlist} styles use: +\begin{definition}[\DescribeMacro\glsaltlistitem] +\cs{glsaltlistitem}\marg{label} +\end{definition} +which internally uses \cs{glslistitem}. +The header item (for the list styles that should the group title) is governed by: +\begin{definition}[\DescribeMacro\glslistgroupheaderitem] +\cs{glslistgroupheaderitem}\marg{group-label}\marg{header code} +\end{definition} +This ignores the \meta{group-label} by default and simply places the +second argument in the optional argument of \cs{item}. The +\meta{header code} is the formatted group title, possibly including +a hypertarget. The spacing after the group item is given by: +\begin{definition}[\DescribeMacro\glslistgroupafterheader] +\cs{glslistgroupafterheader} +\end{definition} + For just the \glostyle{list} style and its letter group variations (not the \glostyle{altlist} or \glostyle{listdotted} variations) the \gls{numberlist} for child entries is followed by @@ -7757,10 +7801,14 @@ The attribute may have one of the following values: \item \texttt{firstuc}: the first letter of the description will be converted to upper case (using \ics{Glsentrydesc}). -\item \texttt{title}: the description will be used in the argument of the -title casing command \ics{capitalisewords} (provided by -\sty{mfirstuc}). If you want to use a different command -you can redefine: +\item \texttt{title}: the description will be used in the argument +of the title casing command. If you have at least +\styfmt{glossaries} v4.48, the title casing is indirectly performed +by \cs{glscapitalisewords}, which defaults to \ics{capitalisewords} +(provided by \sty{mfirstuc}). You can either redefine +\cs{glscapitalisewords} if you want the change to also affect +\ics{glsentrytitlecase} or if you only want the change to apply to +the attribute case-changing then redefine: \begin{definition}[\DescribeMacro\glsxtrfieldtitlecasecs] \cs{glsxtrfieldtitlecasecs}\marg{phrase cs} \end{definition} @@ -7996,6 +8044,12 @@ This uses \cs{glssetcategoryattribute} with \cs{glscategory} to set the attribute. Note that this will affect all other entries that share this entry's category. +The above use local assignments so they can be placed inside a group +to limit their definition. As from v1.47, the value can be unset using: +\begin{definition}[\DescribeMacro\glsunsetcategoryattribute] +\cs{glsunsetcategoryattribute}\marg{category-label}\marg{attribute-label} +\end{definition} + You can fetch the value of an attribute for a particular category using: \begin{definition}[\DescribeMacro\glsgetcategoryattribute] @@ -9559,6 +9613,8 @@ This internally uses \cs{GlsXtrIfFieldNonZero} and will do \meta{false} if the field isn't set. Within \meta{true} and \meta{false} you can use \cs{glscurrentfieldvalue} to access the value. (It will be 0 in \meta{false} if the field isn't set.) +As from v1.47, there is also a starred version which uses +\cs{GlsXtrIfFieldNonZero*} (don't add grouping). A convenient shortcut for use in the \texttt{entry-type-aliases} @@ -11056,6 +11112,18 @@ This command isn't robust. There is also a version that uses \cs{glsxtredeffield}\marg{label}\marg{field}\meta{arguments}\marg{replacement text} \end{definition} +The following command was added to \styfmt{glossaries-extra} v1.47 +primarily for the convenience of \gls{bib2gls}: +\begin{definition}[\DescribeMacro\glsxtrapptocsvfield] +\cs{glsxtrapptocsvfield}\marg{label}\marg{field}\marg{value} +\end{definition} +There's no check for the existence of either the entry or the field. +If the entry identified by \meta{label} has the given field set then +this command will append a comma followed by \meta{value} to the +existing value, otherwise it will set the field to just +\meta{value}. This uses \cs{csdef} or \cs{csappto} so the effect can +be localised. + \begin{definition}[\DescribeMacro\gGlsXtrSetField] \cs{gGlsXtrSetField}\marg{label}\marg{field}\marg{value} \end{definition} @@ -11206,6 +11274,21 @@ accordingly. As from version 1.39, these numeric tests have starred versions. The unstarred versions add implicit grouping. The starred versions don't. +As from v1.47 there's a similar command: +\begin{definition}[\DescribeMacro\GlsXtrIfValueInFieldCsvList] +\cs{GlsXtrIfValueInFieldCsvList}\marg{label}\marg{field}\marg{value}\marg{true}\marg{false} +\end{definition} +This is essentially the opposite situation where the list is stored +in the given field and \meta{value} is the element to find in the +list. Again the unstarred versions add implicit grouping. Note that +the \meta{value} isn't expanded. If you need it to be fully expanded +before searching for it use: +\begin{definition}[\DescribeMacro\xGlsXtrIfValueInFieldCsvList] +\cs{xGlsXtrIfValueInFieldCsvList}\marg{label}\marg{field}\marg{value}\marg{true}\marg{false} +\end{definition} +(To add a value to a field containing a comma-separated list, use +\cs{glsxtrapptocsvfield}. To iterate over the field use \cs{glsxtrforcsvfield}.) + To test if the value is non-zero: \begin{definition}[\DescribeMacro{\GlsXtrIfFieldNonZero}] \cs{GlsXtrIfFieldNonZero}\marg{field}\marg{label}\marg{true}\marg{false} @@ -11342,7 +11425,10 @@ a user level command: which is just a synonym for \cs{@endfortrue}. The loop is performed within the true part of \cs{glsxtrifhasfield} -so scoping is automatically applied. +so scoping is automatically applied. If you don't want scoping use +\cs{glsxtrforcsvfield*} which will use \cs{glsxtrifhasfield*} +instead but take care if you nest these starred commands as +unexpected results can occur without the scoping. New to v1.42: \begin{definition}[\DescribeMacro\glsxtrfieldformatcsvlist] diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx index da86005507..ab396b83e7 100644 --- a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx +++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx @@ -1,10 +1,12 @@ %\iffalse % glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: -% -macrocode ".*\.tex" -% -macrocode ".*\.bib" -% -setambles ".*\.bib=>\nopreamble\nopostamble" +% -comment ".*\.tex" +% -comment ".*\.bib" +% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" +% -doc "glossaries-extra-codedoc.tex" % -section "chapter" +% -setambles ".*\.bib=>\nopreamble\nopostamble" % -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" @@ -13,13 +15,11 @@ % -src "glossary-topic.sty\Z=>glossary-topic.sty" % -src "(example-glossaries-.+\.tex)\Z=>\1" % -src "(example-glossaries-.+\.bib)\Z=>\1" -% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" +% -macrocode ".*\.tex" +% -macrocode ".*\.bib" % -author "Nicola Talbot" -% -doc "glossaries-extra-codedoc.tex" -% -comment ".*\.tex" -% -comment ".*\.bib" % glossaries-extra -% Created on 2021/9/22 14:44 +% Created on 2021/11/4 19:26 %\fi %\iffalse %<*package> @@ -142,7 +142,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \setcounter{IndexColumns}{2} -\CheckSum{27294} +\CheckSum{27468} \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.46: +\title{glossaries-extra.sty v1.47: documented code} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} -\date{2021-09-20} +\date{2021-11-04} \begin{document} \DocInput{glossaries-extra.dtx} @@ -233,7 +233,7 @@ Dickimaw Books\\ %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossaries-extra}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} % Requires \sty{xkeyval} to define package options. % \begin{macrocode} @@ -2645,7 +2645,17 @@ Dickimaw Books\\ %\cs{glsxtrforcsvfield}\marg{label}\marg{field}\marg{cs handler} %\end{definition} % \begin{macrocode} -\newcommand*{\glsxtrforcsvfield}[3]{% +\newcommand*{\glsxtrforcsvfield}{% + \@ifstar\s@glsxtrforcsvfield\@glsxtrforcsvfield +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtrforcsvfield} +%\changes{1.47}{2017-11-14}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@glsxtrforcsvfield}[3]{% \@glsxtrifhasfield{#2}{#1}% {% \let\glsxtrendfor\@endfortrue @@ -2656,6 +2666,21 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\s@glsxtrforcsvfield} +%\changes{1.47}{2017-11-14}{new} +%Starred version. +% \begin{macrocode} +\newcommand*{\s@glsxtrforcsvfield}[3]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \let\glsxtrendfor\@endfortrue + \@for\@glsxtr@label:=\glscurrentfieldvalue\do + {\expandafter#3\expandafter{\@glsxtr@label}}}% + {}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrfieldformatcsvlist} %\changes{1.42}{2020-02-03}{new} % \begin{macrocode} @@ -2711,6 +2736,91 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\GlsXtrIfValueInFieldCsvList} +%\changes{1.47}{2021-11-04}{new} +%\begin{definition} +%\cs{GlsXtrIfValueInFieldCsvList}\marg{label}\marg{field}\marg{value}\marg{true}\marg{false} +%\end{definition} +%Essentially the reverse. Tests if the given value is in the given +%field which should contain a comma-separated list. +% \begin{macrocode} +\newcommand*{\GlsXtrIfValueInFieldCsvList}{% + \@ifstar\s@GlsXtrIfValueInFieldCsvList\@GlsXtrIfValueInFieldCsvList +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfValueInFieldCsvList} +%\changes{1.47}{}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@GlsXtrIfValueInFieldCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfValueInFieldCsvList} +%\changes{1.47}{}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\s@GlsXtrIfValueInFieldCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \DTLifinlist{#3}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\xGlsXtrIfValueInFieldCsvList} +%\changes{1.47}{2021-11-04}{new} +%\begin{definition} +%\cs{xGlsXtrIfValueInFieldCsvList}\marg{label}\marg{field}\marg{value}\marg{true}\marg{false} +%\end{definition} +%As above but fully expand \meta{value}. +% \begin{macrocode} +\newcommand*{\xGlsXtrIfValueInFieldCsvList}{% + \@ifstar\s@xGlsXtrIfValueInFieldCsvList\@xGlsXtrIfValueInFieldCsvList +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@xGlsXtrIfValueInFieldCsvList} +%\changes{1.47}{}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@xGlsXtrIfValueInFieldCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \protected@edef\@gls@tmp{#3}% + \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@xGlsXtrIfValueInFieldCsvList} +%\changes{1.47}{}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\s@xGlsXtrIfValueInFieldCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \protected@edef\@gls@tmp{#3}% + \expandafter\DTLifinlist\expandafter{\@gls@tmp}{\glscurrentfieldvalue}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% % %\begin{macro}{\glsxtrifhasfield} %\changes{1.19}{2017-09-09}{new} @@ -2770,6 +2880,15 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\s@GlsXtrIfFieldNonZero} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand{\s@GlsXtrIfFieldNonZero}[4]{% + \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrIfFieldEqNum} %\changes{1.31}{2018-05-09}{new} %\begin{definition} @@ -2948,6 +3067,23 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrapptocsvfield} +%\changes{1.47}{2021-11-04}{new} +% Similar to the above but will append value with a leading comma if +% the field is already defined. This is used by \gls{bib2gls}. +% There's no check if the entry has been defined. (Because of the +% way that bib2gls's save-from-alias etc options are +% implemented, the entry may not have yet been written to the glstex +% file when this command is used.) +% \begin{macrocode} +\newcommand*{\glsxtrapptocsvfield}[3]{% + \ifcsdef{glo@\glsdetoklabel{#1}@#2}% + {\csappto{glo@\glsdetoklabel{#1}@#2}{,#3}}% + {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrsetfieldifexists} %\changes{1.12}{2017-02-03}{new} % \begin{macrocode} @@ -3687,7 +3823,10 @@ Dickimaw Books\\ {% \ifcsdef{glolist@#2} {% - \cseappto{glolist@#2}{#1,}% +% \end{macrocode} +%\changes{1.47}{2021-11-04}{replaced \cs{cseappto} with \cs{protected@cseappto}} +% \begin{macrocode} + \protected@cseappto{glolist@#2}{#1,}% }% {% \glsxtrundefaction{Glossary type `#2' doesn't exist}{}% @@ -4082,6 +4221,45 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsseelist} +%\changes{1.47}{2021-11-04}{redefined} +%Redefine to make \cs{glsseelist} more flexible. +% \begin{macrocode} +\renewrobustcmd*{\glsseelist}[1]{% + \let\@gls@dolast\relax + \let\@gls@donext\relax + \let\@glsseeitem\glsseefirstitem + \let\@glsseelastsep\glsseelastsep + \@for\@gls@thislabel:=#1\do{% + \ifx\@xfor@nextelement\@nnil + \@gls@dolast + \else + \@gls@donext + \fi + \expandafter\@glsseeitem\expandafter{\@gls@thislabel}% + \let\@gls@dolast\@glsseelastsep + \let\@gls@donext\glsseesep + \let\@glsseeitem\glsseeitem + \let\@glsseelastsep\glsseelastoxfordsep + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsseefirstitem} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand*{\glsseefirstitem}{\glsseeitem} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsseelastoxfordsep} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand*{\glsseelastoxfordsep}{\glsseelastsep} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\seealsoname} %\changes{1.16}{2017-06-15}{new} %\changes{1.42}{2020-02-03}{add check for \cs{alsoname}} @@ -6975,15 +7153,19 @@ Dickimaw Books\\ %\cs{ifglshasfield}} %\changes{1.46}{2021-09-18}{changed to use starred version of %\cs{glsxtrifhasfield}} +%\changes{1.47}{2021-11-04}{changed to use \cs{ifcsvoid}} +%The change made in v1.46 to remove the grouping has had the +%knock-on effect of redefining \cs{glscurrentfieldvalue}, which may +%be a problem, so v1.47 has changed this to use \cs{ifcsvoid}. % \begin{macrocode} \newcommand*{\@glsxtrsetaliasnoindex}{% - \s@glsxtrifhasfield{alias}{\glslabel}% + \ifcsvoid{glo@\glsdetoklabel{\glslabel}@alias}% + {}% {% \let\glsxtrindexaliased\@glsxtrindexaliased \glsxtrsetaliasnoindex \let\glsxtrindexaliased\@no@glsxtrindexaliased }% - {}% } % \end{macrocode} %\end{macro} @@ -13915,6 +14097,19 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsunsetcategoryattribute} +%\begin{definition} +%\cs{glsunsetcategoryattribute}\marg{category}\marg{attribute-label} +%\end{definition} +%Unsets the given attribute for the given category. +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand*{\glsunsetcategoryattribute}[2]{% + \csundef{@glsxtr@categoryattr@@#1@#2}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glshascategoryattribute} %\begin{definition} %\cs{glshascategoryattribute}\marg{category}\marg{attribute-label}\marg{true}\marg{false} @@ -14261,10 +14456,19 @@ defined}{}% %\begin{macro}{\glsxtrfieldtitlecasecs} %The command used by \cs{glsxtrfieldtitlecase}. May be %redefined to use a different command, for example, -%\cs{xcapitalisefmtwords}. +%\cs{xcapitalisefmtwords}. Check for \cs{glscapitalisewords}, which +%was added to \sty{glossaries} v4.48. %\changes{1.07}{2016-08-15}{new} +%\changes{1.47}{2021-11-04}{added check for \cs{glscapitalisewords}} % \begin{macrocode} -\newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}} +\ifdef\glscapitalisewords +{ + \newcommand*{\glsxtrfieldtitlecasecs}[1]{% + \expandafter\glscapitalisewords\expandafter{#1}} +} +{ + \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}} +} % \end{macrocode} %\end{macro} % @@ -25858,7 +26062,7 @@ defined}{}% %automatically loaded by the record option. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-bib2gls}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossaries-extra-bib2gls}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} %Provide convenient shortcut commands for predefined glossary types. %\begin{macro}{\printunsrtacronyms} @@ -25956,10 +26160,29 @@ defined}{}% % %\begin{macro}{\GlsXtrIfHasNonZeroChildCount} %\changes{1.31}{2018-05-09}{new} +%\changes{1.47}{2021-11-04}{added starred version} %For use with \app{bib2gls}'s \texttt{save-child-count} resource option. % \begin{macrocode} -\newcommand*{\GlsXtrIfHasNonZeroChildCount}[3]{% - \GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% +\newcommand*{\GlsXtrIfHasNonZeroChildCount}{% + \@ifstar\s@GlsXtrIfHasNonZeroChildCount\@GlsXtrIfHasNonZeroChildCount +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@GlsXtrIfHasNonZeroChildCount} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand*{\@GlsXtrIfHasNonZeroChildCount}[3]{% + \@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfHasNonZeroChildCount} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} +\newcommand*{\s@GlsXtrIfHasNonZeroChildCount}[3]{% + \s@GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}% } % \end{macrocode} %\end{macro} @@ -28950,7 +29173,7 @@ defined}{}% % First identify package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossaries-extra-stylemods}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} % Provide package options to automatically load required predefined % styles. The simplest method is to just test for the existence of @@ -29108,17 +29331,62 @@ defined}{}% \newcommand{\glslistgroupskip}{\nobreak\indexspace\nobreak} % \end{macrocode} %\end{macro} +%\begin{macro}{\glslistitem} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} + \newcommand{\glslistitem}[1]{% + \item[\glsentryitem{#1}% + \glstarget{#1}{\glossentryname{#1}}]% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistinit} +%\changes{1.47}{2021-11-04}{new} +%This command was only added to \sty{glossary-list} v4.48 so provide +%it if it hasn't been defined: +% \begin{macrocode} + \providecommand{\glslistinit}{% + \ifdef\GetTitleStringDisableCommands + {% + \GetTitleStringSetup{expand}% + \GetTitleStringDisableCommands{% + \let\glsentryitem\@gobble + \let\glstarget\@secondoftwo + \let\glossentryname\glslistexpandedname + \let\glslistgroupheaderfmt\@firstofone + \let\glsgetgrouptitle\@firstofone + \let\glsnavhypertarget\@secondoftwo + \let\glsnavigation\relax + }% + }% + {}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glslistexpandedname} +%\changes{1.47}{2021-11-04}{new} +%This command was only added to \sty{glossary-list} v4.48 so provide +%it if it hasn't been defined. The original definition uses +%\cs{glsunexpandedfieldvalue} which +%was added to \sty{glossaries} v4.48 (so if \cs{glslistexpandedname} +%hasn't been defined then neither will \cs{glsunexpandedfieldvalue}). +% \begin{macrocode} + \providecommand{\glslistexpandedname}[1]{% + \ifcsname glo@\glsdetoklabel{#1}@name\endcsname + \expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\expandafter\endcsname + \fi + } +% \end{macrocode} +%\end{macro} %Redefine \glostyle{list} to use these commands. % \begin{macrocode} \renewglossarystyle{list}{% \renewenvironment{theglossary}% - {\begin{description}}{\end{description}}% + {\glslistinit\begin{description}}{\end{description}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossentry}[2]{% - \item[\glsentryitem{##1}% - \glstarget{##1}{\glossentryname{##1}}] - \glslistdesc{##1}\glslistprelocation ##2}% + \glslistitem{##1}\glslistdesc{##1}\glslistprelocation ##2}% \renewcommand*{\subglossentry}[3]{% \glssubentryitem{##2}% \glstarget{##2}{\strut}\space @@ -29134,12 +29402,21 @@ defined}{}% % \begin{macrocode} \ifdef{\@glsstyle@altlist} {% +% \end{macrocode} +%\begin{macro}{\glsaltlistitem} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} + \newcommand{\glsaltlistitem}[1]{% + \glslistitem{#1}% + \mbox{}\par\nobreak\@afterheading + } +% \end{macrocode} +%\end{macro} +% \begin{macrocode} \renewglossarystyle{altlist}{% \setglossarystyle{list}% \renewcommand*{\glossentry}[2]{% - \item[\glsentryitem{##1}% - \glstarget{##1}{\glossentryname{##1}}]% - \mbox{}\par\nobreak\@afterheading + \glsaltlistitem{##1}% \glslistdesc{##1}\glslistprelocation ##2}% \renewcommand{\subglossentry}[3]{% \par @@ -29157,11 +29434,22 @@ defined}{}% % \begin{macrocode} \ifdef{\@glsstyle@listgroup} {% +% \end{macrocode} +%\begin{macro}{\glslistgroupafterheader} +%\changes{1.47}{2021-11-04}{new} +% \begin{macrocode} + \newcommand{\glslistgroupheaderitem}[2]{\item[{#2}]} + \newcommand{\glslistgroupafterheader}{% + \mbox{}\par\nobreak\@afterheading + } +% \end{macrocode} +%\end{macro} +% \begin{macrocode} \renewglossarystyle{listgroup}{% \setglossarystyle{list}% \renewcommand*{\glsgroupheading}[1]{% - \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% - \mbox{}\par\nobreak\@afterheading + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}% + \glslistgroupafterheader }% } } @@ -29178,9 +29466,9 @@ defined}{}% \renewcommand*{\glossaryheader}{% \glslistnavigationitem{\glsnavigation}}% \renewcommand*{\glsgroupheading}[1]{% - \item[\glslistgroupheaderfmt - {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% - \mbox{}\par\nobreak\@afterheading + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}% + \glslistgroupafterheader }% } } @@ -29195,8 +29483,9 @@ defined}{}% \renewglossarystyle{altlistgroup}{% \setglossarystyle{altlist}% \renewcommand*{\glsgroupheading}[1]{% - \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]% - \mbox{}\par\nobreak\@afterheading + \glslistgroupheaderitem{##1}% + {\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}}% + \glslistgroupafterheader }% } } @@ -29213,9 +29502,9 @@ defined}{}% \renewcommand*{\glossaryheader}{% \glslistnavigationitem{\glsnavigation}}% \renewcommand*{\glsgroupheading}[1]{% - \item[\glslistgroupheaderfmt - {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]% - \mbox{}\par\nobreak\@afterheading + \glslistgroupheaderitem{##1}{\glslistgroupheaderfmt + {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}}% + \glslistgroupafterheader }% } } @@ -31313,7 +31602,7 @@ defined}{}% %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-bookindex}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossary-bookindex}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -31809,7 +32098,7 @@ defined}{}% %Provides additional long styles. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-longextra}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossary-longextra}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -33238,7 +33527,7 @@ defined}{}% %topic. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-topic}[2021/09/20 v1.46 (NLCT)] +\ProvidesPackage{glossary-topic}[2021/11/04 v1.47 (NLCT)] % \end{macrocode} %Load required package. % \begin{macrocode} diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.ins b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins index 298b3991a9..6d4c0b5af0 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 2021/9/22 14:44 +% glossaries-extra.ins generated using makedtx version 1.2 2021/11/4 19:26 \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 b1299241f2..81926e9872 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 2400e7c85c..d974807f34 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 198218b782..0bea7cb6bf 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 37562e0818..8ba7efd9ec 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 ff21c49fcb..e1d1a7be66 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 257379eeb2..60abb87795 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 2d3943e797..572ebbf372 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 b04fd8815e..f40b2e8f10 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 5cd51b3fe3..e91785ef7d 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 67ac0e9685..43c5e09980 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 d26fcb43ec..8380be24c4 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 3a355e13db..7a25e03517 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 975fc7d22f..e5fdd6f70a 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 d3f6f7e928..8f061bc74a 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 5dbe569182..4e7fd4443c 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 4cbd165528..4afa0fdc92 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 02c66a6935..5a8bd6baed 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 93864f595a..020488d68e 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 a858c01203..7ab0baa2b9 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 5e45a1b41e..7fa6f0f5dd 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 1d0ede157d..1bd6fa74d2 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 fce7ed81a7..961163131f 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 82cb9cd64a..57f0e8baa2 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 7af132fb1c..b51d270b69 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 229d7922cd..99fc9070f3 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 d5fa7b0a80..c296eeee6d 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 93e99f7519..2cfdb26476 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 5e063f838a..008790ca74 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 283df168fc..d536da609d 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 a601bd8488..e9dacdcae7 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 91f073b81b..bcad3ac548 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 286372c39d..bacf60aa65 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 566b741cea..6f2012eb5f 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 33ac172987..fb9e7da3b8 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 f93e89c9d1..bd64f3dd0c 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 eca5f53942..891831b69c 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 800f944c73..948f4d3170 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 a4733fb80f..6f02c039a1 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 b3d2a6d6ec..cf8dcac8c4 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 f59d5c8939..c1a601708c 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 929979828e..9de78b4add 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 b16334edb1..3f801123a7 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 472db7f7e5..a02d5967a7 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 e4f92a66ca..12a902f0c3 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 d101c737ab..242663d3f3 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 6d3589f719..2ba946c08b 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 c55c48ed61..278ac37b4a 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 3d229abd18..176eecb494 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/srdp-mathematik/README.txt b/macros/latex/contrib/srdp-mathematik/README.txt index af803dd1eb..3990c159a1 100644 --- a/macros/latex/contrib/srdp-mathematik/README.txt +++ b/macros/latex/contrib/srdp-mathematik/README.txt @@ -2,9 +2,9 @@ __________________________________ The srdp-mathematik package - v1.9.0 + v1.9.1 - 2021/03/29 + 2021/11/04 ___________________________________ Maintainer: Christoph Weberndorfer diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf index 81b5cbc449..d929c29c1d 100644 Binary files a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf and b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf differ diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty index 09bf9fd8ab..c4d5f03b18 100644 --- a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty +++ b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty @@ -10,7 +10,7 @@ % \NeedsTeXFormat{LaTeX2e}[1996/12/26] -\ProvidesPackage{srdp-mathematik}[2021/03/29 v1.9.0 Standard-Schularbeitsformate] +\ProvidesPackage{srdp-mathematik}[2021/11/04 v1.9.1 Standard-Schularbeitsformate] \usepackage{color} @@ -30,7 +30,7 @@ \usepackage{framed} \usepackage{array} \usepackage{tabularx} -\usepackage{tabu} +\usepackage{srdp-tables} \usepackage{environ} \usepackage{cancel} \usepackage{spreadtab} @@ -173,20 +173,23 @@ \makeatletter \NewEnviron{beispiel}[2][\unskip]{\begin{minipage}[t]{0.88\textwidth} -\addtocounter{number}{1} -\begin{enumerate} - \item[\thenumber.] \BODY -\end{enumerate} - - -\end{minipage} -\begin{minipage}[t]{0.1\textwidth} \raggedleft \small{\_\_\_/#2}\addtocounter{punkte}{#2}\\ -\antwort{\footnotesize #1 \normalsize}\end{minipage} -\vspace{\baselineskip} - -} + \addtocounter{number}{1} + \begin{enumerate} + \item[\thenumber.] {\BODY} + \end{enumerate} + + + \end{minipage} + \begin{minipage}[t]{0.1\textwidth} \raggedleft \small{\_\_\_/#2\addtocounter{punkte}{#2}\\\ifthenelse{\equal{#1}{\string 1/2}} + {$\left[{}^1{\mskip -5mu/\mskip -3mu}_2\right]$} + {\antwort{\footnotesize #1 \normalsize}}} + \end{minipage} + \vspace{\baselineskip} + + } +\newcommand{\pkte}[2][]{\hfill[0\,/\,\ifthenelse{\equal{#1}{\string 1/2}}{${}^1{\mskip -5mu/\mskip -3mu}_2$\,/\,}{}#2]} % % @@ -195,6 +198,7 @@ %%%%%%%%%%%%% Teil 2 Überschrift %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % + \newcommand{\TEILZWEI}{\newpage \ifodd\value{page}\thispagestyle{empty}\hbox{}\newpage\else \fi \begin{flushright} \small Name: \rule{7cm}{0.4pt} \normalsize @@ -247,7 +251,7 @@ \renewcommand*{\item}{\setcounter{subitemcounter}{0}\itemalt} \subsubsection{Aufgabenstellung:}% \begin{enumerate}[a),leftmargin=0pt] -\item \BODY +\item {\BODY} \end{enumerate}% \let\item\itemalt} @@ -255,7 +259,7 @@ \renewcommand*{\item}{\setcounter{subitemcounter}{0}\itemalt} \antwort{%% \begin{enumerate}[a),leftmargin=0pt] -\item \BODY +\item {\BODY} \end{enumerate}}% \let\item\itemalt} @@ -892,11 +896,12 @@ Complete the following sentence by putting a cross next to one of the given poss \newcommand\tfmultiplechoice[3][5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 \bgroup \jeroen@set@keys{#3}%% -\setcounter{counter}{0} +\setcounter{counter}{0}\setcounter{acheck}{0}\setcounter{bcheck}{0}\setcounter{ccheck}{0}\setcounter{dcheck}{0}\setcounter{echeck}{0}\setcounter{fcheck}{0}\setcounter{gcheck}{0}\setcounter{hcheck}{0}\setcounter{icheck}{0} \centering \tabulinesep=3mm \pgfmathsetseed{\theZufall} \declarenumlist{group}{1}{#1} +\pgfmathrandomitem\z{group}\setcounter{antworta}{\z}\prunelist{group} \ifthenelse{\numexpr#1 > 1}{\pgfmathrandomitem\z{group}\setcounter{antwortb}{\z}\prunelist{group}}{} \ifthenelse{\numexpr#1 > 2}{\pgfmathrandomitem\z{group}\setcounter{antwortc}{\z}\prunelist{group}}{} \ifthenelse{\numexpr#1 > 3}{\pgfmathrandomitem\z{group}\setcounter{antwortd}{\z}\prunelist{group}}{} diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex index 1df75d3560..582be22a65 100644 --- a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex +++ b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex @@ -55,7 +55,7 @@ hidelinks \vfill -\Huge The \textit{srdp-mathematik} package v1.9.0\\[1cm] +\Huge The \textit{srdp-mathematik} package v1.9.1\\[1cm] Documentation \\ [1cm] @@ -120,112 +120,62 @@ In diesen Bereich kommt das Beispiel. Dabei kann ein beliebig langer Text (ohne Seitenumbruch) geschrieben werden. Die Spalte mit den Punkten wird dabei immer frei gehalten. Aber auch mathematische Formeln sind möglich: $\frac{x^2+x+5}{\sqrt{x^3}}$ - - \end{beispiel} - - -\vspace{1cm} - -\subsubsection{\texttt{\textbackslash begin\{langesbeispiel\} \ldots\ \textbackslash end\{langesbeispiel\}}} - -Die \texttt{langesbeispiel}-Umgebung dient ebenso zur Erstellung eines Beispiels, funktioniert analog, erlaubt aber im Gegensatz zur \texttt{beispiel}-Umgebung Seitenumbrüche. Auch lange Beispiele werden weiterführend nummeriert. - -\leer - -\textsc{Eingabe:} -\begin{verbatim} -\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS - -In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur -beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei -Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind -mathematische Formeln möglich: -$\frac{x^2+x+5}{\sqrt{x^3}}$. - -\end{langesbeispiel} - -\end{verbatim} - - -\textsc{Ausgabe:} - -\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS - -In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind mathematische Formeln möglich: -$\frac{x^2+x+5}{\sqrt{x^3}}$. - -\end{langesbeispiel} - - - -\subsubsection{\texttt{\textbackslash notenschluessel}} - -Werden für alle Beispiele die \texttt{beispiel}- oder die \texttt{langesbeispiel}-Umgebung verwendet, wird die Gesamtpunktezahl sowie der Notenschlüssel automatisch berechnet. Die Werte in Klammer geben dabei den prozentualen Notenschlüssel vor und können beliebig variiert werden: - -\vspace{0.4cm} -\setcounter{punkte}{48} - - -\vspace{0.3cm} - -\textsc{Ausgabe:} -\notenschluessel{0.91}{0.8}{0.64}{0.5} -\vfill - -Der Befehl \texttt{notenschluessel} bietet auch die Eingabe von drei unterschiedlichen Optionen, die alle einzeln oder gemeinsam verwendet werden können. Wichtig: Wird Option 3 benötigt (jedoch Option 1 \& 2 nicht) müssen die Optionen 1 \& 2 jeweils mit leerer Klammer \texttt{[]} angegeben werden. - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 1: Halbe Punkte-Schritte} - -Durch die Option 1 \texttt{[1/2]} wird die Anzeige auf halbe Punkte-Schritten geändert. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} - - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 2: Prozentanzeige} - -Die Option 2 \texttt{[prozent]} ergänzt die erste Zeile des Notenschlüssel mit einer prozentuellen Angabe. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} - -\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 3: Standard der Mittelschule} - -Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entsprechend des Standards der Mittelschule. - -\textsc{Eingabe:} -\begin{verbatim} -\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} -\end{verbatim} - -\textsc{Ausgabe:} -\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} - -%\paragraph{Notenschlüssel - Ohne Prozentangabe} -%Analog zum \texttt{notenschluessel} funktioniert auch der Befehl \texttt{notenschluesselop}. Es wird dabei jedoch die Prozentspalte nicht angezeigt. +% +%% +%\vspace{1cm} +% +%\subsubsection{\texttt{\textbackslash begin\{langesbeispiel\} \ldots\ \textbackslash end\{langesbeispiel\}}} +% +%Die \texttt{langesbeispiel}-Umgebung dient ebenso zur Erstellung eines Beispiels, funktioniert analog, erlaubt aber im Gegensatz zur \texttt{beispiel}-Umgebung Seitenumbrüche. Auch lange Beispiele werden weiterführend nummeriert. +% +%\leer % %\textsc{Eingabe:} %\begin{verbatim} -%\notenschluesselop{0.91}{0.8}{0.64}{0.5} +%\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS +% +%In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur +%beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei +%Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind +%mathematische Formeln möglich: +%$\frac{x^2+x+5}{\sqrt{x^3}}$. +% +%\end{langesbeispiel} +% %\end{verbatim} + + +%\textsc{Ausgabe:} +% +%\begin{langesbeispiel} \item[8] %PUNKTE DES BEISPIELS +% +%In diesen Bereich kommt das Beispiel und funktioniert praktisch analog zur beispiel-Umgebung. Ist das Beispiel jedoch länger als eine Seite (z.B bei Typ-2 Aufgaben), werden Seitenumbrüche automatisch gemacht. Auch hier sind mathematische Formeln möglich: +%$\frac{x^2+x+5}{\sqrt{x^3}}$. +% +%\end{langesbeispiel} +% +% +% +%\subsubsection{\texttt{\textbackslash notenschluessel}} +% +%Werden für alle Beispiele die \texttt{beispiel}- oder die \texttt{langesbeispiel}-Umgebung verwendet, wird die Gesamtpunktezahl sowie der Notenschlüssel automatisch berechnet. Die Werte in Klammer geben dabei den prozentualen Notenschlüssel vor und können beliebig variiert werden: +% +%\vspace{0.4cm} +%\setcounter{punkte}{48} +% +% +%\vspace{0.3cm} % %\textsc{Ausgabe:} %\notenschluessel{0.91}{0.8}{0.64}{0.5} - -%\paragraph{Notenschlüssel - Option: [1/2]} +%\vfill +% +%Der Befehl \texttt{notenschluessel} bietet auch die Eingabe von drei unterschiedlichen Optionen, die alle einzeln oder gemeinsam verwendet werden können. Wichtig: Wird Option 3 benötigt (jedoch Option 1 \& 2 nicht) müssen die Optionen 1 \& 2 jeweils mit leerer Klammer \texttt{[]} angegeben werden. % -%Die Option 1/2 ermöglicht die Anzeige des Notenschlüssel (mit oder ohne Prozentspalte) mit halben Punkten. +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 1: Halbe Punkte-Schritte} +% +%Durch die Option 1 \texttt{[1/2]} wird die Anzeige auf halbe Punkte-Schritten geändert. % %\textsc{Eingabe:} %\begin{verbatim} @@ -234,930 +184,978 @@ Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entspr % %\textsc{Ausgabe:} %\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} - -\subsubsection{\texttt{\textbackslash beurteilungsraster}} - -Der Befehl \texttt{beurteilungsraster} entspricht der aktuellen Vorgabe der Beurteilung der standardisierten Reifeprüfung (Stand 2019). Dabei müssen die Punkte für Teil 1, Ausgleichspunkte und Teil 2 angegeben werden. Die in Klammer angegebenen Werte entsprechen der bei der Reifeprüfung verwendeten prozentuellen Notenverteilung, können jedoch jederzeit verändert werden. \leer - - -\textsc{Eingabe:} -\begin{verbatim} -\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel - T1={24}, % Punkte im Teil 1 - AP={4}, % Ausgleichspunkte aus Teil 2 - T2={20}, % Punkte im Teil 2 - } - -\end{verbatim} -\textsc{Ausgabe:}\leer - -siehe nächste Seite \newpage - - -\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel - T1={24}, % Punkte im Teil 1 - AP={4}, % Ausgleichspunkte aus Teil 2 - T2={20}, % Punkte im Teil 2 - } - -\newpage - -\subsection{Paketoption -- Lösungseingabe: \texttt{[solution\_on/off]}} - -Es besteht die Möglichkeit, die Lösung in der erstellten \texttt{tex}-Datei zu implementieren und diese bei Bedarf in der \texttt{PDF}-Datei ein- bzw. auszublenden. Um diese Funktion nutzen zu können, muss die \texttt{solution\_on/off} Option im \texttt{srdp-mathematik}-Paket geladen werden. Diese kann durch hinzufügen durch "`\texttt{solution\_on}"' bzw. "`\texttt{solution\_off}"' aktiviert bzw. deaktiviert werden. Also: - -\begin{verbatim} -\usepackage[solution_on]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[solution_off]{srdp-mathematik} -\end{verbatim} - - -Die korrekte Lösungseingabe der vorformatierten Typ-1-Aufgaben wird bei den entsprechenden Befehlen direkt erklärt. Unabhängig davon, gibt es die Möglichkeit mithilfe des \texttt{antwort}-Befehls, beliebige Abschnitte als \textit{Antwort} zu deklarieren. (verwendeter counter: \texttt{Antworten=0, 1}) - - -\subsubsection{\texttt{\textbackslash antwort}} -Für offene Antworten kann der \texttt{\textbackslash antwort\{\}}-Befehl verwendet werden. Darin können Textpassagen, mathematische Formeln oder Grafiken angegeben werden, die ausschließlich bei aktivierter Lösung (\texttt{[solution\_on]}) und in \textcolor[rgb]{1,0,0}{rot} angegeben werden. \leer - - -\subsubsection*{\texttt{\textbackslash antwort} -- Option: Anzeige nur bei \texttt{solution\_off}} - -Der \texttt{antwort}-Befehl erlaubt ein optionales Argument. Es können dadurch zusätzliche Textpassagen angegeben werden, die \underline{ausschließlich} angezeigt werden, wenn die Lösungsanzeige deaktiviert (\texttt{[solution\_off])} ist. Das heißt: \leer - -\textsc{Eingabe:} -\begin{verbatim} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn 'solution_off' gewählt -wird.] -{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn -'solution_on' eingestellt ist.} -\end{verbatim} - - -\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_off]\{srdp-mathematik\}} eingestellt ist: \\ - -\setcounter{Antworten}{0} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] -{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn -\textttt{'solution\_on'} eingestellt ist.} -\leer - -\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_on]\{srdp-mathematik\}} eingestellt ist:\\ - -\setcounter{Antworten}{1} -\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] -{Dies ist die notwendige Eingabe und wird in rot angezeigt und nur wenn -\texttt{'solution\_on'} eingestellt ist.} - - -\subsection{Paketoption -- Erstellung von Gruppen: \texttt{[random=0,1,2,\ldots]}} -Das \texttt{srdp-mathematik}-Paket ermöglicht auch die automatische Erstellung von Gruppen für Schularbeiten, durch Vertauschung der Antwortmöglichkeiten aller Typ-1-Aufgaben. Dazu kann die \texttt{random}-Option im \texttt{srdp-mathematik}-Paket eingebunden geladen werden. Also: - -\begin{verbatim} -\usepackage[random=0]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[random=1]{srdp-mathematik} -\end{verbatim} - -usw. - -Die Zahl "`0"' bedeutet dabei, dass keine Vertauschung stattfindet und somit die Antwortmöglichkeiten in der Reihenfolge angezeigt werden, in der sie in der \texttt{tex}-Datei eingegeben wurden. - -Durch das Ersetzen der Zahl "`0"' durch die Zahlen $1, 2, 3, \ldots$ (und anschließendem Kompilieren) werden die Antwortmöglichkeiten bei \textbf{allen} Typ1-Formaten der Datei in einer zufälligen Reihenfolge vertauscht. Es können somit in kurzer Zeit mehrere Gruppen der selben Schularbeit erstellt werden. Die eingegebenen Lösungen werden gleichermaßen übernommen. \leer - -Die Erstellung der Gruppen ist dabei reproduzierbar. Die Reihenfolge der Antwortmöglichkeiten einer Gruppe bleibt daher immer gleich. Mithilfe des Befehls \texttt{\textbackslash Gruppe} kann die Gruppennummer innerhalb der \texttt{PDF}-Datei (z.B. am Deckblatt) angezeigt werden. (verwendeter counter: \texttt{Zufall=0, 1, 2, \ldots}) - - - -\subsection{Paketoption -- Informationseingabe: \texttt{[info\_on/off]}} -Es ist darüber hinaus möglich zusätzliche Informationen (Erläuterungen, Hilfestellungen, \ldots) hinzuzufügen und einzublenden. Dazu kann die Option \texttt{info\_on/off} im \texttt{srdp-mathematik}-Paket eingebunden werden. Die Infos werden in \textcolor[rgb]{0,0,1}{blau} angegeben und nur dann angezeigt, wenn die Option \texttt{info\_on} gewählt wurde (verwendeter counter: \texttt{info=0,1}). Also: - - -\begin{verbatim} -\usepackage[info_on]{srdp-mathematik} -\end{verbatim} - -oder - -\begin{verbatim} -\usepackage[info_off]{srdp-mathematik} -\end{verbatim} - - -\subsection{Weitere allgemeine Befehle} -Außerdem gibt es noch weitere Befehle, die die Formatierung erleichtern. - -\subsubsection{\texttt{\textbackslash leer}} -Eine Leerzeile, etwa zwischen zwei Beispielen. \\ -(Nach dem Befehl \texttt{\textbackslash leer} muss in der \texttt{.tex}-Datei ein Leerzeile eingefügt werden!) - -\leer - -\subsubsection{\texttt{\textbackslash meinlr}} -\begin{verbatim} -\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, -geht er automatisch in der nächsten Zeile weiter ohne auf die andere -Seite über zu gehen.}{Dieser Teil steht rechts.} -\end{verbatim} -Teilt die Seite in zwei gleich große Seiten. - -\leer - -\textsc{Ausgabe:} - -\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, -geht er automatisch in der nächsten Zeile weiter ohne auf die andere -Seite über zu gehen.}{Dieser Teil steht rechts.} - - -\subsubsection*{\texttt{\textbackslash meinlr} -- Option: Variable Spaltenbreiten} - -Der Befehl \texttt{\textbackslash meinlr} erlaubt durch die optionale Eingabe eine Abänderung der beiden Spaltenbreiten. Durch die Eingabe zwischen ca. -0.3 und 0.3 kann die Spaltenmitte nach links oder rechts verschoben und somit die Spaltenbreite variiert werden. - -\textsc{Eingabe:} - -\begin{verbatim} -\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} -{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, -die Spaltenbreiten nach Belieben zu variieren.} -\end{verbatim} - -\textsc{Ausgabe:} - -\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} -{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, -die Spaltenbreiten nach Belieben zu variieren.} - -\leer - -\subsubsection{\texttt{\textbackslash meinlcr}} -\begin{verbatim} -\meinlcr{Text ganz links}{Text in der Mitte. Auch hier sind längere Texte -möglich.}{Text auf der rechten Seite.} -\end{verbatim} -Teilt die Seite in drei gleich große Teile - -\leer - -\textsc{Ausgabe:} - -\meinlcr{Text ganz links. Was passiert hier wenn dieser Teil länger ist?}{Text in der Mitte. Auch hier sind längere Texte möglich.}{Text auf der rechten Seite.} - - -\subsubsection{\texttt{\textbackslash dint} und \texttt{\textbackslash dx}} -Die Befehle \texttt{\textbackslash dint} und \texttt{\textbackslash dx} vereinfacht die Eingabe eines Integrals (bestimmt oder unbestimmt).\leer - -\textsc{Eingabe:} - -\begin{verbatim} -$\dint_1^3 x^2 \dx$ -\end{verbatim} - -\textsc{Ausgabe:}\leer - -$\dint_1^3 x^2 \dx$ -\leer - -Wird eine Variable ungleich $x$ integriert, kann diese mithilfe der Option \texttt{\textbackslash{dx[Variable]}} dargestellt werden.\leer - -\textsc{Eingabe:} - -\begin{verbatim} -$\dint t^2 \dx[t]$ -\end{verbatim} - -\textsc{Ausgabe:}\leer - -$\dint t^2 \dx[t]$ - -\subsubsection{\texttt{\textbackslash degre}} - -Der \texttt{\textbackslash degre} Befehl stellt das Einheitszeichen für Grad dar. Er kann im Text- und im Mathematik-Modus verwendet werden. - -\textsc{Eingabe:} - -\begin{verbatim} -Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) -\end{verbatim} - -\textsc{Ausgabe:}\leer - -Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) - - -\section{Typ-1-Aufgaben} - -Das \texttt{srdp-mathematik}-Paket ermöglicht die Verwendung vorgefertigter Aufgabenformate, die bei der österreichischen, standardisierten Reifeprüfung Anwendung finden. - - -\subsection{\texttt{\textbackslash multiplechoice}} - -Dieser Befehl liefert eine vollständige Formatierung für eine Multiplechoice-Aufgabe. Die Anzahl der Antwortmöglichkeiten kann dabei frei (max. 9) gewählt werden. Als Standard ist dabei das Format mit fünf Antwortmöglichkeiten eingestellt. \leer - -Die korrekten Antworten der Multiplechoice-Aufgabe werden dabei bei A1, A2, \ldots, A5 angegeben. Sollte beispielsweise die 1., die 4. und 5. Antwortmöglichkeit korrekt sein, muss je eine "`0"' durch 1, 4, und 5 ersetzt werden -- Die Reihenfolge dabei ist nicht relevant. Also: \\ - -\textsc{Eingabe:} - -\begin{verbatim} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} - -\textsc{Ausgabe:}\vspace{0.2cm} - -\begin{minipage}{8cm} -\setcounter{Antworten}{0} -mit \texttt{\textbackslash setcounter\{Antworten\}\{0\}}: -\begin{center} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{center} -\end{minipage} \hfill -\begin{minipage}{8cm} -mit \texttt{\textbackslash setcounter\{Antworten\}\{1\}}: -\setcounter{Antworten}{1} -\begin{center} -\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Hier}, %1. Antwortmoeglichkeit - L2={werden}, %2. Antwortmoeglichkeit - L3={die möglichen}, %3. Antwortmoeglichkeit - L4={Antworten}, %4. Antwortmoeglichkeit - L5={eingetragen}, %5. Antwortmoeglichkeit - L6={}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=1, % 1. Antwort - A2=4, % 2. Antwort - A3=5, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{center} -\end{minipage} - -\leer - -Die Zahl in eckigen Klammern gibt dabei die gewünschte Anzahl von Antwortmöglichkeiten an. Somit sind beispielsweise drei oder sieben Antwortmöglichkeiten einstellbar. \leer - -Wichtig zu erwähnen ist dabei, dass ausschließlich die Zahl in eckigen Klammern die Anzahl der Antwortmöglichkeiten angibt. Werden anschließend zu wenige oder zu viele Antwortmöglichkeiten angegeben, werden Leerzeilen erzeugt oder die Eingabe wird in der Ausgabe nicht berücksichtigt. - -\leer - -\textsc{Eingabe:} \setcounter{Antworten}{0} -\begin{verbatim} -\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Durch die 3}, %1. Antwortmoeglichkeit - L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit - L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} -\leer - -\textsc{Ausgabe:}\leer - -\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Durch die 3}, %1. Antwortmoeglichkeit - L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit - L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\textsc{Eingabe:} - -\begin{verbatim} -\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Das Gleiche}, %1. Antwort - L2={passiert beim Eintragen von}, %2. Antwort - L3={sieben Möglichkeiten.}, %3. Antwort - L4={Dabei werden immer 7 Antworten}, %4. Antwort - L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort - L6={sind oder nicht!}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={}, %9. Antwort - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } -\end{verbatim} - -\leer - -\textsc{Ausgabe:} - -\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={Das Gleiche}, %1. Antwort - L2={passiert beim Eintragen von}, %2. Antwort - L3={sieben Möglichkeiten.}, %3. Antwort - L4={Dabei werden immer 7 Antworten}, %4. Antwort - L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort - L6={sind oder nicht!}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={}, %9. Antwort - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\newpage - -Die Eingabe in eckiger Klammer ist dabei optional. Wird sie nicht angegeben, wird der Standard von 5 angenommen. - -\leer - - - - -\textsc{Eingabe:} -\begin{verbatim} -\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={In diesem}, %1. Antwort - L2={Fall wird der}, %2. Antwort - L3={Standard von}, %3. Antwort - L4={fünf Antwortmöglichkeiten}, %4. Antwort - L5={angenommen}, %5. Antwort - L6={}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={} %9. Antwort - } -\end{verbatim} - -\textsc{Ausgabe:} - -\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={In diesem}, %1. Antwort - L2={Fall wird der}, %2. Antwort - L3={Standard von}, %3. Antwort - L4={fünf Antwortmöglichkeiten}, %4. Antwort - L5={angenommen}, %5. Antwort - L6={}, %6. Antwort - L7={}, %7. Antwort - L8={}, %8. Antwort - L9={} %9. Antwort - } - -\leer -\newpage - -\subsubsection{Add-on: \texttt{\textbackslash langmultiplechoice}} - -Der \texttt{langmultiplechoice}-Befehl ist analog zum \texttt{multiplechoice}-Befehl zu verwenden. Der Unterschied besteht darin, dass Antwortmöglichkeiten auf zwei Spalten aufgeteilt werden. Dies ist vor allem dann sinnvoll, wenn Geogebra-Grafiken importiert werden, um eine bessere Lesbarkeit zu ermöglichen. - -\langmultiplechoice[6]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 - L1={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %1. Antwortmoeglichkeit - L2={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %2. Antwortmoeglichkeit - L3={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$B$}} -\end{scriptsize} -\end{pspicture*}}}, %3. Antwortmoeglichkeit - L4={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$A$}} -\end{scriptsize} -\end{pspicture*}}}, %4. Antwortmoeglichkeit - L5={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$C$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$B$}} -\end{scriptsize} -\end{pspicture*}}}, %5. Antwortmoeglichkeit - L6={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}}}, %6. Antwortmoeglichkeit - L7={}, %7. Antwortmoeglichkeit - L8={}, %8. Antwortmoeglichkeit - L9={}, %9. Antwortmoeglichkeit - %% LOESUNG: %% - A1=0, % 1. Antwort - A2=0, % 2. Antwort - A3=0, % 3. Antwort - A4=0, % 4. Antwort - A5=0, % 5. Antwort - } - - -\newpage - -\subsection{\texttt{\textbackslash lueckentext}} -Dieser Befehl dient zur Erstellung eines Lückentexts, basierend auf dem standardisierten Format des BIFIE. Der einleitenden Satz: \textit{"`Ergänze die Textlücken im folgenden Satz durch Ankreuzen der jeweils richtigen Satzteile so, dass eine mathematisch korrekte Aussage entsteht!"'} wird als Standard angenommen und automatisch angegeben. Im Bereich \texttt{\textbackslash text=\{\}} wird der Lückentext angegeben, wobei die Lücken immer mit \texttt{\textbackslash gap} eingefügt werden und automatisch nummeriert werden. Analog zu den Lösungsangaben der Multiplechoice-Aufgabe, werden die korrekten Antworten bei A1, A2 oder A3 mit 1,2 oder 3 angegeben. (hier: Lösung links: 3 und rechts: 2) -\vspace{0.35cm} - -\textsc{Eingabe:} -\begin{verbatim} -\lueckentext{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={Hier schreibt}, %1.Moeglichkeit links - L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links - L3={für die erste Lücke}, %3.Moeglichkeit links - R1={und hier jene}, %1.Moeglichkeit rechts - R2={für die Möglichkeiten}, %2.Moeglichkeit rechts - R3={der zweiten Lücke. Theoretisch könnte dieser Text - auch zweizeilig sein.}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=3, % Antwort links - A2=2 % Antwort rechts - } -\end{verbatim} - -\textsc{Ausgabe:} -\lueckentext{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={Hier schreibt}, %1.Moeglichkeit links - L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links - L3={für die erste Lücke}, %3.Moeglichkeit links - R1={und hier jene}, %1.Moeglichkeit rechts - R2={für die Möglichkeiten}, %2.Moeglichkeit rechts - R3={der zweiten Lücke. Theoretisch könnte dieser Text - auch mehrzeilig sein.}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=3, % Antwort links - A2=2 % Antwort rechts - } - - -\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Variable Breiten der Boxen} - -Der \texttt{lueckentext}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt:\leer - -\textsc{Eingabe:} - -\begin{verbatim} -\lueckentext[0.25]{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={In manchen Fällen sind die Antworten einer Lücke}, - %1.Moeglichkeit links - L2={viel länger als die der zweite. In diesem Fall kann man}, - %2.Moeglichkeit links - L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, - %3.Moeglichkeit links - R1={Sehr}, %1.Moeglichkeit rechts - R2={kurze}, %2.Moeglichkeit rechts - R3={Antworten}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } -\end{verbatim} - -\begin{minipage}{1.0\textwidth} -\textsc{Ausgabe:} - - -\lueckentext[0.25]{ - text={Hier wird der Text geschrieben. Die Lücke eins hat dabei -die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap - L1={In manchen Fällen sind die Antworten einer Lücke}, %1.Moeglichkeit links - L2={viel länger als die der zweite. In diesem Fall kann man}, %2.Moeglichkeit links - L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, %3.Moeglichkeit links - R1={Sehr}, %1.Moeglichkeit rechts - R2={kurze}, %2.Moeglichkeit rechts - R3={Antworten}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } - -\end{minipage} - -Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben -werden. - -\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Englischer Lückentext} -Der Befehl \texttt{englueckentext} ist analog zum \texttt{lueckentext}-Befehl zu verwenden. Jedoch wird der als Standard angenommene, einleitende Satz bei Lückentextaufgaben in Englisch angezeigt. - -\textsc{Eingabe:} -\begin{verbatim} -\englueckentext{ - text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken - \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap - L1={Auch}, %1.Moeglichkeit links - L2={der}, %2.Moeglichkeit links - L3={Rest}, %3.Moeglichkeit links - R1={wird}, %1.Moeglichkeit rechts - R2={gleich}, %2.Moeglichkeit rechts - R3={eingegeben}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } -\end{verbatim} - -\textsc{Ausgabe:} -\englueckentext{ - text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap - L1={Auch}, %1.Moeglichkeit links - L2={der}, %2.Moeglichkeit links - L3={Rest}, %3.Moeglichkeit links - R1={wird}, %1.Moeglichkeit rechts - R2={gleich}, %2.Moeglichkeit rechts - R3={eingegeben}, %3.Moeglichkeit rechts - %% LOESUNG: %% - A1=1, % Antwort links - A2=3 % Antwort rechts - } - -\subsection{\texttt{\textbackslash zuordnen}} -Dieser Befehl dient zum Erstellen des Zuordnungsformats von vier aus sechs Möglichkeiten. -Die korrekten Antworten können hier frei als Buchstaben eingegeben werden. (hier: F, C, A, D) - -\leer - -\textsc{Eingabe:} -\begin{verbatim} -\zuordnen{ - R1={Hier sind die vier}, % Response 1 - R2={Antworten, zu}, % Response 2 - R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 - R4={zuzuordnen sind}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier trägt}, %Moeglichkeit A - B={man den Text}, %Moeglichkeit B - C={oder die Formeln}, %Moeglichkeit C - D={für die sechs}, %Moeglichkeit D - E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E - F={ein.}, %Moeglichkeit F - %% LOESUNG: %% - A1={F}, % 1. richtige Zuordnung - A2={C}, % 2. richtige Zuordnung - A3={A}, % 3. richtige Zuordnung - A4={D}, % 4. richtige Zuordnung - } -\end{verbatim} -\leer - -\textsc{Ausgabe:} - -\zuordnen{ - R1={Hier sind die vier}, % Response 1 - R2={Antworten, zu}, % Response 2 - R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 - R4={zuzuordnen sind}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier trägt}, %Moeglichkeit A - B={man den Text}, %Moeglichkeit B - C={oder die Formeln}, %Moeglichkeit C - D={für die sechs}, %Moeglichkeit D - E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E - F={ein.}, %Moeglichkeit F - %% LOESUNG: %% - A1={F}, % 1. richtige Zuordnung - A2={C}, % 2. richtige Zuordnung - A3={A}, % 3. richtige Zuordnung - A4={D}, % 4. richtige Zuordnung - } - -\subsubsection{\texttt{\textbackslash zuordnen} -- Option: Variable Breiten der Boxen} - -Der \texttt{zuordnen}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt: - -\textsc{Eingabe:} -\begin{small} -\begin{verbatim} -\zuordnen[0.25]{ -R1={Dabei wird die linke Box vergrößert.}, % Response 1 - R2={Dies dient vor allem dazu,}, % Response 2 - R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 - R4={nur ganz wenig. Wird die [ ] nicht angegeben dann wird der Standardwert - 0 angenommen.}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier}, %Moeglichkeit A - B={sind}, %Moeglichkeit B - C={eher}, %Moeglichkeit C - D={kurze}, %Moeglichkeit D - E={Antworten}, %Moeglichkeit E - F={möglich}, %Moeglichkeit F - %% LOESUNG: %% - A1={}, % 1. richtige Zuordnung - A2={}, % 2. richtige Zuordnung - A3={}, % 3. richtige Zuordnung - A4={}, % 4. richtige Zuordnung - } -\end{verbatim} - - - -\textsc{Ausgabe:} - -\zuordnen[0.25]{ - R1={Dabei wird die linke Box vergrößert.}, % Response 1 - R2={Dies dient vor allem dazu,}, % Response 2 - R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 - R4={nur ganz wenig. Wird die $[~]$ nicht angegeben dann wird der Standardwert 0 angenommen.}, % Response 4 - %% Moegliche Zuordnungen: %% - A={Hier}, %Moeglichkeit A - B={sind}, %Moeglichkeit B - C={eher}, %Moeglichkeit C - D={kurze}, %Moeglichkeit D - E={Antworten}, %Moeglichkeit E - F={möglich}, %Moeglichkeit F - %% LOESUNG: %% - A1={}, % 1. richtige Zuordnung - A2={}, % 2. richtige Zuordnung - A3={}, % 3. richtige Zuordnung - A4={}, % 4. richtige Zuordnung - } -\end{small} - -Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben werden. - - -\section{Typ-2-Aufgaben} -Um die Struktur der Teil-2-Aufgaben ähnlich jener bei der standardisierten Reifeprüfung einhalten zu können, beinhaltet das Paket einige Befehle, die die Erstellung von Typ-2-Aufagben erleichtern. - -\subsection{\texttt{\textbackslash begin\{aufgabenstellung\} \ldots\ \textbackslash end\{aufgabenstellung\}}} -Typ-2-Aufgaben sollten innerhalb einer Prüfung mithilfe der \texttt{langesbeispiel}-Umgebung eingegeben werden, um die volle Funktionalität (wie \texttt{notenschluessel}) des Pakets zu ermöglichen. Der einleitenden Aufgabentext kann dann eingegeben werden. Für die Eingabe der Aufgabenstellung kann dann die \texttt{aufgabenstellung}-Umgebung verwendet werden.\leer - -\subsubsection{\texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}}} -Innerhalb dieser Umgebung können dann mithilfe von \texttt{\textbackslash item} (nummeriert mit a), b) ,c), \ldots) und \texttt{\textbackslash Subitem\{\}} (nummeriert mit 1), 2), \ldots) die jeweiligen Items und Subitems der Aufgabe eingegeben werden. \leer - -\subsubsection{Ausgleichspunkte -- \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}}} -Um die notwendigen Ausgleichspunkte in den Typ-2-Aufgaben zu markieren, können die Befehle \texttt{item} und \texttt{Subitem} durch \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}} ersetzt werden. Dabei wird vor den geschriebenen Text noch ein \fbox{A} eingefügt -- die Nummerierung wird aber wie gewohnt fortgesetzt. - -\subsection{\texttt{\textbackslash begin\{loesung\} \ldots\ \textbackslash end\{loesung\}}} -Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter{subitemcounter}{0}}.\leer - -Eine vollständige Typ-2-Aufgabe könnte also wie folgt aussehen: - -\textsc{Eingabe:} - -\begin{verbatim} -\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS -Hier steht der einleitende Text der Typ-2-Aufgabe. - -\begin{aufgabenstellung} -\item Hier steht der Aufgabentext des ersten Items. - -\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 - -\end{aufgabenstellung} - -\begin{loesung} -\item \subsection{Lösungserwartung:} - -\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 -\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 - -\setcounter{subitemcounter}{0} -\subsection{Lösungsschlüssel:} - -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt2 - -\end{loesung} - -\end{langesbeispiel} -\end{verbatim} - - -\textsc{Ausgabe:} -\setcounter{Antworten}{1} -\setcounter{secnumdepth}{-1} -\setcounter{number}{0} -\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS -Hier steht der einleitende Text der Typ-2-Aufgabe. - -\addtocontents{toc}{\setcounter{tocdepth}{-10}} -\begin{aufgabenstellung} -\item Hier steht der Aufgabentext des ersten Items. - -\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 -\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 - -\end{aufgabenstellung} - -\begin{loesung} -\item \subsection*{Lösungserwartung:} - -\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 -\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 - -\setcounter{subitemcounter}{0} -\subsection*{Lösungsschlüssel:} - -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt1 -\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt2 - -\end{loesung} - -\end{langesbeispiel} -\addtocontents{toc}{\setcounter{tocdepth}{1}} - - - -\section{Einfügen von GeoGebra-Grafiken} - -Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können. -\leer - -\begin{enumerate} - \item Grafik in Geogebra zeichnen - \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots - \item Parameter einstellen - \item \fbox{Erzeuge PSTricks} drücken - \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren. - - \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich) - - \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden: - - \begin{verbatim} - \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt} - \end{verbatim} - - Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert. - -\end{enumerate} - -\meinlr{ -\centering -\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*} -} -{\centering -\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} -\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} -\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) -\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) -\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) -\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) -\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) -\begin{scriptsize} -\psdots[dotstyle=*,linecolor=blue](1.29,2.88) -\rput[bl](1.37,3){\blue{$A$}} -\psdots[dotstyle=*,linecolor=blue](0.56,0.67) -\rput[bl](0.63,0.79){\blue{$B$}} -\psdots[dotstyle=*,linecolor=blue](3.62,1.04) -\rput[bl](3.7,1.16){\blue{$C$}} -\end{scriptsize} -\end{pspicture*}} -} -\leer - - -\centering Kopie des PSTricks-Exports von Geogebra \\ - (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\}) +% +% +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 2: Prozentanzeige} +% +%Die Option 2 \texttt{[prozent]} ergänzt die erste Zeile des Notenschlüssel mit einer prozentuellen Angabe. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\notenschluessel[][prozent]{0.91}{0.8}{0.64}{0.5} +% +%\subsubsection*{\texttt{\textbackslash notenschluessel} -- Option 3: Standard der Mittelschule} +% +%Die option 3 \texttt{ms} ermöglicht die Darstellung des Notenschlüssels entsprechend des Standards der Mittelschule. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\notenschluessel[][][ms]{0.91}{0.8}{0.64}{0.5} +% +%%\paragraph{Notenschlüssel - Ohne Prozentangabe} +%%Analog zum \texttt{notenschluessel} funktioniert auch der Befehl \texttt{notenschluesselop}. Es wird dabei jedoch die Prozentspalte nicht angezeigt. +%% +%%\textsc{Eingabe:} +%%\begin{verbatim} +%%\notenschluesselop{0.91}{0.8}{0.64}{0.5} +%%\end{verbatim} +%% +%%\textsc{Ausgabe:} +%%\notenschluessel{0.91}{0.8}{0.64}{0.5} +% +%%\paragraph{Notenschlüssel - Option: [1/2]} +%% +%%Die Option 1/2 ermöglicht die Anzeige des Notenschlüssel (mit oder ohne Prozentspalte) mit halben Punkten. +%% +%%\textsc{Eingabe:} +%%\begin{verbatim} +%%\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} +%%\end{verbatim} +%% +%%\textsc{Ausgabe:} +%%\notenschluessel[1/2]{0.91}{0.8}{0.64}{0.5} +% +%\subsubsection{\texttt{\textbackslash beurteilungsraster}} +% +%Der Befehl \texttt{beurteilungsraster} entspricht der aktuellen Vorgabe der Beurteilung der standardisierten Reifeprüfung (Stand 2019). Dabei müssen die Punkte für Teil 1, Ausgleichspunkte und Teil 2 angegeben werden. Die in Klammer angegebenen Werte entsprechen der bei der Reifeprüfung verwendeten prozentuellen Notenverteilung, können jedoch jederzeit verändert werden. \leer +% +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel +% T1={24}, % Punkte im Teil 1 +% AP={4}, % Ausgleichspunkte aus Teil 2 +% T2={20}, % Punkte im Teil 2 +% } +% +%\end{verbatim} +%\textsc{Ausgabe:}\leer +% +%siehe nächste Seite \newpage +% +% +%\beurteilungsraster{0.85}{0.68}{0.5}{1/3}{ % Prozentschluessel +% T1={24}, % Punkte im Teil 1 +% AP={4}, % Ausgleichspunkte aus Teil 2 +% T2={20}, % Punkte im Teil 2 +% } +% +%\newpage +% +%\subsection{Paketoption -- Lösungseingabe: \texttt{[solution\_on/off]}} +% +%Es besteht die Möglichkeit, die Lösung in der erstellten \texttt{tex}-Datei zu implementieren und diese bei Bedarf in der \texttt{PDF}-Datei ein- bzw. auszublenden. Um diese Funktion nutzen zu können, muss die \texttt{solution\_on/off} Option im \texttt{srdp-mathematik}-Paket geladen werden. Diese kann durch hinzufügen durch "`\texttt{solution\_on}"' bzw. "`\texttt{solution\_off}"' aktiviert bzw. deaktiviert werden. Also: +% +%\begin{verbatim} +%\usepackage[solution_on]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[solution_off]{srdp-mathematik} +%\end{verbatim} +% +% +%Die korrekte Lösungseingabe der vorformatierten Typ-1-Aufgaben wird bei den entsprechenden Befehlen direkt erklärt. Unabhängig davon, gibt es die Möglichkeit mithilfe des \texttt{antwort}-Befehls, beliebige Abschnitte als \textit{Antwort} zu deklarieren. (verwendeter counter: \texttt{Antworten=0, 1}) +% +% +%\subsubsection{\texttt{\textbackslash antwort}} +%Für offene Antworten kann der \texttt{\textbackslash antwort\{\}}-Befehl verwendet werden. Darin können Textpassagen, mathematische Formeln oder Grafiken angegeben werden, die ausschließlich bei aktivierter Lösung (\texttt{[solution\_on]}) und in \textcolor[rgb]{1,0,0}{rot} angegeben werden. \leer +% +% +%\subsubsection*{\texttt{\textbackslash antwort} -- Option: Anzeige nur bei \texttt{solution\_off}} +% +%Der \texttt{antwort}-Befehl erlaubt ein optionales Argument. Es können dadurch zusätzliche Textpassagen angegeben werden, die \underline{ausschließlich} angezeigt werden, wenn die Lösungsanzeige deaktiviert (\texttt{[solution\_off])} ist. Das heißt: \leer +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn 'solution_off' gewählt +%wird.] +%{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn +%'solution_on' eingestellt ist.} +%\end{verbatim} +% +% +%\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_off]\{srdp-mathematik\}} eingestellt ist: \\ +% +%\setcounter{Antworten}{0} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] +%{Dies ist die notwendige Angabe und wird in rot angezeigt und nur wenn +%\textttt{'solution\_on'} eingestellt ist.} +%\leer +% +%\textsc{Ausgabe}, wenn \texttt{\textbackslash usepackage[solution\_on]\{srdp-mathematik\}} eingestellt ist:\\ +% +%\setcounter{Antworten}{1} +%\antwort[Optionale Eingabe, die nur angezeigt wird, wenn \texttt{'solution\_off'} gewählt wird.] +%{Dies ist die notwendige Eingabe und wird in rot angezeigt und nur wenn +%\texttt{'solution\_on'} eingestellt ist.} +% +% +%\subsection{Paketoption -- Erstellung von Gruppen: \texttt{[random=0,1,2,\ldots]}} +%Das \texttt{srdp-mathematik}-Paket ermöglicht auch die automatische Erstellung von Gruppen für Schularbeiten, durch Vertauschung der Antwortmöglichkeiten aller Typ-1-Aufgaben. Dazu kann die \texttt{random}-Option im \texttt{srdp-mathematik}-Paket eingebunden geladen werden. Also: +% +%\begin{verbatim} +%\usepackage[random=0]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[random=1]{srdp-mathematik} +%\end{verbatim} +% +%usw. +% +%Die Zahl "`0"' bedeutet dabei, dass keine Vertauschung stattfindet und somit die Antwortmöglichkeiten in der Reihenfolge angezeigt werden, in der sie in der \texttt{tex}-Datei eingegeben wurden. +% +%Durch das Ersetzen der Zahl "`0"' durch die Zahlen $1, 2, 3, \ldots$ (und anschließendem Kompilieren) werden die Antwortmöglichkeiten bei \textbf{allen} Typ1-Formaten der Datei in einer zufälligen Reihenfolge vertauscht. Es können somit in kurzer Zeit mehrere Gruppen der selben Schularbeit erstellt werden. Die eingegebenen Lösungen werden gleichermaßen übernommen. \leer +% +%Die Erstellung der Gruppen ist dabei reproduzierbar. Die Reihenfolge der Antwortmöglichkeiten einer Gruppe bleibt daher immer gleich. Mithilfe des Befehls \texttt{\textbackslash Gruppe} kann die Gruppennummer innerhalb der \texttt{PDF}-Datei (z.B. am Deckblatt) angezeigt werden. (verwendeter counter: \texttt{Zufall=0, 1, 2, \ldots}) +% +% +% +%\subsection{Paketoption -- Informationseingabe: \texttt{[info\_on/off]}} +%Es ist darüber hinaus möglich zusätzliche Informationen (Erläuterungen, Hilfestellungen, \ldots) hinzuzufügen und einzublenden. Dazu kann die Option \texttt{info\_on/off} im \texttt{srdp-mathematik}-Paket eingebunden werden. Die Infos werden in \textcolor[rgb]{0,0,1}{blau} angegeben und nur dann angezeigt, wenn die Option \texttt{info\_on} gewählt wurde (verwendeter counter: \texttt{info=0,1}). Also: +% +% +%\begin{verbatim} +%\usepackage[info_on]{srdp-mathematik} +%\end{verbatim} +% +%oder +% +%\begin{verbatim} +%\usepackage[info_off]{srdp-mathematik} +%\end{verbatim} +% +% +%\subsection{Weitere allgemeine Befehle} +%Außerdem gibt es noch weitere Befehle, die die Formatierung erleichtern. +% +%\subsubsection{\texttt{\textbackslash leer}} +%Eine Leerzeile, etwa zwischen zwei Beispielen. \\ +%(Nach dem Befehl \texttt{\textbackslash leer} muss in der \texttt{.tex}-Datei ein Leerzeile eingefügt werden!) +% +%\leer +% +%\subsubsection{\texttt{\textbackslash meinlr}} +%\begin{verbatim} +%\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, +%geht er automatisch in der nächsten Zeile weiter ohne auf die andere +%Seite über zu gehen.}{Dieser Teil steht rechts.} +%\end{verbatim} +%Teilt die Seite in zwei gleich große Seiten. +% +%\leer +% +%\textsc{Ausgabe:} +% +%\meinlr{Dieser Teil steht links. Wenn dieser Text länger sein sollte, +%geht er automatisch in der nächsten Zeile weiter ohne auf die andere +%Seite über zu gehen.}{Dieser Teil steht rechts.} +% +% +%\subsubsection*{\texttt{\textbackslash meinlr} -- Option: Variable Spaltenbreiten} +% +%Der Befehl \texttt{\textbackslash meinlr} erlaubt durch die optionale Eingabe eine Abänderung der beiden Spaltenbreiten. Durch die Eingabe zwischen ca. -0.3 und 0.3 kann die Spaltenmitte nach links oder rechts verschoben und somit die Spaltenbreite variiert werden. +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} +%{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, +%die Spaltenbreiten nach Belieben zu variieren.} +%\end{verbatim} +% +%\textsc{Ausgabe:} +% +%\meinlr[-0.15]{Mit einem negativen Wert wird die linke Spalte verkleinert.} +%{Die rechte Spalte wird damit automatisch vergrößert. Dadurch ist es möglich, +%die Spaltenbreiten nach Belieben zu variieren.} +% +%\leer +% +%\subsubsection{\texttt{\textbackslash meinlcr}} +%\begin{verbatim} +%\meinlcr{Text ganz links}{Text in der Mitte. Auch hier sind längere Texte +%möglich.}{Text auf der rechten Seite.} +%\end{verbatim} +%Teilt die Seite in drei gleich große Teile +% +%\leer +% +%\textsc{Ausgabe:} +% +%\meinlcr{Text ganz links. Was passiert hier wenn dieser Teil länger ist?}{Text in der Mitte. Auch hier sind längere Texte möglich.}{Text auf der rechten Seite.} +% +% +%\subsubsection{\texttt{\textbackslash dint} und \texttt{\textbackslash dx}} +%Die Befehle \texttt{\textbackslash dint} und \texttt{\textbackslash dx} vereinfacht die Eingabe eines Integrals (bestimmt oder unbestimmt).\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%$\dint_1^3 x^2 \dx$ +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%$\dint_1^3 x^2 \dx$ +%\leer +% +%Wird eine Variable ungleich $x$ integriert, kann diese mithilfe der Option \texttt{\textbackslash{dx[Variable]}} dargestellt werden.\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%$\dint t^2 \dx[t]$ +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%$\dint t^2 \dx[t]$ +% +%\subsubsection{\texttt{\textbackslash degre}} +% +%Der \texttt{\textbackslash degre} Befehl stellt das Einheitszeichen für Grad dar. Er kann im Text- und im Mathematik-Modus verwendet werden. +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) +%\end{verbatim} +% +%\textsc{Ausgabe:}\leer +% +%Der Winkel Alpha ist 30\degre. ($\alpha = 30 \degre$) +% +% +%\section{Typ-1-Aufgaben} +% +%Das \texttt{srdp-mathematik}-Paket ermöglicht die Verwendung vorgefertigter Aufgabenformate, die bei der österreichischen, standardisierten Reifeprüfung Anwendung finden. +% +% +%\subsection{\texttt{\textbackslash multiplechoice}} +% +%Dieser Befehl liefert eine vollständige Formatierung für eine Multiplechoice-Aufgabe. Die Anzahl der Antwortmöglichkeiten kann dabei frei (max. 9) gewählt werden. Als Standard ist dabei das Format mit fünf Antwortmöglichkeiten eingestellt. \leer +% +%Die korrekten Antworten der Multiplechoice-Aufgabe werden dabei bei A1, A2, \ldots, A5 angegeben. Sollte beispielsweise die 1., die 4. und 5. Antwortmöglichkeit korrekt sein, muss je eine "`0"' durch 1, 4, und 5 ersetzt werden -- Die Reihenfolge dabei ist nicht relevant. Also: \\ +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +% +%\textsc{Ausgabe:}\vspace{0.2cm} +% +%\begin{minipage}{8cm} +%\setcounter{Antworten}{0} +%mit \texttt{\textbackslash setcounter\{Antworten\}\{0\}}: +%\begin{center} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{center} +%\end{minipage} \hfill +%\begin{minipage}{8cm} +%mit \texttt{\textbackslash setcounter\{Antworten\}\{1\}}: +%\setcounter{Antworten}{1} +%\begin{center} +%\multiplechoice[5]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Hier}, %1. Antwortmoeglichkeit +% L2={werden}, %2. Antwortmoeglichkeit +% L3={die möglichen}, %3. Antwortmoeglichkeit +% L4={Antworten}, %4. Antwortmoeglichkeit +% L5={eingetragen}, %5. Antwortmoeglichkeit +% L6={}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=1, % 1. Antwort +% A2=4, % 2. Antwort +% A3=5, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{center} +%\end{minipage} +% +%\leer +% +%Die Zahl in eckigen Klammern gibt dabei die gewünschte Anzahl von Antwortmöglichkeiten an. Somit sind beispielsweise drei oder sieben Antwortmöglichkeiten einstellbar. \leer +% +%Wichtig zu erwähnen ist dabei, dass ausschließlich die Zahl in eckigen Klammern die Anzahl der Antwortmöglichkeiten angibt. Werden anschließend zu wenige oder zu viele Antwortmöglichkeiten angegeben, werden Leerzeilen erzeugt oder die Eingabe wird in der Ausgabe nicht berücksichtigt. +% +%\leer +% +%\textsc{Eingabe:} \setcounter{Antworten}{0} +%\begin{verbatim} +%\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Durch die 3}, %1. Antwortmoeglichkeit +% L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit +% L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +%\leer +% +%\textsc{Ausgabe:}\leer +% +%\multiplechoice[3]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Durch die 3}, %1. Antwortmoeglichkeit +% L2={in eckigen Klammern, werden}, %2. Antwortmoeglichkeit +% L3={3 Antworten angezeigt}, %3. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Das Gleiche}, %1. Antwort +% L2={passiert beim Eintragen von}, %2. Antwort +% L3={sieben Möglichkeiten.}, %3. Antwort +% L4={Dabei werden immer 7 Antworten}, %4. Antwort +% L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort +% L6={sind oder nicht!}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={}, %9. Antwort +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +%\end{verbatim} +% +%\leer +% +%\textsc{Ausgabe:} +% +%\multiplechoice[7]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={Das Gleiche}, %1. Antwort +% L2={passiert beim Eintragen von}, %2. Antwort +% L3={sieben Möglichkeiten.}, %3. Antwort +% L4={Dabei werden immer 7 Antworten}, %4. Antwort +% L5={angezeigt, unabhängig ob sie ausgefüllt}, %5. Antwort +% L6={sind oder nicht!}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={}, %9. Antwort +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\newpage +% +%Die Eingabe in eckiger Klammer ist dabei optional. Wird sie nicht angegeben, wird der Standard von 5 angenommen. +% +%\leer +% +% +% +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={In diesem}, %1. Antwort +% L2={Fall wird der}, %2. Antwort +% L3={Standard von}, %3. Antwort +% L4={fünf Antwortmöglichkeiten}, %4. Antwort +% L5={angenommen}, %5. Antwort +% L6={}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={} %9. Antwort +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +% +%\multiplechoice{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={In diesem}, %1. Antwort +% L2={Fall wird der}, %2. Antwort +% L3={Standard von}, %3. Antwort +% L4={fünf Antwortmöglichkeiten}, %4. Antwort +% L5={angenommen}, %5. Antwort +% L6={}, %6. Antwort +% L7={}, %7. Antwort +% L8={}, %8. Antwort +% L9={} %9. Antwort +% } +% +%\leer +%\newpage +% +%\subsubsection{Add-on: \texttt{\textbackslash langmultiplechoice}} +% +%Der \texttt{langmultiplechoice}-Befehl ist analog zum \texttt{multiplechoice}-Befehl zu verwenden. Der Unterschied besteht darin, dass Antwortmöglichkeiten auf zwei Spalten aufgeteilt werden. Dies ist vor allem dann sinnvoll, wenn Geogebra-Grafiken importiert werden, um eine bessere Lesbarkeit zu ermöglichen. +% +%\langmultiplechoice[6]{ %Anzahl der Antwortmoeglichkeiten, Standard: 5 +% L1={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %1. Antwortmoeglichkeit +% L2={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %2. Antwortmoeglichkeit +% L3={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$B$}} +%\end{scriptsize} +%\end{pspicture*}}}, %3. Antwortmoeglichkeit +% L4={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$A$}} +%\end{scriptsize} +%\end{pspicture*}}}, %4. Antwortmoeglichkeit +% L5={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$C$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$B$}} +%\end{scriptsize} +%\end{pspicture*}}}, %5. Antwortmoeglichkeit +% L6={\resizebox{0.7\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}}}, %6. Antwortmoeglichkeit +% L7={}, %7. Antwortmoeglichkeit +% L8={}, %8. Antwortmoeglichkeit +% L9={}, %9. Antwortmoeglichkeit +% %% LOESUNG: %% +% A1=0, % 1. Antwort +% A2=0, % 2. Antwort +% A3=0, % 3. Antwort +% A4=0, % 4. Antwort +% A5=0, % 5. Antwort +% } +% +% +%\newpage +% +%\subsection{\texttt{\textbackslash lueckentext}} +%Dieser Befehl dient zur Erstellung eines Lückentexts, basierend auf dem standardisierten Format des BIFIE. Der einleitenden Satz: \textit{"`Ergänze die Textlücken im folgenden Satz durch Ankreuzen der jeweils richtigen Satzteile so, dass eine mathematisch korrekte Aussage entsteht!"'} wird als Standard angenommen und automatisch angegeben. Im Bereich \texttt{\textbackslash text=\{\}} wird der Lückentext angegeben, wobei die Lücken immer mit \texttt{\textbackslash gap} eingefügt werden und automatisch nummeriert werden. Analog zu den Lösungsangaben der Multiplechoice-Aufgabe, werden die korrekten Antworten bei A1, A2 oder A3 mit 1,2 oder 3 angegeben. (hier: Lösung links: 3 und rechts: 2) +%\vspace{0.35cm} +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\lueckentext{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={Hier schreibt}, %1.Moeglichkeit links +% L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links +% L3={für die erste Lücke}, %3.Moeglichkeit links +% R1={und hier jene}, %1.Moeglichkeit rechts +% R2={für die Möglichkeiten}, %2.Moeglichkeit rechts +% R3={der zweiten Lücke. Theoretisch könnte dieser Text +% auch zweizeilig sein.}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=3, % Antwort links +% A2=2 % Antwort rechts +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\lueckentext{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={Hier schreibt}, %1.Moeglichkeit links +% L2={man die Antwortmöglichkeiten}, %2.Moeglichkeit links +% L3={für die erste Lücke}, %3.Moeglichkeit links +% R1={und hier jene}, %1.Moeglichkeit rechts +% R2={für die Möglichkeiten}, %2.Moeglichkeit rechts +% R3={der zweiten Lücke. Theoretisch könnte dieser Text +% auch mehrzeilig sein.}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=3, % Antwort links +% A2=2 % Antwort rechts +% } +% +% +%\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Variable Breiten der Boxen} +% +%Der \texttt{lueckentext}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt:\leer +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\lueckentext[0.25]{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={In manchen Fällen sind die Antworten einer Lücke}, +% %1.Moeglichkeit links +% L2={viel länger als die der zweite. In diesem Fall kann man}, +% %2.Moeglichkeit links +% L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, +% %3.Moeglichkeit links +% R1={Sehr}, %1.Moeglichkeit rechts +% R2={kurze}, %2.Moeglichkeit rechts +% R3={Antworten}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +%\end{verbatim} +% +%\begin{minipage}{1.0\textwidth} +%\textsc{Ausgabe:} +% +% +%\lueckentext[0.25]{ +% text={Hier wird der Text geschrieben. Die Lücke eins hat dabei +%die \gap, die Lücke zwei hat die \gap.}, %Lueckentext Luecke=\gap +% L1={In manchen Fällen sind die Antworten einer Lücke}, %1.Moeglichkeit links +% L2={viel länger als die der zweite. In diesem Fall kann man}, %2.Moeglichkeit links +% L3={die Größen der Boxen manuell variieren. Die Eingabe ist optional. }, %3.Moeglichkeit links +% R1={Sehr}, %1.Moeglichkeit rechts +% R2={kurze}, %2.Moeglichkeit rechts +% R3={Antworten}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +% +%\end{minipage} +% +%Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben +%werden. +% +%\subsubsection{\texttt{\textbackslash lueckentext} -- Option: Englischer Lückentext} +%Der Befehl \texttt{englueckentext} ist analog zum \texttt{lueckentext}-Befehl zu verwenden. Jedoch wird der als Standard angenommene, einleitende Satz bei Lückentextaufgaben in Englisch angezeigt. +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\englueckentext{ +% text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken +% \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap +% L1={Auch}, %1.Moeglichkeit links +% L2={der}, %2.Moeglichkeit links +% L3={Rest}, %3.Moeglichkeit links +% R1={wird}, %1.Moeglichkeit rechts +% R2={gleich}, %2.Moeglichkeit rechts +% R3={eingegeben}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +%\end{verbatim} +% +%\textsc{Ausgabe:} +%\englueckentext{ +% text={Hier wird der Text einer englischen Aufgabe geschrieben. Die Lücken \gap und \gap können analog angegeben werden.}, %Lueckentext Luecke=\gap +% L1={Auch}, %1.Moeglichkeit links +% L2={der}, %2.Moeglichkeit links +% L3={Rest}, %3.Moeglichkeit links +% R1={wird}, %1.Moeglichkeit rechts +% R2={gleich}, %2.Moeglichkeit rechts +% R3={eingegeben}, %3.Moeglichkeit rechts +% %% LOESUNG: %% +% A1=1, % Antwort links +% A2=3 % Antwort rechts +% } +% +%\subsection{\texttt{\textbackslash zuordnen}} +%Dieser Befehl dient zum Erstellen des Zuordnungsformats von vier aus sechs Möglichkeiten. +%Die korrekten Antworten können hier frei als Buchstaben eingegeben werden. (hier: F, C, A, D) +% +%\leer +% +%\textsc{Eingabe:} +%\begin{verbatim} +%\zuordnen{ +% R1={Hier sind die vier}, % Response 1 +% R2={Antworten, zu}, % Response 2 +% R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 +% R4={zuzuordnen sind}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier trägt}, %Moeglichkeit A +% B={man den Text}, %Moeglichkeit B +% C={oder die Formeln}, %Moeglichkeit C +% D={für die sechs}, %Moeglichkeit D +% E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E +% F={ein.}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={F}, % 1. richtige Zuordnung +% A2={C}, % 2. richtige Zuordnung +% A3={A}, % 3. richtige Zuordnung +% A4={D}, % 4. richtige Zuordnung +% } +%\end{verbatim} +%\leer +% +%\textsc{Ausgabe:} +% +%\zuordnen{ +% R1={Hier sind die vier}, % Response 1 +% R2={Antworten, zu}, % Response 2 +% R3={denen die Möglichkeiten der rechten Box richtig}, % Response 3 +% R4={zuzuordnen sind}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier trägt}, %Moeglichkeit A +% B={man den Text}, %Moeglichkeit B +% C={oder die Formeln}, %Moeglichkeit C +% D={für die sechs}, %Moeglichkeit D +% E={Möglichkeiten, die man zuordnen muss}, %Moeglichkeit E +% F={ein.}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={F}, % 1. richtige Zuordnung +% A2={C}, % 2. richtige Zuordnung +% A3={A}, % 3. richtige Zuordnung +% A4={D}, % 4. richtige Zuordnung +% } +% +%\subsubsection{\texttt{\textbackslash zuordnen} -- Option: Variable Breiten der Boxen} +% +%Der \texttt{zuordnen}-Befehl erlaubt ein optionales Argument, um die Größen der beiden Boxen zu variieren. Dabei werden in den eckigen Klammern $[~]$ die Veränderung der linken Box (Änderung ca. zwischen -0.3 und 0.3) angegeben und die rechte Box wird automatisch angepasst. Will man etwa die linke Box vergrößern, gilt: +% +%\textsc{Eingabe:} +%\begin{small} +%\begin{verbatim} +%\zuordnen[0.25]{ +%R1={Dabei wird die linke Box vergrößert.}, % Response 1 +% R2={Dies dient vor allem dazu,}, % Response 2 +% R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 +% R4={nur ganz wenig. Wird die [ ] nicht angegeben dann wird der Standardwert +% 0 angenommen.}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier}, %Moeglichkeit A +% B={sind}, %Moeglichkeit B +% C={eher}, %Moeglichkeit C +% D={kurze}, %Moeglichkeit D +% E={Antworten}, %Moeglichkeit E +% F={möglich}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={}, % 1. richtige Zuordnung +% A2={}, % 2. richtige Zuordnung +% A3={}, % 3. richtige Zuordnung +% A4={}, % 4. richtige Zuordnung +% } +%\end{verbatim} +% +% +% +%\textsc{Ausgabe:} +% +%\zuordnen[0.25]{ +% R1={Dabei wird die linke Box vergrößert.}, % Response 1 +% R2={Dies dient vor allem dazu,}, % Response 2 +% R3={wenn eine Seite viel Text enthält, die andere hingegen}, % Response 3 +% R4={nur ganz wenig. Wird die $[~]$ nicht angegeben dann wird der Standardwert 0 angenommen.}, % Response 4 +% %% Moegliche Zuordnungen: %% +% A={Hier}, %Moeglichkeit A +% B={sind}, %Moeglichkeit B +% C={eher}, %Moeglichkeit C +% D={kurze}, %Moeglichkeit D +% E={Antworten}, %Moeglichkeit E +% F={möglich}, %Moeglichkeit F +% %% LOESUNG: %% +% A1={}, % 1. richtige Zuordnung +% A2={}, % 2. richtige Zuordnung +% A3={}, % 3. richtige Zuordnung +% A4={}, % 4. richtige Zuordnung +% } +%\end{small} +% +%Analog funktioniert die Verkleinerung der linken Box. Dazu müssen Werte kleiner 0 angegeben werden. +% +% +%\section{Typ-2-Aufgaben} +%Um die Struktur der Teil-2-Aufgaben ähnlich jener bei der standardisierten Reifeprüfung einhalten zu können, beinhaltet das Paket einige Befehle, die die Erstellung von Typ-2-Aufagben erleichtern. +% +%\subsection{\texttt{\textbackslash begin\{aufgabenstellung\} \ldots\ \textbackslash end\{aufgabenstellung\}}} +%Typ-2-Aufgaben sollten innerhalb einer Prüfung mithilfe der \texttt{langesbeispiel}-Umgebung eingegeben werden, um die volle Funktionalität (wie \texttt{notenschluessel}) des Pakets zu ermöglichen. Der einleitenden Aufgabentext kann dann eingegeben werden. Für die Eingabe der Aufgabenstellung kann dann die \texttt{aufgabenstellung}-Umgebung verwendet werden.\leer +% +%\subsubsection{\texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}}} +%Innerhalb dieser Umgebung können dann mithilfe von \texttt{\textbackslash item} (nummeriert mit a), b) ,c), \ldots) und \texttt{\textbackslash Subitem\{\}} (nummeriert mit 1), 2), \ldots) die jeweiligen Items und Subitems der Aufgabe eingegeben werden. \leer +% +%\subsubsection{Ausgleichspunkte -- \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}}} +%Um die notwendigen Ausgleichspunkte in den Typ-2-Aufgaben zu markieren, können die Befehle \texttt{item} und \texttt{Subitem} durch \texttt{\textbackslash Aitem} und \texttt{\textbackslash ASubitem\{\}} ersetzt werden. Dabei wird vor den geschriebenen Text noch ein \fbox{A} eingefügt -- die Nummerierung wird aber wie gewohnt fortgesetzt. +% +%\subsection{\texttt{\textbackslash begin\{loesung\} \ldots\ \textbackslash end\{loesung\}}} +%Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter{subitemcounter}{0}}.\leer +% +%Eine vollständige Typ-2-Aufgabe könnte also wie folgt aussehen: +% +%\textsc{Eingabe:} +% +%\begin{verbatim} +%\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS +%Hier steht der einleitende Text der Typ-2-Aufgabe. +% +%\begin{aufgabenstellung} +%\item Hier steht der Aufgabentext des ersten Items. +% +%\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 +% +%\end{aufgabenstellung} +% +%\begin{loesung} +%\item \subsection{Lösungserwartung:} +% +%\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 +%\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 +% +%\setcounter{subitemcounter}{0} +%\subsection{Lösungsschlüssel:} +% +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Unterpunkt2 +% +%\end{loesung} +% +%\end{langesbeispiel} +%\end{verbatim} +% +% +%\textsc{Ausgabe:} +%\setcounter{Antworten}{1} +%\setcounter{secnumdepth}{-1} +%\setcounter{number}{0} +%\begin{langesbeispiel} \item[0] %PUNKTE DES BEISPIELS +%Hier steht der einleitende Text der Typ-2-Aufgabe. +% +%\addtocontents{toc}{\setcounter{tocdepth}{-10}} +%\begin{aufgabenstellung} +%\item Hier steht der Aufgabentext des ersten Items. +% +%\Subitem{Aufgabentext des ersten Unterpunkts} %Unterpunkt1 +%\Subitem{Aufgabentext des zweiten Unterpunkts} %Unterpunkt2 +% +%\end{aufgabenstellung} +% +%\begin{loesung} +%\item \subsection*{Lösungserwartung:} +% +%\Subitem{Lösungserwartung des ersten Unterpunkts} %Lösung von Unterpunkt1 +%\Subitem{Lösungserwartung des zweiten Unterpunkts} %%Lösung von Unterpunkt2 +% +%\setcounter{subitemcounter}{0} +%\subsection*{Lösungsschlüssel:} +% +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt1 +%\Subitem{Lösungsschlüssel des ersten Unterpunkts} %Lösungschlüssel von Unterpunkt2 +% +%\end{loesung} +% +%\end{langesbeispiel} +%\addtocontents{toc}{\setcounter{tocdepth}{1}} +% +% +% +%\section{Einfügen von GeoGebra-Grafiken} +% +%Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können. +%\leer +% +%\begin{enumerate} +% \item Grafik in Geogebra zeichnen +% \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots +% \item Parameter einstellen +% \item \fbox{Erzeuge PSTricks} drücken +% \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren. +% +% \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich) +% +% \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden: +% +% \begin{verbatim} +% \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt} +% \end{verbatim} +% +% Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert. +% +%\end{enumerate} +% +%\meinlr{ +%\centering +%\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*} +%} +%{\centering +%\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0} +%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25} +%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74) +%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74) +%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67) +%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04) +%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88) +%\begin{scriptsize} +%\psdots[dotstyle=*,linecolor=blue](1.29,2.88) +%\rput[bl](1.37,3){\blue{$A$}} +%\psdots[dotstyle=*,linecolor=blue](0.56,0.67) +%\rput[bl](0.63,0.79){\blue{$B$}} +%\psdots[dotstyle=*,linecolor=blue](3.62,1.04) +%\rput[bl](3.7,1.16){\blue{$C$}} +%\end{scriptsize} +%\end{pspicture*}} +%} +%\leer +% +% +%\centering Kopie des PSTricks-Exports von Geogebra \\ +% (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\}) diff --git a/macros/latex/contrib/srdp-mathematik/srdp-tables.sty b/macros/latex/contrib/srdp-mathematik/srdp-tables.sty new file mode 100644 index 0000000000..28252f86a8 --- /dev/null +++ b/macros/latex/contrib/srdp-mathematik/srdp-tables.sty @@ -0,0 +1,2491 @@ + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{srdp-tables}[2021/11/04] +\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} +\let\tabu@AtEnd\@empty +\def\TMP@EnsureCode#1={% + \edef\tabu@AtEnd{\tabu@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : (for siunitx) +\TMP@EnsureCode124 = 12 % | +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignmment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +%% Constants -------------------------------------------------------- +\newcount \c@taburow \def\thetaburow {\number\c@taburow} +\newcount \tabu@nbcols +\newcount \tabu@cnt +\newcount \tabu@Xcol +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcount \tabu@alloc \tabu@alloc=\m@ne +\newcount \tabu@nested +\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} +\newdimen \tabu@target +\newdimen \tabu@spreadtarget +\newdimen \tabu@naturalX +\newdimen \tabucolX +\let\tabu@DELTA \@tempdimc +\let\tabu@thick \@tempdima +\let\tabu@on \@tempdimb +\let\tabu@off \@tempdimc +\newdimen \tabu@Xsum +\newdimen \extrarowdepth +\newdimen \abovetabulinesep +\newdimen \belowtabulinesep +\newdimen \tabustrutrule \tabustrutrule \z@ +\newtoks \tabu@thebody +\newtoks \tabu@footnotes +\newsavebox \tabu@box +\newsavebox \tabu@arstrutbox +\newsavebox \tabu@hleads +\newsavebox \tabu@vleads +\newif \iftabu@colortbl +\newif \iftabu@siunitx +\newif \iftabu@measuring +\newif \iftabu@spread +\newif \iftabu@negcoef +\newif \iftabu@everyrow +\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} +\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} +\newif \iftabu@long +\newif \iftabuscantokens +\def\tabu@rescan {\tabu@verbatim \scantokens } +%% Utilities (for internal usage) ----------------------------------- +\def\tabu@gobblespace #1 {#1} +\def\tabu@gobbletoken #1#2{#1} +\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} +\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble + \else\ifx \@sptoken\@let@token + \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX + \fi\fi +}% \tabu@gobblex +\def\tabu@X{^^J} +{\obeyspaces +\global\let\tabu@spxiii= % saves an active space (for \ifx) +\gdef\tabu@@spxiii{ }} +\def\tabu@ifenvir {% only for \multicolumn + \expandafter\tabu@if@nvir\csname\@currenvir\endcsname +}% \tabu@ifenvir +\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else + \ifx\longtabu#1first\else + second\fi\fi oftwo\endcsname +}% \tabu@ifenvir +\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} +{\catcode`\&=3 +\gdef\tabu@strtrim #1{% #1 = control sequence to trim + \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi + \let\tabu@c@l@r \@empty \let#1\@empty + \else \expandafter \tabu@trimspaces #1\@nnil + \fi +}% \tabu@strtrim +\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% +\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} +\gdef\tabu@lastspace #1{\def #3{#1}% + \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi + \tabu@trimspaces #1\@nnil} +}% \catcode +\def\tabu@sanitizearg #1#2{{% + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% + \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% +}% \tabu@sanitizearg +\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% + \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! +}% \tabu@textbar +\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} +\def\tabu@everyrow@egroup{% + \iftabu@everyrow \expandafter \endgroup \the\toks@ + \else \ifnum0=`{\fi}% + \fi +}% \tabu@everyrow@egroup +\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \z@}% +}% \tabu@arstrut +\def\tabu@rearstrut {% + \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax + \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax + \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima + \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi + \tabu@mkarstrut + \fi +}% \tabu@rearstrut +\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} +\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox + \hbox to\z@{\hbox to\z@{\hss + {\tabu@DBG{cyan}\vrule + height \arraystretch \dimexpr\ht\strutbox+\extrarowheight + depth \z@ + width \tabustrutrule}\kern-\tabustrutrule + {\tabu@DBG{pink}\vrule + height \z@ + depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth + width \tabustrutrule}}}% +}% \tabu@DBG@arstrut +\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ + \@nextchar}}% +\def\tabu@savedecl{\ifcat$\d@llarend\else + \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode +}% \tabu@savedecl +\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} +\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } +\let\tabu@trialh@@k \@empty +\def\tabu@nowrite #1#{{\afterassignment}\toks@} +\let\tabu@write\write +\let\tabu@immediate\immediate +\def\tabu@WRITE{\begingroup + \def\immediate\write{\aftergroup\endgroup + \tabu@immediate\tabu@write}% +}% \tabu@WRITE +\expandafter\def\expandafter\tabu@GenericError\expandafter{% + \expandafter\tabu@WRITE\GenericError} +\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} +\def\tabu@noxfootnote [#1]{\@gobble} +\def\tabu@nocolor #1#{\@gobble} +\newcommand*\tabu@norowcolor[2][]{} +\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% + \futurelet\@let@token \tabu@m@ybesiunitx} +\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% + \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi + \tabu@temp}% \tabu@m@ybesiunitx +}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname +\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% +%% Fixed vertical spacing adjustment: \extrarowsep ------------------ +\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% + \iftabu@everyrow \aftergroup\tabu@Gextra + \else \aftergroup\tabu@n@Gextra + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra +}% \extrarowsep +\def\tabu@extra {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setextrasep \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extra +\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} +\def\tabu@extr@ #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth + \fi \tabu@temp}% +}% \tabu@extr@ +\def\tabu@setextrasep {\extrarowheight=\extrarowdepth + \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth +}% \tabu@setextrasep +\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} +\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} +\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} +\let\tabu@C@extra \z@ +\let\tabu@G@extra \@empty +%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- +\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% + \iftabu@everyrow \aftergroup\tabu@Glinesep + \else \aftergroup\tabu@n@Glinesep + \fi + \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep +}% \tabulinesep +\def\tabu@linesep {\@ifnextchar_% + {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} + {\ifx ^\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% + \else \let\tabu@temp \@empty + \afterassignment \tabu@setlinesep \abovetabulinesep + \fi \tabu@temp}% +}% \tabu@linesep +\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} +\def\tabu@sets@p #1#2{\@ifnextchar^% + {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} + {\ifx _\@let@token \def\tabu@temp{% + \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% + \else \let\tabu@temp \@empty + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep + \fi \tabu@temp}% +}% \tabu@sets@p +\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep + \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep +}% \tabu@setlinesep +\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} +\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} +\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} +\let\tabu@C@linesep \z@ +\let\tabu@G@linesep \@empty +%% \global\extrarowsep and \global\tabulinesep ------------------- +\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% + \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% +}% \tabu@Gsave +\def\tabu@Grestore#1#2{% + \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax + \ifcat$\the\toks\currentgrouplevel$\else + \global\let#1\@empty \global\let#2\z@ + \the\toks\currentgrouplevel + \fi +}% \tabu@Grestore +%% Setting code for every row --------------------------------------- +\newcommand*\everyrow{\tabu@everyrow@bgroup + \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop +}% \everyrow +\def\tabu@evrstartstop {\@ifnextchar^% + {\afterassignment \tabu@evrstartstop \tabu@stop=}% + {\ifx ^\@let@token + \afterassignment\tabu@evrstartstop \tabu@start=% + \else \afterassignment\tabu@everyr@w \toks@ + \fi}% +}% \tabu@evrstartstop +\def\tabu@everyr@w {% + \xdef\tabu@everyrow{% + \noexpand\tabu@everyrowfalse + \let\noalign \relax + \noexpand\tabu@rowfontreset + \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors + \let\noexpand\tabu@docline \noexpand\tabu@docline@evr + \the\toks@ + \noexpand\tabu@evrh@@k + \noexpand\tabu@rearstrut + \global\advance\c@taburow \@ne}% + \iftabu@everyrow \toks@\expandafter + {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% + \else \xdef\tabu@evr@G{\the\toks@}% + \fi + \tabu@everyrow@egroup +}% \tabu@everyr@w +\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only +\tabu@evr{} +%% line style and leaders ------------------------------------------- +\newcommand*\newtabulinestyle [1]{% + {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% +}% \newtabulinestyle +\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% + \tabu@sanitizearg {#1}\@tempa + \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi + \global\expandafter\let + \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi +}% \tabu@newlinestyle +\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% + \iftabu@everyrow + \toks@\expandafter{\expandafter \def \expandafter + \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% + \gdef\tabu@ls@{\tabu@ls@L}% + \else + \global\let\tabu@ls@G \tabu@thestyle + \gdef\tabu@ls@{\tabu@ls@G}% + \fi + \tabu@everyrow@egroup +}% \tabulinestyle +\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} +\def\tabu@rulecolor #1{\toks@{}% + \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% + \tabu@temp + \tabu@rulearc +}% \tabu@rulecolor +\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp + \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% + \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% + \fi + \tabu@temp +}% \tabu@ruledrsc@ +\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} +\def\tabu@rule@drsc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% + \else \toks@{\def\CT@drsc@{\color #1{#2}}}% + \fi + \else + \ifx \\#1#2\\\global\let\CT@drsc@ \relax + \else \gdef\CT@drsc@{\color #1{#2}}% + \fi + \fi + \tabu@rulearc +}% \tabu@rule@drsc@ +\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} +\def\tabu@rule@arc@ #1#2{% + \iftabu@everyrow + \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% + \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% + \fi + \toks@\expandafter{\the\toks@ + \let\tabu@arc@L \CT@arc@ + \let\tabu@drsc@L \CT@drsc@ + \ignorespaces}% + \else + \ifx \\#1#2\\\gdef\CT@arc@{}% + \else \gdef\CT@arc@{\color #1{#2}}% + \fi + \global\let\tabu@arc@G \CT@arc@ + \global\let\tabu@drsc@G \CT@drsc@ + \fi + \tabu@everyrow@egroup +}% \tabu@rule@arc@ +\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} +\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} +\def\tabu@rowc@lors #1#2#3{% + \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil + \@defaultunits \tabu@start =\number0#1\relax \@nnil + \ifnum \count@<\tw@ \count@=\tw@ \fi + \advance\tabu@start \m@ne + \ifnum \tabu@start<\z@ \tabu@start \z@ \fi + \tabu@rowcolorseries #3\in@..\in@ \@nnil +}% \tabu@rowcolors +\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% + \ifx \in@#1\relax + \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% + \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ + \fi + \else + \ifx \\#2\\\tabu@rowcolorserieserror \fi + \tabu@sanitizearg{#1}\tabu@temp + \tabu@sanitizearg{#2}\@tempa + \advance\count@ \m@ne + \iftabu@everyrow + \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% + \ifnum ##2=\c@taburow + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi + \ifnum \c@taburow<##2 \else + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}\fi}% + }\edef\x{\noexpand\tabu@rc@ {\the\count@} + {\the\tabu@start} + {\tabu@temp} + {\@tempa}% + }\x + \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% + \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% + \else % inside \noalign + \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% + \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% + \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% + \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne + \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi + \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% + \rowcolor{tabu@rc@\the\tabu@nested}}% + }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x + \global\let\tabu@rc@G \tabu@rc@ + \fi + \fi + \tabu@everyrow@egroup +}% \tabu@rowcolorseries +\tabuDisableCommands {\let\tabu@rc@ \@empty } +\def\tabu@rowcolorserieserror {\PackageError{tabu} + {Invalid syntax for \string\taburowcolors + \MessageBreak Please look at the documentation!}\@ehd +}% \tabu@rowcolorserieserror +\newcommand*\tabureset {% + \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ + \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% +}% \tabureset +%% Parsing the line styles ------------------------------------------ +\def\tabu@getline #1{\begingroup + \csname \ifcsname if@safe@actives\endcsname % + @safe@activestrue\else + relax\fi \endcsname + \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa + \let\tabu@thestyle \relax + \ifcsname tabu@linestyle@\@tempa \endcsname + \edef\tabu@thestyle{\endgroup + \def\tabu@thestyle{\expandafter\noexpand + \csname tabu@linestyle@\@tempa\endcsname}% + }\tabu@thestyle + \else \expandafter\tabu@definestyle \tabu@temp \@nil + \fi +}% \tabu@getline +\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter + \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen + \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined + \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs + \def\tabu@temp{\tabu@getparam{thick}}% + \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% + \fi + {% + \let\tabu@ \relax + \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) + \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% + \expandafter}\expandafter + \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) + \def\;{\def\:}% + \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) + \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) + \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi + \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi + \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi + \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen + \tabu@on \tabulineon \fi\fi + \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen + \tabu@off \tabulineoff \fi\fi + \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi + \in@true % + \else \in@false % + \fi + \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% + \else \edef\tabu@thick{\the\tabu@thick}% + \fi + \edef \tabu@thestyle ##1##2{\endgroup + \def\tabu@thestyle{% + \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} + {\the\tabu@on}{##1} + {\the\tabu@off}{##2}% + \else \noexpand\tabu@rulesstyle + {##1\vrule width \tabu@thick}% + {##1\leaders \hrule height \tabu@thick \hfil}% + \fi}% + }\expandafter \expandafter + \expandafter \tabu@thestyle \expandafter + \expandafter \expandafter + {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% +}% \tabu@definestyle +{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active + \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} + \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} +}% \catcode +\def\tabu@oxiii #1{% + \ifcase \ifx n#1\z@ \else + \ifx f#1\@ne\else + \tw@ \fi\fi + \expandafter\tabu@onxiii + \or \expandafter\tabu@ofxiii + \else o% + \fi#1}% +\def\tabu@onxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx \tabu@spxiii#2\@ne\else + \tw@ \fi\fi\fi + \tabu@getparam{on}#2\expandafter\@gobble + \or \expandafter\tabu@onxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}}% +\def\tabu@ofxiii #1#2{% + \ifx #2f\expandafter\tabu@offxiii + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@offxiii #1#2{% + \ifcase \ifx !#2\tw@ \else + \ifcat.\noexpand#2\z@ \else + \ifx\tabu@spxiii#2\@ne \else + \tw@ \fi\fi\fi + \tabu@getparam{off}#2\expandafter\@gobble + \or \expandafter\tabu@offxiii % (space is active) + \else o\expandafter\@firstofone + \fi{#1#2}} +\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} +\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef + \ifx \tabu@#1\else % no more spec + \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi +}% \tabu@getcolor +\def\tabu@getc@l@r #1\tabu@ {% + \def\tabu@temp{#1}\tabu@strtrim \tabu@temp + \ifx \tabu@temp\@empty + \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists + \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r + \else \let\tabu@c@lon \tabu@c@l@r + \fi + %\else \tabu@warncolour{\tabu@temp}% + \fi%\fi + \tabu@ % next spec +}% \tabu@getc@l@r +\def\tabu@warncolour #1{\PackageWarning{tabu} + {Color #1 is not defined. Default color used}% +}% \tabu@warncolour +\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% + \ifx \tabu@leaders\tabu@leaders@G \else + \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi +}% \tabu@leadersstyle +\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined + \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% +}% \tabu@rulesstyle +%% The leaders boxes ------------------------------------------------ +\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color + {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor + {% % but the leaders boxes should have colors ! + \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% + \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% + \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thehleaders \tabu@theleaders + }% + {% + \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% + \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% + \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% + \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% + \global\let\tabu@thevleaders \tabu@theleaders + }% + \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% + }% +}% \tabu@LEADERS +\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} +\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color + \global\setbox \tabu@leads=\@box{% + {#3\tabu@therule{#1}{#2}}% + \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi + {#3\tabu@therule{#1}{#2}}}% + \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss + {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% + \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% + {##1\tabu@therule{#1}{#2}}% + \xleaders \copy\tabu@leads \@ss + \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% + }\tabu@theleaders{#3}% +}% \tabu@l@@d@rs +%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- +\newcommand*\tabu {\tabu@longfalse + \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% + \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endtabu*\endcsname{\endtabu}% + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {tabu} +\let\tabu@tabular \tabular % +\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} +\newcommand*\longtabu {\tabu@longtrue + \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi + \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% + \LTchunksize=\@M + \expandafter\let\csname tabu*\endcsname \tabu + \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% + \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } + \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget +}% {longtabu} +\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} +\def\tabu@nolongtabu{\PackageError{tabu} + {longtabu requires the longtable package}\@ehd} +%% Read the target and then : \tabular or \@array ------------------ +\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } +\def\tabu@sett@rget {\tabu@target \z@ + \ifcase \ifx \bgroup\@let@token \z@ \else + \ifx \@sptoken\@let@token \@ne \else + \if t\@let@token \tw@ \else + \if s\@let@token \thr@@\else + \z@\fi\fi\fi\fi + \expandafter\tabu@begin + \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget + \or \expandafter\tabu@to + \or \expandafter\tabu@spread + \fi +}% \tabu@sett@rget +\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} +\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} +\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } +\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } +\def\tabu@linegoalt@rget {% + \ifx \tabu@temp\LNGL@setlinegoal + \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal + \tabu@begin +}% \tabu@linegoalt@rget +\def\tabu@begin #1#{% + \iftabu@measuring \expandafter\tabu@nestedmeasure \fi + \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty + \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% + \fi + \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil +}% \tabu@begin +\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup + \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% + \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% +}% \tabu@tabu@ +\def\tabu@nestedmeasure {% + \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax + \tabu@spreadtrue + \else \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}% + \expandafter\tabu@collectbody\expandafter\tabu@quickrule + \expandafter\endgroup + \fi +}% \tabu@nestedmeasure +\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} +%% \tabu@setup \tabu@init \tabu@indent +\def\tabu@setup{\tabu@alloc@ + \ifcase \tabu@nested + \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ + \let\tabu@afterendpar \par + \fi\fi\fi + \def\tabu@aligndefault{c}\tabu@init \tabu@indent + \else % + \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth + \fi + \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined + \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% + \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... + \let\@endpbox \tabu@endpbox % idem " " " " " " + \let\@tabarray \tabu@tabarray % idem " " " " " " + \tabu@setcleanup \tabu@setreset +}% \tabu@setup +\def\tabu@init{\tabu@starttimer \tabu@measuringfalse + \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% + \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline + \let\firstline \tabu@firstline \let\lastline \tabu@lastline + \let\hline \tabu@hline \let\@xhline \tabu@xhline + \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox + \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi + \tabu@trivlist % + \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext + \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering + \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft + \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering + \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft + \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont + \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x + \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar + \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok + \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn + \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! + \let\tabu@endpbox \@endpbox % idem " " " " " " " + \let\tabu@tabarray \@tabarray % idem " " " " " " " + \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) + \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi +}% \tabu@init +\def\tabu@indent{% correction for indentation + \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget + \everypar\expandafter{% + \the\everypar\everypar\expandafter{\the\everypar}% + \setbox\z@=\lastbox + \ifdim\wd\z@>\z@ \edef\tabu@thetarget + {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi + \box\z@}% + \fi\fi +}% \tabu@indent +\def\tabu@setcleanup {% saves last global assignments + \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax + \def\tabu@aftergroupcleanup{% + \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% + \else + \def\tabu@aftergroupcleanup{% + \aftergroup\aftergroup\aftergroup\tabu@cleanup + \let\tabu@aftergroupcleanup \relax}% + \fi + \let\tabu@arc@Gsave \tabu@arc@G + \let\tabu@arc@G \tabu@arc@L % + \let\tabu@drsc@Gsave \tabu@drsc@G + \let\tabu@drsc@G \tabu@drsc@L % + \let\tabu@ls@Gsave \tabu@ls@G + \let\tabu@ls@G \tabu@ls@L % + \let\tabu@rc@Gsave \tabu@rc@G + \let\tabu@rc@G \tabu@rc@L % + \let\tabu@evr@Gsave \tabu@evr@G + \let\tabu@evr@G \tabu@evr@L % + \let\tabu@celllalign@save \tabu@celllalign + \let\tabu@cellralign@save \tabu@cellralign + \let\tabu@cellleft@save \tabu@cellleft + \let\tabu@cellright@save \tabu@cellright + \let\tabu@@celllalign@save \tabu@@celllalign + \let\tabu@@cellralign@save \tabu@@cellralign + \let\tabu@@cellleft@save \tabu@@cellleft + \let\tabu@@cellright@save \tabu@@cellright + \let\tabu@rowfontreset@save \tabu@rowfontreset + \let\tabu@@rowfontreset@save\tabu@@rowfontreset + \let\tabu@rowfontreset \@empty + \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset + \edef\c@taburow@save {\the\c@taburow}% + \edef\tabu@naturalX@save {\the\tabu@naturalX}% + \let\tabu@naturalXmin@save \tabu@naturalXmin + \let\tabu@naturalXmax@save \tabu@naturalXmax + \let\tabu@mkarstrut@save \tabu@mkarstrut + \edef\tabu@clarstrut{% + \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax + \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax + \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% +}% \tabu@setcleanup +\def\tabu@cleanup {\begingroup + \globaldefs\@ne \tabu@everyrowtrue + \let\tabu@arc@G \tabu@arc@Gsave + \let\CT@arc@ \tabu@arc@G + \let\tabu@drsc@G \tabu@drsc@Gsave + \let\CT@drsc@ \tabu@drsc@G + \let\tabu@ls@G \tabu@ls@Gsave + \let\tabu@ls@ \tabu@ls@G + \let\tabu@rc@G \tabu@rc@Gsave + \let\tabu@rc@ \tabu@rc@G + \let\CT@do@color \relax + \let\tabu@evr@G \tabu@evr@Gsave + \let\tabu@celllalign \tabu@celllalign@save + \let\tabu@cellralign \tabu@cellralign@save + \let\tabu@cellleft \tabu@cellleft@save + \let\tabu@cellright \tabu@cellright@save + \let\tabu@@celllalign \tabu@@celllalign@save + \let\tabu@@cellralign \tabu@@cellralign@save + \let\tabu@@cellleft \tabu@@cellleft@save + \let\tabu@@cellright \tabu@@cellright@save + \let\tabu@rowfontreset \tabu@rowfontreset@save + \let\tabu@@rowfontreset \tabu@@rowfontreset@save + \tabu@naturalX =\tabu@naturalX@save + \let\tabu@naturalXmax \tabu@naturalXmax@save + \let\tabu@naturalXmin \tabu@naturalXmin@save + \let\tabu@mkarstrut \tabu@mkarstrut@save + \c@taburow =\c@taburow@save + \ifcase \tabu@nested \tabu@alloc \m@ne\fi + \endgroup % + \ifcase \tabu@nested + \the\tabu@footnotes \global\tabu@footnotes{}% + \tabu@afterendpar \tabu@elapsedtime + \fi + \tabu@clarstrut + \everyrow\expandafter {\tabu@evr@G}% +}% \tabu@cleanup +\let\tabu@afterendpar \relax +\def\tabu@setreset {% + \edef\tabu@savedparams {% \relax for \tabu@message@save + \ifmmode \col@sep \the\arraycolsep + \else \col@sep \the\tabcolsep \fi \relax + \arrayrulewidth \the\arrayrulewidth \relax + \doublerulesep \the\doublerulesep \relax + \extratabsurround \the\extratabsurround \relax + \extrarowheight \the\extrarowheight \relax + \extrarowdepth \the\extrarowdepth \relax + \abovetabulinesep \the\abovetabulinesep \relax + \belowtabulinesep \the\belowtabulinesep \relax + \def\noexpand\arraystretch{\arraystretch}% + \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% + \begingroup + \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu + \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi + \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi + \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L + \expandafter \endgroup \expandafter + \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena + \let\tabu@arc@G \tabu@arc@L + \let\tabu@drsc@G \tabu@drsc@L + \let\tabu@ls@G \tabu@ls@L + \let\tabu@rc@G \tabu@rc@L + \let\tabu@evr@G \tabu@evr@L}% + \def\tabu@reset{\tabu@savedparams + \tabu@everyrowtrue \c@taburow \z@ + \let\CT@arc@ \tabu@arc@L + \let\CT@drsc@ \tabu@drsc@L + \let\tabu@ls@ \tabu@ls@L + \let\tabu@rc@ \tabu@rc@L + \global\tabu@alloc \tabu@alloc@save + \everyrow\expandafter{\tabu@evr@L}}% +}% \tabu@reset +\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} +\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} +%% The Rewritting Process ------------------------------------------- +\def\tabu@newcolumntype #1{% + \expandafter\tabu@new@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@newcolumntype +\def\tabu@new@columntype #1#2#3{% + \def#1##1#3{\NC@{##1}}% + \let#2\relax \newcommand*#2% +}% \tabu@new@columntype +\def\tabu@privatecolumntype #1{% + \expandafter\tabu@private@columntype + \csname NC@find@\string#1\expandafter\endcsname + \csname NC@rewrite@\string#1\expandafter\endcsname + \csname tabu@NC@find@\string#1\expandafter\endcsname + \csname tabu@NC@rewrite@\string#1\endcsname + {#1}% +}% \tabu@privatecolumntype +\def\tabu@private@columntype#1#2#3#4{% + \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% + \tabu@new@columntype#3#4% +}% \tabu@private@columntype +\let\tabu@privatecolumns \@empty +\newcommand*\tabucolumn [1]{\expandafter \def \expandafter + \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns + \NC@do #1}}% +\let\tabu@highprioritycolumns \@empty +%% The | ``column'' : rewriting process -------------------------- +\tabu@privatecolumntype |{\tabu@rewritevline} +\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% + \expandafter \NC@find \tabu@rewritten} +\def\tabu@lines #1{% + \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi + \NC@list\expandafter{\the\NC@list \NC@do #1}% +}% \tabu@lines@ +\def\tabu@vlinearg #1{% + \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% + \else\tabu@getline {#1}% + \fi + \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% + }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% + \expandafter \tabu@keepls \tabu@thestyle \@nil +}% \tabu@vlinearg +\def\tabu@keepls #1\@nil{% + \ifcat $\@cdr #1\@nil $% + \ifx \relax#1\else + \ifx \tabu@ls@#1\else + \let#1\relax + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@savels\noexpand#1}\fi\fi\fi +}% \tabu@keepls +\def\tabu@thevline {\begingroup + \ifdefined\tabu@leaders + \setbox\@tempboxa=\vtop to\dimexpr + \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% + \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox + \box\@tempboxa + \else + \tabu@thevrule + \fi \endgroup +}% \tabu@thevline +\def\tabu@savels #1{% + \expandafter\let\csname\string#1\endcsname #1% + \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset + \tabu@resetls#1}}% +\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% +%% \multicolumn inside tabu environment ----------------------------- +\tabu@newcolumntype \tabu@rewritemulticolumn{% + \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \tabu@savedecl + \tabu@privatecolumns + \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% + \let\tabu@savels \relax + \NC@find +}% \tabu@rewritemulticolumn +\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} +\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} +\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup + \tabu@everyrowtrue + \NC@list{\NC@do \tabu@rewritemulticolumn}% + \expandafter\@gobbletwo % gobbles \multispan{#1} + \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% + {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi + {#3}}% +}% \tabu@multic@lumn +%% The X column(s): rewriting process ----------------------------- +\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} +\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } +\def\tabu@siunitx #1{\@ifnextchar \bgroup + {\tabu@rewriteX@Ss{#1}} + {\tabu@nosiunitx{#1}}} +\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% + \@defaultunits \let\tabu@temp =#2\relax\@nnil + \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi + \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% + }\expandafter\NC@find \the\@temptokena \relax + }\expandafter\NC@rewrite@S \@gobble #2\relax + \else \tabu@siunitxerror + \fi + \expandafter \NC@find \tabu@rewritten +}% \tabu@rewriteX@Ss +\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! + \MessageBreak X column can only embed siunitx S or s columns}\@ehd +}% \tabu@siunitxerror +\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% + \iftabu@measuring + \else \tabu@measuringtrue % first X column found in the preamble + \let\@halignto \relax \let\tabu@halignto \relax + \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ + \else \tabu@spreadtarget \z@ \fi + \ifdim \tabu@target=\z@ + \setlength\tabu@target \tabu@thetarget + \tabu@message{\tabu@message@defaulttarget}% + \else \tabu@message{\tabu@message@target}\fi + \fi +}% \tabu@rewriteX +\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax + \def\tabu@rewritten{l}} +\def\tabu@Xarg #1#2#3{% + \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty + \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty + \ifx\\#1\\% + \def\tabu@rewritten{p}\tabucolX \p@ % + \else + \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ + \tabu@Xparse {}#1\relax + \fi + \tabu@Xrewritten{#2}{#3}% +}% \tabu@Xarg +\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} +\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} +\def\tabu@Xtest{% + \ifcase \ifx \relax\@let@token \z@ \else + \if ,\@let@token \m@ne\else + \if p\@let@token 1\else + \if m\@let@token 2\else + \if b\@let@token 3\else + \if l\@let@token 4\else + \if c\@let@token 5\else + \if r\@let@token 6\else + \if j\@let@token 7\else + \if L\@let@token 8\else + \if C\@let@token 9\else + \if R\@let@token 10\else + \if J\@let@token 11\else + \ifx \@sptoken\@let@token 12\else + \if .\@let@token 13\else + \if -\@let@token 13\else + \ifcat $\@let@token 14\else + 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \or \tabu@Xtype {p}% + \or \tabu@Xtype {m}% + \or \tabu@Xtype {b}% + \or \tabu@Xalign \raggedright\relax + \or \tabu@Xalign \centering\relax + \or \tabu@Xalign \raggedleft\relax + \or \tabu@Xalign \tabu@justify\relax + \or \tabu@Xalign \RaggedRight\raggedright + \or \tabu@Xalign \Centering\centering + \or \tabu@Xalign \RaggedLeft\raggedleft + \or \tabu@Xalign \justifying\tabu@justify + \or \expandafter \tabu@Xparsespace + \or \expandafter \tabu@Xcoef + \or \expandafter \tabu@Xm@th + \or \tabu@Xcoef{}% + \else\expandafter \tabu@Xparse + \fi +}% \tabu@Xtest +\def\tabu@Xalign #1#2{% + \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} + {Duplicate horizontal alignment specification}\fi + \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax + \else \def\tabu@Xlcr{#2}\let#2\relax\fi + \expandafter\tabu@Xparse +}% \tabu@Xalign +\def\tabu@Xtype #1{% + \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} + {Duplicate vertical alignment specification}\fi + \def\tabu@rewritten{#1}\expandafter\tabu@Xparse +}% \tabu@Xtype +\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% + \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi +}% \tabu@Xcoef +\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ + \tabu@Xparse{}% +}% \tabu@Xc@ef +\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} +\def\tabu@Xd@sp{\let\tabu@Xmath=$% + \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% + \expandafter\tabu@Xparse + \else \expandafter\tabu@Xparse\expandafter{\expandafter}% + \fi +}% \tabu@Xd@sp +\def\tabu@Xrewritten {% + \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi + \ifdim \tabucolX<\z@ \tabu@negcoeftrue + \else\ifdim \tabucolX=\z@ \tabucolX \p@ + \fi\fi + \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% + \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% + \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% + >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% + \tabu@rewritten {\tabu@hsize \tabu@temp}% + <{##2\ifx$\tabu@Xmath$\fi}}% + }\tabu@rewritten +}% \tabu@Xrewritten +\def\tabu@hsize #1#2{% + \ifdim #2\p@<\z@ + \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else + \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi + \fi + \else #2\tabucolX + \fi +}% \tabu@hsize +%% \usetabu and \preamble: rewritting process --------------------- +\tabu@privatecolumntype \usetabu [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\let\tabu@rewriteX \tabu@rewriteXrestore + \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% + \fi +}% \NC@rewrite@\usetabu +\tabu@privatecolumntype \preamble [1]{% + \ifx\\#1\\\tabu@saveerr{}\else + \@ifundefined{tabu@saved@\string#1} + {\tabu@saveerr{#1}} + {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% + \fi +}% \NC@rewrite@\preamble +%% Controlling the rewritting process ------------------------------- +\tabu@newcolumntype \tabu@rewritefirst{% + \iftabu@long \aftergroup \tabu@longpream % + \else \aftergroup \tabu@pream + \fi + \let\tabu@ \relax \let\tabu@hsize \relax + \let\tabu@Xcoefs \@empty \let\tabu@savels \relax + \tabu@Xcol \z@ \tabu@cnt \tw@ + \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse + \global\setbox\@arstrutbox \box\@arstrutbox + \NC@list{\NC@do *}\tabu@textbar \tabu@lines + \NC@list\expandafter{\the\NC@list \NC@do X}% + \iftabu@siunitx % + \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi + \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% + \expandafter\def\expandafter\tabu@NC@list\expandafter{% + \the\expandafter\NC@list \tabu@NC@list}% % * | X S + \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu + \expandafter \NC@do \expandafter\preamble + \the\NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \tabu@savedecl + \tabu@privatecolumns + \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle +}% NC@rewrite@\tabu@rewritefirst +\tabu@newcolumntype \tabu@rewritemiddle{% + \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast +}% \NC@rewrite@\tabu@rewritemiddle +\tabu@newcolumntype \tabu@rewritelast{% + \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne + \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle + \NC@do \tabu@rewritelast}% + \else \let\tabu@prev\tabu@temp + \fi + \ifcase \tabu@cnt \expandafter\tabu@endrewrite + \else \expandafter\NC@find \expandafter\tabu@rewritemiddle + \fi +}% \NC@rewrite@\tabu@rewritelast +%% Choosing the strategy -------------------------------------------- +\def\tabu@endrewrite {% + \let\tabu@temp \NC@find + \ifx \@arrayright\relax \let\@arrayright \@empty \fi + \count@=% + \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print + \iftabu@measuring + \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer + \tabu@target \csname tabu@\the\tabu@nested.T\endcsname + \tabucolX \csname tabu@\the\tabu@nested.X\endcsname + \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% + \fi + \else\iftabu@measuring 4 % X columns + \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer + \tabu@target \the\tabu@target + \tabu@spreadtarget \the\tabu@spreadtarget}% + \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% + \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% + \let\tabu@Xcoefs \relax + \else\ifcase\tabu@nested \thr@@ % outer, no X + \global\let\tabu@afterendpar \relax + \else \@ne % inner, no X, outer in mode 1 or 2 + \fi + \ifdefined\tabu@usetabu + \else \ifdim\tabu@target=\z@ + \else \let\tabu@temp \tabu@extracolsep + \fi\fi + \fi + \fi + \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% + \tabu@temp +}% \tabu@endrewrite +\def\tabu@extracolsep{\@defaultunits \expandafter\let + \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil + \ifx \tabu@temp\@sptoken + \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep + \else + \edef\tabu@temp{\noexpand\NC@find + \if |\noexpand\tabu@temp @% + \else\if !\noexpand\tabu@temp @% + \else !% + \fi\fi + {\noexpand\extracolsep\noexpand\@flushglue}}% + \fi + \tabu@temp +}% \tabu@extrac@lsep +%% Implementing the strategy ---------------------------------------- +\long\def\tabu@pream #1\@preamble {% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\tabu@aftergroupcleanup}% + \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody + \@preamble}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@pream +\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% + \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup + \NC@list\expandafter {\tabu@NC@list}% in case of nesting... + \let\tabu@savedpreamble \@preamble + \global\let\tabu@elapsedtime \relax + \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% + \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) + \tabu@select +}% \tabu@longpream +\def\tabu@select {% + \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi + \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi + \ifcase \count@ + \global\let\tabu@elapsedtime \relax + \tabu@seteverycr + \expandafter \tabuthepreamble % vertical adjustment (inheritated from outer) + \or % exit in vertical measure + struts per cell because no X and outer in mode 3 + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \tabu@seteverycr + \expandafter \tabuthepreamble + \or % exit without measure because no X and outer in mode 4 + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@seteverycr + \expandafter \tabuthepreamble + \else % needs trials + \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty + \tabu@savecounters + \expandafter \tabu@setstrategy + \fi +}% \tabu@select +\def\tabu@@ {\gdef\tabu@mkpreambuffer} +%% Protections to set up before trials ------------------------------ +\def\tabu@setstrategy {\begingroup % + \tabu@trialh@@k \tabu@cnt \z@ % number of trials + \hbadness \@M \let\hbadness \@tempcnta + \hfuzz \maxdimen \let\hfuzz \@tempdima + \let\write \tabu@nowrite\let\GenericError \tabu@GenericError + \let\savetabu \@gobble \let\tabudefaulttarget \linewidth + \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote + \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor + \let\tabu@aftergroupcleanup \relax % only after the last trial + \tabu@mkpreambuffer + \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init + \def\tabu@lasttry{\m@ne\p@}\fi + \begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % + \tabu@collectbody \tabu@strategy % +}% \tabu@setstrategy +\def\tabu@savecounters{% + \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% + \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax +}% \tabu@savecounters +\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) + \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs + \ifdim \dimen@>\z@ + \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \fi +}% \tabucolX@init +\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum + \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ + \else -#2\p@ \tabu@negcoeftrue + \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax + \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi + \tabu@wddef{#1}{0pt}% + \fi +}% \tabu@Xinit +%% Collecting the environment body ---------------------------------- +\long\def\tabu@collectbody #1#2\end #3{% + \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% + \ifx \tabu@stack\@empty + \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% + \def\tabu@end@envir{\end{#3}}% + \iftabuscantokens + \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% + \else \def\tabu@endenvir {\let\endarray \@empty + \end{#3}\tabu@gobbleX}% + \fi + \else \def\tabu@endenvir {\end{#3}}\fi}% + \let\tabu@collectbody \tabu@endofcollect + \else\def\tabu@temp{#3}% + \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% + \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% + \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% + \else \toks@\expandafter{\the\toks@ #2\end{#3}}% + \fi\fi\fi + \fi + \tabu@collectbody{#1}% +}% \tabu@collectbody +\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% +\def\tabu@endofcollect #1{\ifnum0=`{}\fi + \expandafter\endgroup \the\toks@ #1% +}% \tabu@endofcollect +%% The trials: switching between strategies ------------------------- +\def\tabu@strategy {\relax % stops \count@ assignment ! + \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) + \expandafter \tabu@endoftrials + \or % case 1 = exit in vertical measure (outer in mode 3) + \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% + \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% + \expandafter \tabu@endoftrials + \or % case 2 = exit with a rule replacing the table (outer in mode 4) + \expandafter \tabu@quickend + \or % case 3 = outer is in mode 3 because of no X + \begingroup + \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \expandafter \tabu@measuring + \else % case 4 = horizontal measure + \begingroup + \global\let\tabu@elapsedtime \tabu@message@etime + \long\def\multicolumn##1##2##3{\multispan{##1}}% + \let\tabu@startpboxORI \@startpbox + \iftabu@spread + \def\tabu@naturalXmax {\z@}% + \let\tabu@naturalXmin \tabu@naturalXmax + \tabu@evr{\global\tabu@naturalX \z@}% + \let\@startpbox \tabu@startpboxmeasure + \else\iftabu@negcoef + \let\@startpbox \tabu@startpboxmeasure + \else \let\@startpbox \tabu@startpboxquick + \fi\fi + \expandafter \tabu@measuring + \fi +}% \tabu@strategy +\def\tabu@measuring{\expandafter \tabu@trial \expandafter + \count@ \the\count@ \tabu@endtrial +}% \tabu@measuring +\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} +\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \csname tabu@adl@endtrial\endcsname + \endarray}$\egroup % got \tabu@box +}% \tabu@shorttrial +\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr + \ifx \tabu@savecounters\relax \else + \let\tabu@savecounters \relax \tabu@clckpt \fi + \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi + \expandafter{\expandafter \tabuthepreamble + \the\tabu@thebody + \tabuendlongtrial}\egroup % got \tabu@box +}% \tabu@longtrial +\def\tabuendlongtrial{% no @ allowed for \scantokens + \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne + \LT@get@widths +}% \tabuendlongtrial +\def\tabu@adl@endtrial{% + \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! +\def\tabu@seteverycr {\tabu@reset + \everycr \expandafter{\the\everycr \tabu@everycr}% + \let\everycr \tabu@noeverycr % +}% \tabu@seteverycr +\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} +\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} +\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} +\def\tabu@endoftrials {% + \iftabuscantokens \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi + {\expandafter \tabu@closetrialsgroup \expandafter + \tabu@rescan \expandafter{% + \expandafter\tabuthepreamble + \the\expandafter\tabu@thebody + \iftabu@long \else \endarray \fi}} + {\expandafter\tabu@closetrialsgroup \expandafter + \tabuthepreamble + \the\tabu@thebody}% + \tabu@endenvir % Finish ! +}% \tabu@endoftrials +\def\tabu@closetrialsgroup {% + \toks@\expandafter{\tabu@endenvir}% + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target + \tabu@cnt \the\tabu@cnt + \def\noexpand\tabu@endenvir{\the\toks@}% + %Quid de \@halignto = \tabu@halignto ?? + }% \tabu@bufferX + \tabu@bufferX + \ifcase\tabu@nested % print out (outer in mode 0) + \global\tabu@cnt \tabu@cnt + \tabu@evr{\tabu@verticaldynamicadjustment}% + \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty + \let\@finalstrut \tabu@finalstrut + \else % vertical measure of nested tabu + \tabu@evr{\tabu@verticalinit}% + \tabu@celllalign@def{\tabu@verticalmeasure}% + \def\tabu@cellralign{\tabu@verticalspacing}% + \fi + \tabu@clckpt \let\@halignto \tabu@halignto + \let\@halignto \@empty + \tabu@seteverycr + \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ + \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) + \fi\fi +}% \tabu@closetrialsgroup +\def\tabu@quickend {\expandafter \endgroup \expandafter + \tabu@target \the\tabu@target \tabu@quickrule + \let\endarray \relax \tabu@endenvir +}% \tabu@quickend +\def\tabu@endtrial {\relax % stops \count@ assignment ! + \ifcase \count@ \tabu@err % case 0 = impossible here + \or \tabu@err % case 1 = impossible here + \or \tabu@err % case 2 = impossible here + \or % case 3 = outer goes into mode 0 + \def\tabu@bufferX{\endgroup}\count@ \z@ + \else % case 4 = outer goes into mode 3 + \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) + \else \tabu@arith % or 2 (outer in mode 4) + \fi + \count@=% + \ifcase\tabu@nested \thr@@ % outer goes into mode 3 + \else\iftabu@measuring \tw@ % outer is in mode 4 + \else \@ne % outer is in mode 3 + \fi\fi + \edef\tabu@bufferX{\endgroup + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% + \fi + \expandafter \tabu@bufferX \expandafter + \count@ \the\count@ \tabu@strategy +}% \tabu@endtrial +\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} +%% The algorithms: compute the widths / stop or go on --------------- +\def\tabu@arithnegcoef {% + \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs +}% \tabu@arithnegcoef +\def\tabu@arith@negcoef #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition + \advance\@tempdima #2\tabucolX + \else + \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated + \advance\dimen@ -#2\p@ + \advance\@tempdima -#2\tabucolX + \else + \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised + \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised + \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) + \fi + \fi + \fi +}% \tabu@arith@negcoef +\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ + \ifdim \@tempdima=\z@ + \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% + \else + \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} + *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% + \fi +}% \tabu@givespace +\def\tabu@arith {\advance\tabu@cnt \@ne + \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi + \tabu@arithnegcoef + \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % + \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax + \tabu@message{\tabu@message@arith}% + \ifdim \tabu@DELTA <\tabu@hfuzz + \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? + \let\tabu@ \tabu@givespace \tabu@Xcoefs + \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message + \else % already converged: nothing to do but nearly impossible... + \fi + \tabucolX \maxdimen + \tabu@measuringfalse + \else % need for narrower X columns + \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax + \tabu@measuringtrue + \@whilesw \iftabu@measuring\fi {% + \advance\tabu@cnt \@ne + \tabu@arithnegcoef + \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here + \tabu@message{\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else + \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ + \fi}% + \ifdim -\tabu@DELTA<\tabu@hfuzz + \advance\@tempdima \@tempdimb % for message + \tabu@measuringfalse + \else + \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax + \fi + }% + \fi + \tabu@message{\tabu@message@reached}% + \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt + \tabucolX \the\tabucolX + \tabu@target \the\tabu@target}% +}% \tabu@arith +\def\tabu@spreadarith {% + \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs + \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% + \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax + \iftabu@measuring + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% + \else + \tabu@message{\tabu@message@spreadarith}% + \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target + \tabu@message{(tabu) spread + \ifdim \@tempdimc>\tabu@target useless here: default target used% + \else too large: reduced to fit default target\fi.}% + \else + \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax + \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% + \fi + \begingroup \let\tabu@wddef \@gobbletwo + \@tempdimb \@tempdima + \tabucolX@init + \tabu@arithnegcoef + \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax + \expandafter\endgroup \expandafter\tabucolX \the\tabucolX + \tabu@arith + \fi +}% \tabu@spreadarith +\def\tabu@spread@arith #1#2{% + \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ + \else \advance\@tempdima \tabu@wd{#1}\relax + \fi +}% \tabu@spread@arith +%% Reporting in the .log file --------------------------------------- +\def\tabu@message@defaulttarget{% + \ifnum\tabu@nested=\z@^^J(tabu) Default target: + \ifx\tabudefaulttarget\linewidth \string\linewidth + \ifdim \tabu@thetarget=\linewidth \else + -\the\dimexpr\linewidth-\tabu@thetarget\fi = + \else\ifx\tabudefaulttarget\linegoal\string\linegoal= + \fi\fi + \else (tabu) Default target (nested): \fi + \the\tabu@target \on@line + \ifnum\tabu@nested=\z@ , page \the\c@page\fi} +\def\tabu@message@target {^^J(tabu) Target specified: + \the\tabu@target \on@line, page \the\c@page} +\def\tabu@message@arith {\tabu@header + \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ + \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ + \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ + \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else + \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ + \fi +}% \tabu@message@arith +\def\tabu@message@spreadarith {\tabu@spreadheader + \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ + \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ + \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ + \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ + \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target + \else \@tempdimc+\tabu@spreadtarget \fi + {}{}{}{}{}\@@} +\def\tabu@message@negcoef #1#2{ + \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: + \space width = \tabu@wd {#1} + \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname + \ifdim -\tabu@pt#2\tabucolX<\tabu@target + < \number-\rem@pt#2 X + = \the\dimexpr -\tabu@pt#2\tabucolX \relax + \else + <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} +\def\tabu@message@reached{\tabu@header + ******* Reached Target: + hfuzz = \tabu@hfuzz\on@line\space *******} +\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% + \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: + \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec + \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) + -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax + *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space + cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} +\def\tabu@message@verticalsp {% + \ifdim \@tempdima>\tabu@ht + \ifdim \@tempdimb>\tabu@dp + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% + \else + \expandafter\expandafter\expandafter\string\tabu@ht = + \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% + \fi + \else\ifdim \@tempdimb>\tabu@dp + \tabu@spaces\tabu@spaces\tabu@spaces + \expandafter\expandafter\expandafter\string\tabu@dp = + \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi + \fi +}% \tabu@message@verticalsp +\edef\tabu@spaces{\@spaces} +\def\tabu@strippt{\expandafter\tabu@pt\the} +{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} +\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} +\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} +\def\do #1{% + \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% + \ifnum##1<10 #1 #1\else + \ifnum##1<100 #1 \else + \ifnum##1<\@m #1\fi\fi\fi + ##1.##2##3##4##5##6##7##8#1}% + \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% + \def\tabu@titles{\ifnum \tabu@nested=\z@ + (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target + #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% + \def\tabu@spreadheader{% + (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. + #1 New Target^^J% + (tabu) sprd} + \def\tabu@message@save {\begingroup + \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} + \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt + \dimexpr####1\p@{ }{ }}}% + \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% + \let\CT@arc@ \relax \let\@preamble \@gobble + \let\tabu@savedpream \@firstofone + \let\tabu@savedparams \@firstofone + \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% + \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% + \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% + \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% + \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% + \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% + \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% + \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% + \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% + \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% + \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% + \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% + \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% + \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% + \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% + \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% + \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% + \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% + \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% + \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% + \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo + \tabu@message{% + (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% + \tabu@usetabu \@nil^^J}% + \endgroup} +}\do{ } +%% Measuring the natural width (varwidth) - store the results ------- +\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop + \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% + \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? + \iftabu@spread \else % if spread -> measure + \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure + \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) + \tabu@measuringtrue % for the quick option... + \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi + \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target + \tabu@target=\tabu@temp\tabucolX \fi\fi + \setbox\tabu@box \hbox \bgroup + \begin{varwidth}\tabu@target + \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... + \narrowragged \arraybackslash \parfillskip \@flushglue + \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi + \bgroup \aftergroup\tabu@endpboxmeasure + \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi + \else \expandafter\@gobble + \tabu@startpboxquick{#1}% \@gobble \bgroup + \fi +}% \tabu@startpboxmeasure +\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty + \bgroup\color@begingroup} +\def\tabu@endpboxmeasure {% + \@finalstrut \@arstrutbox + \end{varwidth}\egroup % + \ifdim \tabu@temp\p@ <\z@ % neg coef + \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box + \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% + \tabu@debug{\tabu@message@endpboxmeasure}% + \fi + \else % spread coef>0 + \global\advance \tabu@naturalX \wd\tabu@box + \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax + \ifdim \tabu@naturalXmax <\tabu@naturalX + \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi + \ifdim \tabu@naturalXmin <\@tempdima + \xdef\tabu@naturalXmin {\the\@tempdima}\fi + \fi + \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target +}% \tabu@endpboxmeasure +\def\tabu@wddef #1{\expandafter\xdef + \csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} +\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd + \the\tabu@Xcol. X[\tabu@temp]: + target = \the\tabucolX \space + \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol + =\tabu@wd\tabu@Xcol +}% \tabu@message@endpboxmeasure +\def\tabu@startpboxquick {\bgroup + \let\@startpbox \tabu@startpboxORI % restore immediately + \let\tabu \tabu@quick % \begin is expanded before... + \expandafter\@gobble \@startpbox % gobbles \bgroup +}% \tabu@startpboxquick +\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi + \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick +}% \tabu@quick +\def\tabu@endquick {% + \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else + \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax + \endgroup + \else \let\endtabu \relax + \tabu@end@envir + \fi +}% \tabu@quick +\def\tabu@endtabu {\end{tabu}} +\def\tabu@endtabus {\end{tabu*}} +%% Measuring the heights and depths - store the results ------------- +\def\tabu@verticalmeasure{\everypar{}% + \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group + \setbox\tabu@box =\hbox\bgroup + \let\tabu@verticalspacing \tabu@verticalsp@lcr + \d@llarbegin % after \hbox ... + \else + \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop + \else\ifnum\currentgrouptype=12\vcenter + \else\vbox\fi\fi}% + \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup + \let\tabu@verticalspacing \tabu@verticalsp@pmb + \fi +}% \tabu@verticalmeasure +\def\tabu@verticalsp@lcr{% + \d@llarend \egroup % + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \noindent\vrule height\@tempdima depth\@tempdimb +}% \tabu@verticalsp@lcr +\def\tabu@verticalsp@pmb{% inserts struts as needed + \par \expandafter\egroup + \expandafter$\expandafter + \egroup \expandafter + \@tempdimc \the\prevdepth + \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep + \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax + \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi + \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi + \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi + \let\@finalstrut \@gobble + \hrule height\@tempdima depth\@tempdimb width\hsize +%% \box\tabu@box +}% \tabu@verticalsp@pmb + +\def\tabu@verticalinit{% + \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! + \advance\c@taburow \@ne + \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% + \advance\c@taburow \m@ne +}% \tabu@verticalinit +\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} +\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} +\def\tabu@verticaldynamicadjustment {% + \advance\c@taburow \@ne + \extrarowheight \dimexpr\tabu@ht - \ht\strutbox + \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox + \let\arraystretch \@empty + \advance\c@taburow \m@ne +}% \tabu@verticaldynamicadjustment +\def\tabuphantomline{\crcr \noalign{% + {\globaldefs \@ne + \setbox\@arstrutbox \box\voidb@x + \let\tabu@@celllalign \tabu@celllalign + \let\tabu@@cellralign \tabu@cellralign + \let\tabu@@cellleft \tabu@cellleft + \let\tabu@@cellright \tabu@cellright + \let\tabu@@thevline \tabu@thevline + \let\tabu@celllalign \@empty + \let\tabu@cellralign \@empty + \let\tabu@cellright \@empty + \let\tabu@cellleft \@empty + \let\tabu@thevline \relax}% + \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% + \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr + \noalign{\tabu@rearstrut + {\globaldefs\@ne + \let\tabu@celllalign \tabu@@celllalign + \let\tabu@cellralign \tabu@@cellralign + \let\tabu@cellleft \tabu@@cellleft + \let\tabu@cellright \tabu@@cellright + \let\tabu@thevline \tabu@@thevline}}}% + \expandafter}\the\toks@ +}% \tabuphantomline +%% \firsthline and \lasthline corrections --------------------------- +\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} +\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} +\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} +\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} +\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) + \noalign{\ifnum0=`}\fi + {\CT@arc@\hrule height\arrayrulewidth}% + \futurelet \tabu@temp \tabu@xhline +}% \tabu@hline +\def\tabu@xhline{% + \ifx \tabu@temp \hline + {\ifx \CT@drsc@\relax \vskip + \else\ifx \CT@drsc@\@empty \vskip + \else \CT@drsc@\hrule height + \fi\fi + \doublerulesep}% + \fi + \ifnum0=`{\fi}% +}% \tabu@xhline +\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ + \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% + \tabu@hlineAZsurround +}% \tabu@hlineAZ +\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% + \extratabsurround #1\let\tabucline \tabucline@scan + \let\hline \tabu@hlinescan \let\firsthline \hline + \let\cline \tabu@clinescan \let\lasthline \hline + \expandafter \futurelet \expandafter \tabu@temp + \expandafter \tabu@nexthlineAZ \tabu@temp +}% \tabu@hlineAZsurround +\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} +\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} +\def\tabucline@scan{\@testopt \tabucline@sc@n {}} +\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} +\def\tabu@nexthlineAZ{% + \ifx \tabu@temp\hline \else + \ifx \tabu@temp\cline \else + \ifx \tabu@temp\tabucline \else + \tabu@hlinecorrection + \fi\fi\fi +}% \tabu@nexthlineAZ +\def\tabu@xhlineAZ #1{% + \toks@\expandafter{\the\toks@ #1}% + \@tempdimc \tabu@thick % The last line width + \ifcase\count@ \@tempdimb \tabu@thick % The first line width + \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax + \fi + \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ +}% \tabu@xhlineAZ +\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 + \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ + \edef\firsthline{% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + height \the\dimexpr\@tempdima+\extratabsurround + depth \dp\@arstrutbox + width \tabustrutrule}\hss}\cr + \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb + +\dp\@arstrutbox \relax}% + \the\toks@ + }\ifnum0=`{\fi + \expandafter}\firsthline % we are then ! +}% \tabu@firsthlinecorrection +\def\tabu@lasthlinecorrection{% + \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc + \edef\lasthline{% + \the\toks@ + \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% + \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule + depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ + +\extratabsurround-\@tempdimc + height \z@ + width \tabustrutrule}\hss}\cr + }\ifnum0=`{\fi + \expandafter}\lasthline % we are then ! +}% \tabu@lasthlinecorrection +\def\tabu@LT@@hline{% + \ifx\LT@next\hline + \global\let\LT@next \@gobble + \ifx \CT@drsc@\relax + \gdef\CT@LT@sep{% + \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% + \else + \gdef\CT@LT@sep{% + \multispan\LT@cols{% + \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% + \fi + \else + \global\let\LT@next\empty + \gdef\CT@LT@sep{% + \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% + \fi + \ifnum0=`{\fi}% + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \CT@LT@sep + \multispan\LT@cols + {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr + \noalign{\penalty\@M}% + \LT@next +}% \tabu@LT@@hline +%% Horizontal lines : \tabucline ------------------------------------ +\let\tabu@start \@tempcnta +\let\tabu@stop \@tempcntb +\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} +\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% + \ifnum \tabu@stop<\z@ \toks@{}% + \else \tabu@clinearg{#1}\tabu@thestyle + \edef\tabucline{\toks@{% + \ifnum \tabu@start>\z@ \omit + \tabu@multispan\tabu@start {\span\omit}&\fi + \omit \tabu@multispan\tabu@stop {\span\omit}% + \tabu@thehline\cr + }}\tabucline + \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% + \fi + \futurelet \tabu@temp \tabu@xcline +}% \tabu@cline +\def\tabu@clinearg #1{% + \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ + \else \@defaultunits \expandafter\let\expandafter\@tempa + \romannumeral-`\0#1\relax \@nnil + \ifx \hbox\@tempa \tabu@clinebox{#1}% + \else\ifx \box\@tempa \tabu@clinebox{#1}% + \else\ifx \vbox\@tempa \tabu@clinebox{#1}% + \else\ifx \vtop\@tempa \tabu@clinebox{#1}% + \else\ifx \copy\@tempa \tabu@clinebox{#1}% + \else\ifx \leaders\@tempa \tabu@clineleads{#1}% + \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% + \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% + \else\tabu@getline {#1}% + \fi\fi\fi\fi\fi\fi\fi\fi + \fi +}% \tabu@clinearg +\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} +\def\tabu@clineleads #1{% + \let\tabu@thestyle \relax \let\tabu@leaders \@undefined + \gdef\tabu@thehrule{#1}} +\def\tabu@thehline{\begingroup + \ifdefined\tabu@leaders + \noexpand\tabu@thehleaders + \else \noexpand\tabu@thehrule + \fi \endgroup +}% \tabu@thehline +\def\tabu@xcline{% + \ifx \tabu@temp\tabucline + \toks@\expandafter{\the\toks@ \noalign + {\ifx\CT@drsc@\relax \vskip + \else \CT@drsc@\hrule height + \fi + \doublerulesep}}% + \fi + \tabu@docline +}% \tabu@xcline +\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} +\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% + \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} +\def\tabu@multispan #1#2{% + \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan + \else \expandafter\@gobbletwo + \fi {#1-1}{#2}% +}% \tabu@multispan +\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} +\def\tabu@start@stop #1-#2\@nnil{% + \@defaultunits \tabu@start\number 0#1\relax \@nnil + \@defaultunits \tabu@stop \number 0#2\relax \@nnil + \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne + \else\ifnum \tabu@stop=\z@ \tabu@nbcols + \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols + \else \tabu@stop + \fi\fi\fi + \advance\tabu@start \m@ne + \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi +}% \tabu@start@stop +%% Numbers: siunitx S columns (and \tabudecimal) ------------------- +\def\tabu@tabudecimal #1{% + \def\tabu@decimal{#1}\@temptokena{}% + \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces + \tabu@scandecimal +}% \tabu@tabudecimal +\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} +\def\tabu@skipdecimal#1{#1\tabu@scandecimal} +\def\tabu@getdecimal@ignorespaces{% + \ifcase 0\ifx\tabu@temp\ignorespaces\else + \ifx\tabu@temp\@sptoken1\else + 2\fi\fi\relax + \let\tabu@getdecimal@ \tabu@getdecimal + \expandafter\tabu@skipdecimal + \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal + \else \expandafter\tabu@skipdecimal + \fi +}% \tabu@getdecimal@ignorespaces +\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% + \tabu@scandecimal} +\def\do#1{% + \def\tabu@get@decimalspace#1{% + \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% +}\do{ } +\let\tabu@@tabudecimal \tabu@tabudecimal +\def\tabu@getdecimal{% + \ifcase 0\ifx 0\tabu@temp\else + \ifx 1\tabu@temp\else + \ifx 2\tabu@temp\else + \ifx 3\tabu@temp\else + \ifx 4\tabu@temp\else + \ifx 5\tabu@temp\else + \ifx 6\tabu@temp\else + \ifx 7\tabu@temp\else + \ifx 8\tabu@temp\else + \ifx 9\tabu@temp\else + \ifx .\tabu@temp\else + \ifx ,\tabu@temp\else + \ifx -\tabu@temp\else + \ifx +\tabu@temp\else + \ifx e\tabu@temp\else + \ifx E\tabu@temp\else + \ifx\tabu@cellleft\tabu@temp1\else + \ifx\ignorespaces\tabu@temp1\else + \ifx\@sptoken\tabu@temp2\else + 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax + \expandafter\tabu@get@decimal + \or \expandafter\tabu@skipdecimal + \or \expandafter\tabu@get@decimalspace + \else\expandafter\tabu@printdecimal + \fi +}% \tabu@getdecimal +\def\tabu@printdecimal{% + \edef\tabu@temp{\the\@temptokena}% + \ifx\tabu@temp\@empty\else + \ifx\tabu@temp\space\else + \expandafter\tabu@decimal\expandafter{\the\@temptokena}% + \fi\fi +}% \tabu@printdecimal +%% Verbatim inside X columns ---------------------------------------- +\def\tabu@verbatim{% + \let\verb \tabu@verb + \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd +}% \tabu@verbatim +\let\tabu@ltx@verb \verb +\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} +\def\tabu@fancyvrb {% + \def\tabu@FV@DefineCheckEnd ##1{% + \def\tabu@FV@DefineCheckEnd{% + ##1% + \let\FV@CheckEnd \tabu@FV@CheckEnd + \let\FV@@CheckEnd \tabu@FV@@CheckEnd + \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd + \edef\FV@EndScanning{% + \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% + \global\let\noexpand\FV@EnvironName\relax + \noexpand\next}% + \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% + }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} +}% \tabu@fancyvrb +\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} +\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} +\begingroup +\catcode`\[1 \catcode`\]2 +\@makeother\{ \@makeother\} + \edef\x[\endgroup + \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% + ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} +\def\tabu@FV@ListProcessLine #1{% + \hbox {%to \hsize{% + \kern\leftmargin + \hbox {%to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +%% \savetabu -------------------------------------------------------- +\newcommand*\savetabu[1]{\noalign{% + \tabu@sanitizearg{#1}\tabu@temp + \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else + \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwritting}}% + \ifdefined\tabu@restored \expandafter\let + \csname tabu@saved@\tabu@temp \endcsname \tabu@restored + \else {\tabu@save}% + \fi + \fi}% +}% \savetabu +\def\tabu@save {% + \toks0\expandafter{\tabu@saved@}% + \iftabu@negcoef + \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% + \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi + \toks1\expandafter{\tabu@savedpream}% + \toks2\expandafter{\tabu@savedpreamble}% + \let\@preamble \relax + \let\tabu@savedpream \relax \let\tabu@savedparams \relax + \edef\tabu@preamble{% + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \edef\tabu@usetabu{% + \def\@preamble {\noexpand\the\toks2}% + \tabu@target \the\tabu@target \relax + \tabucolX \the\tabucolX \relax + \tabu@nbcols \the\tabu@nbcols \relax + \def\noexpand\tabu@aligndefault{\tabu@align}% + \def\tabu@savedparams {\noexpand\the\toks0}% + \def\tabu@savedpream {\noexpand\the\toks1}}% + \let\tabu@aligndefault \relax \let\@sharp \relax + \edef\@tempa{\noexpand\tabu@s@ved + {\tabu@usetabu} + {\tabu@preamble} + {\the\toks1}}\@tempa + \tabu@message@save +}% \tabu@save +\long\def\tabu@s@ved #1#2#3{% + \def\tabu@usetabu{#1}% + \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% + \ifodd ##1% \usetabu + \tabu@measuringfalse \tabu@spreadfalse % Just in case... + \gdef\tabu@usetabu {% + \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi + \global\let\tabu@usetabu \@undefined + \def\@halignto {to\tabu@target}% + #1% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \else % \preamble + \gdef\tabu@preamble {% + \global\let\tabu@preamble \@undefined + #2% + \ifx \tabu@align\tabu@aligndefault@text + \ifnum \tabu@nested=\z@ + \let\tabu@align \tabu@aligndefault \fi\fi}% + \fi + #3}% +}% \tabu@s@ved +\def\tabu@aligndefault@text {\tabu@aligndefault}% +\def\tabu@warn@usetabu {\PackageWarning{tabu} + {Specifying a target with \string\usetabu\space is useless + \MessageBreak The target cannot be changed!}} +\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} +\def\tabu@savewarn#1#2{\PackageInfo{tabu} + {User-name `#1' already used for \string\savetabu + \MessageBreak #2}}% +\def\tabu@saveerr#1{\PackageError{tabu} + {User-name `#1' is unknown for \string\usetabu + \MessageBreak I cannot restore an unknown preamble!}\@ehd} +%% \rowfont --------------------------------------------------------- +\newskip \tabu@cellskip +\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi + {\ifnum0=`}\fi \tabu@row@font} +\newcommand*\tabu@row@font[2][]{% + \ifnum7=\currentgrouptype + \global\let\tabu@@cellleft \tabu@cellleft + \global\let\tabu@@cellright \tabu@cellright + \global\let\tabu@@celllalign \tabu@celllalign + \global\let\tabu@@cellralign \tabu@cellralign + \global\let\tabu@@rowfontreset\tabu@rowfontreset + \fi + \global\let\tabu@rowfontreset \tabu@rowfont@reset + \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% + \ifcsname tabu@cell@#1\endcsname % row alignment + \csname tabu@cell@#1\endcsname \fi + \ifnum0=`{\fi}% end of group / noalign group +}% \rowfont +\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% +\def\tabu@rowfont@reset{% + \global\let\tabu@rowfontreset \tabu@@rowfontreset + \global\let\tabu@cellleft \tabu@@cellleft + \global\let\tabu@cellright \tabu@@cellright + \global\let\tabu@cellfont \@empty + \global\let\tabu@celllalign \tabu@@celllalign + \global\let\tabu@cellralign \tabu@@cellralign +}% \tabu@@rowfontreset +\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl +%% \tabu@prepnext@tok ----------------------------------------------- +\newif \iftabu@cellright +\def\tabu@prepnext@tok{% + \ifnum \count@<\z@ % + \@tempcnta \@M % + \tabu@nbcols\z@ + \let\tabu@fornoopORI \@fornoop + \tabu@cellrightfalse + \else + \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left + \advance \tabu@nbcols \@ne + \iftabu@cellright % before-previous token is right and is finished + \tabu@cellrightfalse % + \tabu@righttok + \fi + \tabu@lefttok + \or % (case 1) previous token is right + \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop + \else % special column: do not change the token + \iftabu@cellright % before-previous token is right + \tabu@cellrightfalse + \tabu@righttok + \fi + \fi % \ifcase + \fi + \tabu@prepnext@tokORI +}% \tabu@prepnext@tok +\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} +\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% + \ifx \in@#2\else + \let\@fornoop \tabu@fornoopORI + \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% + \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% + \expandafter\prepnext@tok + \fi +}% \tabu@lastnoop +\def\tabu@righttok{% + \advance \count@ \m@ne + \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% + \advance \count@ \@ne +}% \tabu@righttok +\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign + \the\toks\count@ \tabu@cellleft}% after because of $ +}% \tabu@lefttok +%% Neutralisation of glues ------------------------------------------ +\let\tabu@cellleft \@empty +\let\tabu@cellright \@empty +\tabu@celllalign@def{\tabu@cellleft}% +\let\tabu@cellralign \@empty +\def\tabu@cell@align #1#2#3{% + \let\tabu@maybesiunitx \toks@ \tabu@celllalign + \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% + \toks@\expandafter{\tabu@cellralign #2}% + \xdef\tabu@cellralign{\the\toks@}% + \toks@\expandafter{\tabu@cellleft #3}% + \xdef\tabu@cellleft{\the\toks@}% +}% \tabu@cell@align +\def\tabu@cell@l{% force alignment to left + \tabu@cell@align + {\tabu@removehfil \raggedright \tabu@cellleft}% left + {\tabu@flush1\tabu@ignorehfil}% right + \raggedright +}% \tabu@cell@l +\def\tabu@cell@c{% force alignment to center + \tabu@cell@align + {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \centering +}% \tabu@cell@c +\def\tabu@cell@r{% force alignment to right + \tabu@cell@align + {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} + \tabu@ignorehfil + \raggedleft +}% \tabu@cell@r +\def\tabu@cell@j{% force justification (for p, m, b columns) + \tabu@cell@align + {\tabu@justify\tabu@cellleft} + {} + \tabu@justify +}% \tabu@cell@j +\def\tabu@justify{% + \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip + \parfillskip\@flushglue +}% \tabu@justify +%% ragged2e settings +\def\tabu@cell@L{% force alignment to left (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedRight \tabu@cellleft} + {\tabu@flush 1\tabu@ignorehfil} + \RaggedRight +}% \tabu@cell@L +\def\tabu@cell@C{% force alignment to center (ragged2e) + \tabu@cell@align + {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} + {\tabu@flush{.5}\tabu@ignorehfil} + \Centering +}% \tabu@cell@C +\def\tabu@cell@R{% force alignment to right (ragged2e) + \tabu@cell@align + {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} + \tabu@ignorehfil + \RaggedLeft +}% \tabu@cell@R +\def\tabu@cell@J{% force justification (ragged2e) + \tabu@cell@align + {\justifying \tabu@cellleft} + {} + \justifying +}% \tabu@cell@J +\def\tabu@flush#1{% + \iftabu@colortbl % colortbl uses \hfill rather than \hfil + \hskip \ifnum13<\currentgrouptype \stretch{#1}% + \else \ifdim#1pt<\p@ \tabu@cellskip + \else \stretch{#1} + \fi\fi \relax + \else % array.sty + \ifnum 13<\currentgrouptype + \hfil \hskip1sp \relax \fi + \fi +}% \tabu@flush +\let\tabu@hfil \hfil +\let\tabu@hfill \hfill +\let\tabu@hskip \hskip +\def\tabu@removehfil{% + \iftabu@colortbl + \unkern \tabu@cellskip =\lastskip + \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip + \else \tabu@cellskip \z@skip + \fi + \else + \ifdim\lastskip=1sp\unskip\fi + \ifnum\gluestretchorder\lastskip =\@ne + \hfilneg % \hfilneg for array.sty but not for colortbl... + \fi + \fi +}% \tabu@removehfil +\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} +\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil + \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group +}% \tabu@nohfil +\def\tabu@colortblalignments {% if colortbl + \def\tabu@nohfil{% + \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group + \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... + \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local +}% \tabu@colortblalignments +%% Taking care of footnotes and hyperfootnotes ---------------------- +\long\def\tabu@footnotetext #1{% + \edef\@tempa{\the\tabu@footnotes + \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% + \global\tabu@footnotes\expandafter{\@tempa {#1}}}% +\long\def\tabu@xfootnotetext [#1]#2{% + \global\tabu@footnotes\expandafter{\the\tabu@footnotes + \footnotetext [{#1}]{#2}}} +\let\tabu@xfootnote \@xfootnote +\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} +\long\def\tabu@Hy@xfootnote [#1]{% + \begingroup + \value\@mpfn #1\relax + \protected@xdef \@thefnmark {\thempfn}% + \endgroup + \@footnotemark \tabu@Hy@ftntxt {#1}% +}% \tabu@Hy@xfootnote +\long\def\tabu@Hy@ftntxt #1#2{% + \edef\@tempa{% + \the\tabu@footnotes + \begingroup + \value\@mpfn #1\relax + \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% + \expandafter \noexpand \expandafter + \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% + }% + \global\tabu@footnotes\expandafter{\@tempa {#2}% + \endgroup}% +}% \tabu@Hy@ftntxt +\long\def\tabu@Hy@footnotetext #1#2{% + \H@@footnotetext{% + \ifHy@nesting + \hyper@@anchor {#1}{#2}% + \else + \Hy@raisedlink{% + \hyper@@anchor {#1}{\relax}% + }% + \def\@currentHref {#1}% + \let\@currentlabelname \@empty + #2% + \fi + }% +}% \tabu@Hy@footnotetext +%% No need for \arraybackslash ! ------------------------------------ +\def\tabu@latextwoe {% +\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@centering \centering \arraybackslash +\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash +\tabu@temp \tabu@raggedright \raggedright \arraybackslash +}% \tabu@latextwoe +\def\tabu@raggedtwoe {% +\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} +\tabu@temp \tabu@Centering \Centering \arraybackslash +\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash +\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash +\tabu@temp \tabu@justifying \justifying \arraybackslash +}% \tabu@raggedtwoe +\def\tabu@normalcrbackslash{\let\\\@normalcr} +\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% + \expandafter\tabu@normalcrbackslash \@trivlist}} +%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- +\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} +\def\tabu@beginfbox {\bgroup \kern\fboxsep + \bgroup\aftergroup\tabu@endfbox} +\def\tabu@endfbox {\kern\fboxsep\egroup\egroup + \@frameb@x\relax} +\def\tabu@color@b@x #1#2{\leavevmode \bgroup + \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% + \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox +}% \tabu@color@b@x +\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup + \aftergroup\tabu@endcolor@b@x \set@color} +\def\tabu@endcolor@b@x {\kern\fboxsep \egroup + \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ + \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ + \tabu@docolor@b@x \egroup +}% \tabu@endcolor@b@x +%% Corrections (arydshln, delarray, colortbl) ----------------------- +\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray + \iftabu@colortbl + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \def\tabu@endarray{% + \crcr \egroup \egroup % + \@arrayright % + \gdef\@preamble{}\CT@end}% + \fi + \else + \ifdefined\adl@array % + \def\tabu@endarray{% + \adl@endarray \egroup \adl@arrayrestore \egroup % + \@arrayright % + \gdef\@preamble{}}% + \else % + \PackageWarning{tabu} + {\string\@arrayright\space is missing from the + \MessageBreak definition of \string\endarray. + \MessageBreak Comptability with delarray.sty is broken.}% + \fi\fi +}% \tabu@fix@arrayright +\def\tabu@adl@xarraydashrule #1#2#3{% + \ifnum\@lastchclass=\adl@class@start\else + \ifnum\@lastchclass=\@ne\else + \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) + \adl@leftrulefalse \fi\fi % must be treated the same + \fi + \ifadl@zwvrule\else \ifadl@inactive\else + \@addtopreamble{\vrule\@width\arrayrulewidth + \@height\z@ \@depth\z@}\fi \fi + \ifadl@leftrule + \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% + {\number#1}#3}% + \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% + {\number#2}#3} + \fi +}% \tabu@adl@xarraydashrule +\def\tabu@adl@act@endpbox {% + \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox + \egroup \egroup + \adl@colhtdp \box\adl@box \hfil +}% \tabu@adl@act@endpbox +\def\tabu@adl@fix {% + \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln + \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln + \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln + \let\@preamerror \@preamerr % arydshln +}% \tabu@adl@fix +%% Correction for longtable' \@startbox definition ------------------ +%% => \everypar is ``missing'' : TeX should be in vertical mode +\def\tabu@LT@startpbox #1{% + \bgroup + \let\@footnotetext\LT@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% +}% \tabu@LT@startpbox +%% \tracingtabu and the package options ------------------ +\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} +\DeclareOption{linegoal}{% + \AtEndOfPackage{% + \RequirePackage{linegoal}[2010/12/07]% + \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX +}} +\DeclareOption{scantokens}{\tabuscantokenstrue} +\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} +\def\tracingtabu {\begingroup\@ifnextchar=% + {\afterassignment\tabu@tracing\count@} + {\afterassignment\tabu@tracing\count@1\relax}} +\def\tabu@tracing{\expandafter\endgroup + \expandafter\tabu@tr@cing \the\count@ \relax +}% \tabu@tracing +\def\tabu@tr@cing #1\relax {% + \ifnum#1>\thr@@ \let\tabu@tracinglines\message + \else \let\tabu@tracinglines\@gobble + \fi + \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG + \def\tabu@mkarstrut {\tabu@DBG@arstrut}% + \tabustrutrule 1.5\p@ + \else \let\tabu@DBG \@gobble + \def\tabu@mkarstrut {\tabu@arstrut}% + \tabustrutrule \z@ + \fi + \ifnum#1>\@ne \let\tabu@debug \message + \else \let\tabu@debug \@gobble + \fi + \ifnum#1>\z@ + \let\tabu@message \message + \let\tabu@tracing@save \tabu@message@save + \let\tabu@starttimer \tabu@pdftimer + \else + \let\tabu@message \@gobble + \let\tabu@tracing@save \@gobble + \let\tabu@starttimer \relax + \fi +}% \tabu@tr@cing +%% Setup \AtBeginDocument +\AtBeginDocument{\tabu@AtBeginDocument} +\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined + \ifdefined\arrayrulecolor \tabu@colortbltrue % + \tabu@colortblalignments % different glues are used + \else \tabu@colortblfalse \fi + \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi + \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi + \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ + \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % + \expandafter\ifx + \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax + \tabu@siunitxtrue + \else \let\tabu@maybesiunitx \@firstofone % + \let\tabu@siunitx \tabu@nosiunitx + \tabu@siunitxfalse + \fi + \ifdefined\adl@array % + \else \let\tabu@adl@fix \relax + \let\tabu@adl@endtrial \@empty \fi + \ifdefined\longtable % + \else \let\longtabu \tabu@nolongtabu \fi + \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi + \csname\ifcsname ifHy@hyperfootnotes\endcsname % + ifHy@hyperfootnotes\else iffalse\fi\endcsname + \let\tabu@footnotetext \tabu@Hy@ftntext + \let\tabu@xfootnote \tabu@Hy@xfootnote \fi + \ifdefined\FV@DefineCheckEnd% + \tabu@fancyvrb \fi + \ifdefined\color % + \let\tabu@color \color + \def\tabu@leavevmodecolor ##1{% + \def\tabu@leavevmodecolor {\leavevmode ##1}% + }\expandafter\tabu@leavevmodecolor\expandafter{\color}% + \else + \let\tabu@color \tabu@nocolor + \let\tabu@leavevmodecolor \@firstofone \fi + \tabu@latextwoe + \ifdefined\@raggedtwoe@everyselectfont % + \tabu@raggedtwoe + \else + \let\tabu@cell@L \tabu@cell@l + \let\tabu@cell@R \tabu@cell@r + \let\tabu@cell@C \tabu@cell@c + \let\tabu@cell@J \tabu@cell@j \fi + \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% + \ifin@ \let\tabu@endarray \endarray + \else \tabu@fix@arrayright \fi% + \everyrow{}% +}% \tabu@AtBeginDocument +\def\tabu@warn@cellspace{% + \PackageWarning{tabu}{% + Package cellspace has some limitations + \MessageBreak And redefines some macros of array.sty. + \MessageBreak Please use \string\tabulinesep\space to control + \MessageBreak vertical spacing of lines inside tabu environnement}% +}% \tabu@warn@cellspace +%% tabu Package initialisation +\tabuscantokensfalse +\let\tabu@arc@G \relax +\let\tabu@drsc@G \relax +\let\tabu@evr@G \@empty +\let\tabu@rc@G \@empty +\def\tabu@ls@G {\tabu@linestyle@}% +\let\tabu@@rowfontreset \@empty % +\let\tabu@@celllalign \@empty +\let\tabu@@cellralign \@empty +\let\tabu@@cellleft \@empty +\let\tabu@@cellright \@empty +\def\tabu@naturalXmin {\z@} +\def\tabu@naturalXmax {\z@} +\let\tabu@rowfontreset \@empty +\def\tabulineon {4pt}\let\tabulineoff \tabulineon +\tabu@everyrowtrue +\ifdefined\pdfelapsedtime % + \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% +\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax +\fi +\tracingtabu=\z@ +\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ +\tabulinestyle{} +\taburowcolors{} +\let\tabudefaulttarget \linewidth +\ProcessOptions* % \ProcessOptions* is quicker ! +\endinput +%% +%% End of file `tabu.sty'. -- cgit v1.2.3