texlive[45021] Master/texmf-dist: testidx (11aug17)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 12 01:06:41 CEST 2017


Revision: 45021
          http://tug.org/svn/texlive?view=revision&revision=45021
Author:   karl
Date:     2017-08-12 01:06:40 +0200 (Sat, 12 Aug 2017)
Log Message:
-----------
testidx (11aug17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/testidx/CHANGES
    trunk/Master/texmf-dist/doc/latex/testidx/README
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-a4.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-babel-german.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-german.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-hyp.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-letter.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-subset.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-t1.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-code.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.tex
    trunk/Master/texmf-dist/source/latex/testidx/testidx.dtx
    trunk/Master/texmf-dist/source/latex/testidx/testidx.ins
    trunk/Master/texmf-dist/tex/latex/testidx/testidx.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.tex
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf
    trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.tex
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs-utf8.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs.tex
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-markers.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-mathsym.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs-utf8.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.tex
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-numbers.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-ascii.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-utf8.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.bib
    trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.tex
    trunk/Master/texmf-dist/tex/latex/testidx/testidx-glossaries.sty

Modified: trunk/Master/texmf-dist/doc/latex/testidx/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/CHANGES	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/CHANGES	2017-08-11 23:06:40 UTC (rev 45021)
@@ -1,3 +1,18 @@
+v1.1 (2017-08-11):
+
+ * Added more sample text, including examples starting with some
+   digraphs and a trigraph.
+
+ * New package options: diglyphs, nodiglyphs
+
+ * New commands:
+
+    - \tstidxSetSeeEncap
+    - \tstidxSetSeeAlsoEncap
+
+ * Added supplementary package testidx-glossaries.sty which uses the
+   interface provided by the glossaries package.
+
 v1.0 (2016-10-17):
 
  * Initial release

Modified: trunk/Master/texmf-dist/doc/latex/testidx/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/README	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/README	2017-08-11 23:06:40 UTC (rev 45021)
@@ -1,10 +1,12 @@
-LaTeX Package : testidx v1.0
+LaTeX Package : testidx v1.1
 
-Last Modified : 2016-10-17
+Last Modified : 2017-08-11
 
 Author        : Nicola Talbot
 
 This package provides dummy text for testing indexes.
+The supplementary package testidx-glossaries.sty uses
+the indexing interface provided by the glossaries package.
 
 Example document:
 

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-a4.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.tex	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-amsmath.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -16,6 +16,7 @@
 
 \usepackage{makeidx}
 \usepackage{amsmath}
+\usepackage{amssymb}
 \usepackage{testidx}
 
 \makeindex

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-babel-german.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-german.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-hyp.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-letter.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.tex	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-lua.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -54,13 +54,13 @@
    :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
    :before "A")
 
-; define a "Maths" group for keys starting with "+"
+; define a "Maths" group for keys starting with ">"
 
 (define-letter-group "Maths"
    :prefixes (">" )
    :before "Numbers")
 
-; define a "Markers" group for keys starting with "."
+; define a "Markers" group for keys starting with "<"
 
 (define-letter-group "Markers"
    :prefixes ("<" )

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-subset.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-t1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.tex	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-utf8.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -18,6 +18,7 @@
 \usepackage{filecontents}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
+\usepackage{amssymb}
 \usepackage{makeidx}
 \usepackage
  [
@@ -64,13 +65,13 @@
    :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
    :before "A")
 
-; define a "Maths" group for keys starting with "+"
+; define a "Maths" group for keys starting with ">"
 
 (define-letter-group "Maths"
    :prefixes (">" )
    :before "Numbers")
 
-; define a "Markers" group for keys starting with "."
+; define a "Markers" group for keys starting with "<"
 
 (define-letter-group "Markers"
    :prefixes ("<" )

Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,85 @@
+% This file is public domain.
+%
+% This example document demonstrates the testidx package
+% with XeLaTeX and xindy using digraph glyphs.
+% You can build this document using:
+%
+% xelatex sample-idx-xe
+% xindy -M sample-idx-xe -M texindy -C utf8 -L english -t sample-idx-xe.ilg sample-idx-xe.idx
+% xelatex sample-idx-xe
+%
+% You may want to experiment with different languages.
+%
+% If you are using arara, the directives are:
+%
+% arara: xelatex
+% arara: xindy: {language: english, codepage: utf8,
+% arara: --> modules: [basename, texindy]}
+% arara: xelatex
+\documentclass{article}
+
+\usepackage{filecontents}
+\usepackage{fontspec}
+
+% Need a font that supports the digraph glyphs
+% For example:
+\setmainfont{Linux Libertine O}
+
+\usepackage{makeidx}
+\usepackage[diglyphs]{testidx}
+
+% Create the .xdy file for this example:
+\begin{filecontents*}{\jobname.xdy}
+; list of allowed attributes
+
+(define-attributes ((
+  "tstidxencapi"
+  "tstidxencapii"
+  "tstidxencapiii"
+)))
+
+; define format to use for locations
+
+(markup-locref :open "\tstidxencapi{"
+ :close "}"
+ :attr "tstidxencapi")
+
+(markup-locref :open "\tstidxencapii{"
+ :close "}"
+ :attr "tstidxencapii")
+
+(markup-locref :open "\tstidxencapiii{"
+ :close "}"
+ :attr "tstidxencapiii")
+
+(markup-locref-list :sep ",")
+(markup-range :sep "--")
+
+; define a numbers group
+
+(define-letter-group "Numbers"
+   :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+   :before "A")
+
+; define a "Maths" group for keys starting with ">"
+
+(define-letter-group "Maths"
+   :prefixes (">" )
+   :before "Numbers")
+
+; define a "Markers" group for keys starting with "<"
+
+(define-letter-group "Markers"
+   :prefixes ("<" )
+   :before "Maths")
+
+\end{filecontents*}
+
+\makeindex
+
+\begin{document}
+\testidx
+
+\printindex
+\end{document}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe-digraphs.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.tex	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx-xe.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -7,6 +7,8 @@
 % xindy -M sample-idx-xe -M texindy -C utf8 -L english -t sample-idx-xe.ilg sample-idx-xe.idx
 % xelatex sample-idx-xe
 %
+% You may want to experiment with different languages.
+%
 % If you are using arara, the directives are:
 %
 % arara: xelatex
@@ -53,13 +55,13 @@
    :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
    :before "A")
 
-; define a "Maths" group for keys starting with "+"
+; define a "Maths" group for keys starting with ">"
 
 (define-letter-group "Maths"
    :prefixes (">" )
    :before "Numbers")
 
-; define a "Markers" group for keys starting with "."
+; define a "Markers" group for keys starting with "<"
 
 (define-letter-group "Markers"
    :prefixes ("<" )

Modified: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idx.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,76 @@
+% arara: xelatex
+% arara: bib2gls: {group: on}
+% arara: xelatex
+% arara: xelatex
+\documentclass{report}
+
+\usepackage{fontspec}
+\setmainfont{DejaVu Serif}
+
+\usepackage{amssymb}
+\usepackage[hidelinks]{hyperref}
+\usepackage[bib2gls,diglyphs]{testidx-glossaries}
+
+\setglossarystyle{mcolindexspannav}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+\renewcommand*{\glstreegroupheaderfmt}[1]{\textbf{#1}}
+
+\tstidxmakegloss[
+ max-loc-diff={2},
+% Try with different languages
+% sort={no}% norsk
+% sort={nn}% nynorsk
+% sort={nl}% dutch
+% sort={is}% icelandic
+% sort={cy}% welsh
+% sort={ga}% irish
+% sort={pl}% polish
+% sort={hu}% hungarian
+% Or use a custom rule:
+ sort={custom},
+ sort-rule={% custom sort rule (only used with sort=custom)
+ ' '; % space
+ \string\u0300;% combining grave accent
+ \string\u0301;% combining acute accent
+ \string\u0302;% combining circumflex accent
+ \string\u0303;% combining tilde accent
+ \string\u0304;% combining macron accent
+ \string\u0305;% combining overline accent
+ \string\u0306;% combining breve accent
+ \string\u0307;% combining dot above accent
+ \string\u0308;% combining diaeresis accent
+ \string\u0309;% combining hook above accent
+ \string\u030A;% combining ring above accent
+ \string\u030B;% combining double acute accent
+ \string\u030C;% combining caron accent
+ \string\u0327;% combining cedilla accent
+ \string\u0328;% combining ogonek accent
+ \string\u20D7% combining right arrow above accent
+ <'\string_'< ','< ';'< ':'< '!'< '?'< '/'< '.'< '<'<'>'<'('<')'% punctuation
+ < 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9
+ < a,A < b,B < c,C < d,D
+ < dd,Dd,DD
+ < dz,\string\u01F3\string&Dz,\string\u01F2\string&DZ,\string\u01F1 < dzs,DZS
+ < \string\u00F0,\string\u00D0 % eth
+ < e,E < f,F < ff,Ff,FF
+ < g,G < h,H < i,I < ij,\string\u0133,IJ,\string\u0132
+ < j,J < k,K < l,L
+ < ll,\string\u1EFB,Ll,LL,\string\u1EFA
+ < m,M < n,N
+ < ng,Ng,NG < o,O < p,P
+ < q,Q < r,R < s,S < t,T < u,U < v,V < w,W < x,X < y,Y < z,Z
+ < \string\u00E6,\string\u00C6 % (ae ligature)
+ < \string\u0153,\string\u0152 % (oe ligature)
+ < \string\u00FE,\string\u00DE % (thorn)
+ < \string\u00F8,\string\u00D8 % (o slash)
+ < \string\u0142,\string\u0141 % (l stroke)
+ }
+]
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls-xe.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,72 @@
+% arara: pdflatex
+% arara: bib2gls: {group: on}
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[a4paper]{geometry}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{amssymb}
+\usepackage[hidelinks]{hyperref}
+\usepackage[bib2gls]{testidx-glossaries}
+
+\setglossarystyle{mcolindexspannav}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+\renewcommand*{\glstreegroupheaderfmt}[1]{\textbf{#1}}
+
+\tstidxmakegloss[
+% Try with different languages:
+% sort={no}% norsk
+% sort={nn}% nynorsk
+% sort={nl}% dutch
+% sort={is}% icelandic
+% sort={cy}% welsh
+% sort={ga}% irish
+% sort={pl}% polish
+% sort={hu}% hungarian
+% Or use a custom rule:
+ sort={custom},
+ sort-rule={% custom sort rule (only used with sort=custom)
+ ' '; % space
+ \string\u0300;% combining grave accent
+ \string\u0301;% combining acute accent
+ \string\u0302;% combining circumflex accent
+ \string\u0303;% combining tilde accent
+ \string\u0304;% combining macron accent
+ \string\u0305;% combining overline accent
+ \string\u0306;% combining breve accent
+ \string\u0307;% combining dot above accent
+ \string\u0308;% combining diaeresis accent
+ \string\u0309;% combining hook above accent
+ \string\u030A;% combining ring above accent
+ \string\u030B;% combining double acute accent
+ \string\u030C;% combining caron accent
+ \string\u0327;% combining cedilla accent
+ \string\u0328;% combining ogonek accent
+ \string\u20D7% combining right arrow above accent
+ <'\string_'< ','< ';'< ':'< '!'< '?'< '/'< '.'< '<'<'>'<'('<')'% punctuation
+ < 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9
+ < a,A < b,B < c,C < d,D
+ < dd,Dd,DD < dz,DZ < dzs,DZS
+ < \string\u00F0,\string\u00D0 % eth
+ < e,E < f,F < ff,Ff,FF
+ < g,G < h,H < i,I < ij,IJ < j,J < k,K < l,L < ll,Ll,LL < m,M < n,N
+ < ng,Ng,NG < o,O < p,P
+ < q,Q < r,R < s,S < t,T < u,U < v,V < w,W < x,X < y,Y < z,Z
+ < \string\u00E6,\string\u00C6 % (ae ligature)
+ < \string\u0153,\string\u0152 % (oe ligature)
+ < \string\u00FE,\string\u00DE % (thorn)
+ < \string\u00F8,\string\u00D8 % (o slash)
+ < \string\u0142,\string\u0141 % (l stroke)
+}
+]
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-bib2gls.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,18 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage[hidelinks]{hyperref}
+\usepackage[desc]{testidx-glossaries}
+
+\tstidxmakegloss
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-desc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,38 @@
+% arara: xelatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: xelatex
+\documentclass{report}
+
+\usepackage{fontspec}
+\setmainfont{Linux Libertine O}
+
+\usepackage[xindy,diglyphs]{testidx-glossaries}
+
+% Try this example out with different xindy language modules:
+%\GlsSetXdyLanguage{dutch}
+%\GlsSetXdyLanguage{icelandic}
+%\GlsSetXdyLanguage{hungarian}
+%\GlsSetXdyLanguage{polish}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+
+\GlsAddXdyAttribute{tstidxencapi}
+\GlsAddXdyAttribute{tstidxencapii}
+\GlsAddXdyAttribute{tstidxencapiii}
+
+% define a "Maths" group for keys starting with ">"
+
+\GlsAddLetterGroup{Maths}{:prefixes (">" ) :before "glsnumbers"}
+
+% define a "Markers" group for keys starting with "<"
+
+\GlsAddLetterGroup{Markers}{:prefixes ("<" ) :before "Maths"}
+
+\tstidxmakegloss
+
+\begin{document}
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xe-digraphs.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,33 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{amssymb}
+\usepackage[seekey,prefix,verbose,xindy]{testidx-glossaries}
+
+% Try this example out with different xindy language modules:
+%\GlsSetXdyLanguage{dutch}
+%\GlsSetXdyLanguage{icelandic}
+%\GlsSetXdyLanguage{hungarian}
+%\GlsSetXdyLanguage{polish}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+
+\GlsAddXdyAttribute{tstidxencapi}
+\GlsAddXdyAttribute{tstidxencapii}
+\GlsAddXdyAttribute{tstidxencapiii}
+
+\GlsAddLetterGroup{Maths}{:prefixes (">") :before "glsnumbers"}
+\GlsAddLetterGroup{Markers}{:prefixes ("<") :before "Maths"}
+
+\tstidxmakegloss
+
+\begin{document}
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss-xindy.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,22 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass[11pt]{report}
+
+\usepackage[T1]{fontenc}
+\usepackage{amssymb}
+\usepackage[a4paper,left=.75in,right=1.6in]{geometry}
+\usepackage[verbose]{testidx-glossaries}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+\renewcommand*{\glstreegroupheaderfmt}[1]{\textbf{#1}}
+
+\tstidxmakegloss
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-idxgloss.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf	2017-08-11 23:06:40 UTC (rev 45021)

Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,18 @@
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage[tex,verbose]{testidx-glossaries}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+
+\tstidxmakegloss
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/samples/sample-noidxgloss.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/testidx/testidx-code.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs-utf8.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs-utf8.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs-utf8.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,61 @@
+% Encoding: UTF-8
+
+ at index{ll,
+  name={ỻ},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as the ligature Ỻ}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as the ligature IJ}
+}
+
+ at index{dz,
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate letter
+from D and may be rendered as the ligature Dz}
+}
+
+ at index{llan,
+  name={ỻan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={ỻama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dzéta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs-utf8.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,61 @@
+%%
+%% This is file `testidx-glossaries-diglyphs.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% testidx.dtx  (with options: `testidx-glossaries-diglyphs.tex,package')
+%% 
+%%  testidx.dtx
+%%  Copyright 2017 Nicola Talbot
+%% 
+%%  This work may be distributed and/or modified under the
+%%  conditions of the LaTeX Project Public License, either version 1.3
+%%  of this license or (at your option) any later version.
+%%  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%%  and version 1.3 or later is part of all distributions of LaTeX
+%%  version 2005/12/01 or later.
+%% 
+%%  This work has the LPPL maintenance status `maintained'.
+%% 
+%%  The Current Maintainer of this work is Nicola Talbot.
+%% 
+%%  This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
+%% 
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\tstidxnewutfdigraph{ll}{ll}{ỻ}{a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature Ỻ}
+\tstidxnewutfdigraph{ij}{ij}{ij}{a \glshyperlink{digraph} used in Dutch that's sometimes
+considered
+a separate letter from I and may be rendered as the ligature IJ}
+\tstidxnewutfdigraph{dz}{dz}{dz}{a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as the ligature Dz}
+\tstidxnewutfword{llan}{llan}{ỻan}{commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+\tstidxnewutfword{llama}{llama}{ỻama}{domesticate animal found in the Andes}
+\tstidxnewutfword{lijnbus}{lijnbus}{lijnbus}{bus (Dutch)}
+\tstidxnewutfword{ijsvrij}{ijsvrij}{ijsvrij}{frost (Dutch)}
+\tstidxnewutfword{dzwon}{dzwon}{dzwon}{bell (Polish)}
+\tstidxnewutfword{dzeta}{dz\'eta}{dzéta}{the Greek letter zeta
+(Hungarian)}
+\endinput
+%%
+%% End of file `testidx-glossaries-diglyphs.tex'.


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-diglyphs.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-markers.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-markers.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-markers.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,79 @@
+% Encoding: ASCII
+
+ at symbol{tstidxmarker,
+  name={\protect\tstidxmarker\space(\protect\tstidxcsfmt{tstidxmarker})},
+  category={indexmarker},
+  description={indicates where the indexing command was used for a
+top-level (level~0) entry}
+}
+
+ at symbol{tstidxsubmarker,
+  name={\protect\tstidxsubmarker\space(\protect\tstidxcsfmt{tstidxsubmarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used for a level~1 entry}
+}
+
+ at symbol{tstidxsubsubmarker,
+  name={\protect\tstidxsubsubmarker\space(\protect\tstidxcsfmt{tstidxsubsubmarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used for a level~2 entry}
+}
+
+ at symbol{tstidxopenmarker,
+  name={\protect\tstidxopenmarker\space(\protect\tstidxcsfmt{tstidxopenmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a top-level (level~0) entry}
+}
+
+ at symbol{tstidxclosemarker,
+  name={\protect\tstidxclosemarker\space(\protect\tstidxcsfmt{tstidxclosemarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a top-level (level~0) entry}
+}
+
+ at symbol{tstidxopensubmarker,
+  name={\protect\tstidxopensubmarker\space(\protect\tstidxcsfmt{tstidxopensubmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a level~1 entry}
+}
+
+ at symbol{tstidxclosesubmarker,
+  name={\protect\tstidxclosesubmarker\space(\protect\tstidxcsfmt{tstidxclosesubmarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a level~1 entry}
+}
+
+ at symbol{tstidxopensubsubmarker,
+  name={\protect\tstidxopensubsubmarker\space(\protect\tstidxcsfmt{tstidxopensubsubmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a level~2 entry}
+}
+
+ at symbol{tstidxclosesubsubmarker,
+  name={\protect\tstidxclosesubsubmarker\space(\protect\tstidxcsfmt{tstidxclosesubsubmarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a level~2 entry}
+}
+
+ at symbol{tstidxseemarker,
+  name={\protect\tstidxseemarker\space(\protect\tstidxcsfmt{tstidxseemarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used to cross-reference a top-level (level~0) entry}
+}
+
+ at symbol{tstidxsubseemarker,
+  name={\protect\tstidxsubseemarker\space(\protect\tstidxcsfmt{tstidxsubseemarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used to cross-reference a level~1 entry}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-markers.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-mathsym.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-mathsym.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-mathsym.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,44 @@
+% Encoding: ASCII
+
+ at symbol{alpha,
+  name={$\alpha$},
+  text={\alpha},
+  category={mathsymbol},
+  description={Greek letter alpha}
+}
+
+ at symbol{beta,
+  name={$\beta$},
+  text={\beta},
+  category={mathsymbol},
+  description={Greek letter beta}
+}
+
+ at symbol{gamma,
+  name={$\gamma$},
+  text={\gamma},
+  category={mathsymbol},
+  description={Greek letter gamma}
+}
+
+ at symbol{sum,
+  name={$\sum$},
+  text={\sum},
+  category={mathsymbol},
+  description={summation}
+}
+
+ at symbol{partial,
+  name={$\partial$},
+  text={\partial},
+  category={mathsymbol},
+  description={partial derivative}
+}
+
+ at symbol{spinderiv,
+  name={$\eth$},
+  text={\eth},
+  category={mathsymbol},
+  description={spin-weighted partial derivative}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-mathsym.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs-utf8.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs-utf8.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs-utf8.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,63 @@
+% Encoding: UTF-8
+
+ at index{ll,
+  name={ll},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+}
+
+ at index{dz,
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+}
+
+ at index{llan,
+  name={llan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={llama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dzéta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs-utf8.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,63 @@
+% Encoding: ASCII
+
+ at index{ll,
+  name={ll},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+}
+
+ at index{dz,
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+}
+
+ at index{llan,
+  name={llan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={llama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dz\'eta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,61 @@
+%%
+%% This is file `testidx-glossaries-nodiglyphs.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% testidx.dtx  (with options: `testidx-glossaries-nodiglyphs.tex,package')
+%% 
+%%  testidx.dtx
+%%  Copyright 2017 Nicola Talbot
+%% 
+%%  This work may be distributed and/or modified under the
+%%  conditions of the LaTeX Project Public License, either version 1.3
+%%  of this license or (at your option) any later version.
+%%  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%%  and version 1.3 or later is part of all distributions of LaTeX
+%%  version 2005/12/01 or later.
+%% 
+%%  This work has the LPPL maintenance status `maintained'.
+%% 
+%%  The Current Maintainer of this work is Nicola Talbot.
+%% 
+%%  This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
+%% 
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\tstidxnewdigraph{ll}{a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+\tstidxnewdigraph{ij}{a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+\tstidxnewdigraph{dz}{a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+\tstidxnewword{llan}{commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+\tstidxnewword{llama}{domesticate animal found in the Andes}
+\tstidxnewword{lijnbus}{bus (Dutch)}
+\tstidxnewword{ijsvrij}{frost (Dutch)}
+\tstidxnewword{dzwon}{bell (Polish)}
+
+\tstidxnewutfword{dzeta}{dz\'eta}{dzéta}{the Greek letter zeta
+(Hungarian)}
+\endinput
+%%
+%% End of file `testidx-glossaries-nodiglyphs.tex'.


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-nodiglyphs.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-numbers.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-numbers.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-numbers.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,32 @@
+% Encoding: ASCII
+
+ at number{42,
+  name={42},
+  category={number},
+  description={forty-two}
+}
+
+ at number{10,
+  name={10},
+  category={number},
+  description={ten}
+}
+
+ at number{16,
+  name={16},
+  category={number},
+  description={sixteen}
+}
+
+ at number{2,
+  name={2},
+  category={number},
+  description={two}
+}
+
+ at number{100,
+  name={100},
+  category={number},
+  description={one hundred}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-numbers.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-ascii.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-ascii.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-ascii.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,553 @@
+% Encoding: ASCII
+
+ at index{dzsoker,
+  name={dzs\'oker},
+  category={word},
+  description={joker (Hungarian)}
+}
+
+ at index{czesc,
+  name={cze\'s\'c},
+  category={word},
+  description={hello (Polish)}
+}
+
+ at index{elite,
+  name={{\'e}lite},
+  category={word},
+  description={group of people regarded as
+the best of a particular society or organisation}
+}
+
+ at index{aesthetic,
+  name={\ae sthetic},
+  category={word},
+  description={concerning beauty}
+}
+
+ at index{oesophagus,
+  name={\oe sophagus},
+  category={word},
+  description={part of the alimentary canal}
+}
+
+ at index{blase,
+  name={blas\'e},
+  category={word},
+  description={unimpressed or indifferent due to familiarity}
+}
+
+ at index{protege,
+  name={prot\'eg\'e},
+  category={word},
+  description={person guided by an older more experienced person}
+}
+
+ at index{clientele,
+  name={client\`ele},
+  category={word},
+  description={all the clients of a particular business}
+}
+
+ at index{resumee,
+  name={r\'esum\'e},
+  category={word},
+  description={summary of something or curriculum vitae}
+}
+
+ at index{soiree,
+  name={soir\'ee},
+  category={word},
+  description={an evening social gathering involving conversation or music}
+}
+
+ at index{phoenix,
+  name={ph\oe nix},
+  category={word},
+  description={mythical bird that periodically burned itself and was reborn from the ashes}
+}
+
+ at index{decor,
+  name={d\'ecor},
+  category={word},
+  description={the furnishings and decorations of a room}
+}
+
+ at index{faerie,
+  name={f\ae rie},
+  category={word},
+  description={fairyland}
+}
+
+ at index{facade,
+  name={fa\c{c}ade},
+  category={word},
+  description={the front face of a building}
+}
+
+ at index{aethereal,
+  name={\ae thereal},
+  category={word},
+  description={light, airy or tenuous}
+}
+
+ at index{debutante,
+  name={d\'ebutante},
+  category={word},
+  description={a young upper-class woman making her first appearance in society}
+}
+
+ at index{naive,
+  name={na\"{\i}ve},
+  category={word},
+  description={lacking experience or wisdom}
+}
+
+ at index{foetid,
+  name={f\oe tid},
+  category={word},
+  description={smelling very unpleasant}
+}
+
+ at index{cliche,
+  name={clich\'e},
+  category={word},
+  description={overused phrase or idea}
+}
+
+ at index{deshabille,
+  name={d\'eshabill\'e},
+  category={word},
+  description={the state of being only partially clothed}
+}
+
+ at index{negligee,
+  name={n\'eglig\'ee},
+  category={word},
+  description={a woman's very thin dressing gown}
+}
+
+ at index{cafe,
+  name={caf\'e},
+  category={word},
+  description={small restaurant that sells light meals}
+}
+
+ at index{anaemic,
+  name={an\ae mic},
+  category={word},
+  description={suffering from anaemia}
+}
+
+ at index{thornletter,
+  name={\th},
+  category={word},
+  see={thorn},
+  description={thorn}
+}
+
+ at index{thorn,
+  name={thorn (\th)},
+  category={word},
+  description={Old English and Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+}
+
+ at index{ethletter,
+  name={\dh},
+  category={word},
+  see={ethletter},
+  description={eth}
+}
+
+ at index{eth,
+  name={eth (\dh)},
+  category={word},
+  description={Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+}
+
+ at index{Ostergotland,
+  name={{\"O}sterg\"otland},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{places.Ostergotland,
+  name={{\"O}sterg\"otland},
+  parent={places},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{Angelholm,
+  name={{\"A}ngelholm},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{places.Angelholm,
+  name={{\"A}ngelholm},
+  parent={places},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{Oresund,
+  name={\O resund},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{places.Oresund,
+  name={\O resund},
+  parent={places},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{Tarnby,
+  name={T\r{a}rnby},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{places.Tarnby,
+  name={T\r{a}rnby},
+  parent={places},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{Rodovre,
+  name={R\o dovre},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{places.Rodovre,
+  name={R\o dovre},
+  parent={places},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{Naestved,
+  name={N\ae stved},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{places.Naestved,
+  name={N\ae stved},
+  parent={places},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{OlstykkeStenlose,
+  name={\O lstykke-Stenl\o se},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{places.OlstykkeStenlose,
+  name={\O lstykke-Stenl\o se},
+  parent={places},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{Asslar,
+  name={A\ss lar},
+  category={place},
+  description={German town}
+}
+
+ at index{places.Asslar,
+  name={A\ss lar},
+  parent={places},
+  category={place},
+  description={German town}
+}
+
+ at index{BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggie\ss h\"ubel},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{places.BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggie\ss h\"ubel},
+  parent={places},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{Lodz,
+  name={\L\'od\'z},
+  category={place},
+  description={Polish city}
+}
+
+ at index{places.Lodz,
+  name={\L\'od\'z},
+  parent={places},
+  category={place},
+  description={Polish city}
+}
+
+ at index{Swietokrzyskie,
+  name={{\'S}wi\k{e}tokrzyskie},
+  category={place},
+  description={Polish province}
+}
+
+ at index{places.Swietokrzyskie,
+  name={{\'S}wi\k{e}tokrzyskie},
+  parent={places},
+  category={place},
+  description={Polish province}
+}
+
+ at index{Zory,
+  name={{\.Z}ory},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{places.Zory,
+  name={{\.Z}ory},
+  parent={places},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{Zelechow,
+  name={{\.Z}elech\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Zelechow,
+  name={{\.Z}elech\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Lobez,
+  name={\L obez},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Lobez,
+  name={\L obez},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Glogow,
+  name={G\l og\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Glogow,
+  name={G\l og\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Cmielow,
+  name={{\'C}miel\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Cmielow,
+  name={{\'C}miel\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Scinawa,
+  name={{\'S}cinawa},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Scinawa,
+  name={{\'S}cinawa},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Swidnica,
+  name={{\'S}widnica},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Swidnica,
+  name={{\'S}widnica},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Olvesvatn,
+  name={{\"O}lvesvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Olvesvatn,
+  name={{\"O}lvesvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Ulfsvatn,
+  name={{\'U}lfsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Ulfsvatn,
+  name={{\'U}lfsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Anavatn,
+  name={{\'A}navatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Anavatn,
+  name={{\'A}navatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Masvatn,
+  name={M\'asvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Masvatn,
+  name={M\'asvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Thrihyrningsvatn,
+  name={\TH r\'{\i}hyrningsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Thrihyrningsvatn,
+  name={\TH r\'{\i}hyrningsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Sigridharstadhavatn,
+  name={Sigr\'{\i}\dh arsta\dh avatn},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{places.Sigridharstadhavatn,
+  name={Sigr\'{\i}\dh arsta\dh avatn},
+  parent={places},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{Graenavatn,
+  name={Gr\ae navatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Graenavatn,
+  name={Gr\ae navatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Arneslon,
+  name={{\'A}rnesl\'on},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Arneslon,
+  name={{\'A}rnesl\'on},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Isholsvatn,
+  name={{\'I}sh\'olsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Isholsvatn,
+  name={{\'I}sh\'olsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{attachecase,
+  name={attach\'e case},
+  category={phrase},
+  description={small, flat briefcase for carrying documents}
+}
+
+ at index{piedaterre,
+  name={pied-\`a-terre},
+  category={phrase},
+  description={small flat or house kept for occasional use}
+}
+
+ at index{bergerehat,
+  name={berg\`ere hat},
+  category={phrase},
+  description={a type of wide-brimmed straw hat}
+}
+
+ at index{AndersJonasAngstrom,
+  name={\AA ngstr\"om, Anders Jonas},
+  text={Anders Jonas \AA ngstr\"om},
+  category={person},
+  description={Swedish physicist}
+}
+
+ at index{people.AndersJonasAngstrom,
+  name={\AA ngstr\"om, Anders Jonas},
+  text={Anders Jonas \AA ngstr\"om},
+  parent={people},
+  category={person},
+  description={Swedish physicist}
+}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-ascii.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-utf8.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-utf8.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-utf8.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,553 @@
+% Encoding: UTF-8
+
+ at index{dzsoker,
+  name={dzsóker},
+  category={word},
+  description={joker (Hungarian)}
+}
+
+ at index{czesc,
+  name={cześć},
+  category={word},
+  description={hello (Polish)}
+}
+
+ at index{elite,
+  name={élite},
+  category={word},
+  description={group of people regarded as
+the best of a particular society or organisation}
+}
+
+ at index{aesthetic,
+  name={æsthetic},
+  category={word},
+  description={concerning beauty}
+}
+
+ at index{oesophagus,
+  name={œsophagus},
+  category={word},
+  description={part of the alimentary canal}
+}
+
+ at index{blase,
+  name={blasé},
+  category={word},
+  description={unimpressed or indifferent due to familiarity}
+}
+
+ at index{protege,
+  name={protégé},
+  category={word},
+  description={person guided by an older more experienced person}
+}
+
+ at index{clientele,
+  name={clientèle},
+  category={word},
+  description={all the clients of a particular business}
+}
+
+ at index{resumee,
+  name={résumé},
+  category={word},
+  description={summary of something or curriculum vitae}
+}
+
+ at index{soiree,
+  name={soirée},
+  category={word},
+  description={an evening social gathering involving conversation or music}
+}
+
+ at index{phoenix,
+  name={phœnix},
+  category={word},
+  description={mythical bird that periodically burned itself and was reborn from the ashes}
+}
+
+ at index{decor,
+  name={décor},
+  category={word},
+  description={the furnishings and decorations of a room}
+}
+
+ at index{faerie,
+  name={færie},
+  category={word},
+  description={fairyland}
+}
+
+ at index{facade,
+  name={façade},
+  category={word},
+  description={the front face of a building}
+}
+
+ at index{aethereal,
+  name={æthereal},
+  category={word},
+  description={light, airy or tenuous}
+}
+
+ at index{debutante,
+  name={débutante},
+  category={word},
+  description={a young upper-class woman making her first appearance in society}
+}
+
+ at index{naive,
+  name={naïve},
+  category={word},
+  description={lacking experience or wisdom}
+}
+
+ at index{foetid,
+  name={fœtid},
+  category={word},
+  description={smelling very unpleasant}
+}
+
+ at index{cliche,
+  name={cliché},
+  category={word},
+  description={overused phrase or idea}
+}
+
+ at index{deshabille,
+  name={déshabillé},
+  category={word},
+  description={the state of being only partially clothed}
+}
+
+ at index{negligee,
+  name={négligée},
+  category={word},
+  description={a woman's very thin dressing gown}
+}
+
+ at index{cafe,
+  name={café},
+  category={word},
+  description={small restaurant that sells light meals}
+}
+
+ at index{anaemic,
+  name={anæmic},
+  category={word},
+  description={suffering from anaemia}
+}
+
+ at index{thornletter,
+  name={þ},
+  category={word},
+  see={thorn},
+  description={thorn}
+}
+
+ at index{thorn,
+  name={thorn (þ)},
+  category={word},
+  description={Old English and Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+}
+
+ at index{ethletter,
+  name={ð},
+  category={word},
+  see={eth},
+  description={eth}
+}
+
+ at index{eth,
+  name={eth (ð)},
+  category={word},
+  description={Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+}
+
+ at index{Ostergotland,
+  name={Östergötland},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{places.Ostergotland,
+  name={Östergötland},
+  parent={places},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{Angelholm,
+  name={Ängelholm},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{places.Angelholm,
+  name={Ängelholm},
+  parent={places},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{Oresund,
+  name={Øresund},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{places.Oresund,
+  name={Øresund},
+  parent={places},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{Tarnby,
+  name={Tårnby},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{places.Tarnby,
+  name={Tårnby},
+  parent={places},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{Rodovre,
+  name={Rødovre},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{places.Rodovre,
+  name={Rødovre},
+  parent={places},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{Naestved,
+  name={Næstved},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{places.Naestved,
+  name={Næstved},
+  parent={places},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{OlstykkeStenlose,
+  name={Ølstykke-Stenløse},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{places.OlstykkeStenlose,
+  name={Ølstykke-Stenløse},
+  parent={places},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{Asslar,
+  name={Aßlar},
+  category={place},
+  description={German town}
+}
+
+ at index{places.Asslar,
+  name={Aßlar},
+  parent={places},
+  category={place},
+  description={German town}
+}
+
+ at index{BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggießhübel},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{places.BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggießhübel},
+  parent={places},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{Lodz,
+  name={Łódź},
+  category={place},
+  description={Polish city}
+}
+
+ at index{places.Lodz,
+  name={Łódź},
+  parent={places},
+  category={place},
+  description={Polish city}
+}
+
+ at index{Swietokrzyskie,
+  name={Świętokrzyskie},
+  category={place},
+  description={Polish province}
+}
+
+ at index{places.Swietokrzyskie,
+  name={Świętokrzyskie},
+  parent={places},
+  category={place},
+  description={Polish province}
+}
+
+ at index{Zory,
+  name={Żory},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{places.Zory,
+  name={Żory},
+  parent={places},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{Zelechow,
+  name={Żelechów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Zelechow,
+  name={Żelechów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Lobez,
+  name={Łobez},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Lobez,
+  name={Łobez},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Glogow,
+  name={Głogów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Glogow,
+  name={Głogów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Cmielow,
+  name={Ćmielów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Cmielow,
+  name={Ćmielów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Scinawa,
+  name={Ścinawa},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Scinawa,
+  name={Ścinawa},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Swidnica,
+  name={Świdnica},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Swidnica,
+  name={Świdnica},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Olvesvatn,
+  name={Ölvesvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Olvesvatn,
+  name={Ölvesvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Ulfsvatn,
+  name={Úlfsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Ulfsvatn,
+  name={Úlfsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Anavatn,
+  name={Ánavatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Anavatn,
+  name={Ánavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Masvatn,
+  name={Másvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Masvatn,
+  name={Másvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Thrihyrningsvatn,
+  name={Þríhyrningsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Thrihyrningsvatn,
+  name={Þríhyrningsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Sigridharstadhavatn,
+  name={Sigríðarstaðavatn},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{places.Sigridharstadhavatn,
+  name={Sigríðarstaðavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{Graenavatn,
+  name={Grænavatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Graenavatn,
+  name={Grænavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Arneslon,
+  name={Árneslón},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Arneslon,
+  name={Árneslón},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Isholsvatn,
+  name={Íshólsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Isholsvatn,
+  name={Íshólsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{attachecase,
+  name={attaché case},
+  category={phrase},
+  description={small, flat briefcase for carrying documents}
+}
+
+ at index{piedaterre,
+  name={pied-à-terre},
+  category={phrase},
+  description={small flat or house kept for occasional use}
+}
+
+ at index{bergerehat,
+  name={bergère hat},
+  category={phrase},
+  description={a type of wide-brimmed straw hat}
+}
+
+ at index{AndersJonasAngstrom,
+  name={Ångström, Anders Jonas},
+  text={Anders Jonas Ångström},
+  category={person},
+  description={Swedish physicist}
+}
+
+ at index{people.AndersJonasAngstrom,
+  name={Ångström, Anders Jonas},
+  text={Anders Jonas Ångström},
+  parent={people},
+  category={person},
+  description={Swedish physicist}
+}


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples-utf8.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.bib	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,3111 @@
+% Encoding: ASCII
+
+ at index{packages,
+  category={word},
+  description={files provided to adjust the document
+  design or provide new commands}
+}
+
+ at index{books,
+  category={word},
+  description={written or printed works}
+}
+
+ at index{films,
+  category={word},
+  description={stories recorded by camera}
+}
+
+ at index{people,
+  category={word},
+  description={human individuals (or fictional
+    anthropomorphisms)}
+}
+
+ at index{places,
+  category={word},
+  description={particular areas or locations}
+}
+
+ at index{applications,
+  category={word},
+  description={computer programs}
+}
+
+ at index{environments,
+  category={word},
+  description={a marked-up block within the document
+that requires special action or formatting}
+}
+
+ at index{attributes,
+  category={word},
+  description={qualities or features that characterise something}
+}
+
+ at index{check,
+  category={word},
+  description={make sure something is the case}
+}
+
+ at index{chalk,
+  category={word},
+  description={soft limestone substance made into sticks to
+use for writing}
+}
+
+ at index{daft,
+  category={word},
+  description={silly or foolish}
+}
+
+ at index{parse,
+  category={word},
+  description={divide a sentence into its component parts for
+analysis}
+}
+
+ at index{interpret,
+  category={word},
+  description={translate or explain the meaning of}
+}
+
+ at index{oak,
+  category={word},
+  description={large tree that produces acorns}
+}
+
+ at index{rhubarb,
+  category={word},
+  description={thick reddish or green leaf stalks
+of a plant from the dock family}
+}
+
+ at index{rhinoceros,
+  category={word},
+  description={a large plant-eating mammal
+with one or two horns on its nose}
+}
+
+ at index{aardvark,
+  category={word},
+  description={an African mammal}
+}
+
+ at index{ddisgynedig,
+  category={word},
+  description={descending (Welsh)}
+}
+
+ at index{ddyrchafedig,
+  category={word},
+  description={advanced (Welsh)}
+}
+
+ at index{ffotograff,
+  category={word},
+  description={photo (Welsh)}
+}
+
+ at index{index,
+  category={word},
+  description={an alphabetical list of names, terms or
+   subjects with references to where they occur in the document}
+}
+
+ at index{phrase,
+  category={word},
+  description={group of words forming a unit}
+}
+
+ at index{glossary,
+  category={word},
+  description={an alphabetical list of words with explanations}
+}
+
+ at index{layout,
+  category={word},
+  description={the way something is laid out (for example, on a page)}
+}
+
+ at index{filler,
+  category={word},
+  description={something used to fill in gaps or increase bulk}
+}
+
+ at index{padding,
+  category={word},
+  description={something used to pad out material to make it
+longer},
+  seealso={filler}
+}
+
+ at index{example,
+  category={word},
+  description={thing used to illustrate something}
+}
+
+ at index{purpose,
+  category={word},
+  description={the reason for doing something}
+}
+
+ at index{whatsit,
+  category={word},
+  description={In \TeX\ terms, a mechanism to allow
+extensions to \TeX, including writing to files or providing
+special instructions to printing devices. More generally,
+a whatsit is an unnamed person or thing}
+}
+
+ at index{test,
+  category={word},
+  description={a means of testing something}
+}
+
+ at index{design,
+  category={word},
+  description={plan or purpose}
+}
+
+ at index{document,
+  category={word},
+  description={a piece of written, printed or electronic
+matter that provides information}
+}
+
+ at index{book,
+  category={word},
+  description={written or printed work}
+}
+
+ at index{range,
+  category={word},
+  description={area of variation or scope}
+}
+
+ at index{word,
+  category={word},
+  description={single unit of language which has meaning}
+}
+
+ at index{marker,
+  category={word},
+  description={an identifying symbol}
+}
+
+ at index{footnote,
+  category={word},
+  description={additional information written at the bottom of a page}
+}
+
+ at index{encap,
+  category={word},
+  description={the format used to encapsulate the location}
+}
+
+ at index{text,
+  category={word},
+  description={written or printed or electronically
+represented words}
+}
+
+ at index{argument,
+  category={word},
+  description={parameter passed to a command or
+application}
+}
+
+ at index{predefined,
+  category={word},
+  description={already defined}
+}
+
+ at index{excessive,
+  category={word},
+  description={more than normal or desired}
+}
+
+ at index{block,
+  category={word},
+  description={large quantity of things viewed as a unit}
+}
+
+ at index{paragraph,
+  category={word},
+  description={block of writing, beginning on a new line}
+}
+
+ at index{waffle,
+  category={word},
+  description={speak or write vague or trivial information in a
+lengthy way}
+}
+
+ at index{gibberish,
+  category={word},
+  description={meaningless or hard to comprehend speech
+or writing}
+}
+
+ at index{gobbledegook,
+  category={word},
+  description={language that is difficult to understand},
+  see={gibberish}
+}
+
+ at index{clarify,
+  category={word},
+  description={make it easier to understand}
+}
+
+ at index{confidential,
+  category={word},
+  description={private or secret information}
+}
+
+ at index{roundabout,
+  category={word},
+  description={not direct}
+}
+
+ at index{fashion,
+  category={word},
+  description={a way of doing something}
+}
+
+ at index{illustration,
+  category={word},
+  description={an example to explain something},
+  seealso={example}
+}
+
+ at index{wit,
+  category={word},
+  description={natural talent for saying or writing things in
+an amusing or clever way}
+}
+
+ at index{eloquence,
+  category={word},
+  description={fluent or persuasive speech or writing}
+}
+
+ at index{adage,
+  category={word},
+  description={popular saying}
+}
+
+ at index{motto,
+  category={word},
+  description={short sentence of phrase expressing a belief
+or aim}
+}
+
+ at index{verbiage,
+  category={word},
+  description={excessively length speech or writing}
+}
+
+ at index{drivel,
+  category={word},
+  description={nonsense}
+}
+
+ at index{tutor,
+  category={word},
+  description={teacher}
+}
+
+ at index{grass,
+  category={word},
+  description={in addition to the plant, also slang for
+reporting criminal activity}
+}
+
+ at index{distress,
+  category={word},
+  description={cause anxiety}
+}
+
+ at index{concordance,
+  category={word},
+  description={an alphabetical list of important words
+used in a document}
+}
+
+ at index{ogling,
+  category={word},
+  description={staring at someone in a lecherous manner}
+}
+
+ at index{gawping,
+  category={word},
+  description={staring in a rude or stupid manner},
+  see={ogling}
+}
+
+ at index{passim,
+  category={word},
+  description={referencing various places in a document}
+}
+
+ at index{localisation,
+  category={word},
+  description={place or position}
+}
+
+ at index{digraph,
+  category={word},
+  description={two letters representing a single sound}
+}
+
+ at index{trigraph,
+  category={word},
+  description={three letters representing a single sound}
+}
+
+ at index{lyuk,
+  category={word},
+  description={hole (Hungarian)},
+  seealso={digraph}
+}
+
+ at index{dzs,
+  category={trigraph},
+  description={Hungarian \glshyperlink{trigraph} considered a separate letter}
+}
+
+ at index{cz,
+  category={digraph},
+  description={digraph in some languages, such as Polish}
+}
+
+ at index{dd,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ff,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ng,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ly,
+  category={digraph},
+  description={digraph in some languages, such as Hungarian}
+}
+
+ at index{dzsungel,
+  category={word},
+  description={jungle (Hungarian)},
+  seealso={trigraph}
+}
+
+ at index{nonsense,
+  category={word},
+  description={something that doesn't make sense}
+}
+
+ at index{volauvent,
+  category={word},
+  name={vol-au-vent},
+  description={small round puff pastry containing savoury food}
+}
+
+ at index{two,
+  category={word},
+  description={number following one}
+}
+
+ at index{sculpture,
+  category={word},
+  description={artwork made of wood, metal or stone}
+}
+
+ at index{Venus,
+  category={word},
+  description={Roman goddess (or planet named after her)}
+}
+
+ at index{zoo,
+  category={word},
+  description={place containing animals}
+}
+
+ at index{alphabet,
+  category={word},
+  description={ordered set of letters used to form words}
+}
+
+ at index{resume,
+  category={word},
+  description={continue after an interruption}
+}
+
+ at index{fly,
+  category={word},
+  description={travel by air}
+}
+
+ at index{aeroplane,
+  category={word},
+  description={fixed wing flying vehicle}
+}
+
+ at index{window,
+  category={word},
+  description={opening in wall or window to view out or in}
+}
+
+ at index{ogonek,
+  category={word},
+  description={a diacritic hook placed under the lower right
+corner of a vowel}
+}
+
+ at index{sail,
+  category={word},
+  description={travel by or navigate a boat}
+}
+
+ at index{ship,
+  category={word},
+  description={large boat}
+}
+
+ at index{OT1,
+  category={word},
+  description={one of the original font encodings provided with
+\TeX}
+}
+
+ at index{UTF8,
+  name={UTF-8},
+  category={word},
+  description={character encoding that uses 8-bit code units}
+}
+
+ at index{life,
+  category={word},
+  description={existence}
+}
+
+ at index{universe,
+  category={word},
+  description={all existing space and matter}
+}
+
+ at index{even,
+  category={word},
+  description={multiple of two}
+}
+
+ at index{century,
+  category={word},
+  description={period of 100 years or a score of 100 runs}
+}
+
+ at index{cricket,
+  category={word},
+  description={bat and ball game played between two teams
+with eleven players on either side}
+}
+
+ at index{calendar,
+  category={word},
+  description={chart or list showing a period of time}
+}
+
+ at index{prefix,
+  category={word},
+  description={word or letter placed at the start of another
+word}
+}
+
+ at index{gobsmacked,
+  category={word},
+  description={astonished}
+}
+
+ at index{astounded,
+  category={word},
+  description={shocked or very surprised}
+}
+
+ at index{quaint,
+  category={word},
+  description={old-fashioned or unusual}
+}
+
+ at index{yatter,
+  category={word},
+  description={chatter or talk non-stop}
+}
+
+ at index{yawn,
+  category={word},
+  description={open one's mouth due to tiredness or boredom}
+}
+
+ at index{quirky,
+  category={word},
+  description={peculiar or unexpected habits}
+}
+
+ at index{badinage,
+  category={word},
+  description={witty conversation}
+}
+
+ at index{expire,
+  category={word},
+  description={come to an end}
+}
+
+ at index{story,
+  category={word},
+  description={account or description of imaginary or real
+events}
+}
+
+ at index{begin,
+  category={word},
+  description={start something}
+}
+
+ at index{forget,
+  category={word},
+  description={fail to remember something}
+}
+
+ at index{tale,
+  category={word},
+  description={a story}
+}
+
+ at index{adventure,
+  category={word},
+  description={unusual or exciting or daring experience}
+}
+
+ at index{derringdo,
+  name={derring-do},
+  category={word},
+  description={heroic action}
+}
+
+ at index{hero,
+  category={word},
+  description={principle male character in a story or a person
+admired for their achievements}
+}
+
+ at index{title,
+  category={word},
+  description={name of a document or work, or a name that
+describes a position}
+}
+
+ at index{knight,
+  category={word},
+  description={a man raised to military rank after service
+as a page or squire, or a man entitled to use \tstidxqt{Sir} before
+his name}
+}
+
+ at index{handsome,
+  category={word},
+  description={good-looking}
+}
+
+ at index{bold,
+  category={word},
+  description={confident or brave}
+}
+
+ at index{brave,
+  category={word},
+  description={prepared to face danger or difficulties}
+}
+
+ at index{duck,
+  category={word},
+  description={a waterbird with a blunt bill, short legs and webbed
+feet}
+}
+
+ at index{name,
+  category={word},
+  description={word or words by which something is known}
+}
+
+ at index{plight,
+  category={word},
+  description={dangerous situation}
+}
+
+ at index{land,
+  category={word},
+  description={area of ground}
+}
+
+ at index{OgRe,
+  category={word},
+  description={an ogre is a man-eating giant or a terrifying
+person. The silly capitalisation is just a reference to \TeX's
+output routine}
+}
+
+ at index{reference,
+  category={word},
+  description={referring to something}
+}
+
+ at index{perilous,
+  category={word},
+  description={dangerous or full of risk}
+}
+
+ at index{quest,
+  category={word},
+  description={long or difficult search for something}
+}
+
+ at index{xor,
+  category={word},
+  description={\LaTeX3 experimental output routine}
+}
+
+ at index{continuation,
+  category={word},
+  description={state of continuing}
+}
+
+ at index{newcomers,
+  category={word},
+  description={recent arrivals}
+}
+
+ at index{nod,
+  category={word},
+  description={in addition to the action of moving one's head
+up and down, also indicates a reference of acknowledgement of
+something}
+}
+
+ at index{centre,
+  category={word},
+  description={point in the middle (UK spelling)}
+}
+
+ at index{center,
+  category={word},
+  description={point in the middle (US spelling)}
+}
+
+ at index{lore,
+  category={word},
+  description={tradition or knowledge of a particular subject}
+}
+
+ at index{raft,
+  category={word},
+  description={flat water vessel made from pieces of wood
+tied together}
+}
+
+ at index{external,
+  category={word},
+  description={belonging outside of something}
+}
+
+ at index{pun,
+  category={word},
+  description={play on words}
+}
+
+ at index{joke,
+  category={word},
+  description={something said to amuse others}
+}
+
+ at index{witty,
+  category={word},
+  description={having the ability to say clever or
+amusing things}
+}
+
+ at index{cameo,
+  category={word},
+  description={small part in a story for a distinguished
+actor}
+}
+
+ at index{exclamation,
+  category={word},
+  description={sudden cry}
+}
+
+ at index{bog,
+  category={word},
+  description={area of soft, wet, muddy ground}
+}
+
+ at index{leviathans,
+  category={word},
+  description={very large, powerful thing (such as a sea
+monster)}
+}
+
+ at index{vale,
+  category={word},
+  description={valley}
+}
+
+ at index{doom,
+  category={word},
+  description={fate}
+}
+
+ at index{chaos,
+  category={word},
+  description={complete confusion or disorder}
+}
+
+ at index{butterfly,
+  category={word},
+  description={winged insect}
+}
+
+ at index{motif,
+  category={word},
+  description={repeated theme}
+}
+
+ at index{sentence,
+  category={word},
+  description={set of words forming a complete statement,
+instruction or question}
+}
+
+ at index{conjunction,
+  category={word},
+  description={word used to connect words or clauses}
+}
+
+ at index{naughty,
+  category={word},
+  description={badly behaved}
+}
+
+ at index{leap,
+  category={word},
+  description={jump far or high across something}
+}
+
+ at index{bound,
+  category={word},
+  description={leaping movement}
+}
+
+ at index{sword,
+  category={word},
+  description={weapon with a long metal blade}
+}
+
+ at index{myriad,
+  category={word},
+  description={countless or a very great number}
+}
+
+ at index{clones,
+  category={word},
+  description={identical copy}
+}
+
+ at index{repetition,
+  category={word},
+  description={something that's been repeated}
+}
+
+ at index{lair,
+  category={word},
+  description={hiding place or den}
+}
+
+ at index{roar,
+  category={word},
+  description={loud, deep sound}
+}
+
+ at index{peace,
+  category={word},
+  description={freedom from war or anxiety}
+}
+
+ at index{harmony,
+  category={word},
+  description={arranged well or peacefully together}
+}
+
+ at index{span,
+  category={word},
+  description={length of time or full extent or extend across
+something}
+}
+
+ at index{fear,
+  category={word},
+  description={anxiety about something unpleasant}
+}
+
+ at index{thrilling,
+  category={word},
+  description={exciting}
+}
+
+ at index{quixotic,
+  category={word},
+  description={impractically unselfish and idealist}
+}
+
+ at index{seal,
+  category={word},
+  description={seal-dwelling fish-eating mammal with flippers}
+}
+
+ at index{sea,
+  category={word},
+  description={large area of salt water}
+}
+
+ at index{seaborne,
+  category={word},
+  description={transported or travelling by sea}
+}
+
+ at index{zither,
+  category={word},
+  description={a type of stringed musical instrument}
+}
+
+ at index{zealous,
+  category={word},
+  description={having great enthusiasm for something}
+}
+
+ at index{fan,
+  category={word},
+  description={an admirer of something}
+}
+
+ at index{youthful,
+  category={word},
+  description={seeming young}
+}
+
+ at index{magic,
+  category={word},
+  description={having the apparent power of supernatural or
+mysterious forces}
+}
+
+ at index{magical,
+  category={word},
+  description={relating to or using magic}
+}
+
+ at index{yoyo,
+  name={yo-yo},
+  category={word},
+  description={a round toy consisting of two discs and a
+piece of string}
+}
+
+ at index{wily,
+  category={word},
+  description={using cunning or crafty methods to gain an
+advantage}
+}
+
+ at index{wombat,
+  category={word},
+  description={a type of small marsupial}
+}
+
+ at index{warrior,
+  category={word},
+  description={brave or experienced fighter}
+}
+
+ at index{laserguided,
+  name={laser-guided},
+  category={word},
+  description={guided by a laser}
+}
+
+ at index{villainous,
+  category={word},
+  description={characteristic of a villain}
+}
+
+ at index{zany,
+  category={word},
+  description={amusingly unconventional}
+}
+
+ at index{zoologist,
+  category={word},
+  description={someone who studies animals}
+}
+
+ at index{xebec,
+  category={word},
+  description={a type of small sailing ship}
+}
+
+ at index{xenon,
+  category={word},
+  description={a type of inert gas}
+}
+
+ at index{xylem,
+  category={word},
+  description={a plant tissue}
+}
+
+ at index{xylene,
+  category={word},
+  description={a type of liquid hydrocarbon}
+}
+
+ at index{zounds,
+  category={word},
+  description={an exclamation}
+}
+
+ at index{Ooh,
+  category={word},
+  description={an exclamation}
+}
+
+ at index{zucchini,
+  category={word},
+  description={a type of long, green summer squash (called
+a courgette in British English)}
+}
+
+ at index{xylophone,
+  category={word},
+  description={a type of musical instrument}
+}
+
+ at index{exhilarating,
+  category={word},
+  description={pleasing or energetic}
+}
+
+ at index{yuppie,
+  category={word},
+  description={urban well-paid young middle-class professional}
+}
+
+ at index{yoghurt,
+  category={word},
+  description={thick, liquid food made from milk}
+}
+
+ at index{yummy,
+  category={word},
+  description={delicious}
+}
+
+ at index{yuck,
+  category={word},
+  description={disgusting}
+}
+
+ at index{Viking,
+  category={word},
+  description={a member of Scandinavian seafaring people
+between the eighth and eleventh centuries}
+}
+
+ at index{vignette,
+  category={word},
+  description={brief episode}
+}
+
+ at index{viceroy,
+  category={word},
+  description={a person who governs a colony on behalf of
+the sovereign}
+}
+
+ at index{vichyssoise,
+  category={word},
+  description={a type of soup}
+}
+
+ at index{viceregal,
+  category={word},
+  description={relating to a viceroy}
+}
+
+ at index{quiz,
+  category={word},
+  description={game or competition}
+}
+
+ at index{glyph,
+  category={word},
+  description={small graphic symbol}
+}
+
+ at index{asleep,
+  category={word},
+  description={in or into a state of sleep}
+}
+
+ at index{ashore,
+  category={word},
+  description={to or on shore or land}
+}
+
+ at index{aspire,
+  category={word},
+  description={to have strong ambitions to be or do something}
+}
+
+ at index{assailed,
+  category={word},
+  description={past tense of assail}
+}
+
+ at index{recover,
+  category={word},
+  description={get well again}
+}
+
+ at index{reecover,
+  name={re-cover},
+  category={word},
+  description={to cover again}
+}
+
+ at index{document.properties,
+  name={properties},
+  parent={document},
+  category={word},
+  description={attributes such as page size}
+}
+
+ at index{fontencoding.OT1,
+  name={OT1},
+  parent={fontencoding},
+  category={word},
+  description={one of the original font encodings supplied with \TeX}
+}
+
+ at index{hero.intrepid,
+  name={intrepid},
+  parent={hero},
+  category={word},
+  description={a hero known for his boldness and bravery},
+  see={intrepidhero}
+}
+ at index{dadorail,
+  name={dado rail},
+  category={phrase},
+  description={waist-high moulding around the wall of a room}
+}
+
+ at index{indexingapplication,
+  name={indexing application},
+  category={phrase},
+  description={an application that generates a document index}
+}
+
+ at index{visualeffects,
+  name={visual effects},
+  category={phrase},
+  description={use of imagery to create an effect}
+}
+
+ at index{dummytext,
+  name={dummy text},
+  category={phrase},
+  description={sample text used for demonstration not
+for its content}
+}
+
+ at index{pagebreak,
+  name={page break},
+  category={phrase},
+  description={the point where document text is broken
+across two pages}
+}
+
+ at index{linktext,
+  name={link text},
+  category={phrase},
+  description={for the \glshyperlink{glossariespackage}
+package, this refers to the text inserted into the document
+through commands like \glshyperlink{cs.gls}}
+}
+
+ at index{crossreference,
+  name={cross-reference},
+  category={phrase},
+  description={reference to another part of the
+document or to a part of another document}
+}
+
+ at index{marginalnote,
+  name={marginal note},
+  category={phrase},
+  description={text that's placed in the page margin}
+}
+
+ at index{overfulllines,
+  name={overfull lines},
+  category={phrase},
+  description={lines where the text extends into
+the margin because of a formatting failure}
+}
+
+ at index{loremipsum,
+  name={lorem ipsum},
+  category={phrase},
+  description={dummy text}
+}
+
+ at index{betweenyoumeandthegatepost,
+  name={between you, me and the gatepost},
+  category={phrase},
+  description={an expression
+meaning you're telling someone a secret that shouldn't be passed on
+(common in some British dialects)}
+}
+
+ at index{waywithwords,
+  name={way with words},
+  category={phrase},
+  description={have a particular talent with words}
+}
+
+ at index{creativewriting,
+  name={creative writing},
+  category={phrase},
+  description={writing typically identified
+by narrative craft, character development and use of literary tropes}
+}
+
+ at index{cuttothechase,
+  name={cut to the chase},
+  category={phrase},
+  description={get to the point}
+}
+
+ at index{gettothepoint,
+  name={get to the point},
+  category={phrase},
+  description={state something directly}
+}
+
+ at index{keepmum,
+  name={keep mum},
+  category={phrase},
+  description={be silent about something},
+  seealso={confidential}
+}
+
+ at index{outputroutine,
+  name={output routine},
+  category={phrase},
+  description={\TeX's method of outputting a page}
+}
+
+ at index{outofwhack,
+  name={out of whack},
+  category={phrase},
+  description={out of order or not working}
+}
+
+ at index{pagedimensions,
+  name={page dimensions},
+  category={phrase},
+  description={the dimensions of a page (such as
+the page width and page height)}
+}
+
+ at index{fontfamily,
+  name={font family},
+  category={phrase},
+  description={the name of a font}
+}
+
+ at index{fontsize,
+  name={font size},
+  category={phrase},
+  description={the size of a font}
+}
+
+ at index{locationlist,
+  name={location list},
+  category={phrase},
+  description={the list of locations used in an index to indicate
+where
+the term being referenced was used in the document},
+  seealso={crossreference}
+}
+
+ at index{rangeseparator,
+  name={range separator},
+  category={phrase},
+  description={the symbol
+used between the start and end location to indicate a range},
+  see={locationlist}
+}
+
+ at index{pagenumber,
+  name={page number},
+  category={phrase},
+  description={the number identifying a particular page}
+}
+
+ at index{multipleencaps,
+  name={multiple encaps},
+  category={phrase},
+  description={a warning issued by
+\glshyperlink{makeindex} when the same page number is indexed
+with different encap values}
+}
+
+ at index{inputencoding,
+  name={input encoding},
+  category={phrase},
+  description={the character encoding used
+in the document source code}
+}
+
+ at index{fontencoding,
+  name={font encoding},
+  category={phrase},
+  description={the encoding used by the document
+font}
+}
+
+ at index{extendedLatincharacters,
+  name={extended Latin characters},
+  category={phrase},
+  description={Latin characters outside the basic ASCII set}
+}
+
+ at index{cupoftea,
+  name={cup of tea},
+  category={phrase},
+  description={an expression indicating what one likes
+or is interested in}
+}
+
+ at index{whistlestoptour,
+  name={whistle-stop tour},
+  category={phrase},
+  description={a series of short visits to different places}
+}
+
+ at index{numbergroup,
+  name={number group},
+  category={phrase},
+  description={a group associated with numbers}
+}
+
+ at index{primenumber,
+  name={prime number},
+  category={phrase},
+  description={a number that is only divisible by itself and 1}
+}
+
+ at index{holdmybreath,
+  name={hold my breath},
+  category={phrase},
+  description={stop breathing temporarily, also used as an expression to indicate a state of anticipation or
+suspense}
+}
+
+ at index{lettergroups,
+  name={letter groups},
+  category={phrase},
+  description={groups associated with letters}
+}
+
+ at index{Onceuponatime,
+  name={Once upon a time},
+  category={phrase},
+  description={an expression commonly used at
+the start of fairy tales}
+}
+
+ at index{acrossthepond,
+  name={across the pond},
+  category={phrase},
+  description={colloquial expression indicating
+the other side of the Atlantic}
+}
+
+ at index{badform,
+  name={bad form},
+  category={phrase},
+  description={an offence against accepted behaviour}
+}
+
+ at index{MontyPython,
+  name={Monty Python},
+  category={phrase},
+  description={a British surreal comedy group}
+}
+
+ at index{magicincantation,
+  name={magic incantation},
+  category={phrase},
+  description={words used to create a magical effect}
+}
+
+ at index{commonknowledge,
+  name={common knowledge},
+  category={phrase},
+  description={something widely known}
+}
+
+ at index{intrepidhero,
+  name={intrepid hero},
+  category={phrase},
+  description={a hero known for his boldness and bravery}
+}
+
+ at index{sealion,
+  name={sea lion},
+  category={phrase},
+  description={a type of large seal}
+}
+
+ at index{sealantgun,
+  name={sealant gun},
+  category={phrase},
+  description={a device used for applying sealant}
+}
+
+ at index{zootsuit,
+  name={zoot suit},
+  category={phrase},
+  description={a suit typically having a long loose
+jacket and high-waisted trousers}
+}
+
+ at index{anonymousreviewer,
+  name={anonymous reviewer},
+  category={phrase},
+  description={an unnamed reviewer}
+}
+
+ at index{yulelog,
+  name={yule log},
+  category={phrase},
+  description={a large log traditionally burnt on
+Christmas Eve or a log-shaped chocolate cake}
+}
+
+ at index{vicepresident,
+  name={vice-president},
+  category={phrase},
+  description={a president's deputy}
+}
+
+ at index{viceadmiral,
+  name={vice admiral},
+  category={phrase},
+  description={a high rank of naval officer}
+}
+
+ at index{Victoriaplum,
+  name={Victoria plum},
+  category={phrase},
+  description={a large, red, dessert plum}
+}
+
+ at index{Victoriasponge,
+  name={Victoria sponge},
+  category={phrase},
+  description={a sponge cake consisting of two
+layers with jam filling in between}
+}
+
+ at index{viceversa,
+  name={vice versa},
+  category={phrase},
+  description={reversing the order of the items just mentioned}
+}
+
+ at index{vicechancellor,
+  name={vice chancellor},
+  category={phrase},
+  description={a deputy chancellor of a
+British university in charge of its administration}
+}
+
+ at index{letterordering,
+  name={letter ordering},
+  category={phrase},
+  description={ordering according to the
+individual characters}
+}
+
+ at index{wordordering,
+  name={word ordering},
+  category={phrase},
+  description={ordering according to the
+language or locale's definition of words}
+}
+
+ at index{commercialworld,
+  name={commercial world, the},
+  text={the commercial world},
+  category={phrase},
+  description={pertaining to commerce}
+}
+
+ at index{farawayland,
+  name={far away land, a},
+  text={a far away land},
+  category={phrase},
+  description={somewhere that's far away; a
+term often used in fairy tales}
+}
+
+ at index{GoldenArara,
+  name={Golden Arara, the},
+  text={the Golden Arara},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{MightyHelmofKnuth,
+  name={Mighty Helm of Knuth, the},
+  text={the Mighty Helm of Knuth},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{LegendarySword,
+  name={Legendary Sword, the},
+  text={the Legendary Sword},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{BogofEternalGlossaries,
+  name={Bog of Eternal Glossaries, the},
+  text={the Bog of Eternal Glossaries},
+  category={phrase},
+  description={a made-up place in the dummy text}
+}
+
+ at index{DreadValeoftheEditors,
+  name={Dread Vale of the Editors, the},
+  text={the Dread Vale of the Editors},
+  category={phrase},
+  description={a made-up place in the dummy text}
+}
+
+ at index{butterfliesofchaos,
+  name={butterflies of chaos, the},
+  text={the butterflies of chaos},
+  category={phrase},
+  description={the butterfly effect is a popular method of describing aspects of chaos theory}
+}
+
+ at index{End,
+  name={End, The},
+  text={The End},
+  category={phrase},
+  description={denotes the end of a story, especially fairy tales}
+}
+
+ at index{locationlist.pageseparator,
+  name={page separator},
+  parent={locationlist},
+  category={phrase},
+  description={symbol used to separate page references}
+}
+
+ at index{locationlist.rangeseparator,
+  name={range separator},
+  parent={locationlist},
+  category={phrase},
+  description={symbol used to mark page range references}
+}
+
+ at index{motjuste,
+ name={mot juste},
+ description={the most appropriate word}
+}
+
+ at index{Poland,
+  name={Poland},
+  category={place},
+  description={an Eastern European country}
+}
+
+ at index{places.Poland,
+  name={Poland},
+  parent={places},
+  category={place},
+  description={an Eastern European country}
+}
+
+ at index{Glasgow,
+  name={Glasgow},
+  category={place},
+  description={a Scottish city}
+}
+
+ at index{places.Glasgow,
+  name={Glasgow},
+  parent={places},
+  category={place},
+  description={a Scottish city}
+}
+
+ at index{Iceland,
+  name={Iceland},
+  category={place},
+  description={a Nordic island nation}
+}
+
+ at index{places.Iceland,
+  name={Iceland},
+  parent={places},
+  category={place},
+  description={a Nordic island nation}
+}
+
+ at index{Nghaerdydd,
+  name={Nghaerdydd},
+  category={place},
+  description={Cardiff}
+}
+
+ at index{places.Nghaerdydd,
+  name={Nghaerdydd},
+  parent={places},
+  category={place},
+  description={Cardiff}
+}
+
+ at index{Nghymru,
+  name={Nghymru},
+  category={place},
+  description={Wales}
+}
+
+ at index{places.Nghymru,
+  name={Nghymru},
+  parent={places},
+  category={place},
+  description={Wales}
+}
+
+ at index{Ffestiniog,
+  name={Ffestiniog},
+  category={place},
+  description={a place in Wales}
+}
+
+ at index{places.Ffestiniog,
+  name={Ffestiniog},
+  parent={places},
+  category={place},
+  description={a place in Wales}
+}
+
+ at index{BogofEternalStench,
+  name={Bog of Eternal Stench, the},
+  text={the Bog of Eternal Stench},
+  category={place},
+  description={place in the film \glshyperlink{Labyrinth}}
+}
+
+ at index{places.BogofEternalStench,
+  name={Bog of Eternal Stench, the},
+  text={the Bog of Eternal Stench},
+  parent={places},
+  category={place},
+  description={place in the film \glshyperlink{Labyrinth}}
+}
+
+ at index{JamesJoyce,
+  name={Joyce, James},
+  text={James Joyce},
+  category={person},
+  description={an author}
+}
+
+ at index{people.JamesJoyce,
+  name={Joyce, James},
+  text={James Joyce},
+  parent={people},
+  category={person},
+  description={an author}
+}
+
+ at index{DonaldKnuth,
+  name={Knuth, Donald},
+  text={Donald Knuth},
+  category={person},
+  description={creator of \TeX}
+}
+
+ at index{people.DonaldKnuth,
+  name={Knuth, Donald},
+  text={Donald Knuth},
+  parent={people},
+  category={person},
+  description={creator of \TeX}
+}
+
+ at index{PauloCereda,
+  name={Cereda, Paulo},
+  text={Paulo Cereda},
+  category={person},
+  description={creator of \glshyperlink{arara}}
+}
+
+ at index{people.PauloCereda,
+  name={Cereda, Paulo},
+  text={Paulo Cereda},
+  parent={people},
+  category={person},
+  description={creator of \glshyperlink{arara}}
+}
+
+ at index{SirQuackalot,
+  name={Quackalot, Sir},
+  text={Sir Quackalot},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{people.SirQuackalot,
+  name={Quackalot, Sir},
+  text={Sir Quackalot},
+  parent={people},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{theFairyGoose,
+  name={Fairy Goose, the},
+  text={the Fairy Goose},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{people.theFairyGoose,
+  name={Fairy Goose, the},
+  text={the Fairy Goose},
+  parent={people},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{DavidCarlisle,
+  name={Carlisle, David},
+  text={David Carlisle},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{people.DavidCarlisle,
+  name={Carlisle, David},
+  text={David Carlisle},
+  parent={people},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{JosephWright,
+  name={Wright, Joseph},
+  text={Joseph Wright},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{people.JosephWright,
+  name={Wright, Joseph},
+  text={Joseph Wright},
+  parent={people},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{Ulysses,
+  name={\tstidxbookfmt{Ulysses}},
+  category={book},
+  description={a modernist novel by James Joyce}
+}
+
+ at index{books.Ulysses,
+  name={\tstidxbookfmt{Ulysses}},
+  parent={books},
+  category={book},
+  description={a modernist novel by James Joyce}
+}
+
+ at index{SirQuackalotandtheGoldenArara,
+  name={\tstidxbookfmt{Sir Quackalot and the Golden Arara}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.SirQuackalotandtheGoldenArara,
+  name={\tstidxbookfmt{Sir Quackalot and the Golden Arara}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{SirQuackalotandtheHyperLakeofDoom,
+  name={\tstidxbookfmt{Sir Quackalot and the Hyper Lake of Doom}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.SirQuackalotandtheHyperLakeofDoom,
+  name={\tstidxbookfmt{Sir Quackalot and the Hyper Lake of Doom}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{CompactOxfordEnglishDictionary,
+  name={\tstidxbookfmt{Compact Oxford English Dictionary}},
+  category={book},
+  description={a dictionary}
+}
+
+ at index{books.CompactOxfordEnglishDictionary,
+  name={\tstidxbookfmt{Compact Oxford English Dictionary}},
+  parent={books},
+  category={book},
+  description={a dictionary}
+}
+
+ at index{HitchhikersGuidetotheGalaxy,
+  name={\tstidxbookfmt{Hitchhiker's Guide to the Galaxy, the}},
+  text={\tstidxbookfmt{the Hitchhiker's Guide to the Galaxy}},
+  category={book},
+  description={a comedy series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+}
+
+ at index{books.HitchhikersGuidetotheGalaxy,
+  name={\tstidxbookfmt{Hitchhiker's Guide to the Galaxy, the}},
+  text={\tstidxbookfmt{the Hitchhiker's Guide to the Galaxy}},
+  parent={books},
+  category={book},
+  description={a comedy series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+}
+
+ at index{AdventuresofSirQuackalot,
+  name={\tstidxbookfmt{Adventures of Sir Quackalot, the}},
+  text={\tstidxbookfmt{the Adventures of Sir Quackalot}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.AdventuresofSirQuackalot,
+  name={\tstidxbookfmt{Adventures of Sir Quackalot, the}},
+  text={\tstidxbookfmt{the Adventures of Sir Quackalot}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{Labyrinth,
+  name={\tstidxfilmfmt{Labyrinth}},
+  category={film},
+  description={a musical fantasy film}
+}
+
+ at index{films.Labyrinth,
+  name={\tstidxfilmfmt{Labyrinth}},
+  parent={films},
+  category={film},
+  description={a musical fantasy film}
+}
+
+ at index{ThirdMan,
+  name={\tstidxfilmfmt{Third Man, The}},
+  text={\tstidxfilmfmt{The Third Man}},
+  category={film},
+  description={a British film noir}
+}
+
+ at index{films.ThirdMan,
+  name={\tstidxfilmfmt{Third Man, The}},
+  text={\tstidxfilmfmt{The Third Man}},
+  parent={films},
+  category={film},
+  description={a British film noir}
+}
+
+ at index{TeX,
+  name={\TeX},
+  category={symbol},
+  description={a typesetting system created by Donald Knuth}
+}
+
+ at index{fx,
+  name={$f(\vec{x})$},
+  text={f(\vec{x})},
+  category={math},
+  description={a function of $x$}
+}
+
+ at index{n,
+  name={$n$},
+  text={n},
+  category={math},
+  description={an integer}
+}
+
+ at index{E,
+  name={$E$},
+  text={E},
+  category={math},
+  description={energy}
+}
+
+ at index{testidxpackage,
+  name={\tstidxstyfmt{testidx} package},
+  text={\tstidxstyfmt{testidx}},
+  category={package},
+  description={package that produces dummy text for testing
+index styles and indexing applications}
+}
+
+ at index{packages.testidxpackage,
+  name={\tstidxstyfmt{testidx}},
+  parent={packages},
+  category={package},
+  description={package that produces dummy text for testing
+index styles and indexing applications}
+}
+
+ at index{testidxglossariespackage,
+  name={\tstidxstyfmt{testidx-glossaries} package},
+  text={\tstidxstyfmt{testidx-glossaries}},
+  category={package},
+  description={package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+}
+
+ at index{packages.testidxglossariespackage,
+  name={\tstidxstyfmt{testidx-glossaries}},
+  parent={packages},
+  category={package},
+  description={package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+}
+
+ at index{glossariespackage,
+  name={\tstidxstyfmt{glossaries} package},
+  text={\tstidxstyfmt{glossaries}},
+  category={package},
+  description={a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+}
+
+ at index{packages.glossariespackage,
+  name={\tstidxstyfmt{glossaries}},
+  parent={packages},
+  category={package},
+  description={a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+}
+
+ at index{glossariesextrapackage,
+  name={\tstidxstyfmt{glossaries-extra} package},
+  text={\tstidxstyfmt{glossaries-extra}},
+  category={package},
+  description={an extension to the \glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.glossariesextrapackage,
+  name={\tstidxstyfmt{glossaries-extra}},
+  parent={packages},
+  category={package},
+  description={an extension to the \glshyperlink{glossariespackage} package}
+}
+
+ at index{hyperrefpackage,
+  name={\tstidxstyfmt{hyperref} package},
+  text={\tstidxstyfmt{hyperref}},
+  category={package},
+  description={a package that provides extensive support for hypertext}
+}
+
+ at index{packages.hyperrefpackage,
+  name={\tstidxstyfmt{hyperref}},
+  parent={packages},
+  category={package},
+  description={a package that provides extensive support for hypertext}
+}
+
+ at index{lipsumpackage,
+  name={\tstidxstyfmt{lipsum} package},
+  text={\tstidxstyfmt{lipsum}},
+  category={package},
+  description={a package that generates dummy text}
+}
+
+ at index{packages.lipsumpackage,
+  name={\tstidxstyfmt{lipsum}},
+  parent={packages},
+  category={package},
+  description={a package that generates dummy text}
+}
+
+ at index{inputencpackage,
+  name={\tstidxstyfmt{inputenc} package},
+  text={\tstidxstyfmt{inputenc}},
+  category={package},
+  description={a package that can be used to identify the document
+encoding}
+}
+
+ at index{packages.inputencpackage,
+  name={\tstidxstyfmt{inputenc}},
+  parent={packages},
+  category={package},
+  description={a package that can be used to identify the document
+encoding}
+}
+
+ at index{fontencpackage,
+  name={\tstidxstyfmt{fontenc} package},
+  text={\tstidxstyfmt{fontenc}},
+  category={package},
+  description={a package that can be used to set the font
+encoding},
+  seealso={inputencpackage}
+}
+
+ at index{packages.fontencpackage,
+  name={\tstidxstyfmt{fontenc}},
+  parent={packages},
+  category={package},
+  description={a package that can be used to set the font encoding}
+}
+
+ at index{amsmathpackage,
+  name={\tstidxstyfmt{amsmath} package},
+  text={\tstidxstyfmt{amsmath}},
+  category={package},
+  description={a package that provides AMS mathematical
+facilities}
+}
+
+ at index{packages.amsmathpackage,
+  name={\tstidxstyfmt{amsmath}},
+  parent={packages},
+  category={package},
+  description={a package that provides AMS mathematical
+facilities}
+}
+
+ at index{amssymbpackage,
+  name={\tstidxstyfmt{amssymb} package},
+  text={\tstidxstyfmt{amssymb}},
+  category={package},
+  description={a package that provides mathematical
+symbols}
+}
+
+ at index{packages.amssymbpackage,
+  name={\tstidxstyfmt{amssymb}},
+  parent={packages},
+  category={package},
+  description={a package that provides mathematical
+symbols}
+}
+
+ at index{longtablepackage,
+  name={\tstidxstyfmt{longtable} package},
+  text={\tstidxstyfmt{longtable}},
+  category={package},
+  description={a package that allows tables to flow over
+page boundaries}
+}
+
+ at index{packages.longtablepackage,
+  name={\tstidxstyfmt{longtable}},
+  parent={packages},
+  category={package},
+  description={a package that allows tables to flow over
+page boundaries}
+}
+
+ at index{testidxglossariespackage.extra,
+  name={\tstidxstyoptfmt{extra}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={load the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{packages.testidxglossariespackage.extra,
+  name={\tstidxstyoptfmt{extra}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={load the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{testidxglossariespackage.noextra,
+  name={\tstidxstyoptfmt{noextra}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't load the \glshyperlink{glossariesextrapackage}
+package  (only load \glshyperlink{glossariespackage})}
+}
+
+ at index{packages.testidxglossariespackage.noextra,
+  name={\tstidxstyoptfmt{noextra}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't load the \glshyperlink{glossariesextrapackage}
+package (only load \glshyperlink{glossariespackage})}
+}
+
+ at index{testidxglossariespackage.noseekey,
+  name={\tstidxstyoptfmt{noseekey}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't use the \tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+}
+
+ at index{packages.testidxglossariespackage.noseekey,
+  name={\tstidxstyoptfmt{noseekey}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't use the \tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+}
+
+ at index{testidxglossariespackage.seekey,
+  name={\tstidxstyoptfmt{seekey}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={use the \tstidxqt{see} key to implement the cross-referencing}
+}
+
+ at index{packages.testidxglossariespackage.seekey,
+  name={\tstidxstyoptfmt{seekey}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={use the \tstidxqt{see} key to implement the cross-referencing}
+}
+
+ at index{testidxglossariespackage.xindy,
+  name={\tstidxstyoptfmt{xindy}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+}
+
+ at index{packages.testidxglossariespackage.xindy,
+  name={\tstidxstyoptfmt{xindy}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+}
+
+ at index{testidxglossariespackage.tex,
+  name={\tstidxstyoptfmt{tex}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+}
+
+ at index{packages.testidxglossariespackage.tex,
+  name={\tstidxstyoptfmt{tex}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+}
+
+ at index{testidxglossariespackage.bib2gls,
+  name={\tstidxstyoptfmt{bib2gls}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+}
+
+ at index{packages.testidxglossariespackage.bib2gls,
+  name={\tstidxstyoptfmt{bib2gls}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+}
+
+ at index{testidxglossariespackage.noglsnumbers,
+  name={\tstidxstyoptfmt{noglsnumbers}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.testidxglossariespackage.noglsnumbers,
+  name={\tstidxstyoptfmt{noglsnumbers}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{testidxglossariespackage.glsnumbers,
+  name={\tstidxstyoptfmt{glsnumbers}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.testidxglossariespackage.glsnumbers,
+  name={\tstidxstyoptfmt{glsnumbers}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{testidxglossariespackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={write information about the test entries in the transcript file}
+}
+
+ at index{packages.testidxglossariespackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={write information about the test entries in the transcript file}
+}
+
+ at index{testidxglossariespackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't write information about the test entries in the transcript file}
+}
+
+ at index{packages.testidxglossariespackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't write information about the test entries in the transcript file}
+}
+
+ at index{testidxglossariespackage.desc,
+  name={\tstidxstyoptfmt{desc}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={add descriptions to the dummy entries}
+}
+
+ at index{packages.testidxglossariespackage.desc,
+  name={\tstidxstyoptfmt{desc}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={add descriptions to the dummy entries}
+}
+
+ at index{testidxpackage.hidemarks,
+  name={\tstidxstyoptfmt{hidemarks}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={hide the marks showing where the indexing is occurring}
+}
+
+ at index{packages.testidxpackage.hidemarks,
+  name={\tstidxstyoptfmt{hidemarks}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={hide the marks showing where the indexing is occurring}
+}
+
+ at index{testidxpackage.showmarks,
+  name={\tstidxstyoptfmt{showmarks}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={mark where the indexing is occurring}
+}
+
+ at index{packages.testidxpackage.showmarks,
+  name={\tstidxstyoptfmt{showmarks}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={mark where the indexing is occurring}
+}
+
+ at index{testidxpackage.notestencaps,
+  name={\tstidxstyoptfmt{notestencaps}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't use the test encaps}
+}
+
+ at index{packages.testidxpackage.notestencaps,
+  name={\tstidxstyoptfmt{notestencaps}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't use the test encaps}
+}
+
+ at index{testidxpackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={show the index commands in the document text}
+}
+
+ at index{packages.testidxpackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={show the index commands in the document text}
+}
+
+ at index{testidxpackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't show the index commands in the document text}
+}
+
+ at index{packages.testidxpackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't show the index commands in the document text}
+}
+
+ at index{testidxpackage.digraphs,
+  name={\tstidxstyoptfmt{digraphs}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={use glyphs instead of the two-character digraphs for certain words}
+}
+
+ at index{packages.testidxpackage.digraphs,
+  name={\tstidxstyoptfmt{digraphs}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={use glyphs instead of the two-character digraphs for certain words}
+}
+
+ at index{testidxpackage.german,
+  name={\tstidxstyoptfmt{german}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{packages.testidxpackage.german,
+  name={\tstidxstyoptfmt{german}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{testidxpackage.ngerman,
+  name={\tstidxstyoptfmt{ngerman}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{packages.testidxpackage.ngerman,
+  name={\tstidxstyoptfmt{ngerman}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{testidxpackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{packages.testidxpackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{testidxglossariespackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={sanitize the sort value}
+}
+
+ at index{packages.testidxglossariespackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={sanitize the sort value}
+}
+
+ at index{testidxpackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{packages.testidxpackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{testidxglossariespackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't sanitize the sort value}
+}
+
+ at index{packages.testidxglossariespackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't sanitize the sort value}
+}
+
+ at index{testidxpackage.prefix,
+  name={\tstidxstyoptfmt{prefix}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={insert a prefix before the sort value for certain symbols}
+}
+
+ at index{packages.testidxpackage.prefix,
+  name={\tstidxstyoptfmt{prefix}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={insert a prefix before the sort value for certain symbols}
+}
+
+ at index{testidxpackage.noprefix,
+  name={\tstidxstyoptfmt{noprefix}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't insert a prefix before the sort value for certain symbols}
+}
+
+ at index{packages.testidxpackage.noprefix,
+  name={\tstidxstyoptfmt{noprefix}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't insert a prefix before the sort value for certain symbols}
+}
+
+ at index{testidxpackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxpackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxpackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxpackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxglossariespackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxglossariespackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxglossariespackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxglossariespackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{hyperrefpackage.hidelinks,
+  name={\tstidxstyoptfmt{hidelinks}},
+  parent={hyperrefpackage},
+  category={packageoption},
+  description={don't use a visual effect to show the hyperlinks}
+}
+
+ at index{packages.hyperrefpackage.hidelinks,
+  name={\tstidxstyoptfmt{hidelinks}},
+  parent={packages.hyperrefpackage},
+  category={packageoption},
+  description={don't use a visual effect to show the hyperlinks}
+}
+
+ at index{fontencpackage.T1,
+  name={\tstidxstyoptfmt{T1}},
+  parent={fontencpackage},
+  category={packageoption},
+  description={set the font encoding to T1}
+}
+
+ at index{packages.fontencpackage.T1,
+  name={\tstidxstyoptfmt{T1}},
+  parent={packages.fontencpackage},
+  category={packageoption},
+  description={set the font encoding to T1}
+}
+
+ at index{theindexenvironment,
+  name={\tstidxenvfmt{theindex} environment},
+  text={\tstidxenvfmt{theindex}},
+  category={environment},
+  description={environment used to display an index}
+}
+
+ at index{alignenvironment,
+  name={\tstidxenvfmt{align} environment},
+  text={\tstidxenvfmt{align}},
+  category={environment},
+  description={environment provided by the
+\glshyperlink{amsmathpackage} package to align equations}
+}
+
+ at index{eqnarrayenvironment,
+  name={\tstidxenvfmt{eqnarray} environment},
+  text={\tstidxenvfmt{eqnarray}},
+  category={environment},
+  description={environment provided by the \LaTeX\ kernel to align equations}
+}
+
+ at index{bib2gls,
+  name={\tstidxappfmt{bib2gls}},
+  category={application},
+  description={an indexing application designed
+to work with the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{applications.bib2gls,
+  name={\tstidxappfmt{bib2gls}},
+  parent={applications},
+  category={application},
+  description={an indexing application designed
+to work with the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{makeindex,
+  name={\tstidxappfmt{makeindex}},
+  category={application},
+  description={an indexing application}
+}
+
+ at index{applications.makeindex,
+  name={\tstidxappfmt{makeindex}},
+  parent={applications},
+  category={application},
+  description={an indexing application}
+}
+
+ at index{xindy,
+  name={\tstidxappfmt{xindy}},
+  category={application},
+  description={a highly-configurable indexing application with
+localisation support}
+}
+
+ at index{applications.xindy,
+  name={\tstidxappfmt{xindy}},
+  parent={applications},
+  category={application},
+  description={a highly-configurable indexing application with
+localisation support}
+}
+
+ at index{texdoc,
+  name={\tstidxappfmt{texdoc}},
+  category={application},
+  description={an application for viewing documentation
+installed in a \TeX\ distribution}
+}
+
+ at index{applications.texdoc,
+  name={\tstidxappfmt{texdoc}},
+  parent={applications},
+  category={application},
+  description={an application for viewing documentation
+installed in a \TeX\ distribution}
+}
+
+ at index{arara,
+  name={\tstidxappfmt{arara}},
+  category={application},
+  description={an automation tool for building documents}
+}
+
+ at index{applications.arara,
+  name={\tstidxappfmt{arara}},
+  parent={applications},
+  category={application},
+  description={an automation tool for building documents}
+}
+
+ at index{Perl,
+  name={\tstidxappfmt{Perl}},
+  category={application},
+  description={a scripting language}
+}
+
+ at index{applications.Perl,
+  name={\tstidxappfmt{Perl}},
+  parent={applications},
+  category={application},
+  description={a scripting language}
+}
+
+ at index{makeglossaries,
+  name={\tstidxappfmt{makeglossaries}},
+  category={application},
+  description={a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+}
+
+ at index{applications.makeglossaries,
+  name={\tstidxappfmt{makeglossaries}},
+  parent={applications},
+  category={application},
+  description={a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+}
+
+ at index{makeglossarieslite,
+  name={\tstidxappfmt{makeglossaries-lite}},
+  category={application},
+  description={a light-weight Lua alternative to \glshyperlink{makeglossaries}}
+}
+
+ at index{applications.makeglossarieslite,
+  name={\tstidxappfmt{makeglossaries-lite}},
+  parent={applications},
+  category={application},
+  description={a light-weight Lua alternative to \glshyperlink{makeglossaries}}
+}
+
+ at index{Emacs,
+  name={\tstidxappfmt{Emacs}},
+  category={application},
+  description={a text editor}
+}
+
+ at index{applications.Emacs,
+  name={\tstidxappfmt{Emacs}},
+  parent={applications},
+  category={application},
+  description={a text editor}
+}
+
+ at index{Vi,
+  name={\tstidxappfmt{Vi}},
+  category={application},
+  description={a text editor}
+}
+
+ at index{applications.Vi,
+  name={\tstidxappfmt{Vi}},
+  parent={applications},
+  category={application},
+  description={a text editor}
+}
+
+ at index{xindy.Lswedish,
+  name={\tstidxappoptfmt{-L swedish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{applications.xindy.Lswedish,
+  name={\tstidxappoptfmt{-L swedish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{Lswedish.xindyoption,
+  name={\tstidxappoptfmt{-L swedish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{xindy.Ldanish,
+  name={\tstidxappoptfmt{-L danish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{applications.xindy.Ldanish,
+  name={\tstidxappoptfmt{-L danish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{Ldanish.xindyoption,
+  name={\tstidxappoptfmt{-L danish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{xindy.Lpolish,
+  name={\tstidxappoptfmt{-L polish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{applications.xindy.Lpolish,
+  name={\tstidxappoptfmt{-L polish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{Lpolish.xindyoption,
+  name={\tstidxappoptfmt{-L polish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{xindy.Licelandic,
+  name={\tstidxappoptfmt{-L icelandic}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{applications.xindy.Licelandic,
+  name={\tstidxappoptfmt{-L icelandic}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{Licelandic.xindyoption,
+  name={\tstidxappoptfmt{-L icelandic} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{xindy.Lgermanduden,
+  name={\tstidxappoptfmt{-L german-duden}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{applications.xindy.Lgermanduden,
+  name={\tstidxappoptfmt{-L german-duden}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{Lgermanduden.xindyoption,
+  name={\tstidxappoptfmt{-L german-duden} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{xindy.Lgermandin5007,
+  name={\tstidxappoptfmt{-L german-din5007}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{applications.xindy.Lgermandin5007,
+  name={\tstidxappoptfmt{-L german-din5007}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{Lgermandin5007.xindyoption,
+  name={\tstidxappoptfmt{-L german-din5007} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{xindy.Mord/letorder,
+  name={\tstidxappoptfmt{-M ord/letorder}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{applications.xindy.Mord/letorder,
+  name={\tstidxappoptfmt{-M ord/letorder}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{Mord/letorder.xindyoption,
+  name={\tstidxappoptfmt{-M ord/letorder} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{makeindex.g,
+  name={\tstidxappoptfmt{-g}},
+  parent={makeindex},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{applications.makeindex.g,
+  name={\tstidxappoptfmt{-g}},
+  parent={applications.makeindex},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{g.makeindexoption,
+  name={\tstidxappoptfmt{-g} (\tstidxappfmt{makeindex})},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{makeindex.l,
+  name={\tstidxappoptfmt{-l}},
+  parent={makeindex},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{applications.makeindex.l,
+  name={\tstidxappoptfmt{-l}},
+  parent={applications.makeindex},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{l.makeindexoption,
+  name={\tstidxappoptfmt{-l} (\tstidxappfmt{makeindex})},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{tstidxencapi,
+  name={\texttt{tstidxencapi} (\tstidxcsfmt{tstidxencapi})},
+  text={\texttt{tstidxencapi}},
+  category={encapcsn},
+  description={first test encap}
+}
+
+ at index{encap.tstidxencapi,
+  name={\texttt{tstidxencapi}},
+  parent={encap},
+  category={encapcsn},
+  description={first test encap}
+}
+
+ at index{tstidxencapii,
+  name={\texttt{tstidxencapii} (\tstidxcsfmt{tstidxencapii})},
+  text={\texttt{tstidxencapii}},
+  category={encapcsn},
+  description={second test encap}
+}
+
+ at index{encap.tstidxencapii,
+  name={\texttt{tstidxencapii}},
+  parent={encap},
+  category={encapcsn},
+  description={second test encap}
+}
+
+ at index{tstidxencapiii,
+  name={\texttt{tstidxencapiii} (\tstidxcsfmt{tstidxencapiii})},
+  text={\texttt{tstidxencapiii}},
+  category={encapcsn},
+  description={third test encap}
+}
+
+ at index{encap.tstidxencapiii,
+  name={\texttt{tstidxencapiii}},
+  parent={encap},
+  category={encapcsn},
+  description={third test encap}
+}
+
+ at index{cs.index,
+  name={\tstidxcsfmt{index}},
+  category={cs},
+  description={write information to the external index file
+that will be processed by an indexing application (defined by the
+\LaTeX\ kernel)}
+}
+
+ at index{cs.testidx,
+  name={\tstidxcsfmt{testidx}},
+  category={cs},
+  description={produce the dummy text (defined in the
+\glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.tstidxtoidx,
+  name={\tstidxcsfmt{tstidxtoidx}},
+  category={cs},
+  description={switch back to the original definitions
+provided by the base \glshyperlink{testidxpackage} package (defined
+in the \glshyperlink{testidxglossariespackage} package)}
+}
+
+ at index{cs.gls,
+  name={\tstidxcsfmt{gls}},
+  category={cs},
+  description={reference a term defined by the
+\glshyperlink{glossariespackage} package (displays text and performs
+indexing)}
+}
+
+ at index{cs.glspl,
+  name={\tstidxcsfmt{glspl}},
+  category={cs},
+  description={as \glshyperlink{cs.gls} but displays the
+plural form}
+}
+
+ at index{cs.glsadd,
+  name={\tstidxcsfmt{glsadd}},
+  category={cs},
+  description={indexes a term defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any
+text)}
+}
+
+ at index{cs.glssee,
+  name={\tstidxcsfmt{glssee}},
+  category={cs},
+  description={indexes a cross-referenced term or terms defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any
+text)}
+}
+
+ at index{cs.glsxtrindexseealso,
+  name={\tstidxcsfmt{glsxtrindexseealso}},
+  category={cs},
+  description={indexes a \tstidxqt{see also} cross-referenced term
+or terms
+defined by the
+\glshyperlink{glossariesextrapackage} package (but doesn't display
+any text)}
+}
+
+ at index{cs.glshyperlink,
+  name={\tstidxcsfmt{glshyperlink}},
+  category={cs},
+  description={displays the text associated with a
+term (with a hyperlink if enabled) but doesn't perform
+any indexing (defined by the \glshyperlink{glossariespackage}
+package)}
+}
+
+ at index{cs.setglossarystyle,
+  name={\tstidxcsfmt{setglossarystyle}},
+  category={cs},
+  description={sets the glossary style
+(defined by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.tstidxfootnote,
+  name={\tstidxcsfmt{tstidxfootnote}},
+  category={cs},
+  description={produces a footnote
+(defined by the \glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.footnote,
+  name={\tstidxcsfmt{footnote}},
+  category={cs},
+  description={produces a footnote
+(defined by the \LaTeX\ kernel)}
+}
+
+ at index{cs.tstidxtext,
+  name={\tstidxcsfmt{tstidxtext}},
+  category={cs},
+  description={used to mark the sample text being indexed
+(defined by the \glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.textcolor,
+  name={\tstidxcsfmt{textcolor}},
+  category={cs},
+  description={displays the given text in the given colour
+(a colour package is required to enable this command)}
+}
+
+ at index{cs.glstreenamefmt,
+  name={\tstidxcsfmt{glstreenamefmt}},
+  category={cs},
+  description={used to set the font for
+the name field in the tree-like glossary styles}
+}
+
+ at index{cs.tstindex,
+  name={\tstidxcsfmt{tstindex}},
+  category={cs},
+  description={used to index the sample text
+for the base \glshyperlink{testidxpackage} package (not for the
+\glshyperlink{testidxglossariespackage} package)}
+}
+
+ at index{cs.GlsAddXdyAttribute,
+  name={\tstidxcsfmt{GlsAddXdyAttribute}},
+  category={cs},
+  description={adds a \glshyperlink{xindy}
+attribute (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.delimN,
+  name={\tstidxcsfmt{delimN}},
+  category={cs},
+  description={page number separator used in the
+\glshyperlink{locationlist} (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.delimR,
+  name={\tstidxcsfmt{delimR}},
+  category={cs},
+  description={page range separator used in the
+\glshyperlink{locationlist} (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.IeC,
+  name={\tstidxcsfmt{IeC}},
+  category={cs},
+  description={used internally by the \glshyperlink{inputencpackage}
+package}
+}
+
+ at index{cs.tstidxindexmarkerprefix,
+  name={\tstidxcsfmt{tstidxindexmarkerprefix}},
+  category={cs},
+  description={prefix used in the
+sort key for markers if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+}
+
+ at index{cs.tstidxindexmathsymprefix,
+  name={\tstidxcsfmt{tstidxindexmathsymprefix}},
+  category={cs},
+  description={prefix used in the
+sort key for mathematical symbols if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+}
+
+ at index{cs.tstidxmakegloss,
+  name={\tstidxcsfmt{tstidxmakegloss}},
+  category={cs},
+  description={command used to load
+the files containing the sample glossary definitions
+and also use the appropriate command to initialise the indexing,
+depending on the package options}
+}
+


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,801 @@
+%%
+%% This is file `testidx-glossaries-samples.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% testidx.dtx  (with options: `testidx-glossaries-samples.tex,package')
+%% 
+%%  testidx.dtx
+%%  Copyright 2017 Nicola Talbot
+%% 
+%%  This work may be distributed and/or modified under the
+%%  conditions of the LaTeX Project Public License, either version 1.3
+%%  of this license or (at your option) any later version.
+%%  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%%  and version 1.3 or later is part of all distributions of LaTeX
+%%  version 2005/12/01 or later.
+%% 
+%%  This work has the LPPL maintenance status `maintained'.
+%% 
+%%  The Current Maintainer of this work is Nicola Talbot.
+%% 
+%%  This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
+%% 
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\tstidxnewword{packages}{files provided to adjust the document
+design or provide new commands}
+\tstidxnewword{books}{written or printed works}
+\tstidxnewword{films}{stories recorded by camera}
+\tstidxnewword{people}{human individuals (or fictional
+anthropomorphisms)}
+\tstidxnewword{places}{particular areas or locations}
+\tstidxnewword{applications}{computer programs}
+\tstidxnewword{environments}{a marked-up block within the document
+that requires special action or formatting}
+\tstidxnewword{attributes}{qualities or features that characterise
+something}
+\tstidxnewword{parse}{divide a sentence into its component parts for
+analysis}
+\tstidxnewword{interpret}{translate or explain the meaning of}
+\tstidxnewword{oak}{large tree that produces acorns}
+\tstidxnewword{daft}{silly or foolish}
+\tstidxnewword{rhubarb}{thick reddish or green leaf stalks
+of a plant from the dock family}
+\tstidxnewword{rhinoceros}{a large plant-eating mammal
+with one or two horns on its nose}
+\tstidxnewword{aardvark}{an African mammal}
+\tstidxnewword{check}{make sure something is the case}
+\tstidxnewword{chalk}{soft limestone substance made into sticks to
+use for writing}
+\tstidxnewword{index}{an alphabetical list of names, terms or
+subjects with references to where they occur in the document}
+\tstidxnewword{phrase}{group of words forming a unit}
+\tstidxnewword{glossary}{an alphabetical list of words with
+explanations}
+\tstidxnewword{layout}{the way something is laid out (for example,
+on a page)}
+\tstidxnewword{filler}{something used to fill in gaps or increase bulk}
+\tstidxnewwordseealso{padding}{something used
+to pad out material to make it longer}{filler}
+\tstidxnewword{example}{thing used to illustrate something}
+\tstidxnewword{purpose}{the reason for doing something}
+\tstidxnewword{whatsit}{In \TeX\ terms, a mechanism to allow
+extensions to \TeX, including writing to files or providing
+special instructions to printing devices. More generally,
+a whatsit is an unnamed person or thing}
+\tstidxnewword{test}{a means of testing something}
+\tstidxnewword{design}{plan or purpose}
+\tstidxnewword{document}{a piece of written, printed or electronic
+matter that provides information}
+\tstidxnewword{book}{written or printed work}
+\tstidxnewword{range}{area of variation or scope}
+\tstidxnewword{word}{single unit of language which has meaning}
+\tstidxnewword{marker}{an identifying symbol}
+\tstidxnewword{footnote}{additional information written at the
+bottom of a page}
+\tstidxnewword{encap}{the format used to encapsulate the location}
+\tstidxnewword{text}{written or printed or electronically
+represented words}
+\tstidxnewword{argument}{parameter passed to a command or
+application}
+\tstidxnewword{predefined}{already defined}
+\tstidxnewword{excessive}{more than normal or desired}
+\tstidxnewword{block}{large quantity of things viewed as a unit}
+\tstidxnewword{paragraph}{block of writing, beginning on a new line}
+\tstidxnewword{waffle}{speak or write vague or trivial information in a lengthy way}
+\tstidxnewword{gibberish}{meaningless or hard to comprehend speech
+or writing}
+\tstidxnewwordsee{gobbledegook}{language that is
+difficult to understand}{gibberish}
+\tstidxnewword{clarify}{make it easier to understand}
+\tstidxnewword{confidential}{private or secret information}
+\tstidxnewword{roundabout}{not direct}
+\tstidxnewword{fashion}{a way of doing something}
+\tstidxnewwordseealso{illustration}{an example to explain something}{example}
+\tstidxnewword{wit}{natural talent for saying or writing things in
+an amusing or clever way}
+\tstidxnewword{eloquence}{fluent or persuasive speech or writing}
+\tstidxnewword{adage}{popular saying}
+\tstidxnewword{motto}{short sentence of phrase expressing a belief
+or aim}
+\tstidxnewword{verbiage}{excessively length speech or writing}
+\tstidxnewword{drivel}{nonsense}
+\tstidxnewword{tutor}{teacher}
+\tstidxnewword{grass}{in addition to the plant, also slang for
+reporting criminal activity}
+\tstidxnewword{distress}{cause anxiety}
+\tstidxnewword{concordance}{an alphabetical list of important words
+used in a document}
+\tstidxnewword{ogling}{staring at someone in a lecherous manner}
+\tstidxnewwordsee{gawping}{staring in a rude or stupid manner}{ogling}
+\tstidxnewword{passim}{referencing various places in a document}
+\tstidxnewword{localisation}{place or position}
+\tstidxnewword{digraph}{two letters representing a single sound}
+\tstidxnewword{trigraph}{three letters representing a single sound}
+\tstidxnewwordseealso{lyuk}{hole (Hungarian)}{digraph}
+\tstidxnewwordseealso{dzsungel}{jungle (Hungarian)}{trigraph}
+\tstidxnewword{nonsense}{something that doesn't make sense}
+\tstidxnewword{vol-au-vent}{small round puff pastry containing
+savoury food}
+\tstidxnewword{two}{number following one}
+\tstidxnewword{sculpture}{artwork made of wood, metal or stone}
+\tstidxnewword{Venus}{Roman goddess (or planet named after her)}
+\tstidxnewword{zoo}{place containing animals}
+\tstidxnewword{alphabet}{ordered set of letters used to form words}
+\tstidxnewword{resume}{continue after an interruption}
+\tstidxnewword{fly}{travel by air}
+\tstidxnewword{aeroplane}{fixed wing flying vehicle}
+\tstidxnewword{window}{opening in wall or window to view out or in}
+\tstidxnewword{ogonek}{a diacritic hook placed under the lower right
+corner of a vowel}
+\tstidxnewword{sail}{travel by or navigate a boat}
+\tstidxnewword{ship}{large boat}
+\tstidxnewword{OT1}{one of the original font encodings provided with
+\TeX}
+\tstidxnewword{UTF-8}{character encoding that uses 8-bit code units}
+\tstidxnewword{life}{existence}
+\tstidxnewword{universe}{all existing space and matter}
+\tstidxnewword{even}{multiple of two}
+\tstidxnewword{century}{period of 100 years or a score of 100 runs}
+\tstidxnewword{cricket}{bat and ball game played between two teams
+with eleven players on either side}
+\tstidxnewword{calendar}{chart or list showing a period of time}
+\tstidxnewword{prefix}{word or letter placed at the start of another
+word}
+\tstidxnewword{gobsmacked}{astonished}
+\tstidxnewword{astounded}{shocked or very surprised}
+\tstidxnewword{quaint}{old-fashioned or unusual}
+\tstidxnewword{yatter}{chatter or talk non-stop}
+\tstidxnewword{yawn}{open one's mouth due to tiredness or boredom}
+\tstidxnewword{quirky}{peculiar or unexpected habits}
+\tstidxnewword{badinage}{witty conversation}
+\tstidxnewword{expire}{come to an end}
+\tstidxnewword{story}{account or description of imaginary or real
+events}
+\tstidxnewword{begin}{start something}
+\tstidxnewword{forget}{fail to remember something}
+\tstidxnewword{tale}{a story}
+\tstidxnewword{adventure}{unusual or exciting or daring experience}
+\tstidxnewword{derring-do}{heroic action}
+\tstidxnewword{hero}{principle male character in a story or a person
+admired for their achievements}
+\tstidxnewword{title}{name of a document or work, or a name that
+describes a position}
+\tstidxnewword{knight}{a man raised to military rank after service
+as a page or squire, or a man entitled to use \tstidxqt{Sir} before
+his name}
+\tstidxnewword{handsome}{good-looking}
+\tstidxnewword{bold}{confident or brave}
+\tstidxnewword{brave}{prepared to face danger or difficulties}
+\tstidxnewword{duck}{a waterbird with a blunt bill, short legs and webbed feet}
+\tstidxnewword{name}{word or words by which something is known}
+\tstidxnewword{plight}{dangerous situation}
+\tstidxnewword{land}{area of ground}
+\tstidxnewword{OgRe}{an ogre is a man-eating giant or a terrifying
+person. The silly capitalisation is just a reference to \TeX's output
+routine}
+\tstidxnewword{reference}{referring to something}
+\tstidxnewword{perilous}{dangerous or full of risk}
+\tstidxnewword{quest}{long or difficult search for something}
+\tstidxnewword{xor}{\LaTeX3 experimental output routine}
+\tstidxnewword{continuation}{state of continuing}
+\tstidxnewword{newcomers}{recent arrivals}
+\tstidxnewword{nod}{in addition to the action of moving one's head
+up and down, also indicates a reference of acknowledgement of
+something}
+\tstidxnewword{centre}{point in the middle (UK spelling)}
+\tstidxnewword{center}{point in the middle (US spelling)}
+\tstidxnewword{lore}{tradition or knowledge of a particular subject}
+\tstidxnewword{raft}{flat water vessel made from pieces of wood
+tied together}
+\tstidxnewword{external}{belonging outside of something}
+\tstidxnewword{pun}{play on words}
+\tstidxnewword{joke}{something said to amuse others}
+\tstidxnewword{witty}{having the ability to say clever or
+amusing things}
+\tstidxnewword{cameo}{small part in a story for a distinguished
+actor}
+\tstidxnewword{exclamation}{sudden cry}
+\tstidxnewword{bog}{area of soft, wet, muddy ground}
+\tstidxnewword{leviathans}{very large, powerful thing (such as a sea
+monster)}
+\tstidxnewword{vale}{valley}
+\tstidxnewword{doom}{fate}
+\tstidxnewword{chaos}{complete confusion or disorder}
+\tstidxnewword{butterfly}{winged insect}
+\tstidxnewword{motif}{repeated theme}
+\tstidxnewword{sentence}{set of words forming a complete statement,
+instruction or question}
+\tstidxnewword{conjunction}{word used to connect words or clauses}
+\tstidxnewword{naughty}{badly behaved}
+\tstidxnewword{leap}{jump far or high across something}
+\tstidxnewword{bound}{leaping movement}
+\tstidxnewword{sword}{weapon with a long metal blade}
+\tstidxnewword{myriad}{countless or a very great number}
+\tstidxnewword{clones}{identical copy}
+\tstidxnewword{repetition}{something that's been repeated}
+\tstidxnewword{lair}{hiding place or den}
+\tstidxnewword{roar}{loud, deep sound}
+\tstidxnewword{peace}{freedom from war or anxiety}
+\tstidxnewword{harmony}{arranged well or peacefully together}
+\tstidxnewword{span}{length of time or full extent or extend across
+something}
+\tstidxnewword{fear}{anxiety about something unpleasant}
+\tstidxnewword{thrilling}{exciting}
+\tstidxnewword{quixotic}{impractically unselfish and idealist}
+\tstidxnewword{sea}{large area of salt water}
+\tstidxnewword{seal}{seal-dwelling fish-eating mammal with flippers}
+\tstidxnewword{seaborne}{transported or travelling by sea}
+\tstidxnewword{zither}{a type of stringed musical instrument}
+\tstidxnewword{zealous}{having great enthusiasm for something}
+\tstidxnewword{fan}{an admirer of something}
+\tstidxnewword{youthful}{seeming young}
+\tstidxnewword{magic}{having the apparent power of supernatural or
+mysterious forces}
+\tstidxnewword{magical}{relating to or using magic}
+\tstidxnewword{yo-yo}{a round toy consisting of two discs and a
+piece of string}
+\tstidxnewword{wily}{using cunning or crafty methods to gain an
+advantage}
+\tstidxnewword{wombat}{a type of small marsupial}
+\tstidxnewword{warrior}{brave or experienced fighter}
+\tstidxnewword{laser-guided}{guided by a laser}
+\tstidxnewword{villainous}{characteristic of a villain}
+\tstidxnewword{zany}{amusingly unconventional}
+\tstidxnewword{zoologist}{someone who studies animals}
+\tstidxnewword{xebec}{a type of small sailing ship}
+\tstidxnewword{xenon}{a type of inert gas}
+\tstidxnewword{xylem}{a plant tissue}
+\tstidxnewword{xylene}{a type of liquid hydrocarbon}
+\tstidxnewword{zounds}{an exclamation}
+\tstidxnewword{Ooh}{an exclamation}
+\tstidxnewword{zucchini}{a type of long, green summer squash (called
+a courgette in British English)}
+\tstidxnewword{xylophone}{a type of musical instrument}
+\tstidxnewword{exhilarating}{pleasing or energetic}
+\tstidxnewword{yuppie}{urban well-paid young middle-class professional}
+\tstidxnewword{yoghurt}{thick, liquid food made from milk}
+\tstidxnewword{yummy}{delicious}
+\tstidxnewword{yuck}{disgusting}
+\tstidxnewword{Viking}{a member of Scandinavian seafaring people
+between the eighth and eleventh centuries}
+\tstidxnewword{vignette}{brief episode}
+\tstidxnewword{viceroy}{a person who governs a colony on behalf of
+the sovereign}
+\tstidxnewword{vichyssoise}{a type of soup}
+\tstidxnewword{viceregal}{relating to a viceroy}
+\tstidxnewword{quiz}{game or competition}
+\tstidxnewword{glyph}{small graphic symbol}
+\tstidxnewword{asleep}{in or into a state of sleep}
+\tstidxnewword{ashore}{to or on shore or land}
+\tstidxnewword{aspire}{to have strong ambitions to be or do something}
+\tstidxnewword{assailed}{past tense of assail}
+\tstidxnewword{recover}{get well again}
+\tstidxnewword[name={re-cover}]{reecover}{to cover again}
+\tstidxnewdigraph{cz}{digraph in some languages, such as Polish}
+\tstidxnewdigraph{dd}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ff}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ng}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ly}{digraph in some languages, such as Hungarian}
+\tstidxnewtrigraph{dzs}{Hungarian \glshyperlink{trigraph} considered a separate letter}
+\tstidxnewword{ddisgynedig}{descending (Welsh)}
+\tstidxnewword{ddyrchafedig}{advanced (Welsh)}
+\tstidxnewword{ffotograff}{photo (Welsh)}
+
+\tstidxnewutfword{dzsoker}{dzs\'oker}{dzsóker}{joker (Hungarian)}
+\tstidxnewutfword{czesc}{cze\'s\'c}{cześć}{hello (Polish)}
+\tstidxnewutfword{elite}{\'elite}{élite}{group of people regarded as
+the best of a particular society or organisation}
+\tstidxnewutfword{aesthetic}{\ae sthetic}{æsthetic}{concerning
+beauty}
+\tstidxnewutfword{blase}{blas\'e}{blasé}{unimpressed or indifferent
+due to familiarity}
+\tstidxnewutfword{protege}{prot\'eg\'e}{protégé}{person guided by an
+older more experienced person}
+\tstidxnewutfword{clientele}{client\`ele}{clientèle}{all the clients
+of a particular business}
+\tstidxnewutfword{resumee}{r\'esum\'e}{résumé}{summary of something
+or curriculum vitae}
+\tstidxnewutfword{soiree}{soir\'ee}{soirée}{an evening social
+gathering involving conversation or music}
+\tstidxnewutfword{phoenix}{ph\oe nix}{phœnix}{mythical bird that
+periodically burned itself and was reborn from the ashes}
+\tstidxnewutfword{decor}{d\'ecor}{décor}{the furnishings and
+decorations of a room}
+\tstidxnewutfword{faerie}{f\ae rie}{færie}{fairyland}
+\tstidxnewutfword{facade}{fa\c{c}ade}{façade}{the front face of a
+building}
+\tstidxnewutfword{aethereal}{\ae thereal}{æthereal}{light, airy or
+tenuous}
+\tstidxnewutfword{debutante}{d\'ebutante}{débutante}{a young
+upper-class woman making her first appearance in society}
+\tstidxnewutfword{naive}{na\"{\i}ve}{naïve}{lacking experience or
+wisdom}
+\tstidxnewutfword{foetid}{f\oe tid}{fœtid}{smelling very unpleasant}
+\tstidxnewutfword{cliche}{clich\'e}{cliché}{overused phrase or idea}
+\tstidxnewutfword{deshabille}{d\'eshabill\'e}{déshabillé}{the state
+of being only partially clothed}
+\tstidxnewutfword{negligee}{n\'eglig\'ee}{négligée}{a woman's very
+thin dressing gown}
+\tstidxnewutfword{cafe}{caf\'e}{café}{small restaurant that sells
+light meals}
+\tstidxnewutfword{anaemic}{an\ae mic}{anæmic}{suffering from anaemia}
+
+\tstidxnewutfwordsee{thornletter}{\th}{þ}{thorn}{thorn}
+\tstidxnewutfwordsee{ethletter}{\dh}{ð}{eth}{eth}
+\tstidxnewutfword{thorn}{thorn (\th)}{thorn (þ)}{Old English and
+Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+\tstidxnewutfword{eth}{eth (\dh)}{eth (ð)}{Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+\tstidxnewutfword{oesophagus}{\oe sophagus}{œsophagus}{part of the
+alimentary canal}
+\tstidxnewplace{Poland}{an Eastern European country}
+\tstidxnewplace{Glasgow}{a Scottish city}
+\tstidxnewplace{Iceland}{a Nordic island nation}
+\tstidxnewplace{Nghaerdydd}{Cardiff}
+\tstidxnewplace{Nghymru}{Wales}
+\tstidxnewplace{Ffestiniog}{a place in Wales}
+\tstidxnewutfplace{Ostergotland}{\"Osterg\"otland}{Östergötland}{a
+county in Sweden}
+\tstidxnewutfplace{Angelholm}{\"Angelholm}{Ängelholm}{a place in
+Sweden}
+\tstidxnewutfplace{Oresund}{\O resund}{Øresund}{a strait which
+separates Denmark and Sweden}
+\tstidxnewutfplace{Tarnby}{T\r{a}rnby}{Tårnby}{a town in Denmark}
+\tstidxnewutfplace{Rodovre}{R\o dovre}{Rødovre}{a Danish town}
+\tstidxnewutfplace{Naestved}{N\ae stved}{Næstved}{a Danish town on
+the island of Zealand}
+\tstidxnewutfplace{OlstykkeStenlose}{\O lstykke-Stenl\o se}%
+{Ølstykke-Stenløse}{a Danish city in North Zealand}
+\tstidxnewutfplace{Asslar}{A\ss lar}{Aßlar}{German town}
+\tstidxnewutfplace{BadGottleubaBerggiesshubel}%
+{Bad Gottleuba-Berggie\ss h\"ubel}{Bad Gottleuba-Berggießhübel}%
+{a town in the Free State of Saxony, Germany}
+\tstidxnewutfplace{Lodz}{\L\'od\'z}{Łódź}{Polish city}
+\tstidxnewutfplace{Swietokrzyskie}{\'Swi\k{e}tokrzyskie}%
+{Świętokrzyskie}{Polish province}
+\tstidxnewutfplace{Zory}{\.Zory}{Żory}{Polish town and city county}
+\tstidxnewutfplace{Zelechow}{\.Zelech\'ow}{Żelechów}%
+{Polish town}
+\tstidxnewutfplace{Lobez}{\L obez}{Łobez}{Polish town}
+\tstidxnewutfplace{Glogow}{G\l og\'ow}{Głogów}{Polish town}
+\tstidxnewutfplace{Cmielow}{\'Cmiel\'ow}{Ćmielów}{Polish town}
+\tstidxnewutfplace{Scinawa}{\'Scinawa}{Ścinawa}{Polish town}
+\tstidxnewutfplace{Swidnica}{\'Swidnica}{Świdnica}{Polish town}
+\tstidxnewutfplace{Olvesvatn}{\"Olvesvatn}{Ölvesvatn}{Icelandic lake}
+\tstidxnewutfplace{Ulfsvatn}{\'Ulfsvatn}{Úlfsvatn}{Icelandic lake}
+\tstidxnewutfplace{Anavatn}{\'Anavatn}{Ánavatn}{Icelandic lake}
+\tstidxnewutfplace{Masvatn}{M\'asvatn}{Másvatn}{Icelandic lake}
+\tstidxnewutfplace{Thrihyrningsvatn}{\TH r\'{\i}hyrningsvatn}%
+{Þríhyrningsvatn}{Icelandic lake}
+\tstidxnewutfplace{Sigridharstadhavatn}%
+{Sigr\'{\i}\dh arsta\dh avatn}{Sigríðarstaðavatn}%
+{Icelandic lagoon}
+\tstidxnewutfplace{Graenavatn}{Gr\ae navatn}{Grænavatn}%
+{Icelandic lake}
+\tstidxnewutfplace{Arneslon}{\'Arnesl\'on}{Árneslón}%
+{Icelandic lake}
+\tstidxnewutfplace{Isholsvatn}{\'Ish\'olsvatn}{Íshólsvatn}%
+{Icelandic lake}
+\tstidxnewartplace{the}{Bog of Eternal Stench}{place in the film
+\glshyperlink{Labyrinth}}
+\tstidxnewphrase{dado rail}{waist-high moulding around the
+wall of a room}
+\tstidxnewphrase{indexing application}{an application that generates
+a document index}
+\tstidxnewphrase{visual effects}{use of imagery to create an effect}
+\tstidxnewphrase{dummy text}{sample text used for demonstration not
+for its content}
+\tstidxnewphrase{page break}{the point where document text is broken
+across two pages}
+\tstidxnewphrase{link text}{for the \glshyperlink{glossariespackage}
+package, this refers to the text inserted into the document
+through commands like \glshyperlink{cs.gls}}
+\tstidxnewphrase{cross-reference}{reference to another part of the
+document or to a part of another document}
+\tstidxnewphrase{marginal note}{text that's placed in the page
+margin}
+\tstidxnewphrase{overfull lines}{lines where the text extends into
+the margin because of a formatting failure}
+\tstidxnewphrase{lorem ipsum}{dummy text}
+\tstidxnewphrase{between you, me and the gatepost}{an expression
+meaning you're telling someone a secret that shouldn't be passed on
+(common in some British dialects)}
+\tstidxnewphrase{way with words}{have a particular talent with words}
+\tstidxnewphrase{creative writing}{writing typically identified
+by narrative craft, character development and use of literary tropes}
+\tstidxnewphrase{cut to the chase}{get to the point}
+\tstidxnewphrase{get to the point}{state something directly}
+\tstidxnewphraseseealso{keep mum}{be silent about something}{confidential}
+\tstidxnewphrase{output routine}{\TeX's method of outputting a page}
+\tstidxnewphrase{out of whack}{out of order or not working}
+\tstidxnewphrase{page dimensions}{the dimensions of a page (such as
+the page width and page height)}
+\tstidxnewphrase{font family}{the name of a font}
+\tstidxnewphrase{font size}{the size of a font}
+\tstidxnewphraseseealso{location list}%
+{the list of locations used in an index to indicate where
+the term being referenced was used in the document}{crossreference}
+\tstidxnewphrasesee{range separator}{the symbol
+used between the start and end location to indicate a range}{locationlist}
+\tstidxnewphrase{page number}{the number identifying a
+particular page}
+\tstidxnewphrase{multiple encaps}{a warning issued by
+\glshyperlink{makeindex} when the same page number is indexed
+with different encap values}
+\tstidxnewphrase{input encoding}{the character encoding used
+in the document source code}
+\tstidxnewphrase{font encoding}{the encoding used by the document
+font}
+\tstidxnewphrase{extended Latin characters}{Latin characters outside
+the basic ASCII set}
+\tstidxnewphrase{cup of tea}{an expression indicating what one likes
+or is interested in}
+\tstidxnewphrase{whistle-stop tour}{a series of short visits to
+different places}
+\tstidxnewphrase{number group}{a group associated with numbers}
+\tstidxnewphrase{prime number}{a number that is only divisible by
+itself and 1}
+\tstidxnewphrase{hold my breath}{stop breathing temporarily, also
+used as an expression to indicate a state of anticipation or
+suspense}
+\tstidxnewphrase{letter groups}{groups associated with letters}
+\tstidxnewphrase{Once upon a time}{an expression commonly used at
+the start of fairy tales}
+\tstidxnewphrase{across the pond}{colloquial expression indicating
+the other side of the Atlantic}
+\tstidxnewphrase{bad form}{an offence against accepted behaviour}
+\tstidxnewphrase{Monty Python}{a British surreal comedy group}
+\tstidxnewphrase{magic incantation}{words used to create a magical
+effect}
+\tstidxnewphrase{common knowledge}{something widely known}
+\tstidxnewphrase{intrepid hero}{a hero known for his boldness
+and bravery}
+\tstidxnewphrase{sea lion}{a type of large seal}
+\tstidxnewphrase{sealant gun}{a device used for applying sealant}
+\tstidxnewphrase{zoot suit}{a suit typically having a long loose
+jacket and high-waisted trousers}
+\tstidxnewphrase{anonymous reviewer}{an unnamed reviewer}
+\tstidxnewphrase{yule log}{a large log traditionally burnt on
+Christmas Eve or a log-shaped chocolate cake}
+\tstidxnewphrase{vice-president}{a president's deputy}
+\tstidxnewphrase{vice admiral}{a high rank of naval officer}
+\tstidxnewphrase{Victoria plum}{a large, red, dessert plum}
+\tstidxnewphrase{Victoria sponge}{a sponge cake consisting of two
+layers with jam filling in between}
+\tstidxnewphrase{vice versa}{reversing the order of the items just
+mentioned}
+\tstidxnewphrase{vice chancellor}{a deputy chancellor of a
+British university in charge of its administration}
+\tstidxnewphrase{letter ordering}{ordering according to the
+individual characters}
+\tstidxnewphrase{word ordering}{ordering according to the
+language or locale's definition of words}
+\tstidxnewphrase{mot juste}{the most appropriate word}
+\tstidxnewutfphrase{attachecase}{attach\'e case}{attaché case}%
+{small, flat briefcase for carrying documents}
+\tstidxnewutfphrase{piedaterre}{pied-\`a-terre}{pied-à-terre}%
+{small flat or house kept for occasional use}
+\tstidxnewutfphrase{bergerehat}{berg\`ere hat}{bergère hat}%
+{a type of wide-brimmed straw hat}
+\tstidxnewartphrase{the}{commercial world}{pertaining to commerce}
+\tstidxnewartphrase{a}{far away land}{somewhere that's far away; a
+term often used in fairy tales}
+\tstidxnewartphrase{the}{Golden Arara}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Mighty Helm of Knuth}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Legendary Sword}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Bog of Eternal Glossaries}{a made-up place in the dummy
+text}
+\tstidxnewartphrase{the}{Dread Vale of the Editors}{a made-up place in the dummy
+text}
+\tstidxnewartphrase{the}{butterflies of chaos}{the butterfly effect
+is a popular method of describing aspects of chaos theory}
+\tstidxnewartphrase{The}{End}{denotes the end of a
+story, especially fairy tales}
+\tstidxnewsubword{document}{properties}{attributes such as page size}
+\tstidxnewsubword{font encoding}{OT1}{one of the original font
+encodings supplied with \TeX}
+\tstidxnewsubwordsee{hero}{intrepid}{a hero known for his boldness
+and bravery}{intrepidhero}
+\tstidxnewsubphrase{location list}{page separator}%
+{symbol used to separate page references}
+\tstidxnewsubphrase{location list}{range separator}%
+{symbol used to mark page range references}
+\tstidxnewperson{James}{Joyce}{an author}
+\tstidxnewperson{Donald}{Knuth}{creator of \TeX}
+\tstidxnewperson{Paulo}{Cereda}{creator of \glshyperlink{arara}}
+\tstidxnewperson{Sir}{Quackalot}{fictitious character}
+\tstidxnewperson{the}{Fairy Goose}{fictitious character}
+\tstidxnewperson{David}{Carlisle}{member of the \LaTeX3 team}
+\tstidxnewperson{Joseph}{Wright}{member of the \LaTeX3 team}
+\tstidxnewutfperson{Anders Jonas}{\AA ngstr\"om}%
+[AndersJonasAngstrom]{Anders Jonas}{Ångström}%
+{Swedish physicist}
+\tstidxnewbook{Ulysses}{a modernist novel by James Joyce}
+\tstidxnewbook{Sir Quackalot and the Golden Arara}{a fictitious book}
+\tstidxnewbook{Sir Quackalot and the Hyper Lake of Doom}{a fictitious book}
+\tstidxnewbook{Compact Oxford English Dictionary}{a dictionary}
+\tstidxnewartbook{The}{Hitchhiker's Guide to the Galaxy}{a comedy
+series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+\tstidxnewartbook{The}{Adventures of Sir Quackalot}{a fictitious book}
+\tstidxnewfilm{Labyrinth}{a musical fantasy film}
+\tstidxnewartfilm{The}{Third Man}{a British film noir}
+\tstidxnewsym{TeX}{\TeX}{a typesetting system created by Donald
+Knuth}
+\tstidxnewmath{f(x)}[fx]{f(\protect\vec{x})}{a function of $x$}
+\tstidxnewmath{n}{n}{an integer}
+\tstidxnewmath{E}{E}{energy}
+\tstidxnewmathsym{alpha}{\protect\alpha}{Greek letter alpha}
+\tstidxnewmathsym{beta}{\protect\beta}{Greek letter beta}
+\tstidxnewmathsym{gamma}{\protect\gamma}{Greek letter gamma}
+\tstidxnewmathsym{sum}{\protect\sum}{summation}
+\tstidxnewmathsym{partial}{\protect\partial}{partial derivative}
+\tstidxnewmathsym{eth}[spinderiv]{\protect\eth}{spin-weighted partial derivative}
+\tstidxnewsty{testidx}{package that produces dummy text for testing
+index styles and indexing applications}
+\tstidxnewsty{testidx-glossaries}{package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+\tstidxnewsty{glossaries}{a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+\tstidxnewsty{glossaries-extra}{an extension to the
+\glshyperlink{glossariespackage} package}
+\tstidxnewsty{hyperref}{a package that provides extensive support
+for hypertext}
+\tstidxnewsty{lipsum}{a package that generates dummy text}
+\tstidxnewsty{inputenc}{a package that can be used to identify the document encoding}
+\tstidxnewstyseealso{fontenc}{a package that can be used to set the font
+encoding}{inputencpackage}
+\tstidxnewsty{amsmath}{a package that provides AMS mathematical
+facilities}
+\tstidxnewsty{amssymb}{a package that provides mathematical
+symbols}
+\tstidxnewsty{longtable}{a package that allows tables to flow over
+page boundaries}
+\tstidxnewsty{makeidx}{a package that provides indexing
+facilities}
+\tstidxnewsty{imakeidx}{a sophisticated package that provides indexing
+facilities}
+\tstidxnewstyopt{testidx-glossaries}{extra}{load the
+\glshyperlink{glossariesextrapackage} package}
+\tstidxnewstyopt{testidx-glossaries}{noextra}{don't load the
+\glshyperlink{glossariesextrapackage} package (only load
+\glshyperlink{glossariespackage})}
+\tstidxnewstyopt{testidx-glossaries}{noseekey}{don't use the
+\tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+\tstidxnewstyopt{testidx-glossaries}{seekey}{use the
+\tstidxqt{see} key to implement the cross-referencing}
+\tstidxnewstyopt{testidx-glossaries}{xindy}{set up the
+\glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+\tstidxnewstyopt{testidx-glossaries}{tex}{set up the
+\glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+\tstidxnewstyopt{testidx-glossaries}{bib2gls}{set up the
+\glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+\tstidxnewstyopt{testidx-glossaries}{noglsnumbers}{pass
+the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+\tstidxnewstyopt{testidx-glossaries}{glsnumbers}{pass
+the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+\tstidxnewstyopt{testidx-glossaries}{verbose}{write
+information about the test entries in the transcript file}
+\tstidxnewstyopt{testidx-glossaries}{noverbose}{don't write
+information about the test entries in the transcript file}
+\tstidxnewstyopt{testidx-glossaries}{desc}{add descriptions
+to the dummy entries}
+\tstidxnewstyopt{testidx-glossaries}{sanitize}{sanitize the sort value}
+\tstidxnewstyopt{testidx-glossaries}{nosanitize}{don't sanitize the
+sort value}
+\tstidxnewstyopt{testidxglossaries}{stripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidxglossaries}{nostripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{hidemarks}{hide the marks showing
+where the indexing is occurring}
+\tstidxnewstyopt{testidx}{showmarks}{mark
+where the indexing is occurring}
+\tstidxnewstyopt{testidx}{notestencaps}{don't use the
+test encaps}
+\tstidxnewstyopt{testidx}{verbose}{show the index
+commands in the document text}
+\tstidxnewstyopt{testidx}{noverbose}{don't show the index
+commands in the document text}
+\tstidxnewstyopt{testidx}{digraphs}{use glyphs instead of
+the two-character digraphs for certain words}
+\tstidxnewstyopt{testidx}{german}{change the
+\glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+\tstidxnewstyopt{testidx}{ngerman}{change the
+\glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+\tstidxnewstyopt{testidx}{sanitize}{sanitize the sort value
+before passing it to the indexing command}
+\tstidxnewstyopt{testidx}{nosanitize}{don't sanitize the sort value
+before passing it to the indexing command}
+\tstidxnewstyopt{testidx}{stripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{nostripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{prefix}{insert a prefix before the sort
+value for certain symbols}
+\tstidxnewstyopt{testidx}{noprefix}{don't insert a prefix before the sort
+value for certain symbols}
+\tstidxnewstyopt{hyperref}{hidelinks}{don't use a visual effect to
+show the hyperlinks}
+\tstidxnewstyopt{fontenc}{T1}{set the font encoding to T1}
+\tstidxnewenv{theindex}{environment used to display an index}
+\tstidxnewenv{align}{environment provided by the
+\glshyperlink{amsmathpackage} package to align equations}
+\tstidxnewenv{eqnarray}{environment provided by the \LaTeX\
+kernel to align equations}
+\tstidxnewapp{bib2gls}{an indexing application designed
+to work with the \glshyperlink{glossariesextrapackage} package}
+\tstidxnewapp{makeindex}{an indexing application}
+\tstidxnewapp{xindy}{a highly-configurable indexing application with
+localisation support}
+\tstidxnewapp{texdoc}{an application for viewing documentation
+installed in a \TeX\ distribution}
+\tstidxnewapp{arara}{an automation tool for building documents}
+\tstidxnewapp{Perl}{a scripting language}
+\tstidxnewapp{makeglossaries}{a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+\tstidxnewapp{makeglossaries-lite}{a light-weight Lua alternative to
+\glshyperlink{makeglossaries}}
+\tstidxnewapp{Emacs}{a text editor}
+\tstidxnewapp{Vi}{a text editor}
+\tstidxnewappopt{xindy}{-L swedish}{use the Swedish language module}
+\tstidxnewappopt{xindy}{-L danish}{use the Danish language module}
+\tstidxnewappopt{xindy}{-L polish}{use the Polish language module}
+\tstidxnewappopt{xindy}{-L icelandic}{use the Icelandic language module}
+\tstidxnewappopt{xindy}{-L german-duden}{use the German language
+module with the duden setting}
+\tstidxnewappopt{xindy}{-L german-din5007}{use the German language
+module with the din5007 setting}
+\tstidxnewappopt{xindy}{-M ord/letorder}{use the letter ordering
+module}
+\tstidxnewappopt{makeindex}{-g}{use the German setting that
+recognises the double-quote character as an umlaut command}
+\tstidxnewappopt{makeindex}{-l}{use letter ordering}
+\tstidxnewindexmarker{tstidxmarker}{indicates where the indexing
+command was used for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxsubmarker}{indicates where the indexing
+command was used for a level~1 entry}
+\tstidxnewindexmarker{tstidxsubsubmarker}{indicates where the indexing
+command was used for a level~2 entry}
+\tstidxnewindexmarker{tstidxopenmarker}{indicates where
+the start of a range was indexed for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxclosemarker}{indicates where
+the end of a range was indexed for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxopensubmarker}{indicates where
+the start of a range was indexed for a level~1 entry}
+\tstidxnewindexmarker{tstidxclosesubmarker}{indicates where
+the end of a range was indexed for a level~1 entry}
+\tstidxnewindexmarker{tstidxopensubsubmarker}{indicates where
+the start of a range was indexed for a level~2 entry}
+\tstidxnewindexmarker{tstidxclosesubsubmarker}{indicates where
+the end of a range was indexed for a level~2 entry}
+\tstidxnewindexmarker{tstidxseemarker}{indicates where the indexing
+command was used to cross-reference a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxsubseemarker}{indicates where the indexing
+command was used to cross-reference a level~1 entry}
+\tstidxnewencapcsn{tstidxencapi}{first test encap}
+\tstidxnewencapcsn{tstidxencapii}{second test encap}
+\tstidxnewencapcsn{tstidxencapiii}{third test encap}
+\tstidxnewcs{index}{write information to the external index file
+that will be processed by an indexing application (defined by the
+\LaTeX\ kernel)}
+
+\tstidxnewcs{testidx}{produce the dummy text (defined in the
+\glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{tstidxtoidx}{switch back to the original definitions
+provided by the base \glshyperlink{testidxpackage} package (defined
+in the \glshyperlink{testidxglossariespackage} package)}
+
+\tstidxnewcs{gls}{reference a term defined by the
+\glshyperlink{glossariespackage} package (displays text and performs
+indexing)}
+
+\tstidxnewcs{glspl}{as \glshyperlink{cs.gls} but displays the
+plural form}
+
+\tstidxnewcs{glsadd}{indexes a term defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glssee}{indexes a cross-referenced term or terms defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glsxtrindexseealso}{indexes a \tstidxqt{see also}
+cross-referenced term or terms defined by the
+\glshyperlink{glossariesextrapackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glshyperlink}{displays the text associated with a
+term (with a hyperlink if enabled) but doesn't perform
+any indexing (defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{setglossarystyle}{sets the glossary style
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{delimN}{page delimiter used in location lists
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{delimR}{page range delimiter used in location lists
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{tstidxfootnote}{produces a footnote
+(defined by the \glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{footnote}{produces a footnote
+(defined by the \LaTeX\ kernel)}
+
+\tstidxnewcs{tstidxtext}{used to mark the sample text being indexed
+(defined by the \glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{textcolor}{displays the given text in the given colour
+(a colour package is required to enable this command)}
+
+\tstidxnewcs{glstreenamefmt}{used to set the font for
+the name field in the tree-like glossary styles}
+
+\tstidxnewcs{tstindex}{used to index the sample text
+for the base \glshyperlink{testidxpackage} package (not for the
+\glshyperlink{testidxglossariespackage} package)}
+
+\tstidxnewcs{GlsAddXdyAttribute}{adds a \glshyperlink{xindy}
+attribute (provided by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{IeC}{used internally by the
+\glshyperlink{inputencpackage}
+package}
+
+\tstidxnewcs{tstidxindexmarkerprefix}{prefix used in the
+sort key for markers if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+
+\tstidxnewcs{tstidxindexmathsymprefix}{prefix used in the
+sort key for mathematical symbols if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+
+\tstidxnewcs{tstidxmakegloss}{command used to load
+the files containing the sample glossary definitions
+and also use the appropriate command to initialise the indexing,
+depending on the package options}
+\tstidxnewnumber{42}{forty-two}
+\tstidxnewnumber{10}{ten}
+\tstidxnewnumber{16}{sixteen}
+\tstidxnewnumber{2}{two}
+\tstidxnewnumber{100}{one hundred}
+\endinput
+%%
+%% End of file `testidx-glossaries-samples.tex'.


Property changes on: trunk/Master/texmf-dist/doc/latex/testidx/testidx-glossaries-samples.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.tex	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/doc/latex/testidx/testidx-manual.tex	2017-08-11 23:06:40 UTC (rev 45021)
@@ -1,8 +1,9 @@
 \documentclass[widecs]{nlctdoc}
 
 \usepackage[marginpar=1in]{geometry}
+\usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
+
 \usepackage{metalogo}
 \usepackage{cmap}
 \usepackage{upquote}
@@ -26,12 +27,12 @@
 
 \begin{document}
 
- \title{testidx.sty v1.0: 
+ \title{testidx.sty v1.1: 
 dummy text for testing indexes}
  \author{Nicola L.C. Talbot\\[10pt]
 \url{http://www.dickimaw-books.com/}}
 
- \date{2016-10-17}
+ \date{2017-08-11}
  \maketitle
  \tableofcontents
 
@@ -43,11 +44,84 @@
 and \app{xindy}).
 As with packages like \sty{lipsum} and \sty{blindtext}, this package
 provides dummy text, but it's interspersed with \cs{index} commands.
-The filler text is English not lorum ipsum, as this makes it
+The filler text is mostly English not lorum ipsum, as this makes it
 slightly easier to check the words in the index against the words in
 the document. (For those who don't understand English, it's at least
-no worse than lorum ipsum.)
+no worse than lorum ipsum.) There are some terms (words, phrases or proper
+nouns) that include extended Latin characters or digraphs to allow
+for testing with a variety of Latin alphabets. The dummy text is
+designed to cause problems that can occur in real documents to help 
+test your chosen indexing application or index style. The main
+issues this package tries to replicate are:
+\begin{itemize}
+\item Multiple encaps. For example, the word \qt{paragraph} is
+indexed within the same block using no encap and each of the three
+test encap values. This causes the \app{makeindex} warning
+\qt{Conflicting entries: multiple encaps for the same page under
+same key.}
 
+\item An explicit range formation conflicting with a mid-range encap. 
+The word \qt{range} has an explicit range formation (starting in
+block~4 and ending in block~9), but \qt{range} is also indexed in
+block~5 with one of the test encap values. This causes the
+\app{makeindex} warning \qt{Inconsistent page encapsulator \ldots\
+within range.}
+
+\item Page breaking mishaps. This is largely dependent on the font
+size and page geometry, but the dummy text contains some long
+paragraphs and has enough entries to result in at least some awkward
+page breaks. These may include a page or column break between an
+index group heading and the first entry in that group or between an
+index item and the first sub-item following it. Also check for
+indexing that occurs in paragraphs that span page breaks to ensure
+the location number is correct.
+
+\item Untidy page lists. This again depends on the font size and
+page geometry, but some entries are sporadically indexed throughout
+the dummy text, which can lead to a long list that can't be formed
+into a neat range.
+
+\item Mid-list cross-referencing. The word \qt{lyuk} is indexed 
+and then cross-referenced in block~3, and indexed again in block~7.
+This can result in the rather odd occurrence of a cross-reference
+appearing in the middle of the location list for that entry, depending on the
+indexing method.
+
+\item Collation-level homographs. (Same spelling except for
+accents.) The words \qt{resume}
+and \qt{r\'esum\'e} are both indexed. These should be treated as
+separate entries in the index, even if the comparator considers
+them identical. Different indexing methods may
+produce different ordering or may even merge the two words, so check
+they are both present.
+
+\item Compound entries. The index contains a mixture of
+single words, compound words, names, titles and phrases. The ordering may vary 
+depending on the sorting method. For example, check the ordering 
+of \qt{sea}, \qt{sea lion}, \qt{seaborne} and \qt{seal}, and 
+also the words starting with \qt{vice}, such as \qt{vice admiral},
+\qt{viceroy} and \qt{vice-president}.
+
+\item Long entries can cause awkward line breaks and justification 
+in a multicolumn index with narrow columns.
+
+\item Interference caused by whatsits. Block~8 has a whatsit caused
+by the indexing that interferes with limits of a summation in an
+equation.
+
+\item Symbols and numbers that don't have a natural word order.
+The numbers may or may not be ordered numerically, depending on the
+indexing method.
+\end{itemize}
+In addition, words containing extended Latin characters, digraphs and a
+trigraph are indexed to help test various Latin alphabets, such as
+Swedish, Icelandic, Welsh, Dutch, Polish and Hungarian. These may or
+may not be recognised by indexing applications.
+
+Version 1.1 now comes with a supplementary package
+\sty{testidx-glossaries} which provides a similar way of testing the
+\sty{glossaries} or \sty{glossaries-extra} package.
+
 Example document:
 \begin{verbatim}
 \documentclass{article}
@@ -110,7 +184,7 @@
  :close "}"
  :attr "tstidxencapiii")
 
-(markup-locref-list :sep ",")
+(markup-locref-list :sep ", ")
 (markup-range :sep "--")
 \end{filecontents*}
 
@@ -243,9 +317,45 @@
 \end{document}
 \end{verbatim}
 
+The \styfmt{testidx-glossaries} package automatically loads
+\styfmt{testidx} and will also load either \sty{glossaries} or
+\sty{glossaries-extra}. For example:
+\begin{verbatim}
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage{testidx-glossaries}
+
+\renewcommand*{\glstreenamefmt}[1]{#1}
+
+\tstidxmakegloss
+
+\begin{document}
+
+\testidx
+
+\tstidxprintglossaries
+
+\end{document}
+\end{verbatim}
+This automatically sets the \texttt{mcolsindexgroup} glossary style
+to mimic the style commonly used with indexes.
+This document can be built using:
+\begin{verbatim}
+pdflatex myDoc
+makeglossaries myDoc
+pdflatex myDoc
+\end{verbatim}
+Note that the \texttt{mcolsindexgroup} style sets the \texttt{name}
+field in \cs{glstreenamefmt}, which defaults to bold. This has been
+redefined in the above example to simply do its argument.
+
 \section{Package Options}
 \label{sec:pkgopt}
 
+\subsection{\texorpdfstring{\styfmt{testidx}}{testidx} options}
+\label{sec:testidxpkgopt}
+
 The following package options are provided:
 \begin{description}
 \item[\pkgopt{german} or \pkgopt{ngerman}]
@@ -350,21 +460,178 @@
 (Default.) Cancels the \pkgopt{notestencaps} option. 
 This option ensures that \ics{testidx} uses the three test 
 encaps.
+
+\item[\pkgopt{prefix}]
+(Default.) Inserts a prefix in the sort value for certain (symbol) entries to
+keep them together in the index. These entries represent markers
+(prefixed with \ics{tstidxindexmarkerprefix}) and maths symbols (prefixed with
+\ics{tstidxmathsymprefix}).
+
+\item[\pkgopt{noprefix}]
+Doesn't insert a prefix for the markers and maths symbol entries.
+This option doesn't alter the entries starting with a
+hyphen (such as \texttt{-l}) which always have that prefix
+since it's part of the display name.
+
+\item[\pkgopt{diglyphs}]
+Words with \tstidxqt{ll}, \tstidxqt{ij} and \tstidxqt{dz} digraphs
+will have the two characters forming the digraph replaced with a
+single UTF-8 glyph. This option only works if UTF-8 is supported
+\emph{and the document font recognises the glyphs}. (The trigraph 
+\tstidxqt{dzw} and other digraphs,
+such as \tstidxqt{th} aren't affected by this option.)
+
+\item[\pkgopt{nodiglyphs}]
+(Default.) Don't use single glyphs for the \tstidxqt{ll},
+\tstidxqt{ij} and \tstidxqt{dz} digraphs. (This option doesn't
+affect other glyphs, such as \ae\ or \th, that are more commonly
+used in some languages.)
 \end{description}
 
+\subsection{\texorpdfstring{\styfmt{testidx-glossaries}}{testidx-glossaries}
+ options}
+\label{sec:testidxglospkgopt}
+
+Most of the package options provided by \styfmt{testidx} can also be
+used with \styfmt{testidx-glossaries}. The \pkgopt{verbose} option
+has a slightly different effect. With \styfmt{testidx}, that option
+shows the indexing command within the text. However, the
+\sty{glossaries} package requires entries to first be defined and
+doesn't use \cs{index} but uses its own internal custom commands
+that depend on the indexing method, so for
+\styfmt{testidx-glossaries}, the \pkgopt{verbose} option instead
+writes information in the transcript file (\texttt{.log}) when the
+dummy entries are defined. For example:
+\begin{verbatim}
+Package testidx-glossaries Info: new term label={packages},
+(testidx-glossaries)             name={packages},
+(testidx-glossaries)             text={packages},
+(testidx-glossaries)             parent={},
+(testidx-glossaries)             see={}
+(testidx-glossaries)              on input line 1.
+\end{verbatim}
+When used with the \pkgopt{tex} option, the \pkgopt{verbose}
+option will additionally write information while \TeX\ is
+sorting, since this can take a while and may give the appearance
+that the build process has hung.
+
+When used with the \pkgopt{bib2gls} option, the \pkgopt{verbose}
+option will show the syntax used by \ics{tstidxmakegloss} 
+to load each resource. If you search the \texttt{.log} file for 
+instances of \ics{GlsXtrLoadResource}, you'll find the commands
+needed to replicate the behaviour of \cs{tstidxmakegloss}.
+
+In addition to the options listed above, the following options are
+also available for \styfmt{testidx-glossaries}:
+\begin{description}
+\item[\pkgopt{extra}]
+Load the \sty{glossaries-extra} package.
+
+\item[\pkgopt{noextra}]
+Don't load the \sty{glossaries-extra} package. Just load the
+base \sty{glossaries} package. (Default.)
+
+\item[\pkgopt{makeindex}]
+(Default.) Passes the \pkgopt{makeindex} option to
+\sty{glossaries}. This option also sets up \ics{tstidxmakegloss} 
+to use \ics{makeglossaries}, \ics{tstidxprintglossaries} to use
+\ics{printglossaries} and \ics{tstidxprintglossary} to use
+\ics{printglossary}. Use \app{makeglossaries} (or
+\app{makeglossaries-lite}) in the build process.
+
+\item[\pkgopt{xindy}] Passes the \pkgopt{xindy} option to
+\sty{glossaries}. This option also sets up \ics{tstidxmakegloss} 
+to use \ics{makeglossaries}, \ics{tstidxprintglossaries} to use
+\ics{printglossaries} and \ics{tstidxprintglossary} to use
+\ics{printglossary}. Use \app{makeglossaries} (or
+\app{makeglossaries-lite}) in the build process.
+
+\item[\pkgopt{tex}] This option also sets up \ics{tstidxmakegloss} 
+to use \ics{makenoidxglossaries}, \ics{tstidxprintglossaries} to use
+\ics{printnoidxglossaries} and \ics{tstidxprintglossary} to use
+\ics{printnoidxglossary}. (\TeX\ is used for to sort and collate the
+entries. Don't use \app{makeglossaries} or \app{makeglossaries-lite}
+in the build process.)
+
+\item[\pkgopt{bib2gls}] Passes the \pkgopt{record} option to
+\sty{glossaries-extra}. (This option automatically implements the 
+\pkgopt{extra} option.) This option also sets up
+\ics{tstidxmakegloss} to use \ics{GlsXtrLoadResources}, 
+\ics{tstidxprintglossaries} to use
+\ics{printunsrtglossaries} and \ics{tstidxprintglossary} to use
+\ics{printunsrtglossary}. Use \app{bib2gls} in the build process.
+Note that this option ignores the commands 
+\ics{tstidxindexmarkerprefix} and \ics{tstidxmathsymprefix}.
+
+\item[\pkgopt{manual}] Indicates that the test document
+doesn't use \cs{tstidxmakegloss}. (This disables the check
+that ensures that command has been used.) Use this option if you
+want to customize the glossary set-up. This option may be used in
+addition to the above options, but it will disable
+\cs{tstidxmakegloss}, \cs{tstidxprintglossary} and
+\cs{tstidxprintglossaries}.
+
+The sample files can be loaded using
+\begin{definition}[\DescribeMacro\tstidxloadsamples]
+\cs{tstidxloadsamples}
+\end{definition}
+(which \cs{tstidxmakegloss} does implicitly) except in the case of
+\pkgopt{bib2gls} where the sample files need to be loaded in
+\cs{GlsXtrLoadResource}.
+
+\item[\pkgopt{seekey}]
+(Default.)
+Use the \texttt{see} key for cross-references instead of using \ics{glssee}.
+If the \texttt{seealso} key has been defined (\sty{glossaries-extra}
+v1.16+), then this will be used for the \qt{see also}
+cross-references (otherwise \verb|see=[\seealsoname]|\marg{label}
+will be used).
+
+\item[\pkgopt{noseekey}]
+Use \ics{glssee} for cross-references and don't set the \texttt{see}
+(or \texttt{seealso}) key.
+
+\item[\pkgopt{noglsnumbers}] Passes the \pkgopt{glsnumbers=false} option to
+\sty{glossaries}.
+
+\item[\pkgopt{glsnumbers}] Passes the \pkgopt{glsnumbers=true} option to
+\sty{glossaries}. (This is the default for the \sty{glossaries}
+package.)
+
+\item[\pkgopt{desc}] Provide descriptions for the dummy entries.
+This setting automatically implements the \sty{glossaries}
+package's \pkgopt{nopostdot=false} option and sets the
+\texttt{indexgroup} glossary style.
+
+\item[\pkgopt{nodesc}]
+(Default.) Don't provide descriptions for the dummy entries.
+(The \texttt{description} field is set to empty.)
+This setting automatically implements the \sty{glossaries}
+package's \pkgopt{nopostdot} option and sets the
+\texttt{mcolindexgroup} glossary style. (The \sty{glossary-mcols} package
+is automatically loaded.)
+\end{description}
+
+Both the \texttt{mcolindexgroup} and \texttt{indexgroup} styles set
+the \texttt{name} field in \ics{glstreenamefmt}, which by default
+uses \cs{textbf}. This can be redefined as appropriate.
+You can switch to a different glossary style using
+\cs{setglossarystyle}\marg{style-name}.
+
 \section{Basic Commands}
 \label{sec:basic}
 
 This section only covers the basic commands provided by 
-\styfmt{testidx}. For more advanced commands, see the documented
-code.
+\styfmt{testidx} and \styfmt{testidx-glossaries}. 
+For more advanced commands, see the documented code.
 
 \begin{definition}[\DescribeMacro\testidx]
 \cs{testidx}\oarg{blocks}
 \end{definition}
-This is the principle command provided by this package. It
+This is the principle command provided by the \sty{testidx} package. It
 generates the predefined dummy text that's interspersed 
-with indexing commands. There are \number\tstidxmaxblocks\ 
+with indexing commands. (The text varies slightly according to the
+document settings.) There are \number\tstidxmaxblocks\ 
 blocks in total. This number can be accessed through the register:
 \begin{definition}[\DescribeMacro\tstidxmaxblocks]
 \cs{tstidxmaxblocks}
@@ -386,15 +653,37 @@
 paragraph breaks \emph{within} the blocks, just those
 used as separators between the blocks.
 
+If you use \sty{testidx-glossaries}, you additionally need
+\begin{definition}[\DescribeMacro\tstidxmakegloss]
+\cs{tstidxmakegloss}\oarg{options}
+\end{definition}
+in the preamble. This loads the files that provide the dummy entries
+and uses \cs{makeglossaries} or \cs{makenoidxglossaries} or
+\cs{GlsXtrLoadResources} depending on the package options. The
+optional argument \meta{options} is appended to the optional argument of
+\cs{GlsXtrLoadResources} if the \pkgopt{bib2gls} package option has
+been used, otherwise \meta{options} is ignored.
+
+To display the glossary, either use
+\begin{definition}[\DescribeMacro\tstidxprintglossaries]
+\cs{tstidxprintglossaries}
+\end{definition}
+or
+\begin{definition}[\DescribeMacro\tstidxprintglossary]
+\cs{tstidxprintglossary}\marg{options}
+\end{definition}
+where you want the glossary to be displayed. This will use the
+appropriate command according to the package set up.
+
 The intention of the dummy text is to provide an index that should
-typically span at least three pages for A4 or letter paper,
-to allow testing of headers and footers across a double-paged
-spread. Some of the indexing commands intentionally cause
-warnings from \app{makeindex} to test for certain situations.
-Phrases are indexed as well as just individual words to 
-increase the chances of indexed terms spanning a page
-break. However, the page dimensions, fonts and other material in the
-document will obviously alter where the page breaks occur.
+typically span at least three pages for A4 or letter paper, to allow
+testing of headers and footers across a double-paged spread and to
+test the effects of page breaking. Some of the indexing commands intentionally
+cause warnings from \app{makeindex} to test for certain situations.
+Phrases are indexed as well as just individual words to increase the
+chances of indexed terms spanning a page break. However, the page
+dimensions, fonts and other material in the document will obviously
+alter where the page breaks occur.
 
 You can display only a subset of the blocks using the optional
 argument, which may be a comma-separated list of block identifiers
@@ -439,7 +728,7 @@
 1--\cs{tstidxmaxblocks} as you'll get an error if you
 go out of those bounds.
 
-The actual indexing is performed using:
+With just \sty{testidx}, the actual indexing is performed using:
 \begin{definition}[\DescribeMacro\tstindex]
 \cs{tstindex}\marg{text}
 \end{definition}
@@ -447,6 +736,10 @@
 example, if you are testing multiple indexes, you can
 redefine \cs{tstindex} to use a specific index.
 
+With \sty{testidx-glossaries}, the above command isn't used.
+Instead \cs{gls}, \cs{glspl}, \cs{glsadd} or \cs{glssee} will be
+used depending on the context.
+
 The dummy text includes markers to identify where the instances
 of \cs{tstindex} have been used. To reduce the possibility of
 package conflict, \styfmt{testidx} loads a bare minimum of
@@ -457,7 +750,9 @@
 fancier markers, you can change them by redefining the
 commands listed below. Multiple markers in the dummy text
 indicate multiple instances of \cs{tstindex} without any
-intervening text.
+intervening text. (Naturally, \sty{testidx-glossaries} requires more
+packages as it loads \sty{glossaries}, and possibly also
+\sty{glossaries-extra}.)
 
 \begin{definition}[\DescribeMacro\tstidxmarker]
 \cs{tstidxmarker}
@@ -562,7 +857,7 @@
 
 If you are using \app{xindy}, you'll need to add these
 to a \texttt{.xdy} file that can be loaded using \app{xindy}'s
-\texttt{-M} switch. For example, include the following
+\texttt{-M} switch. For example, with just \sty{testidx}, include the following
 in your \texttt{.xdy} file:
 \begin{verbatim}
 ; list of allowed attributes
@@ -593,6 +888,35 @@
 (markup-locref-list :sep ",")
 (markup-range :sep "--")
 \end{verbatim}
+If you use \sty{testidx-glossaries}, the \sty{glossaries} package
+provides commands to add information to the automatically generated 
+\texttt{.xdy} file. For example:
+\begin{verbatim}
+\GlsAddXdyAttribute{tstidxencapi}
+\GlsAddXdyAttribute{tstidxencapii}
+\GlsAddXdyAttribute{tstidxencapiii}
+\end{verbatim}
+If you want to provide your own custom cross-reference class
+you can use
+\begin{definition}[\DescribeMacro\tstidxSetSeeEncap]
+\cs{tstidxSetSeeEncap}\marg{encap name}
+\end{definition}
+to change the \texttt{see} encap to \meta{encap name} and
+\begin{definition}[\DescribeMacro\tstidxSetSeeAlsoEncap]
+\cs{tstidxSetSeeAlsoEncap}\marg{encap name}
+\end{definition}
+to change the \texttt{seealso} encap to \meta{encap name}.
+For example:
+\begin{verbatim}
+\tstidxSetSeeAlsoEncap{uncheckedseealso}
+\end{verbatim}
+and in the \texttt{.xdy} file:
+\begin{verbatim}
+(define-crossref-class "uncheckedseealso" :unverified)
+(markup-crossref-list :class "uncheckedseealso"
+   :open "\seealso" :close "{}")
+\end{verbatim}
+which creates an unverified alternative to \texttt{seealso}.
 
 The \cs{tstindex} command is sometimes placed before the term
 or phrase being indexed and sometimes afterwards. To clarify
@@ -624,12 +948,18 @@
 won't need changing, but if they do, see the documented code
 for further detail.)
 
-Example:
+In the case of \sty{testidx-glossaries}, the above example would be
 \begin{verbatim}
+\gls{DonaldKnuth}\glsadd{people.DonaldKnuth}
+\end{verbatim}
+(\cs{index} isn't used).
+
+Example (using just \sty{testidx}):
+\begin{verbatim}
 \renewcommand*{\tstindex}[1]{}
 \textsf{\testidx[1,\tstidxmaxblocks]}
 \end{verbatim}
-produces the two paragraphs (first and last blocks) shown below:
+This produces the two paragraphs (first and last blocks) shown below:
 
 \medskip\par
 \renewcommand*{\tstindex}[1]{}
@@ -654,7 +984,8 @@
 If you need to change the indexing special characters, you
 can redefine the commands listed in this section. Remember
 that you will also need to make the relevant changes to your
-indexing style file.
+indexing style file. (These commands only apply to \sty{testidx} not
+\sty{testidx-glossaries}.)
 
 \begin{definition}[\DescribeMacro\tstidxquote]
 \cs{tstidxquote}
@@ -757,6 +1088,30 @@
 \end{document}
 \end{verbatim}
 
+If the UTF-8 mode is on, you can additionally use the
+\pkgopt{diglyphs} package option to replace the 
+\tstidxqt{ll}, \tstidxqt{ij} and \tstidxqt{dz} digraphs with 
+a single glyph, but you'll need a font that supports
+those glyphs. (The trigraph \tstidxqt{dzw} and other digraphs,
+such as \tstidxqt{th} aren't affected by this option.) For example
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{fontspec}
+\setmainfont{Linux Libertine O}
+
+\usepackage{makeidx}
+\usepackage[diglyphs]{testidx}
+
+\makeindex
+
+\begin{document}
+\testidx
+
+\printindex
+\end{document}
+\end{verbatim}
+
 \end{description}
 
 When the ASCII mode is on, words or phrases with UTF-8
@@ -806,7 +1161,8 @@
 \begin{flushleft}\ttfamily
 \cs{indexentry}\{\AA ngstr\"om, Anders Jonas\}\marg{location}
 \end{flushleft}
-Regular \LaTeX\ requires the \sty{inputenc} package to support
+Regular \LaTeX\ (\app{latex} or \app{pdflatex}) requires the 
+\sty{inputenc} package to support
 UTF-8 characters, but each UTF-8 character is treated as
 two tokens (the first and second octets) where the first token is an
 active character that takes the second token as the argument.

Modified: trunk/Master/texmf-dist/source/latex/testidx/testidx.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/testidx/testidx.dtx	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/source/latex/testidx/testidx.dtx	2017-08-11 23:06:40 UTC (rev 45021)
@@ -1,12 +1,17 @@
 %\iffalse
-% testidx.dtx generated using makedtx version 1.1 (c) Nicola Talbot
+% testidx.dtx generated using makedtx version 1.2 (c) Nicola Talbot
 % Command line args:
-%   -src "testidx.sty\Z=>testidx.sty"
+%   -author "Nicola Talbot"
 %   -doc "testidx-codedoc.tex"
-%   -author "Nicola Talbot"
+%   -setambles ".*\.bib=>\nopreamble\nopostamble"
 %   -codetitle "Main Package Code"
+%   -src "(testidx.sty)\Z=>\1"
+%   -src "(testidx-.*.sty)\Z=>\1"
+%   -src "(testidx-glossaries.*\.tex)\Z=>\1"
+%   -src "(testidx-glossaries.*\.bib)\Z=>\1"
+%   -macrocode ".*\.bib"
 %   testidx
-% Created on 2016/10/17 12:32
+% Created on 2017/8/11 12:58
 %\fi
 %\iffalse
 %<*package>
@@ -29,7 +34,7 @@
 %\fi
 % \iffalse
 % Doc-Source file to use with LaTeX2e
-% Copyright (C) 2016 Nicola Talbot, all rights reserved.
+% Copyright (C) 2017 Nicola Talbot, all rights reserved.
 % \fi
 % \iffalse
 %<*driver>
@@ -40,8 +45,10 @@
 testidx.dtx
 \fi
 
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
+\usepackage{fontspec}
+\setromanfont{FreeSerif}
+\setsansfont{FreeSans}[Scale=MatchLowercase]
+\setmonofont{FreeMono}
 \usepackage[colorlinks,
             bookmarks,
             hyperindex=false,
@@ -54,7 +61,7 @@
 
 \setcounter{IndexColumns}{2}
 
-\CheckSum{4724}
+\CheckSum{10076}
 
 \begin{document}
 \DocInput{testidx.dtx}
@@ -64,12 +71,12 @@
 %\MakeShortVerb{"}
 %\DeleteShortVerb{\|}
 %
-% \title{Documented Code For testidx v1.0}
+% \title{Documented Code For testidx v1.1}
 % \author{Nicola L.C. Talbot\\[10pt]
 %Dickimaw Books\\
 %\url{http://www.dickimaw-books.com/}}
 %
-% \date{2016-10-17}
+% \date{2017-08-11}
 % \maketitle
 %
 %\tableofcontents
@@ -99,7 +106,7 @@
 %\section{Initialisation}
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{testidx}[2016/10/17 v1.0 (NLCT)]
+\ProvidesPackage{testidx}[2017/08/11 v1.1 (NLCT)]
 %    \end{macrocode}
 %To avoid as much conflict as possible, this package loads the
 %bare minimum, so I'm not using useful packages like \styfmt{etoolbox} or
@@ -112,9 +119,10 @@
 \RequirePackage{ifxetex}
 \RequirePackage{ifluatex}
 %    \end{macrocode}
-%\begin{macro}{\@tstidx at ifutfviii}
+%\begin{macro}{\@tstidx at ifxeorlua}
+%\changes{1.1}{2017-08-11}{new}
 %    \begin{macrocode}
-\newcommand*{\@tstidx at ifutfviii}[2]{%
+\newcommand*{\@tstidx at ifxelua}[2]{%
   \ifxetex
    #1%
   \else
@@ -121,11 +129,20 @@
    \ifluatex
      #1%
    \else
-     \@ifundefined{inputencodingname}{#2}%
-     {\ifx\inputencodingname\@tstidx at utfviii#1\else#2\fi}%
+     #2%
    \fi
   \fi
 }
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@tstidx at ifutfviii}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at ifutfviii}[2]{%
+ \@tstidx at ifxelua{#1}
+ {%
+   \ifx\inputencodingname\@tstidx at utfviii#1\else#2\fi
+ }%
+}
 \newcommand*{\@tstidx at utfviii}{utf8}
 %    \end{macrocode}
 %\end{macro}
@@ -241,21 +258,17 @@
 %\begin{macro}{\tstidxprocessutf}
 %How to deal with UTF-8 words.
 %    \begin{macrocode}
-\ifxetex
+\@tstidx at ifxelua
+{
   \newcommand*{\tstidxprocessutf}{%
     \tstidxprocessutfnosanitize
   }
-\else
- \ifluatex
-   \newcommand*{\tstidxprocessutf}{%
-     \tstidxprocessutfnosanitize
-   }
- \else
-   \newcommand*{\tstidxprocessutf}{%
-     \tstidxprocessutfsanitize
-   }
- \fi
-\fi
+}
+{
+  \newcommand*{\tstidxprocessutf}{%
+    \tstidxprocessutfsanitize
+  }
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -289,6 +302,43 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\iftestidxdiglyphs}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newif\iftestidxdiglyphs
+\testidxdiglyphsfalse
+%    \end{macrocode}
+%\end{macro}
+%Option to switch on digraph glyphs for the digraph examples:
+%    \begin{macrocode}
+\DeclareOption{diglyphs}{%
+ \@tstidx at ifutfviii{\testidxdiglyphstrue}%
+ {%
+   \PackageWarning{testidx}{diglyphs option requires UTF-8 support}%
+ }
+}
+%    \end{macrocode}
+%Option to switch off digraphs glyphs for the digraph examples (default):
+%    \begin{macrocode}
+\DeclareOption{nodiglyphs}{\testidxdiglyphsfalse}
+%    \end{macrocode}
+%
+%\begin{macro}{\iftestidxprefix}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newif\iftestidxprefix
+\testidxprefixtrue
+%    \end{macrocode}
+%\end{macro}
+%Option to switch on sort prefixes (default):
+%    \begin{macrocode}
+\DeclareOption{prefix}{\testidxprefixtrue}
+%    \end{macrocode}
+%Option to switch off prefixes:
+%    \begin{macrocode}
+\DeclareOption{noprefix}{\testidxprefixfalse}
+%    \end{macrocode}
+%
 %Option to switch on the UTF-8 sanitization (irrespective of engine):
 %    \begin{macrocode}
 \DeclareOption{sanitize}{\testidxSanitizeOn}
@@ -341,6 +391,9 @@
   \@ifpackageloaded{amsmath}%
   {\let\@tstidx at ifamsmath\@firstoftwo}%
   {\let\@tstidx at ifamsmath\@secondoftwo}%
+  \@ifpackageloaded{amssymb}%
+  {\let\@tstidx at ifamssymb\@firstoftwo}%
+  {\let\@tstidx at ifamssymb\@secondoftwo}%
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\@tstidx at ifinputenc}
@@ -384,6 +437,7 @@
 }
 %    \end{macrocode}
 %\end{macro}
+%
 %\section{Markup Commands}
 % String is used in case any of these characters have been made
 % active.
@@ -827,7 +881,7 @@
 %Index an entry that needs a formatting command.
 %    \begin{macrocode}
 \newcommand*{\tstidxfmtpost}[3]{%
-  \tstindexpost[#1]{\protect#2{#1}}{#3}{#2{#1}}%
+  \tstindexpost[#1]{\protect#2{#1}}[#1]{#3}{#2{#1}}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -889,32 +943,35 @@
 %
 %\begin{macro}{\tstidxutf}
 %\begin{definition}
-%\cs{tstidxutf}\marg{display}\marg{ascii}\marg{utf8}\marg{encap}\marg{idx cs}
+%\cs{tstidxutf}\oarg{label}\marg{display}\marg{ascii}\marg{utf8}\marg{encap}\marg{idx cs}
 %\end{definition}
 %Index a word with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutf}[5]{%
-  \def\@tstidx at text{#1}%
+\newcommand*{\tstidxutf}{%
+  \@ifnextchar[{\@tstidxutf}{\@tstidxutf[]}%
+}
+\def\@tstidxutf[#1]#2#3#4#5#6{%
+  \def\@tstidx at text{#2}%
   \@tstidx at ifutfviii
   {%
     \ifx\@tstidx at text\@empty
-      \def\@tstidx at text{#3}%
+      \def\@tstidx at text{#4}%
     \fi
-    \tstidxprocessutf{\@tstidx at utf}{#3}%
+    \tstidxprocessutf{\@tstidx at utf}{#4}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#5{\unexpanded\expandafter{\@tstidx at utf}}{#4}%
+      \noexpand#6{\unexpanded\expandafter{\@tstidx at utf}}[#1]{#5}%
         {\@tstidx at text}%
     }%
   }%
   {%
     \ifx\@tstidx at text\@empty
-      \def\@tstidx at text{#2}%
+      \def\@tstidx at text{#3}%
     \fi
-    \tstidxprocessascii{\@tstidx at ascii}{#2}%
-    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \tstidxprocessascii{\@tstidx at ascii}{#3}%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#3}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#5[\unexpanded\expandafter{\@tstidx at asciisort}]%
-        {\unexpanded\expandafter{\@tstidx at ascii}}{#4}%
+      \noexpand#6[\unexpanded\expandafter{\@tstidx at asciisort}]%
+        {\unexpanded\expandafter{\@tstidx at ascii}}[#1]{#5}%
         {\@tstidx at text}%
     }%
   }%
@@ -925,11 +982,15 @@
 %
 %\begin{macro}{\tstidxsubutf}
 %\begin{definition}
-%\cs{tstidxsubutf}\marg{display}\marg{ascii}\marg{utf8}\marg{sub-ascii}\marg{sub-utf8}\marg{encap}\marg{idx cs}
+%\cs{tstidxsubutf}\marg{display}\marg{ascii}\marg{utf8}\marg{sub-ascii}\oarg{label}\marg{sub-utf8}\marg{encap}\marg{idx cs}
 %\end{definition}
 %First level sub-entry.
 %    \begin{macrocode}
-\newcommand*{\tstidxsubutf}[7]{%
+\newcommand*{\tstidxsubutf}[4]{%
+  \@ifnextchar[{\@tstidxsubutf{#1}{#2}{#3}{#4}}%
+  {\@tstidxsubutf{#1}{#2}{#3}{#4}[]}%
+}
+\def\@tstidxsubutf#1#2#3#4[#5]#6#7#8{%
   \def\@tstidx at text{#1}%
   \@tstidx at ifutfviii
   {%
@@ -937,11 +998,13 @@
       \def\@tstidx at text{#3}%
     \fi
     \tstidxprocessutf{\@tstidx at utf}{#3}%
-    \tstidxprocessutf{\@tstidx at subutf}{#5}%
+    \tstidxprocessutf{\@tstidx at subutf}{#6}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#7{\unexpanded\expandafter{\@tstidx at utf}}%
+      \noexpand#8%
+        {\unexpanded\expandafter{\@tstidx at utf}}%
         {\unexpanded\expandafter{\@tstidx at subutf}}%
-        {#6}%
+        [#5]%
+        {#7}%
         {\@tstidx at text}%
     }%
   }%
@@ -954,11 +1017,13 @@
     \tstidxprocessascii{\@tstidx at subascii}{#4}%
     \tstidxprocessasciisort{\@tstidx at subasciisort}{#4}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#7[\unexpanded\expandafter{\@tstidx at asciisort}]%
+      \noexpand#8%
+        [\unexpanded\expandafter{\@tstidx at asciisort}]%
         {\unexpanded\expandafter{\@tstidx at ascii}}%
         [\unexpanded\expandafter{\@tstidx at subasciisort}]%
         {\unexpanded\expandafter{\@tstidx at subascii}}%
-        {#6}%
+        [#5]%
+        {#7}%
         {\@tstidx at text}%
     }%
   }%
@@ -969,16 +1034,24 @@
 %
 %\begin{macro}{\tstidxutfpost}
 %\begin{definition}
-%\cs{tstidxutfpost}\oarg{display}\marg{ascii}\marg{utf8}\marg{encap}
+%\cs{tstidxutfpost}\oarg{display}\marg{ascii}\oarg{label}\marg{utf8}\marg{encap}
 %\end{definition}
 %Index a word with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfpost}[4][]{%
-  \tstidxutf{#1}{#2}{#3}{#4}{\tstindexpost}%
+\newcommand*{\tstidxutfpost}[2][]{%
+  \@ifnextchar[{\@tstidxutfpost{#1}{#2}}{\@tstidxutfpost{#1}{#2}[]}%
 }
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\@tstidxutfpost}
+%    \begin{macrocode}
+\def\@tstidxutfpost#1#2[#3]#4#5{%
+  \tstidxutf[#3]{#1}{#2}{#4}{#5}{\tstindexpost}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\tstidxutfopenpost}
 %\begin{definition}
 %\cs{tstidxutfopenpost}\oarg{display}\marg{ascii}\marg{utf8}\marg{encap}
@@ -1005,13 +1078,16 @@
 %
 %\begin{macro}{\tstidxutfpre}
 %\begin{definition}
-%\cs{tstidxutfpre}\oarg{display}\marg{ascii}\marg{utf8}\marg{encap}
+%\cs{tstidxutfpre}\oarg{display}\marg{ascii}\oarg{label}\marg{utf8}\marg{encap}
 %\end{definition}
 %Index a word with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfpre}[4][]{%
-  \tstidxutf{#1}{#2}{#3}{#4}{\tstindexpre}%
+\newcommand*{\tstidxutfpre}[2][]{%
+  \@ifnextchar[{\@tstidxutfpre{#1}{#2}}{\@tstidxutfpre{#1}{#2}[#2]}%
 }
+\def\@tstidxutfpre#1#2[#3]#4#5{%
+  \tstidxutf[#3]{#1}{#2}{#4}{#5}{\tstindexpre}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1041,13 +1117,17 @@
 %
 %\begin{macro}{\tstidxutfsubpost}
 %\begin{definition}
-%\cs{tstidxutfsubpost}\oarg{display}\marg{ascii}\marg{utf8}\marg{sub-ascii}\marg{sub-utf8}\marg{encap}
+%\cs{tstidxutfsubpost}\oarg{display}\marg{ascii}\marg{utf8}\marg{sub-ascii}\oarg{label}\marg{sub-utf8}\marg{encap}
 %\end{definition}
 %Sub-entry.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfsubpost}[6][]{%
-  \tstidxsubutf{#1}{#2}{#3}{#4}{#5}{#6}{\tstsubindexpost}%
+\newcommand*{\tstidxutfsubpost}[4][]{%
+ \@ifnextchar[{\@tstidxutfsubpost{#1}{#2}{#3}{#4}}%
+ {\@tstidxutfsubpost{#1}{#2}{#3}{#4}[]}%
 }
+\def\@tstidxutfsubpost#1#2#3#4[#5]#6#7{%
+  \tstidxsubutf{#1}{#2}{#3}{#4}[#5]{#6}{#7}{\tstsubindexpost}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1122,14 +1202,11 @@
 % Display and index a control sequence. The optional argument is the encap
 %    \begin{macrocode}
 \if at tstidx@use at encaps
- \newcommand*{\tstidxcs}[2][tstidxencapi]{%
-   \tstidxfmtpost{#2}{\tstidxcsfmt}{#1}%
- }
+ \newcommand*{\tstidxcs}[2][tstidxencapi]{\@tstidxcs{#1}{#2}}
 \else
- \newcommand*{\tstidxcs}[2][]{%
-   \tstidxfmtpost{#2}{\tstidxcsfmt}{#1}%
- }
+ \newcommand*{\tstidxcs}[2][]{\@tstidxcs{#1}{#2}}
 \fi
+\newcommand*{\@tstidxcs}[2]{\tstidxfmtpost{#2}{\tstidxcsfmt}{#1}}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1170,14 +1247,14 @@
 \if at tstidx@use at encaps
   \newcommand*{\tstidxencapcsn}[2][tstidxencapi]{%
     \tstindexpost[#2 (#2)]%
-    {\texttt{#2} (\protect\tstidxcsfmt{#2})}{#1}{\texttt{#2}}%
-    \tstsubindexpost{encap}[#2]{\texttt{#2}}{#1}{}%
+    {\texttt{#2} (\protect\tstidxcsfmt{#2})}[#2]{#1}{\texttt{#2}}%
+    \tstsubindexpost{encap}[#2]{\texttt{#2}}[encap.#2]{#1}{}%
   }
 \else
   \newcommand*{\tstidxencapcsn}[2][]{%
     \tstindexpost[#2 (#2)]%
-    {\texttt{#2} (\protect\tstidxcsfmt{#2})}{#1}{\texttt{#2}}%
-    \tstsubindexpost{encap}[#2]{\texttt{#2}}{#1}{}%
+    {\texttt{#2} (\protect\tstidxcsfmt{#2})}[#2]{#1}{\texttt{#2}}%
+    \tstsubindexpost{encap}[#2]{\texttt{#2}}[encap.#2]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -1230,13 +1307,13 @@
 \if at tstidx@use at encaps
   \newcommand*{\tstidxenv}[2][tstidxencapi]{%
     \tstindexpost[#2 environment]%
-    {\protect\tstidxenvfmt{#2} environment}{#1}%
+    {\protect\tstidxenvfmt{#2} environment}[#2environment]{#1}%
     {\tstidxenvfmt{#2}}%
   }
 \else
   \newcommand*{\tstidxenv}[2][]{%
     \tstindexpost[#2 environment]%
-    {\protect\tstidxenvfmt{#2} environment}{#1}%
+    {\protect\tstidxenvfmt{#2} environment}[#2environment]{#1}%
     {\tstidxenvfmt{#2}}%
   }
 \fi
@@ -1351,15 +1428,21 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxappopt}[3][tstidxencapiii]{%
+    \tstindexpost[#3 (#2)]%
+      {\protect\tstidxappoptfmt{#3} (\protect\tstidxappfmt{#2})}%
+      [#3.#2option]{#1}{\tstidxappoptfmt{#3}}%
     \tstsubindexpost[#2]{\protect\tstidxappfmt{#2}}%
-      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{\tstidxappoptfmt{#3}}%
+      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
     \tstsubsubindexpost{applications}[#2]{\protect\tstidxappfmt{#2}}%
       [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
   }
 \else
   \newcommand*{\tstidxappopt}[3][]{%
+    \tstindexpost[#3 (#2)]%
+      {\protect\tstidxappoptfmt{#3} (\protect\tstidxappfmt{#2})}%
+      [#3.#2option]{#1}{\tstidxappoptfmt{#3}}%
     \tstsubindexpost[#2]{\protect\tstidxappfmt{#2}}%
-      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{\tstidxappoptfmt{#3}}%
+      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
     \tstsubsubindexpost{applications}[#2]{\protect\tstidxappfmt{#2}}%
       [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
   }
@@ -1420,6 +1503,17 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\tstindexstysee}
+%\changes{1.1}{2017-08-11}{new}
+%Cross-reference one package with another.
+%    \begin{macrocode}
+\newcommand*{\tstindexstysee}[3]{%
+  \tstindexsee[#1package]{\protect\tstidxstyfmt{#1} package}{#2}%
+  [#3package]{\protect\tstidxstyfmt{#3}}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\tstidxsty}
 % Display and index a package name.
 %    \begin{macrocode}
@@ -1426,16 +1520,16 @@
 \if at tstidx@use at encaps
   \newcommand*{\tstidxsty}[2][tstidxencapiii]{%
     \tstindexpost[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{\tstidxstyfmt{#2}}%
+     {\protect\tstidxstyfmt{#2} package}[#2package]{#1}{\tstidxstyfmt{#2}}%
     \tstsubindexpost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxsty}[2][]{%
     \tstindexpost[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{\tstidxstyfmt{#2}}%
+     {\protect\tstidxstyfmt{#2} package}[#2package]{#1}{\tstidxstyfmt{#2}}%
     \tstsubindexpost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -1446,17 +1540,17 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxopensty}[2][tstidxencapiii]{%
-    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}[#2package]{#1}%
       {\tstidxstyfmt{#2}}%
     \tstsubindexopenpost{packages}[#2 package]%
-      {\protect\tstidxstyfmt{#2} package}{#1}{}%
+      {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxopensty}[2][]{%
-    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}[#2package]{#1}%
       {\tstidxstyfmt{#2}}%
     \tstsubindexopenpost{packages}[#2 package]%
-      {\protect\tstidxstyfmt{#2} package}{#1}{}%
+      {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -1467,17 +1561,19 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxclosesty}[2][tstidxencapiii]{%
-    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}%
+     [#2package]{#1}%
      {\tstidxstyfmt{#2}}%
     \tstsubindexclosepost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxclosesty}[2][]{%
-    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}%
+     [#2package]{#1}%
      {\tstidxstyfmt{#2}}%
     \tstsubindexclosepost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -1568,6 +1664,17 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\tstidxwordpl}
+%\changes{1.1}{2017-08-11}{new}
+% Display the plural and index the singular. This just appends
+% \qt{s} for convenience. The \sty{testidx-glossaries} package
+% uses \cs{glspl} instead.
+%    \begin{macrocode}
+\newcommand*{\tstidxwordpl}[1][]{\@tstidxwordpl{#1}}
+\newcommand*{\@tstidxwordpl}[2]{\tstidxword[#1]{#2}s}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\tstidxopenword}
 % As above but starts a range.
 %    \begin{macrocode}
@@ -1622,6 +1729,17 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\tstidxphrasepl}
+%\changes{1.1}{2017-08-11}{new}
+% Display the plural and index the singular of a phrase. This just appends
+% \qt{s} for convenience. The \sty{testidx-glossaries} package
+% uses \cs{glspl} instead.
+%    \begin{macrocode}
+\newcommand*{\tstidxphrasepl}[1][]{\@tstidxphrasepl{#1}}
+\newcommand*{\@tstidxphrasepl}[2]{\tstidxphrase[#1]{#2}s}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\tstidxopenphrase}
 % As above but starts a range.
 %    \begin{macrocode}
@@ -1648,7 +1766,7 @@
 % article.
 %    \begin{macrocode}
 \newcommand*{\tstidxartphrase}[3][]{%
-  \tstindexpost{#3, #2}{#1}{#2 #3}%
+  \tstindexpost{#3, #2}[#3]{#1}{#2 #3}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1657,7 +1775,7 @@
 %As above but starts a range.
 %    \begin{macrocode}
 \newcommand*{\tstidxopenartphrase}[3][]{%
-  \tstindexopenpost{#3, #2}{#1}{#2 #3}%
+  \tstindexopenpost{#3, #2}[#3]{#1}{#2 #3}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1666,7 +1784,7 @@
 %As above but ends a range.
 %    \begin{macrocode}
 \newcommand*{\tstidxcloseartphrase}[3][]{%
-  \tstindexclosepost{#3, #2}{#1}{#2 #3}%
+  \tstindexclosepost{#3, #2}[#3]{#1}{#2 #3}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1700,19 +1818,24 @@
 %
 %\begin{macro}{\tstidxutfperson}
 %\begin{definition}
-%\cs{tstidxutfperson}\oarg{encap}\marg{ascii forename}\marg{ascii surname}\marg{utf8 forname}{utf8 surname}
+%\cs{tstidxutfperson}\oarg{encap}\marg{ascii forename}\marg{ascii
+%surname}\oarg{label}\marg{utf8 forname}{utf8 surname}
 %\end{definition}
 % Display and index a person's name with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfperson}[5][]{%
+\newcommand*{\tstidxutfperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfperson{#1}{#2}{#3}}%
+  {\@tstidxutfperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfpost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfpost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfpost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfpost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
-  \tstidxutfsubpost[\relax]{people}{people}{#3, #2}{#5, #4}{#1}%
+  \tstidxutfsubpost[\relax]{people}{people}{#3, #2}[people.#4]{#6, #5}{#1}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1720,13 +1843,17 @@
 %\begin{macro}{\tstidxopenutfperson}
 % As above but starts a range.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfopenperson}[5][]{%
+\newcommand*{\tstidxutfopenperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfopenperson{#1}{#2}{#3}}%
+  {\@tstidxutfopenperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfopenperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfopenpost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfopenpost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfopenpost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfopenpost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
 }
 %    \end{macrocode}
@@ -1735,13 +1862,17 @@
 %\begin{macro}{\tstidxcloseutfperson}
 % As above but ends a range.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfcloseperson}[7][]{%
+\newcommand*{\tstidxutfcloseperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfcloseperson{#1}{#2}{#3}}%
+  {\@tstidxutfcloseperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfcloseperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfclosepost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfclosepost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfclosepost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfclosepost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
 }
 %    \end{macrocode}
@@ -1749,37 +1880,46 @@
 %
 %\begin{macro}{\tstidxsym}
 %\begin{definition}
-%\cs{tstidxsym}\oarg{encap}\marg{sort}\marg{indexed symbol}
+%\cs{tstidxsym}\oarg{encap}\marg{sort}\oarg{label}\marg{indexed symbol}
 %\end{definition}
 % Display and index a symbol.
 %    \begin{macrocode}
-\newcommand*{\tstidxsym}[3][]{%
-  \tstindexpost[#2]{\protect#3}{#1}{#3}%
+\newcommand*{\tstidxsym}[2][]{%
+  \@ifnextchar[{\@tstidxsym{#1}{#2}}{\@tstidxsym{#1}{#2}[#2]}%
 }
+\def\@tstidxsym#1#2[#3]#4{%
+  \tstindexpost[#2]{\protect#4}[#3]{#1}{#4}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
 %\begin{macro}{\tstidxopensym}
 %\begin{definition}
-%\cs{tstidxopensym}\oarg{encap}\marg{sort}\marg{indexed symbol}
+%\cs{tstidxopensym}\oarg{encap}\marg{sort}\oarg{label}\marg{indexed symbol}
 %\end{definition}
 % As above but starts a range.
 %    \begin{macrocode}
-\newcommand*{\tstidxopensym}[3][]{%
-  \tstindexopenpost[#2]{\protect#3}{#1}{#3}%
+\newcommand*{\tstidxopensym}[2][]{%
+  \@ifnextchar[{\@tstidxopensym{#1}{#2}}{\@tstidxopensym{#1}{#2}[]}%
 }
+\def\@tstidxopensym#1#2[#3]#4{%
+  \tstindexopenpost[#2]{\protect#4}[#3]{#1}{#4}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
 %\begin{macro}{\tstidxclosesym}
 %\begin{definition}
-%\cs{tstidxclosesym}\oarg{encap}\marg{sort}\marg{indexed symbol}
+%\cs{tstidxclosesym}\oarg{encap}\marg{sort}\oarg{label}\marg{indexed symbol}
 %\end{definition}
 % As above but ends a range.
 %    \begin{macrocode}
-\newcommand*{\tstidxclosesym}[3][]{%
-  \tstindexopenpost[#2]{\protect#3}{#1}{#3}%
+\newcommand*{\tstidxclosesym}[2][]{%
+  \@ifnextchar[{\@tstidxclosesym{#1}{#2}}{\@tstidxclosesym{#1}{#2}[]}%
 }
+\def\@tstidxclosesym#1#2[#3]#4{%
+  \tstindexclosepost[#2]{\protect#4}[#3]{#1}{#4}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1786,8 +1926,14 @@
 %\begin{macro}{\tstidxindexmarker}
 %    \begin{macrocode}
 \newcommand{\tstidxindexmarker}[1]{%
- \tstidxsym{\tstidxindexmarkerprefix#1}{\csname#1\endcsname
-   \protect\space (\protect\tstidxcsfmt{#1})}% 
+ \iftestidxprefix
+   \expandafter\tstidxsym\expandafter
+    {\tstidxindexmarkerprefix#1}[#1]{\csname#1\endcsname
+     \protect\space (\protect\tstidxcsfmt{#1})}% 
+ \else
+   \tstidxsym{#1}[#1]{\csname#1\endcsname
+     \protect\space (\protect\tstidxcsfmt{#1})}% 
+ \fi
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1799,37 +1945,48 @@
 %
 %\begin{macro}{\tstidxmath}
 %\begin{definition}
-%\cs{tstidxmath}\oarg{encap}\marg{sort}\marg{entry}
+%\cs{tstidxmath}\oarg{encap}\marg{sort}\oarg{label}\marg{entry}
 %\end{definition}
 % Display and index something in maths-mode.
 %    \begin{macrocode}
 \if at tstidx@use at encaps
-  \newcommand*{\tstidxmath}[3][tstidxencapii]{%
-    \tstindexpre[#2]{$#3$}{#1}{#3}%
+  \newcommand*{\tstidxmath}[2][tstidxencapii]{%
+    \@ifnextchar[{\@tstidxmath{#1}{#2}}{\@tstidxmath{#1}{#2}[#2]}%
   }
 \else
-  \newcommand*{\tstidxmath}[3][]{%
-    \tstindexpre[#2]{$#3$}{#1}{#3}%
+  \newcommand*{\tstidxmath}[2][]{%
+    \@ifnextchar[{\@tstidxmath{#1}{#2}}{\@tstidxmath{#1}{#2}[#2]}%
   }
 \fi
+\def\@tstidxmath#1#2[#3]#4{%
+  \tstindexpre[#2]{$#4$}[#3]{#1}{#4}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
 %\begin{macro}{\tstidxmathsym}
 %\begin{definition}
-%\cs{tstidxmathsym}\oarg{encap}\marg{sort}\marg{entry}
+%\cs{tstidxmathsym}\oarg{encap}\marg{sort}\oarg{label}\marg{entry}
 %\end{definition}
 %Inserts a prefix before \meta{sort}.
 %    \begin{macrocode}
 \if at tstidx@use at encaps
-  \newcommand*{\tstidxmathsym}[3][tstidxencapii]{%
-    \tstidxmath[#1]{\tstidxmathsymprefix#2}{#3}%
+  \newcommand*{\tstidxmathsym}[2][tstidxencapii]{%
+    \@ifnextchar[{\@tstidxmathsym{#1}{#2}}{\@tstidxmathsym{#1}{#2}[#2]}%
   }
 \else
-  \newcommand*{\tstidxmathsym}[3][]{%
-    \tstidxmath[#1]{\tstidxmathsymprefix#2}{#3}%
+  \newcommand*{\tstidxmathsym}[2][]{%
+    \@ifnextchar[{\@tstidxmathsym{#1}{#2}}{\@tstidxmathsym{#1}{#2}[#2]}%
   }
 \fi
+\def\@tstidxmathsym#1#2[#3]#4{%
+ \iftestidxprefix
+  \expandafter\tstindexpre\expandafter
+   [\tstidxmathsymprefix#2]{$#4$}[#3]{#1}{#4}%
+ \else
+  \tstindexpre[#2]{$#4$}[#3]{#1}{#4}%
+ \fi
+}
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\tstidxmathsymprefix}
@@ -1840,16 +1997,47 @@
 %
 %\begin{macro}{\tstidxutfword}
 %\begin{definition}
-%\cs{tstidxutfword}\oarg{encap}\marg{ascii}\marg{utf8}
+%\cs{tstidxutfword}\oarg{encap}\marg{ascii}\oarg{label}\marg{utf8}
 %\end{definition}
-% Display and index a word with UTF-8 characters.
+% Display and index a word with UTF-8 characters. The \meta{label}
+% is needed for \sty{testidx-glossaries}.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfword}[3][]{%
-  \tstidxutfpost{#2}{#3}{#1}%
+\newcommand*{\tstidxutfword}[2][]{%
+  \@ifnextchar[{\@tstidxutfword{#1}{#2}}{\@tstidxutfword{#1}{#2}[#2]}%
 }
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\@tstidxutfword}
+%    \begin{macrocode}
+\def\@tstidxutfword#1#2[#3]#4{%
+  \tstidxutfpost{#2}[#3]{#4}{#1}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxgphword}
+%\begin{definition}
+%\cs{tstidxutfword}\oarg{encap}\marg{ascii}\marg{label}\marg{utf8}\marg{utf8
+%with digraph}
+%\end{definition}
+% Display and index a word with UTF-8 characters with alternative
+% form that uses a glyph for the digraph.
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxgphword}[2][]{%
+  \@ifnextchar[{\@tstidxgphword{#1}{#2}}{\@tstidxgphword{#1}{#2}[#2]}%
+}
+\def\@tstidxgphword#1#2[#3]#4#5{%
+  \iftestidxdiglyphs
+    \tstidxutfpost{#2}[#3]{#5}{#1}%
+  \else
+    \tstidxutfpost{#2}[#3]{#4}{#1}%
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
 %\begin{macro}{\tstidxopenutf}
 %\begin{definition}
 %\cs{tstidxopenutf}\oarg{encap}\marg{sort}\marg{ascii}\marg{utf8}
@@ -1876,13 +2064,16 @@
 %
 %\begin{macro}{\tstidxutfphrase}
 %\begin{definition}
-%\cs{tstidxutfphrase}\oarg{encap}\marg{ascii}\marg{utf8}
+%\cs{tstidxutfphrase}\oarg{encap}\marg{ascii}\oarg{label}\marg{utf8}
 %\end{definition}
 % Display and index a phrase with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfphrase}[3][]{%
-  \tstidxutfpre{#2}{#3}{#1}%
+\newcommand*{\tstidxutfphrase}[2][]{%
+  \@ifnextchar[{\@tstidxutfphrase{#1}{#2}}{\@tstidxutfphrase{#1}{#2}[#2]}%
 }
+\def\@tstidxutfphrase#1#2[#3]#4{%
+  \tstidxutfpre{#2}[#3]{#4}{#1}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1921,14 +2112,17 @@
 %
 %\begin{macro}{\tstidxutfplace}
 %\begin{definition}
-%\cs{tstidxutfplace}\oarg{encap}\marg{ascii}\marg{utf8}
+%\cs{tstidxutfplace}\oarg{encap}\marg{ascii}\oarg{label}\marg{utf8}
 %\end{definition}
 % Display and index a word with UTF-8 characters.
 %    \begin{macrocode}
-\newcommand*{\tstidxutfplace}[3][]{%
-  \tstidxutfpost{#2}{#3}{#1}%
-  \tstidxutfsubpost[\relax]{places}{places}{#2}{#3}{#1}%
+\newcommand*{\tstidxutfplace}[2][]{%
+  \@ifnextchar[{\@tstidxutfplace{#1}{#2}}{\@tstidxutfplace{#1}{#2}[#2]}%
 }
+\def\@tstidxutfplace#1#2[#3]#4{%
+  \tstidxutfpost{#2}[#3]{#4}{#1}%
+  \tstidxutfsubpost[\relax]{places}{places}{#2}[places.#3]{#4}{#1}%
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -1936,8 +2130,8 @@
 % Display and index a place name that starts with an article.
 %    \begin{macrocode}
 \newcommand*{\tstidxartplace}[3][]{%
-  \tstindexpost{#3, #2}{#1}{#2 #3}%
-  \tstidxutfsubpost[\relax]{places}{places}{#3, #2}{#3, #2}{#1}%
+  \tstindexpost{#3, #2}[#3]{#1}{#2 #3}%
+  \tstidxutfsubpost[\relax]{places}{places}{#3, #2}[places.#3]{#3, #2}{#1}%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1954,12 +2148,12 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxbook}[2][tstidxencapii]{%
-    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}{#1}{\tstidxbookfmt{#2}}%
+    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}[#2]{#1}{\tstidxbookfmt{#2}}%
     \tstsubindexpost{books}[#2]{\protect\tstidxbookfmt{#2}}{#1}{}%
   }
 \else
   \newcommand*{\tstidxbook}[2][]{%
-    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}{#1}{\tstidxbookfmt{#2}}%
+    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}[#2]{#1}{\tstidxbookfmt{#2}}%
     \tstsubindexpost{books}[#2]{\protect\tstidxbookfmt{#2}}{#1}{}%
   }
 \fi
@@ -2009,13 +2203,14 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxartbook}[3][tstidxencapii]{%
-    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{\tstidxbookfmt{#2 #3}}%
-    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[#3]{#1}{\tstidxbookfmt{#2 #3}}%
+    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxartbook}[3][]{%
-    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{\tstidxbookfmt{#2 #3}}%
-    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[#3]{#1}{\tstidxbookfmt{#2 #3}}%
+    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3,
+#2}}[books.#3]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -2028,13 +2223,13 @@
   \newcommand*{\tstidxopenartbook}[3][tstidxencapii]{%
     \tstindexopenpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxopenartbook}[3][]{%
     \tstindexopenpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -2047,13 +2242,13 @@
   \newcommand*{\tstidxcloseartbook}[3][tstidxencapii]{%
     \tstindexclosepost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxcloseartbook}[3][]{%
     \tstindexclosepost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -2122,15 +2317,16 @@
 %    \begin{macrocode}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxartfilm}[3][tstidxencapii]{%
-    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}%
+    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[#3]{#1}%
       {\tstidxfilmfmt{#2 #3}}%
-    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}{}%
+    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3,
+#2}}[films.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxartfilm}[3][]{%
-    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}%
+    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[#3]{#1}%
       {\tstidxfilmfmt{#2 #3}}%
-    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}{}%
+    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[films.#3]{#1}{}%
   }
 \fi
 %    \end{macrocode}
@@ -2142,13 +2338,16 @@
 %using \cs{index}.
 % 
 %\begin{macro}{\tstindexpost}
-%The first argument is the sort, the second argument is the term
-%being indexed and the third argument is the encap. The final
-%argument is text to be displayed before the term is indexed.
+%\begin{definition}
+%\cs{tstindexpost}\oarg{sort}\marg{term}\oarg{label}\marg{encap}\marg{display}
+%\end{definition}
 %    \begin{macrocode}
-\newcommand*{\tstindexpost}[4][]{%
+\newcommand*{\tstindexpost}[2][]{%
+  \@ifnextchar[{\@tstindexpost{#1}{#2}}{\@tstindexpost{#1}{#2}[]}%
+}%
+\def\@tstindexpost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2158,18 +2357,18 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxmarker}%
+     \tstidxtext{#5\tstidxmarker}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxmarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxmarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
@@ -2179,9 +2378,11 @@
 %\begin{macro}{\tstindexopenpost}
 %As previous but starts a range.
 %    \begin{macrocode}
-\newcommand*{\tstindexopenpost}[4][]{%
+\newcommand*{\tstindexopenpost}[2][]{%
+  \@ifnextchar[{\@tstindexopenpost{#1}{#2}}{\@tstindexopenpost{#1}{#2}[]}}%
+\def\@tstindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2191,20 +2392,20 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxopenmarker}%
+     \tstidxtext{#5\tstidxopenmarker}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopenmarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopenmarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
@@ -2214,9 +2415,11 @@
 %\begin{macro}{\tstindexclosepost}
 %As previous but ends a range.
 %    \begin{macrocode}
-\newcommand*{\tstindexclosepost}[4][]{%
+\newcommand*{\tstindexclosepost}[2][]{%
+  \@ifnextchar[{\@tstindexclosepost{#1}{#2}}{\@tstindexclosepost{#1}{#2}[]}}%
+\def\@tstindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2226,20 +2429,20 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxclosemarker}%
+     \tstidxtext{#5\tstidxclosemarker}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosemarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosemarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
@@ -2247,13 +2450,15 @@
 %\end{macro}
 %
 %\begin{macro}{\tstindexpre}
-%The first argument is the sort, the second argument is the term
-%being indexed and the third argument is the encap. The final
-%argument is text to be displayed after the term is indexed.
+%\begin{definition}
+%\cs{tstindexpre}\oarg{sort}\marg{term}\oarg{label}\marg{encap}\marg{display}
+%\end{definition}
 %    \begin{macrocode}
-\newcommand*{\tstindexpre}[4][]{%
+\newcommand*{\tstindexpre}[2][]{%
+  \@ifnextchar[{\@tstindexpre{#1}{#2}}{\@tstindexpre{#1}{#2}[]}}%
+\def\@tstindexpre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2264,18 +2469,18 @@
   \ifx\@tstidx at encap\@empty
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxmarker#4}%
+     \tstidxtext{\tstidxmarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxmarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxmarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
@@ -2285,9 +2490,11 @@
 %\begin{macro}{\tstindexopenpre}
 %As previous but starts a range.
 %    \begin{macrocode}
-\newcommand*{\tstindexopenpre}[4][]{%
+\newcommand*{\tstindexopenpre}[2][]{%
+  \@ifnextchar[{\@tstindexopenpre{#1}{#2}}{\@tstindexopenpre{#1}{#2}[]}}%
+\def\@tstindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2300,18 +2507,18 @@
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxopenmarker#4}%
+     \tstidxtext{\tstidxopenmarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxopenmarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxopenmarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
@@ -2321,9 +2528,11 @@
 %\begin{macro}{\tstindexclosepre}
 %As previous but ends a range.
 %    \begin{macrocode}
-\newcommand*{\tstindexclosepre}[4][]{%
+\newcommand*{\tstindexclosepre}[2][]{%
+  \@ifnextchar[{\@tstindexclosepre{#1}{#2}}{\@tstindexclosepre{#1}{#2}[]}}%
+\def\@tstindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -2336,18 +2545,18 @@
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxclosemarker#4}%
+     \tstidxtext{\tstidxclosemarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxclosemarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxclosemarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
@@ -2354,38 +2563,129 @@
 %    \end{macrocode}
 %\end{macro}
 %
+%\begin{macro}{\@tstidxseeencap}
+%\changes{1.1}{2017-08-11}{new}
+%Allow customization of cross-reference encaps.
+%    \begin{macrocode}
+\newcommand*{\@tstidxseeencap}[1]{%
+ \@ifundefined{tstidx@#1 at encapname}{#1}{\csname tstidx@#1 at encapname\endcsname}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxSetSeeEncap}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxSetSeeEncap}[1]{%
+ \@namedef{tstidx at see@encapname}{#1}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxSetSeeAlsoEncap}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxSetSeeAlsoEncap}[1]{%
+ \@namedef{tstidx at seealso@encapname}{#1}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%
 %\begin{macro}{\tstindexsee}
-%The first argument is the sort, the second argument is the term
-%being indexed, the third argument is the cross-referencing control
-%sequence name (\qt{see} or \qt{seealso}) and the final argument is the
-% cross-referenced text (the first argument of \ics{see} or
-% \ics{seealso}).
+%\begin{definition}
+%\cs{tstindexsee}\oarg{sort}\marg{term}\oarg{label}\marg{see
+%cs}\oarg{xr-labels}\marg{cross-reference}
+%\end{definition}
 %    \begin{macrocode}
-\newcommand*{\tstindexsee}[4][]{%
+\newcommand*{\tstindexsee}[2][]{%
+  \@ifnextchar[{\@tstindex at see{#1}{#2}}{\@tstindex at see{#1}{#2}[]}}%
+\def\@tstindex at see#1#2[#3]#4{%
+  \@ifnextchar[{\@tstindexsee{#1}{#2}{#3}{#4}}{\@tstindexsee{#1}{#2}{#3}{#4}[]}}%
+\def\@tstindexsee#1#2#3#4[#5]#6{%
   \def\@tstidx at sort{#1}%
+  \def\@tstidx at entry{#2}%
   \ifx\@tstidx at sort\@empty
-   \def\@tstidx at entry{#2}%
+    \@tstidx at ifutfviii
+    {%
+      \tstidxprocessutf{\@tstidx at entry}{#2}%
+    }%
+    {%
+      \def\@tstidx at sort{#2}%
+      \tstidxprocessasciisort{\@tstidx at sort}{#2}%
+      \ifx\@tstidx at sort\@tstidx at entry
+      \else
+        \expandafter\toks@\expandafter{\@tstidx at sort}%
+        \edef\@tstidx at entry{\the\toks@\tstidxactual}%
+        \expandafter\def\expandafter\@tstidx at entry\expandafter
+          {\@tstidx at entry#2}%
+      \fi
+    }%
   \else
-   \toks@{#1}%
-   \edef\@tstidx at entry{\the\toks@\tstidxactual}%
-   \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
+    \@tstidx at ifutfviii
+    {%
+      \expandafter\tstidxprocessutf\expandafter\@tstidx at sort
+        \expandafter{\@tstidx at sort}%
+    }%
+    {%
+      \expandafter\tstidxprocessasciisort\expandafter\@tstidx at sort
+        \expandafter{\@tstidx at sort}%
+    }%
+    \expandafter\toks@\expandafter{\@tstidx at sort}%
+    \edef\@tstidx at entry{\the\toks@\tstidxactual}%
+    \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
   \fi
   \expandafter\toks@\expandafter{\@tstidx at entry}%
-  \edef\@tstidx at entry{\the\toks@\tstidxencap#3{#4}}%
+  \protected at edef\@tstidx at entry{\the\toks@\tstidxencap
+   \@tstidxseeencap{#4}{#6}}%
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \iftestidxshowmarks
-    \tstidxseeref{#2}{#3}{#4}%
+    \tstidxseeref{#2}{#4}{#6}%
   \fi
 }
 %    \end{macrocode}
 %\end{macro}
 %
+%
+%\begin{macro}{\tstindexutfsee}
+%\begin{definition}
+%\cs{tstindexutfsee}\oarg{ascii sort}\marg{ascii term}\oarg{utf sort}
+%\marg{utf term}\oarg{label}\marg{see cs}\oarg{xr-labels}%
+%\marg{ascii cross-reference}\marg{utf cross-reference}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstindexutfsee}[2][]{%
+  \@tstindexutfsee{#1}{#2}%
+}
+\newcommand*{\@tstindexutfsee}[2]{%
+  \@ifnextchar[{\@tst at indexutfsee{#1}{#2}}{\@tst at indexutfsee{#1}{#2}[]}%
+}
+\def\@tst at indexutfsee#1#2[#3]#4{%
+  \@ifnextchar[{\@@tst at indexutfsee{#1}{#2}{#3}{#4}}%
+  {\@@tst at indexutfsee{#1}{#2}{#3}{#4}[]}%
+}
+\def\@@tst at indexutfsee#1#2#3#4[#5]#6{%
+  \@ifnextchar[{\@@tst@@indexutfsee{#1}{#2}{#3}{#4}{#5}{#6}}%
+  {\@@tst@@indexutfsee{#1}{#2}{#3}{#4}{#5}{#6}[]}%
+}
+\def\@@tst@@indexutfsee#1#2#3#4#5#6[#7]#8#9{%
+ \@tstidx at ifutfviii
+ {%
+   \@tstindexsee{#3}{#4}{#5}{#6}[#7]{#9}%
+ }%
+ {%
+   \@tstindexsee{#1}{#2}{#5}{#6}[#7]{#8}%
+ }%
+}
+%    \end{macrocode}
+%\end{macro}
+%
 %\subsection{Sub-Entries}
 %One sub-level.
 %\begin{macro}{\tstsubindexpost}
 %\begin{definition}
 %\cs{tstsubindexpost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexpost}[2][]{%
@@ -2393,10 +2693,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexpost
 }
-\newcommand*{\@tst at subindexpost}[4][]{%
+\newcommand*{\@tst at subindexpost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexpost{#1}{#2}}{\@tstidx at subindexpost{#1}{#2}[]}}%
+\def\@tstidx at subindexpost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2413,19 +2715,19 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubmarker}%
+      \tstidxtext{#5\tstidxsubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2435,7 +2737,7 @@
 %\begin{macro}{\tstsubindexopenpost}
 %\begin{definition}
 %\cs{tstsubindexopenpost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexopenpost}[2][]{%
@@ -2443,10 +2745,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexopenpost
 }
-\newcommand*{\@tst at subindexopenpost}[4][]{%
+\newcommand*{\@tst at subindexopenpost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexopenpost{#1}{#2}}{\@tstidx at subindexopenpost{#1}{#2}[]}}%
+\def\@tstidx at subindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2463,9 +2767,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
@@ -2472,12 +2776,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2487,7 +2791,7 @@
 %\begin{macro}{\tstsubindexclosepost}
 %\begin{definition}
 %\cs{tstsubindexclosepost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexclosepost}[2][]{%
@@ -2495,10 +2799,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexclosepost
 }
-\newcommand*{\@tst at subindexclosepost}[4][]{%
+\newcommand*{\@tst at subindexclosepost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexclosepost{#1}{#2}}{\@tstidx at subindexclosepost{#1}{#2}[]}}%
+\def\@tstidx at subindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2515,9 +2821,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
@@ -2524,12 +2830,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2539,7 +2845,7 @@
 %\begin{macro}{\tstsubindexpre}
 %\begin{definition}
 %\cs{tstsubindexpre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexpre}[2][]{%
@@ -2547,10 +2853,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexpre
 }
-\newcommand*{\@tst at subindexpre}[4][]{%
+\newcommand*{\@tst at subindexpre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexpre{#1}{#2}}{\@tstidx at subindexpre{#1}{#2}[]}}%
+\def\@tstidx at subindexpre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2568,18 +2876,18 @@
   \ifx\@tstidx at encap\@empty
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubmarker}%
+      \tstidxtext{#5\tstidxsubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -2589,7 +2897,7 @@
 %\begin{macro}{\tstsubindexopenpre}
 %\begin{definition}
 %\cs{tstsubindexopenpre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\marg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexopenpre}[2][]{%
@@ -2597,10 +2905,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexopenpre
 }
-\newcommand*{\@tst at subindexopenpre}[4][]{%
+\newcommand*{\@tst at subindexopenpre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexopenpre{#1}{#2}}{\@tstidx at subindexopenpre{#1}{#2}[]}}%
+\def\@tstidx at subindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2620,18 +2930,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -2641,7 +2951,7 @@
 %\begin{macro}{\tstsubindexclosepre}
 %\begin{definition}
 %\cs{tstsubindexclosepre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubindexclosepre}[2][]{%
@@ -2649,10 +2959,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexclosepre
 }
-\newcommand*{\@tst at subindexclosepre}[4][]{%
+\newcommand*{\@tst at subindexclosepre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexclosepre{#1}{#2}}{\@tstidx at subindexclosepre{#1}{#2}[]}}%
+\def\@tstidx at subindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2672,18 +2984,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -2693,7 +3005,7 @@
 %\begin{macro}{\tstindexsubsee}
 %\begin{definition}
 %\cs{tstindexsubsee}\oarg{main sort}\marg{main term}\oarg{sub sort}
-%\marg{sub term}\marg{cs name}\marg{text}
+%\marg{sub term}\oarg{label}\marg{cs name}\oarg{xr-labels}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstindexsubsee}[2][]{%
@@ -2712,7 +3024,15 @@
 %\end{macro}
 %\begin{macro}{\@tstindexsubsee}
 %    \begin{macrocode}
-\newcommand*{\@tstindexsubsee}[4][]{%
+\newcommand*{\@tstindexsubsee}[2][]{%
+ \@ifnextchar[{\@tstidx at index@subsee{#1}{#2}}%
+  {\@tstidx at index@subsee{#1}{#2}[]}%
+}%
+\def\@tstidx at index@subsee#1#2[#3]#4{%
+ \@ifnextchar[{\@tstidx at indexsubsee{#1}{#2}{#3}{#4}}%
+  {\@tstidx at indexsubsee{#1}{#2}{#3}{#4}[]}%
+}
+\def\@tstidx at indexsubsee#1#2#3#4[#5]#6{%
   \def\@tstidx at subsort{#1}%
   \ifx\@tstidx at subsort\@empty
    \toks@{#2}%
@@ -2725,10 +3045,11 @@
    \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
   \fi
   \expandafter\toks@\expandafter{\@tstidx at entry}%
-  \edef\@tstidx at entry{\the\toks@\tstidxencap#3{#4}}%
+  \edef\@tstidx at entry{\the\toks@\tstidxencap
+     \@tstidxseeencap{#4}{#6}}%
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \iftestidxshowmarks
-    \tstidxsubseeref{\@tstidx at term}{#2}{#3}{#4}%
+    \tstidxsubseeref{\@tstidx at term}{#2}{#4}{#6}%
   \fi
 }
 %    \end{macrocode}
@@ -2739,7 +3060,8 @@
 %\begin{macro}{\tstsubsubindexpost}
 %\begin{definition}
 %\cs{tstsubsubindexpost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexpost}[2][]{%
@@ -2752,10 +3074,13 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexpost
 }
-\newcommand*{\@@tst at subsubindexpost}[4][]{%
+\newcommand*{\@@tst at subsubindexpost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexpost{#1}{#2}}%
+ {\@@tstidx at subsubindexpost{#1}{#2}[]}}%
+\def\@@tstidx at subsubindexpost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2780,19 +3105,19 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubsubmarker}%
+      \tstidxtext{#5\tstidxsubsubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2802,7 +3127,8 @@
 %\begin{macro}{\tstsubsubindexopenpost}
 %\begin{definition}
 %\cs{tstsubsubindexopenpost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexopenpost}[2][]{%
@@ -2815,10 +3141,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexopenpost
 }
-\newcommand*{\@@tst at subsubindexopenpost}[4][]{%
+\newcommand*{\@@tst at subsubindexopenpost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexopenpost{#1}{#2}}%
+ {\@@tstidx at subsubindexopenpost{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2843,9 +3174,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
@@ -2852,12 +3183,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2867,7 +3198,8 @@
 %\begin{macro}{\tstsubsubindexclosepost}
 %\begin{definition}
 %\cs{tstsubsubindexclosepost}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexclosepost}[2][]{%
@@ -2880,10 +3212,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexclosepost
 }
-\newcommand*{\@@tst at subsubindexclosepost}[4][]{%
+\newcommand*{\@@tst at subsubindexclosepost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexclosepost{#1}{#2}}%
+ {\@@tstidx at subsubindexclosepost{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2908,9 +3245,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
@@ -2917,12 +3254,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -2932,7 +3269,8 @@
 %\begin{macro}{\tstsubsubindexpre}
 %\begin{definition}
 %\cs{tstsubsubindexpre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexpre}[2][]{%
@@ -2945,10 +3283,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexpre
 }
-\newcommand*{\@@tst at subsubindexpre}[4][]{%
+\newcommand*{\@@tst at subsubindexpre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexpre{#1}{#2}}%
+ {\@@tstidx at subsubindexpre{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexpre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -2974,18 +3317,18 @@
   \ifx\@tstidx at encap\@empty
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubsubmarker}%
+      \tstidxtext{#5\tstidxsubsubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -2995,7 +3338,8 @@
 %\begin{macro}{\tstsubsubindexopenpre}
 %\begin{definition}
 %\cs{tstsubsubindexopenpre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexopenpre}[2][]{%
@@ -3008,10 +3352,14 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexopenpre
 }
-\newcommand*{\@@tst at subsubindexopenpre}[4][]{%
+\newcommand*{\@@tst at subsubindexopenpre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexopenpre{#1}{#2}}%
+ {\@@tstidx at subsubindexopenpre{#1}{#2}[]}%
+}%
+\def\@@tstidx at subsubindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -3039,18 +3387,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -3060,7 +3408,8 @@
 %\begin{macro}{\tstsubsubindexclosepre}
 %\begin{definition}
 %\cs{tstsubsubindexclosepre}\oarg{main sort}\marg{main term}\oarg{sub
-%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub term}\marg{encap}\marg{text}
+%sort}\marg{sub term}\oarg{sub-sub sort}\marg{sub-sub
+%term}\oarg{label}\marg{encap}\marg{text}
 %\end{definition}
 %    \begin{macrocode}
 \newcommand*{\tstsubsubindexclosepre}[2][]{%
@@ -3073,10 +3422,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexclosepre
 }
-\newcommand*{\@@tst at subsubindexclosepre}[4][]{%
+\newcommand*{\@@tst at subsubindexclosepre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexclosepre{#1}{#2}}%
+ {\@@tstidx at subsubindexclosepre{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -3104,18 +3458,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -3122,8 +3476,6 @@
 %    \end{macrocode}
 %\end{macro}
 %
-%
-%
 %\section{Filler Text Generator}
 %\begin{macro}{\testidx}
 %Provide a command similar to \cs{lipsum} from the \sty{lipsum}
@@ -3277,6 +3629,7 @@
 %
 %\subsection{Test Paragraphs}
 % These are all the predefined test paragraphs.
+%\begin{macro}{\@tidx at par@i}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -3315,7 +3668,9 @@
  This block starts a range that is closed in block~\@tidx at close@testidxsty.%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@ii}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -3335,16 +3690,18 @@
  \tstidxword{index} that is at least three pages long to allow you
  to test the page headers and footers in a two-sided document.
  You can hide the visual effects with the
- \tstidxstyopt{testidx}{hidemarks} package option.
+ \tstidxstyopt{testidx}{hidemarks} package option.%
  \iftestidxshowmarks
  \else
-  (It seems you already have this option set.
+  \space (It seems you already have this option set.
   Remove it or use \tstidxstyopt{testidx}{showmarks} to show them
   again.)%
  \fi
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@iii}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -3430,7 +3787,14 @@
  using the \tstidxword{marker}  \tstidxindexmarker{tstidxseemarker} 
  and the cross-referenced information is displayed as 
  a \tstidxphrase{marginal note} by default, with the term being indexed 
- followed by the \tstidxword{cross-reference}. A sub-level 
+ followed by the \tstidxword{cross-reference}.
+ For example, 
+ \tstidxword{lyuk}\tstindexsee{lyuk}{seealso}{digraph} has 
+ the marker \tstidxmarker\ to show that the word \tstidxqt{lyuk} was
+ indexed followed by the marker \tstidxseemarker\ to show that 
+ a cross-reference to \tstidxword{digraph} has also been indexed
+ (with the details shown in the margin).
+ A sub-level 
  \tstidxword{cross-reference} is identified with the \tstidxword{marker}
  \tstidxindexmarker{tstidxsubseemarker} and the marginal note
  displays the main term followed by the sub-term (separated by the
@@ -3451,7 +3815,9 @@
  You'll have to add your own tests for anything deeper.%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@iv}
 %    \begin{macrocode}
 \tstidxnewblock*{\@tidx at openrangepar}
 {%
@@ -3477,12 +3843,14 @@
  \fi
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@v}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
  Now that the preliminaries have been dispensed with in the previous
- \tstidxword{paragraph}s, we can get on
+ \tstidxwordpl{paragraph}, we can get on
  to some serious 
  \if at tstidx@use at encaps
    \tstidxword[tstidxencapii]{waffle}
@@ -3527,6 +3895,8 @@
  \tstidxphrase{keep mum}\tstindexsee{keep mum}{seealso}{confidential} 
  and don't \tstidxword{grass} on me because that just won't be fair,
  and it might \tstidxword{distress} them to a certain extent.
+ I shall not be \tstidxword{assailed} by indecision and will
+ \tstidxword{aspire} to find the \tstidxphrase{mot juste}.
  Where was I? Oh, yes, \tstidxword{padding}. I'm trying to make this
  \tstidxword{paragraph} quite long, not because I have any pretensions of being
  the next \tstidxperson{James}{Joyce} and competing with 
@@ -3568,7 +3938,8 @@
  has spanned a \tstidxphrase{page break}, you might want to check the terms 
  indexed here to make sure they have the correct page numbers listed.
  Something else that you might want to check, while you're at it, is
- what's happened to the \tstidxword{location list} for the word
+ what's happened to the \tstindexsee{location list}{seealso}{cross-reference}%
+ \tstidxword{location list} for the word
  \if at tstidx@use at encaps
    \tstidxqt{\tstidxword[tstidxencapii]{paragraph}},
  \else
@@ -3607,7 +3978,9 @@
  Mean, aren't I?%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@vi}
 %    \begin{macrocode}
 \tstidxnewblock*{\@tidx at xdypar}
 {%
@@ -3659,25 +4032,64 @@
  \tstindexsee{range separator}{see}{location list}
  in your \texttt{.xdy} file.  For example:
  \begin{flushleft}\ttfamily
-(markup-locref-list :sep \string",\string")\par
+(markup-locref-list :sep \string", \string")\par
 (markup-range :sep \string"\string-\string-\string")
  \end{flushleft}
  Check out the difference between using \tstidxapp{xindy} and
- \tstidxapp{makeindex} on this document.%
+ \tstidxapp{makeindex} on this document.
+ On the subject of location lists, the word
+ \tstidxword{passim} (meaning \tstidxqt{here and there}) is
+ sometimes used to tidy up ragged lists. For example,
+ the locations \tstidxqt{1, 3, 4, 6, 7} may look neater as
+ \tstidxqt{1-7 passim}, which indicates references are scattered (here
+ and there) throughout that range.%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@vii}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
- We, the \tstidxutfword{\'elite}{élite} who discovered the 
- \tstidxutfword{\ae sthetic}{æsthetic}
+ Computer algorithms can sometimes have difficulties with 
+ \tstidxword{localisation}. They can be tripped up by
+ \tstidxphrase{input encoding} issues and \tstidxwordpl{digraph}
+ (such as the Welsh \tstidxgphword{ll}{ll}{ỻ} digraph in 
+ \tstidxgphword{llan}{llan}{ỻan},
+ the Dutch \tstidxgphword{ij}{ij}{ij} digraph in 
+ \tstidxgphword{lijnbus}{lijnbus}{lijnbus} and 
+ \tstidxgphword{ijsvrij}{ijsvrij}{ijsvrij}, and the
+ \tstidxgphword{dz}{dz}{dz} digraph in the Hungarian
+ \tstidxgphword{dz\'eta}[dzeta]{dzéta}{dzéta} and Polish
+ \tstidxgphword{dzwon}{dzwon}{dzwon}) 
+ or \tstidxwordpl{trigraph} (such as the Hungarian \tstidxword{dzs}
+ trigraph in \tstidxutfword{dzs\'oker}[dzsoker]{dzsóker}
+ and \tstidxword{dzsungel}\tstindexsee{dzsungel}{seealso}{trigraph}),
+ so this \tstidxword{paragraph} is designed to provide some examples for 
+ testing various Latin alphabets. If you enable both UTF-8 (either
+ with \tstidxsty{inputenc} or using XeLaTeX\slash LuaLaTeX) and
+ the \tstidxstyopt{testidx}{digraphs} option, then the examples above
+ will use the \tstidxqt{ll}, \tstidxqt{ij} and \tstidxqt{dz} 
+ \tstidxwordpl{glyph} (\emph{if supported}) for the \tstidxwordpl{digraph} 
+ (but not for \tstidxqt{dzs}, which is a 
+ \tstidxword{trigraph}). Remember that you'll also need a font that 
+ supports those glyphs. 
+ \iftestidxdiglyphs
+  (If characters are missing from the above words, then they're not supported.) 
+ \fi
+ Other digraphs include the Welsh \tstidxword{dd}, \tstidxword{ff},
+ and \tstidxword{ng}, the Hungarian \tstidxword{ly} (in \tstidxword{lyuk} 
+ mentioned earlier) and the Polish \tstidxword{cz}, but these 
+ don't use glyphs in the sort value.
+ Now for some more \tstidxword{nonsense} text to pad the index.
+ We, the \tstidxutfword{\'elite}[elite]{élite} who discovered the 
+ \tstidxutfword{\ae sthetic}[aesthetic]{æsthetic}
  delights of \tstidxsym{TeX}{\TeX}, must not become
- \tstidxutfword{blas\'e}{blasé} about being the
- \tstidxutfword{prot\'eg\'e}{protégé}
+ \tstidxutfword{blas\'e}[blase]{blasé} about being the
+ \tstidxutfword{prot\'eg\'e}[protege]{protégé}
  of the great \tstidxperson{Donald}{Knuth}.
  It may stagger the 
- \tstidxutfword{client\`ele}{clientèle} of 
+ \tstidxutfword{client\`ele}[clientele]{clientèle} of 
  \if at tstidx@use at encaps
    \tstidxartphrase[tstidxencapii]{the}{commercial world} 
  \else
@@ -3684,58 +4096,66 @@
    \tstidxartphrase{the}{commercial world} 
  \fi
  to discover our 
- \tstidxutfword{r\'esum\'e}{résumé} 
+ \tstidxutfword{r\'esum\'e}[resumee]{résumé} 
  (after foraging for it in our natty 
- \tstidxutfphrase{attach\'e case}{attaché case})
+ \tstidxutfphrase{attach\'e case}[attachecase]{attaché case})
  while we sample a \tstidxword{vol-au-vent} or \tstidxword{two}
- at the \tstidxutfword{soir\'ee}{soirée}
- in the \tstidxutfphrase{pied-\`a-terre}{pied-à-terre}
- with the delightful \tstidxutfword{ph\oe nix}{phœnix}-%
- themed \tstidxutfword{d\'ecor}{décor} and
- \tstidxutfword{f\ae rie}{færie}
- \tstidxutfword{fa\c{c}ade}{façade}
+ at the \tstidxutfword{soir\'ee}[soiree]{soirée}
+ in the \tstidxutfphrase{pied-\`a-terre}[piedaterre]{pied-à-terre}
+ with the delightful \tstidxutfword{ph\oe nix}[phoenix]{phœnix}-%
+ themed \tstidxutfword{d\'ecor}[decor]{décor}, \tstidxword{daft}
+ \tstidxword{oak} \tstidxphrase{dado rail} and
+ \tstidxutfword{f\ae rie}[faerie]{færie}
+ \tstidxutfword{fa\c{c}ade}[facade]{façade}
  that has stunned
- many an \tstidxutfword{\ae thereal}{æthereal}
- \tstidxutfword{d\'ebutante}{débutante}
- sporting a \tstidxutfphrase{berg\`ere hat}{bergère hat},
- but it would be \tstidxutfword{na\"ive}{naïve}
- to fall for such a \tstidxutfword{f\oe tid}{fœtid}
- \tstidxutfword{clich\'e}{cliché}.
+ many an \tstidxutfword{\ae thereal}[aethereal]{æthereal}
+ \tstidxutfword{d\'ebutante}[debutante]{débutante}
+ sporting a \tstidxutfphrase{berg\`ere hat}[bergerehat]{bergère hat},
+ but it would be \tstidxutfword{na\"ive}[naive]{naïve}
+ to fall for such a \tstidxutfword{f\oe tid}[foetid]{fœtid}
+ \tstidxutfword{clich\'e}[cliche]{cliché}.
  This \tstidxword{paragraph} is in a state of 
- \tstidxutfword{d\'eshabill\'e}{déshabillé}.
+ \tstidxutfword{d\'eshabill\'e}[deshabille]{déshabillé}.
  Like a \tstidxword{sculpture} of \tstidxword{Venus} in a 
- \tstidxutfword{n\'eglig\'ee}{négligée}, it's transparently
+ \tstidxutfword{n\'eglig\'ee}[negligee]{négligée}, it's transparently
  obvious that this \tstidxword{paragraph} is provided for the sole purpose of 
  \tstidxword{ogling}\tstindexsee{gawping}{see}{ogling}
  \tstidxphrase{extended Latin characters} and testing
  how \tstidxapp{xindy} and \tstidxapp{makeindex} compare.
- Time for a quick trip to the \tstidxutfword{caf\'e}{café}
- for an \tstidxutfword{an\ae mic}{anæmic} 
- \tstidxphrase{cup of tea} with
- \tstidxutfperson{Anders Jonas}{\AA ngstr\"om}%
- {Anders Jonas}{Ångström} and then off to find a \tstidxword{zoo}
- in \tstidxutfplace{\"Osterg\"otland}{Östergötland},
- so we can get to the end of the \tstidxword{alphabet}. Perhaps
+ Time for a quick trip to the \tstidxutfword{caf\'e}[cafe]{café}
+ for an \tstidxutfword{an\ae mic}[anaemic]{anæmic} 
+ \tstidxphrase{cup of tea} (to \tstidxword{recover} from our travels) with
+ \tstidxutfperson{Anders Jonas}{\AA ngstr\"om}[AndersJonasAngstrom]%
+ {Anders Jonas}{Ångström} (but don't let it scald your
+ \tstidxutfword{\oe sophagus}[oesophagus]{œsophagus}) 
+ and then off to find a \tstidxword{zoo}
+ in \tstidxutfplace{\"Osterg\"otland}[Ostergotland]{Östergötland},
+ so we can get to the end of the \tstidxword{alphabet}. (We may even
+ see an adventurous \tstidxword{aardvark} or 
+ a lucky \tstidxgphword{llama}{llama}{ỻama} or a
+ \tstidxword{rhinoceros} eating \tstidxword{rhubarb}.) Perhaps
  then we should go over to 
- \tstidxutfplace{\"Angelholm}{Ängelholm}
+ \tstidxutfplace{\"Angelholm}[Angelholm]{Ängelholm}
  and head off across the 
- \tstidxutfplace{\O resund}{Øresund} bridge and
+ \tstidxutfplace{\O resund}[Oresund]{Øresund} bridge and
  \tstidxword{resume} our search for some more examples.
  We'll go on a \tstidxphrase{whistle-stop tour} around
- \tstidxutfplace{T\r{a}rnby}{Tårnby},
- \tstidxutfplace{R\o dovre}{Rødovre},
- \tstidxutfplace{N\ae stved}{Næstved} and
- \tstidxutfplace{\O lstykke-Stenl\o se}{Ølstykke-Stenløse}.
+ \tstidxutfplace{T\r{a}rnby}[Tarnby]{Tårnby},
+ \tstidxutfplace{R\o dovre}[Rodovre]{Rødovre},
+ \tstidxutfplace{N\ae stved}[Naestved]{Næstved} and
+ \tstidxutfplace{\O lstykke-Stenl\o se}[OlstykkeStenlose]{Ølstykke-Stenløse}.
  Afterwards, we'll \tstidxword{fly} to
  \tstidxplace{Poland} (possibly in an \tstidxword{aeroplane}\tstidxdash
  if passengers would like to look out of their \tstidxword{window}, they'll
  see we're passing over 
- \tstidxutfplace{A\ss lar}{Aßlar} and
- \tstidxutfplace{Bad Gottleuba-Berggie\ss h\"ubel}{Bad Gottleuba-Berggießhübel})
- and then we'll visit \tstidxutfplace{\L\'od\'z}{Łódź},
+ \tstidxutfplace{A\ss lar}[Asslar]{Aßlar} and
+ \tstidxutfplace{Bad Gottleuba-Berggie\ss h\"ubel}[BadGottleubaBerggiesshubel]{Bad Gottleuba-Berggießhübel})
+ and then we'll say
+\tstidxqt{\tstidxutfword{cze\'s\'c}[czesc]{cześć}} to
+\tstidxutfplace{\L\'od\'z}[Lodz]{Łódź}, and visit
  \@tstidx at if@notOT at ne
  {%
-   \tstidxutfplace{\'Swi\k{e}tokrzyskie}{Świętokrzyskie}%
+   \tstidxutfplace{\'Swi\k{e}tokrzyskie}[Swietokrzyskie]{Świętokrzyskie}%
    \ifxetex
    \else
      \ifluatex
@@ -3744,7 +4164,8 @@
        because of the \tstidxword{ogonek} and
        will be omitted if you use the default 
        \tstidxsubword{font encoding}{OT1}
-       encoding, but not if you use the \tstidxsty{fontenc} package with, 
+       encoding, but not if you use the \tstidxsty{fontenc} 
+       package\tstindexstysee{fontenc}{seealso}{inputenc} with, 
        for example, the \tstidxstyopt{fontenc}{T1} option)%
      \fi
    \fi,
@@ -3752,31 +4173,35 @@
  {%
    [a place with an \tstidxword{ogonek} has been omitted because this document
     is using the default \tstidxsubword{font encoding}{OT1} font 
-   encoding\tstidxdash try loading \tstidxsty{fontenc} with the 
+   encoding\tstidxdash try loading the \tstidxsty{fontenc}
+   package\tstindexstysee{fontenc}{seealso}{inputenc} with the 
    \tstidxstyopt{fontenc}{T1} option],
  }%
- \tstidxutfplace{\.Zory}{Żory},
- \tstidxutfplace{\.Zelech\'ow}{Żelechów},
- \tstidxutfplace{\L obez}{Łobez},
- \tstidxutfplace{G\l og\'ow}{Głogów}
+ \tstidxutfplace{\.Zory}[Zory]{Żory},
+ \tstidxutfplace{\.Zelech\'ow}[Zelechow]{Żelechów},
+ \tstidxutfplace{\L obez}[Lobez]{Łobez},
+ \tstidxutfplace{G\l og\'ow}[Glogow]{Głogów}
  (not to be confused with \tstidxplace{Glasgow}),
- \tstidxutfplace{\'Cmiel\'ow}{Ćmielów},
- \tstidxutfplace{\'Scinawa}{Ścinawa}
+ \tstidxutfplace{\'Cmiel\'ow}[Cmielow]{Ćmielów},
+ \tstidxutfplace{\'Scinawa}[Scinawa]{Ścinawa}
  and
- \tstidxutfplace{\'Swidnica}{Świdnica}.
+ \tstidxutfplace{\'Swidnica}[Swidnica]{Świdnica}.
  Then let's \tstidxword{sail} to \tstidxplace{Iceland} (possibly in
  a \tstidxword{ship}) and visit the lakes of
  \tstidxplace{Iceland}, such as 
- \tstidxutfplace{\"Olvesvatn}{Ölvesvatn},
- \tstidxutfplace{\'Ulfsvatn}{Úlfsvatn},
- \tstidxutfplace{\'Anavatn}{Ánavatn},
- \tstidxutfplace{M\'asvatn}{Másvatn},
+ \tstidxutfplace{\"Olvesvatn}[Olvesvatn]{Ölvesvatn},
+ \tstidxutfplace{\'Ulfsvatn}[Ulfsvatn]{Úlfsvatn},
+ \tstidxutfplace{\'Anavatn}[Anavatn]{Ánavatn},
+ \tstidxutfplace{M\'asvatn}[Masvatn]{Másvatn},
  \@tstidx at if@notOT at ne
  {%
-   \tstidxutfplace{\th r\'hyrningsvatn}{Þríhyrningsvatn}
-   (that one starts with a \tstidxutfword{thorn (\th)}{thorn (Þ)}),
-   \tstidxutfplace{Sigr\'i\dh arsta\dh avatn}{Sigríðarstaðavatn}
-   (that one has an \tstidxutfword{eth \dh}{eth ð}%
+   \tstidxutfplace{\TH r\'{\i}hyrningsvatn}[Thrihyrningsvatn]{Þríhyrningsvatn}
+   (that one starts with a 
+    \tstidxutfword{thorn (\th)}[thorn]{thorn (þ)}%
+    \tstindexutfsee{\th}{þ}[thornletter]{see}[thorn]{thorn (\th)}{thorn (þ)}),
+   \tstidxutfplace{Sigr\'{\i}\dh arsta\dh avatn}[Sigridharstadhavatn]{Sigríðarstaðavatn}
+   (that one has an \tstidxutfword{eth (\dh)}[eth]{eth (ð)}%
+   \tstindexutfsee{\dh}{ð}[ethletter]{see}[eth]{eth (\dh)}{eth (ð)}%
    \ifxetex
     )%
    \else
@@ -3794,10 +4219,10 @@
    default \tstidxword{OT1} \tstidxword{font encoding}\tstidxdash try loading 
    \tstidxsty{fontenc} with the \tstidxstyopt{fontenc}{T1} option],
  }%
- \tstidxutfplace{Gr\ae navatn}{Grænavatn},
- \tstidxutfplace{\'Arnesl\'on}{Árneslón}
+ \tstidxutfplace{Gr\ae navatn}[Graenavatn]{Grænavatn},
+ \tstidxutfplace{\'Arnesl\'on}[Arneslon]{Árneslón}
  and
- \tstidxutfplace{\'Ish\'olsvatn}{Íshólsvatn}.
+ \tstidxutfplace{\'Ish\'olsvatn}[Isholsvatn]{Íshólsvatn}.
  If you are using this with \tstidxapp{xindy} and
  \tstidxword{UTF-8}, try this out with a different language option,
  for example \tstidxappopt{xindy}{-L swedish} or 
@@ -3822,36 +4247,61 @@
    \else
      \ifluatex
      \else
-       \space You currently have the 
-       \@tstidx at ifsanitize
-       {\tstidxstyopt{testidx}{sanitize} option on.
-        This means that the words containing \tstidxword{UTF-8} characters will
-        first be sanitized before being passed to \tstidxcs{tstindex}, which 
-        will allow you to test how well the \tstidxphrase{indexing application} 
-        sorts \tstidxword{UTF-8} characters. If you'd rather test how 
-        \tstidxcs{index} writes these characters to the file read by the 
-        indexing application, use the \tstidxstyopt{testidx}{nosanitize}
-        option instead. This may cause the \tstidxword{UTF-8} characters to be
-        written in terms of \tstidxcs{IeC}.%
-       }%
-       {\tstidxstyopt{testidx}{nosanitize} option on.
-        This means that the words containing \tstidxword{UTF-8} characters 
-        may be written to the file processed by the 
-        \tstidxphrase{indexing application} in terms of
-        \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves. 
-        If you'd rather test how the indexing application sorts
-        \tstidxword{UTF-8} characters, use the \tstidxstyopt{testidx}{sanitize}
-        option instead, which will sanitize the \tstidxword{UTF-8} characters
-        before passing them to \tstidxcs{tstindex}.%
-       }
+       \@tidx at sanitizenote
      \fi
    \fi
  }%
- {}%
+ { No UTF-8 support has been detected for this document.\@tidx at stripaccentsnote}%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at sanitizenote}
 %    \begin{macrocode}
+\newcommand{\@tidx at sanitizenote}{%
+ \space You currently have the 
+ \@tstidx at ifsanitize
+ {\tstidxstyopt{testidx}{sanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters will
+  first be sanitized before being passed to \tstidxcs{tstindex}, which 
+  will allow you to test how well the \tstidxphrase{indexing application} 
+  sorts \tstidxword{UTF-8} characters. If you'd rather test how 
+  \tstidxcs{index} writes these characters to the file read by the 
+  indexing application, use the \tstidxstyopt{testidx}{nosanitize}
+  option instead. This may cause the \tstidxword{UTF-8} characters to be
+  written in terms of \tstidxcs{IeC}.%
+ }%
+ {\tstidxstyopt{testidx}{nosanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters 
+  may be written to the file processed by the 
+  \tstidxphrase{indexing application} in terms of
+  \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves. 
+  If you'd rather test how the indexing application sorts
+  \tstidxword{UTF-8} characters, use the \tstidxstyopt{testidx}{sanitize}
+  option instead, which will sanitize the \tstidxword{UTF-8} characters
+  before passing them to \tstidxcs{tstindex}.%
+ }%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at stripaccentsnote}
+%    \begin{macrocode}
+\newcommand{\@tidx at stripaccentsnote}{%
+ \space The \tstidxstyopt{testidx}{stripaccents} package option will
+  effectively do, for example, 
+  \texttt{\string\index\char`\{elite@\string\'elite\char`\}}
+   whereas the 
+  \tstidxstyopt{testidx}{nostripaccents} package option will
+  effectively do, for example, 
+  \texttt{\string\index\char`\{\string\'elite\char`\}}.
+  These options have no effect in UTF-8 mode.%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at par@viii}
+%    \begin{macrocode}
 \tstidxnewblock
 {%
   Don't forget there's also a \tstidxphrase{number group}, so let's
@@ -3865,16 +4315,7 @@
   \tstidxword{even} \tstidxword{prime number}). A \tstidxword{century} in 
   \tstidxword{cricket} means \tstidxnumber{100} runs, and in the
   \tstidxword{calendar} \tstidxnumber{100} years.
-  If you're using \tstidxapp{xindy}, you can provide a numbers group 
-  by adding the following to your \texttt{.xdy} module:
-\begin{flushleft}\ttfamily
-(define-letter-group \string"Numbers\string"\par
-   \string:prefixes (\string"0\string" \string"1\string" \string"2\string"
-\string"3\string" \string"4\string" \string"5\string"
-\string"6\string" \string"7\string" \string"8\string"
-\string"9\string")\par
-   \string:before \string"A\string")
-\end{flushleft}
+  \@tidx at numberlettergroup 
   Whilst we're on the subject of numbers, let's try out some
   equations.
 \begin{equation}
@@ -3885,12 +4326,15 @@
    Since this document is using \tstidxsty{amsmath}, let's try out
 the \tstidxenv{align} environment:
 \begin{align}
-\tstidxmath{f(x)}{f(\protect\vec{x})} &=
+\tstidxmath{f(x)}[fx]{f(\protect\vec{x})} &=
  \tstidxmathsym{alpha}{\protect\alpha}
  \tstidxmathsym{sum}{\protect\sum}_i^{\tstidxmath{n}{n}} x_i
 +\tstidxmathsym{beta}{\protect\beta} \sum_{i}^n x_i^2
-+\tstidxmathsym{gamma}{\protect\gamma}
++\tstidxmathsym{gamma}{\protect\gamma}\\
+ \frac{\tstidxmathsym{partial}{\protect\partial}f}{\partial x_j} &=
+  \alpha + 2\beta x_j
 \end{align}
+   \@tidx at scriptnote
    If this document hadn't loaded the \tstidxsty{amsmath} package,
 we would have had to use the \tstidxenv{eqnarray} environment
 instead.
@@ -3903,29 +4347,98 @@
  \tstidxmathsym{alpha}{\protect\alpha}
  \tstidxmathsym{sum}{\protect\sum}_i^{\tstidxmath{n}{n}} x_i
 +\tstidxmathsym{beta}{\protect\beta} \sum_{i}^n x_i^2
-+\tstidxmathsym{gamma}{\protect\gamma}
++\tstidxmathsym{gamma}{\protect\gamma}\\
+ \frac{\tstidxmathsym{partial}{\protect\partial}f}{\partial x_j} &=&
+  \alpha + 2\beta x_j
 \end{eqnarray}
+   \@tidx at scriptnote
    If you load the \tstidxsty{amsmath} package, we'll test the 
    \tstidxenv{align} environment instead.
   }%
+  Incidentally, that's just a regular partial derivative symbol 
+  $\tstidxmathsym{partial}{\protect\partial}$. Not to be confused
+  with the spin-weighted partial derivative
+  \@tstidx at ifamssymb{$\tstidxmathsym{eth}[spinderiv]{\protect\eth}$,
+   which can be displayed here as this document has loaded the 
+   \tstidxsty{amssymb} package}
+  {[you need the \tstidxsty{amssymb} package for that symbol]}.
+ \@tidx at mathslettergroup
+ \iftestidxprefix
+ I've done something similar with the \tstidxwordpl{marker} where I've used
+ \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
+ \else
+ With the prefixes on I can also do something similar with the 
+ \tstidxwordpl{marker} where I'll use
+ \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at scriptnote}
+%    \begin{macrocode}
+\newcommand{\@tidx at scriptnote}{%
+  (Note how the subscripts and superscripts can be affected
+  by material inserted between the symbol and the sub- and
+  superscripts.)
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at numberlettergroup}
+%    \begin{macrocode}
+\newcommand*{\@tidx at numberlettergroup}{%
+  If you're using \tstidxapp{xindy}, you can provide a numbers group 
+  by adding the following to your \texttt{.xdy} module:
+\begin{flushleft}\ttfamily
+(define-letter-group \string"Numbers\string"\par
+   \string:prefixes (\string"0\string" \string"1\string" \string"2\string"
+\string"3\string" \string"4\string" \string"5\string"
+\string"6\string" \string"7\string" \string"8\string"
+\string"9\string")\par
+   \string:before \string"A\string")
+\end{flushleft}
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at mathslettergroup}
+%    \begin{macrocode}
+\newcommand*{\@tidx at mathslettergroup}{%
+ \iftestidxprefix
   Now I've been a bit fancy here and inserted
   \texttt{\tstidxmathsymprefix} in front of
   the sort key so I can get \tstidxapp{xindy} to create a special
-group for the maths symbols. Here's the code you can add to your
-\texttt{.xdy} file to implement it:
+  group for the maths symbols.  Here's
+ \else
+  This document has used the \tstidxstyopt{testidx}{noprefix}
+  package option, which has switched of the sort prefixes.
+  If you use the \tstidxstyopt{testidx}{prefix} option I can be a
+  bit fancy here and insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  When you switch on the prefixes here's
+ \fi
+the code you can add to your \texttt{.xdy} file to implement it:
 \begin{flushleft}\ttfamily
 (define-letter-group \string"Maths\string"
    \string:prefixes (\string"\tstidxmathsymprefix\string")
    \string:before \string"Numbers\string")
 \end{flushleft}
- I've done something similar with the \tstidxword{marker}s where I've used
- \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@ix}
 %    \begin{macrocode}
 \tstidxnewblock*{\@tidx at closerangepar}%
 {%
+%    \end{macrocode}
+%This isn't really a UTF-8 word but it needs a different label to
+%avoid clashing with \qt{recover}.
+%    \begin{macrocode}
+ Let's \tstidxutfword{re-cover}[reecover]{re-cover} old ground and 
+ talk about ranges again.
  This is the end of the \tstidxcloseword{range}
  \tstidxword{example} from \tstidxword{block}~\@tidx at openrangepar.
  There's not much else to say about this \tstidxword{block} really.
@@ -3935,7 +4448,9 @@
  possibly, but I'm not going to \tstidxphrase{hold my breath}.%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@x}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -3945,7 +4460,8 @@
   \tstidxphrase{letter groups}, and I've run out of anything 
   \tstidxword{quaint} to say, so I'm going to have to
   \tstidxword{yatter} for a while longer, which will probably make
-  you \tstidxword{yawn}. What shall we talk about? My \tstidxword{quirky}
+  you \tstidxword{yawn} and fall \tstidxword{asleep}. 
+  What shall we talk about? My \tstidxword{quirky}
   \tstidxword{badinage} is about to \tstidxword{expire}. How about a
   \tstidxword{story}? Here's one I made up for my friend
   \tstidxperson{Paulo}{Cereda} in \tstidxsym{TeX}{\TeX}.SE chat because he likes
@@ -3956,7 +4472,7 @@
   first story in 
   \tstidxartbook{The}{Adventures of Sir Quackalot}.
   It's a \tstidxword{tale} of \tstidxword{adventure} and 
-  \tstidxword{daring-do}. The \tstidxword{hero} of the 
+  \tstidxword{derring-do}. The \tstidxword{hero} of the 
   \tstidxword{story} is \tstidxperson{Sir}{Quackalot}, in case you
   can't tell from the \tstidxword{title}.
   \tstidxphrase{Once upon a time}, a long time ago in 
@@ -3979,7 +4495,9 @@
   \tstidxword{reference}.)%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xi}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -3995,9 +4513,9 @@
  \tstidxphrase{across the pond}) of which was 
  suspended \tstidxartphrase{the}{Mighty Helm of Knuth}, but 
  \tstidxperson{Sir}{Quackalot} was learned in the \tstidxword{lore} of
- installing \tstidxapp{Perl} and was able to leap upon the 
+ installing \tstidxapp{Perl} and was able to leap upon the \tstidxword{magical}
  \tstidxword{raft} \tstidxapp{makeglossaries} and steer his way through the 
- \tstidxword{external} \tstidxphrase{indexing application}s and their many 
+ \tstidxword{external} \tstidxphrasepl{indexing application} and their many 
  arguments.  (That's supposed to be a \tstidxword{pun}, but it's 
  \tstidxphrase{bad form} to explain the \tstidxword{joke}, and it
  wasn't even particularly \tstidxword{witty}.
@@ -4009,7 +4527,9 @@
  do with \tstidxphrase{Monty Python}.)%
 } 
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xii}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -4028,7 +4548,9 @@
  \tstidxword{butterfly} \tstidxword{motif}.)%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xiii}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -4036,7 +4558,7 @@
 \tstidxartphrase{the}{Mighty Helm of Knuth} and
 raced past into the \tstidxword{vale}, where he found 
 \tstidxartphrase{the}{Legendary Sword} \tstidxword{xor} in
-the centre of the great \tstidxsty{longtable}. (Ooh, I've started a 
+the centre of the great \tstidxsty{longtable}. (\tstidxword{Ooh}, I've started a 
 \tstidxword{sentence} with a \tstidxword{conjunction}. 
 How \tstidxword{naughty} is that?)
 With a great \tstidxword{leap} and a \tstidxword{bound}, 
@@ -4051,7 +4573,9 @@
 \tstidxword{block}.)%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xiv}
 %    \begin{macrocode}
 \tstidxnewblock*{\@tidx at close@testidxsty}%
 {%
@@ -4065,12 +4589,12 @@
 \tstidxperson{Sir}{Quackalot} rescued \tstidxartphrase{the}{Golden Arara} 
 and the \tstidxword{land} was once more restored to \tstidxword{peace} and 
 \tstidxword{harmony} and 
-\tstidxword{paragraph}s were able to \tstidxword{span} 
-\tstidxphrase{page break}s without \tstidxword{fear}. 
+\tstidxwordpl{paragraph} were able to \tstidxword{span} 
+\tstidxphrasepl{page break} without \tstidxword{fear}. 
 \tstidxartphrase{The}{End}. Don't miss the next \tstidxword{thrilling} 
 \tstidxword{adventure} \tstidxbook{Sir Quackalot and the Hyper Lake of Doom}
-where our \tstidxphrase{intrepid hero}%
-\tstindexsubsee{hero}{intrepid}{see}{intrepid hero} meets a \tstidxword{quixotic}
+where our \tstidxword{seaborne} \tstidxphrase{intrepid hero}%
+\tstindexsubsee{hero}{intrepid}[hero.intrepid]{see}{intrepid hero} meets a \tstidxword{quixotic}
 \tstidxword{seal} with a \tstidxword{zither} (a \tstidxword{zealous}
 \tstidxword{fan} of \tstidxartfilm{The}{Third Man}), a \tstidxword{youthful} 
 \tstidxphrase{sea lion} with a \tstidxword{magic}
@@ -4078,18 +4602,27 @@
 \tstidxword{warrior} with a \tstidxword{laser-guided}
 \tstidxphrase{sealant gun}. Can they defeat the
 \tstidxword{villainous}, \tstidxword{zany} \tstidxword{zoologist}
-sailing a \tstidxword{xebec} bearing canisters of
+sailing a \tstidxword{xebec} across the \tstidxword{sea} bearing canisters of
 \tstidxword{xenon}, \tstidxword{xylem} and \tstidxword{xylene}?
-Oh, \tstidxword{zounds}! He's wearing a \tstidxphrase{zoot suit}
-and smoking a \tstidxword{zucchini} whilst playing a \tstidxword{xylophone}. 
+Oh, \tstidxword{zounds}! He's \tstidxword{ashore} wearing 
+a \tstidxphrase{zoot suit} and smoking a \tstidxword{zucchini} 
+whilst playing a \tstidxword{xylophone}. 
 As one \tstidxphrase{anonymous reviewer} said, 
 it's as \tstidxword{exhilarating} as watching a \tstidxword{yuppie}
 eating a \tstidxphrase{yule log} soaked in \tstidxphrase{yoghurt}.
 Hmm, \tstidxword{yummy}\tstidxdash or \tstidxword{yuck}, depending
-on your tastes.% 
+on your tastes. Don't forget to \tstidxword{check} you
+have some \tstidxword{chalk} so we can write
+\tstidxword{ddisgynedig} and \tstidxword{ddyrchafedig}
+in \tstidxplace{Nghaerdydd} (over in \tstidxplace{Nghymru})
+because I want a few more words with \tstidxwordpl{digraph},
+and then we can take a \tstidxword{ffotograff} of
+\tstidxplace{Ffestiniog}.% 
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xv}
 %    \begin{macrocode}
 \tstidxnewblock
 {%
@@ -4109,11 +4642,13 @@
  \tstidxbook{Compact Oxford English Dictionary} (third edition,
  revised) for these words are: vice admiral, vice chancellor, vice-president, 
  \tstidxword{viceregal}, viceroy, vice versa. Quick 
- \tstidxword{quizz}. Can you get \tstidxapp{makeindex} or
+ \tstidxword{quiz}. Can you get \tstidxapp{makeindex} or
  \tstidxapp{xindy} to reproduce that order?%
 }
 %    \end{macrocode}
+%\end{macro}
 %
+%\begin{macro}{\@tidx at par@xvi}
 %    \begin{macrocode}
 \tstidxnewblock*{\@tidx at close@testidxsty}%
 {%
@@ -4123,10 +4658,8947 @@
  Fun, wasn't it?%
 }
 %    \end{macrocode}
+%\end{macro}
 %\iffalse
 %    \begin{macrocode}
 %</testidx.sty>
 %    \end{macrocode}
 %\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries.sty>
+%    \end{macrocode}
+%\fi
+%\section{Support for \styfmt{glossaries}}
+%This package allows the dummy text to work with the
+%\sty{glossaries} (or \sty{glossaries-extra}) package.
+%Instead of using \cs{index}, the entries are first defined
+%and then used in the dummy text.
+%    \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{testidx-glossaries}[2017/08/11 v1.1 (NLCT)]
+%    \end{macrocode}
+%
+%\begin{macro}{\tstidx at glossariespkg}
+%\changes{1.1}{2017-08-11}{new}
+%By default just load \sty{glossaries}.
+%    \begin{macrocode}
+\newcommand*{\tstidx at glossariespkg}{glossaries}
+%    \end{macrocode}
+%\end{macro}
+% Pass options to \sty{glossaries}, unless \sty{glossaries} has
+% already been loaded, in which case use \cs{setupglossaries}
+%\begin{macro}{\tstidx at setupglossaries}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\@ifpackageloaded{glossaries}
+{%
+  \newcommand*{\tstidx at setupglossaries}[1]{\setupglossaries{#1}}%
+}%
+{%
+  \newcommand*{\tstidx at setupglossaries}[1]{%
+    \PassOptionsToPackage{#1}{glossaries}%
+  }
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at setupglossariesextra}
+%\changes{1.1}{2017-08-11}{new}
+%For options specific to \sty{glossaries-extra}.
+%    \begin{macrocode}
+\@ifpackageloaded{glossaries-extra}
+{%
+  \newcommand*{\tstidx at setupglossariesextra}[1]{\glossariesextrasetup{#1}}%
+}%
+{%
+  \newcommand*{\tstidx at setupglossariesextra}[1]{%
+    \PassOptionsToPackage{#1}{glossaries-extra}%
+  }
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at usemakegloss}
+%    \begin{macrocode}
+\newcommand*{\tstidx at usemakegloss}{\PackageError{testidx-glossaries}{You
+need to put \string\tstidxmakegloss\MessageBreak in the preamble in order
+to use\MessageBreak \string\testidx\space with testidx-glossaries}{}}
+%    \end{macrocode}
+%\end{macro}
+%
+%Need to know whether to use \cs{makeglossaries},
+%\cs{makenoidxglossaries}, \cs{GlsXtrLoadResources}.
+%\begin{macro}{\tstidxmakegloss}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxmakegloss}[1][]{%
+ \@tstidx at ifgerman{\GlsSetQuote{+}}{}%
+ \tstidxdefaultmakegloss
+}
+%    \end{macrocode}
+%\end{macro}
+%Similarly for displaying the glossary.
+%\begin{macro}{\tstidxprintglossaries}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxprintglossaries}{\printglossaries}
+%    \end{macrocode}
+%\end{macro}
+%
+%Similarly for displaying the glossary.
+%\begin{macro}{\tstidxprintglossary}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxprintglossary}{\printglossary}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxtexfiles}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxtexfiles}{testidx-glossaries-samples,\tstidxglyphfile}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxbasebibfiles}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxbasebibfiles}{testidx-glossaries-samples}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxasciibibfiles}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxasciibibfiles}{testidx-glossaries-samples-ascii}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxutfbibfiles}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxutfbibfiles}{testidx-glossaries-samples-utf8}
+%    \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\tstidxloadsamples}
+%\changes{1.1}{2017-08-11}{new}
+%Set up \cs{tstidxmakegloss} to use \cs{makenoidxglossaries}
+%(use \TeX\ to sort and collate).
+%    \begin{macrocode}
+\newcommand*{\tstidxloadsamples}{%
+ \@for\tstidxfile:=\tstidxtexfiles\do{\input{\tstidxfile}}%
+ \renewcommand*{\tstidx at usemakegloss}{}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\tstidxdefaultmakegloss}
+%\changes{1.1}{2017-08-11}{new}
+%Set up \cs{tstidxmakegloss} to use \cs{makeglossaries}
+%(either \app{makeindex} or \app{xindy}).
+%    \begin{macrocode}
+\newcommand*{\tstidxdefaultmakegloss}{%
+ \makeglossaries
+ \tstidxloadsamples
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnoidxmakegloss}
+%\changes{1.1}{2017-08-11}{new}
+%Set up \cs{tstidxmakegloss} to use \cs{makenoidxglossaries}
+%(use \TeX\ to sort and collate).
+%    \begin{macrocode}
+\newcommand*{\tstidxnoidxmakegloss}{%
+ \makenoidxglossaries
+ \tstidxloadsamples
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxbibmakegloss}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxbibmakegloss}[1]{%
+  \def\@tstidx at resourceargs{}%
+  \@tstidx at ifutfviii
+  {%
+    \def\@tstidx at resource@src{\tstidxbasebibfiles,%
+      \tstidxutfbibfiles,%
+      \tstidxglyphfile-utf8}%
+  }%
+  {%
+    \def\@tstidx at resource@src{\tstidxbasebibfiles,%
+      \tstidxasciibibfiles,%
+       testidx-glossaries-nodiglyphs}%
+  }%
+  \if at tstidx@setdescription
+    \if at tstidx@useglsseekey
+      \def\@tstidx at resourceargs{selection={recorded and deps and see}}%
+    \else
+      \def\@tstidx at resourceargs{ignore-fields={see,seealso}}%
+    \fi
+  \else
+    \if at tstidx@useglsseekey
+      \def\@tstidx at resourceargs{%
+        selection={recorded and deps and see},
+        ignore-fields={description}}%
+    \else
+      \def\@tstidx at resourceargs{%
+        ignore-fields={description,see,seealso}}%
+    \fi
+  \fi
+  \iftestidxprefix
+    \tstidxloadglsresource{src={testidx-glossaries-mathsym},%
+      group={Maths},sort={letter-case},\@tstidx at resourceargs}%
+    \tstidxloadglsresource{src={testidx-glossaries-markers},%
+      group={Markers},sort={letter-case},\@tstidx at resourceargs}%
+    \iftstidxnumbergroup
+      \tstidxloadglsresource{src={testidx-glossaries-numbers},%
+        sort={integer},\@tstidx at resourceargs}%
+      \tstidxloadglsresource{src={\@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \else
+      \tstidxloadglsresource{src={testidx-glossaries-numbers,%
+         \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \fi
+  \else
+    \iftstidxnumbergroup
+      \tstidxloadglsresource{src={testidx-glossaries-numbers},%
+        sort={integer},\@tstidx at resourceargs}%
+      \tstidxloadglsresource{%
+        src={testidx-glossaries-mathsym,%
+             testidx-glossaries-markers,%
+            \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \else
+      \tstidxloadglsresource{%
+        src={testidx-glossaries-mathsym,%
+             testidx-glossaries-markers,%
+             testidx-glossaries-numbers,%
+            \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \fi
+  \fi
+  \renewcommand*{\tstidx at usemakegloss}{}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxloadglsresource}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand{\tstidxloadglsresource}[1]{%
+  \iftestidxverbose
+    \PackageInfo{testidx-glossaries}{\string\GlsXtrLoadResources[#1]}%
+  \fi
+  \GlsXtrLoadResources[#1]%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%
+%Determine whether to use the "see" (and "seealso") key or \cs{glssee}.
+%\begin{macro}{if at tstidx@useglsseekey}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newif\if at tstidx@useglsseekey
+\@tstidx at useglsseekeytrue
+%    \end{macrocode}
+%\end{macro}
+%
+%    \begin{macrocode}
+\DeclareOption{seekey}{\@tstidx at useglsseekeytrue}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\DeclareOption{noseekey}{\@tstidx at useglsseekeyfalse}
+%    \end{macrocode}
+%
+%Determine whether to provide descriptions for the sample entries.
+%\begin{macro}{if at tstidx@setdescription}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newif\if at tstidx@setdescription
+\@tstidx at setdescriptionfalse
+%    \end{macrocode}
+%\end{macro}
+%
+%    \begin{macrocode}
+\DeclareOption{desc}{\@tstidx at setdescriptiontrue}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\DeclareOption{nodesc}{\@tstidx at setdescriptionfalse}
+%    \end{macrocode}
+%
+%Load \sty{glossaries-extra}:
+%    \begin{macrocode}
+\DeclareOption{extra}{\renewcommand*{\tstidx at glossariespkg}{glossaries-extra}}
+%    \end{macrocode}
+%Don't load \sty{glossaries-extra}:
+%    \begin{macrocode}
+\DeclareOption{noextra}{\renewcommand*{\tstidx at glossariespkg}{glossaries}}
+%    \end{macrocode}
+%\begin{macro}{\@testidx at ifusebibgls}
+% Determine if the \pkgopt{bib2gls} option was used.
+%    \begin{macrocode}
+\newcommand*{\@testidx at ifusebibgls}[2]{#2}
+%    \end{macrocode}
+%\end{macro}
+% Use makeindex:
+%    \begin{macrocode}
+\DeclareOption{makeindex}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \tstidx at setupglossaries{makeindex}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \@tstidx at ifgerman{\GlsSetQuote{+}}{}%
+    \tstidxdefaultmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printglossary}%
+}
+%    \end{macrocode}
+% Use xindy:
+%    \begin{macrocode}
+\DeclareOption{xindy}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \tstidx at setupglossaries{xindy}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxdefaultmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printglossary}%
+}
+%    \end{macrocode}
+% Use TeX:
+%    \begin{macrocode}
+\DeclareOption{tex}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxnoidxmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printnoidxglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printnoidxglossary}%
+}
+%    \end{macrocode}
+%
+% Use bib2gls (requires \sty{glossaries-extra}):
+%    \begin{macrocode}
+\DeclareOption{bib2gls}{%
+  \renewcommand*{\tstidx at glossariespkg}{glossaries-extra}%
+  \let\@testidx at ifusebibgls\@firstoftwo
+  \tstidx at setupglossariesextra{record}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxbibmakegloss{#1}%
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printunsrtglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printunsrtglossary}%
+}
+%    \end{macrocode}
+%Indicate that \cs{tstidxmakegloss} won't be used:
+%    \begin{macrocode}
+\DeclareOption{manual}{%
+ \renewcommand*{\tstidx at usemakegloss}{}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxmakegloss\space
+     disabled by `manual' package option}%
+  }%
+  \renewcommand*{\tstidxprintglossaries}{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxprintglossaries\space
+     disabled by `manual' package option}%
+  }%
+  \renewcommand*{\tstidxprintglossary}{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxprintglossary\space
+     disabled by `manual' package option}%
+  }%
+}
+%    \end{macrocode}
+%
+%\begin{macro}{\newif\iftstidxnumbergroup}
+%    \begin{macrocode}
+\newif\iftstidxnumbergroup
+\tstidxnumbergrouptrue
+%    \end{macrocode}
+%    \begin{macrocode}
+\DeclareOption{noglsnumbers}{\tstidxnumbergroupfalse}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\DeclareOption{glsnumbers}{\tstidxnumbergrouptrue}
+%    \end{macrocode}
+%Pass remaining options to \sty{testidx}:
+%    \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{testidx}}
+%    \end{macrocode}
+%Process options:
+%    \begin{macrocode}
+\ProcessOptions
+%    \end{macrocode}
+%Load required packages.
+%    \begin{macrocode}
+\RequirePackage{testidx}
+%    \end{macrocode}
+%Pass options to \sty{glossaries} according to the options 
+%passed to \sty{testidx}.
+%    \begin{macrocode}
+\@tstidx at ifsanitize
+ {\tstidx at setupglossaries{sanitizesort=true}}
+ {\tstidx at setupglossaries{sanitizesort=false}}
+%    \end{macrocode}
+%Load \sty{glossaries} (or \sty{glossaries-extra}, which internally
+%loads \sty{glossaries}).
+%    \begin{macrocode}
+\RequirePackage{\tstidx at glossariespkg}
+%    \end{macrocode}
+%Load \sty{glossary-mcols} so the default glossary style can be set to "mcolindexgroup".
+%    \begin{macrocode}
+\RequirePackage{glossary-mcols}
+%    \end{macrocode}
+%Set the default style according to whether or not the entries
+%should include descriptions.
+%    \begin{macrocode}
+\if at tstidx@setdescription
+ \setupglossaries{nopostdot=false}
+ \setglossarystyle{indexgroup}
+\else
+ \setupglossaries{nopostdot}
+ \setglossarystyle{mcolindexgroup}
+\fi
+%    \end{macrocode}
+%Implement number group setting if \pkgopt{xindy} setting on.
+%    \begin{macrocode}
+\ifglsxindy
+\iftstidxnumbergroup
+   \gls at xindy@glsnumberstrue
+  \else
+   \gls at xindy@glsnumbersfalse
+  \fi
+\fi
+%    \end{macrocode}
+% Check if the "seealso" key is available:
+%\begin{macro}{\if at tstidx@hasseealsokey}
+%    \begin{macrocode}
+\newif\if at tstidx@hasseealsokey
+\key at ifundefined{glossentry}{seealso}%
+{\@tstidx at hasseealsokeyfalse}
+{\@tstidx at hasseealsokeytrue}
+%    \end{macrocode}
+%\end{macro}
+%
+%Check if verbose mode is on.
+%    \begin{macrocode}
+\iftestidxverbose
+%    \end{macrocode}
+%\begin{macro}{\@testidx at writeglsinfo}
+%If \pkgopt{verbose} mode is on write entry information to the log file.
+%    \begin{macrocode}
+ \appto\@newglossaryentryposthook{\@testidx at writeglsinfo}
+ \newcommand\@testidx at writeglsinfo{%
+   \letcs{\@tstidx at sort}{glo@\glsdetoklabel{\@glo at label}@sort}%
+   \@onelevel at sanitize\@tstidx at sort
+   \letcs{\@tstidx at name}{glo@\glsdetoklabel{\@glo at label}@name}%
+   \@onelevel at sanitize\@tstidx at name
+   \letcs{\@tstidx at text}{glo@\glsdetoklabel{\@glo at label}@text}%
+   \@onelevel at sanitize\@tstidx at text
+   \ifcsdef{glo@\glsdetoklabel{\@glo at label}@parent}%
+   {\letcs\@tstidx at parent{glo@\glsdetoklabel{\@glo at label}@parent}}%
+   {\def\@tstidx at parent{}}%
+   \PackageInfo{testidx-glossaries}{new term label={\@glo at label},
+    \MessageBreak
+    name={\@tstidx at name},
+    \MessageBreak
+    sort={\@tstidx at sort},
+    \MessageBreak
+    text={\@tstidx at text}, 
+    \MessageBreak
+    parent={\@tstidx at parent},
+    \MessageBreak
+    see={\@glo at see}%
+    \if at tstidx@hasseealsokey
+      ,\MessageBreak
+      seealso={\@glo at seealso}
+    \fi
+    \MessageBreak
+    }%
+ }
+%    \end{macrocode}
+%\end{macro}
+%
+%If verbose mode is on, write information if \TeX\ is used to sort
+%the entries.
+%\begin{macro}{\@glo at sortedinsert}
+%    \begin{macrocode}
+ \let\tstidx at org@glo at sortedinsert\@glo at sortedinsert
+ \renewcommand{\@glo at sortedinsert}[2]{%
+   \typeout{#2}%
+   \tstidx at org@glo at sortedinsert{#1}{#2}%
+ }
+%    \end{macrocode}
+%\end{macro}
+%    \begin{macrocode}
+\fi
+%    \end{macrocode}
+%Write a warning message when \TeX\ is about to sort the entries, so
+%the user doesn't think the build process has hung. This is already
+%implemented in later versions of \sty{glossaries}, so check for the
+%command that issues the message.
+%\begin{macro}{\@glo at sortentries}
+%    \begin{macrocode}
+\ifdef\glosortentrieswarning
+{}
+{%
+  \let\tstidx at org@glo at sortentries\@glo at sortentries
+  \renewcommand{\@glo at sortentries}[2]{%
+    \typeout{Using TeX to sort entries---this may take a while}%
+    \tstidx at org@glo at sortentries{#1}{#2}%
+  }
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tstidx at usemakegloss}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at usemakegloss}{\tstidx at usemakegloss}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxtoidx}
+%\changes{1.1}{2017-08-11}{new}
+%Restore original indexing definitions.
+%    \begin{macrocode}
+\newcommand*{\tstidxtoidx}{%
+ \renewcommand*{\@tstidx at usemakegloss}{}%
+ \let\@tstindex\@tstidx at org@index
+ \let\@tstidxwordpl\@tstidx at org@wordpl
+ \let\@tstidxphrasepl\@tstidx at org@phrasepl
+ \let\@tstidxcs\@tstidx at org@cs
+ \let\@tstindexpost\@tstidx at org@indexpost
+ \let\@tstindexopenpost\@tstidx at org@indexopenpost
+ \let\@tstindexclosepost\@tstidx at org@indexclosepost
+ \let\@tstindexpre\@tstidx at org@indexpre
+ \let\@tstindexopenpre\@tstidx at org@indexopenpre
+ \let\@tstindexclosepre\@tstidx at org@indexclosepre
+ \let\@tstindexsee\@tstidx at org@indexsee
+ \let\@tstidx at indexsubsee\@tstidx at org@indexsubsee
+ \let\@tstidx at subindexpost\@tstidx at org@subindexpost
+ \let\@tstidx at subindexopenpost\@tstidx at org@subindexopenpost
+ \let\@tstidx at subindexclosepost\@tstidx at org@subindexclosepost
+ \let\@tstidx at subindexpre\@tstidx at org@subindexpre
+ \let\@tstidx at subindexopenpre\@tstidx at org@subindexopenpre
+ \let\@tstidx at subindexclosepre\@tstidx at org@subindexclosepre
+ \let\@@tstidx at subsubindexpost\@tstidx at org@subsubindexpost
+ \let\@@tstidx at subsubindexopenpost\@tstidx at org@subsubindexopenpost
+ \let\@@tstidx at subsubindexclosepost\@tstidx at org@subsubindexclosepost
+ \let\@@tstidx at subsubindexpre\@tstidx at org@subsubindexpre
+ \let\@@tstidx at subsubindexopenpre\@tstidx at org@subsubindexopenpre
+ \let\@@tstidx at subsubindexclosepre\@tstidx at org@subsubindexclosepre
+ \let\@tidx at par@i\@tidx at org@par at i
+ \let\@tidx at par@ii\@tidx at org@par at ii
+ \let\@tidx at par@iii\@tidx at org@par at iii
+ \let\@tidx at par@iv\@tidx at org@par at iv
+ \let\@tidx at par@vi\@tidx at org@par at vi
+ \let\@tidx at mathslettergroup\@tidx at org@mathslettergroup
+ \let\@tidx at numberlettergroup\@tidx at org@numberlettergroup
+ \let\@tidx at scriptnote\@tidx at org@scriptnote
+ \let\@tidx at sanitizenote\@tidx at org@sanitizenote
+ \let\@tidx at stripaccentsnote\@tidx at org@stripaccentsnote
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxtogls}
+%\changes{1.1}{2017-08-11}{new}
+%Switch on glossary definitions.
+%    \begin{macrocode}
+\newcommand*{\tstidxtogls}{%
+ \renewcommand*{\@tstidx at usemakegloss}{\tstidx at usemakegloss}%
+ \let\@tstindex\@tstidx at org@index
+ \let\@tstidxwordpl\@tstidx at gls@wordpl
+ \let\@tstidxphrasepl\@tstidx at gls@phrasepl
+ \let\@tstidxcs\@tstidx at gls@cs
+ \let\@tstindexpost\@tstidx at gls@indexpost
+ \let\@tstindexopenpost\@tstidx at gls@indexopenpost
+ \let\@tstindexclosepost\@tstidx at gls@indexclosepost
+ \let\@tstindexpre\@tstidx at gls@indexpre
+ \let\@tstindexopenpre\@tstidx at gls@indexopenpre
+ \let\@tstindexclosepre\@tstidx at gls@indexclosepre
+ \let\@tstindexsee\@tstidx at gls@indexsee
+ \let\@tstidx at indexsubsee\@tstidx at gls@indexsubsee
+ \let\@tstidx at subindexpost\@tstidx at gls@subindexpost
+ \let\@tstidx at subindexopenpost\@tstidx at gls@subindexopenpost
+ \let\@tstidx at subindexclosepost\@tstidx at gls@subindexclosepost
+ \let\@tstidx at subindexpre\@tstidx at gls@subindexpre
+ \let\@tstidx at subindexopenpre\@tstidx at gls@subindexopenpre
+ \let\@tstidx at subindexclosepre\@tstidx at gls@subindexclosepre
+ \let\@@tstidx at subsubindexpost\@tstidx at gls@subsubindexpost
+ \let\@@tstidx at subsubindexopenpost\@tstidx at gls@subsubindexopenpost
+ \let\@@tstidx at subsubindexclosepost\@tstidx at gls@subsubindexclosepost
+ \let\@@tstidx at subsubindexpre\@tstidx at gls@subsubindexpre
+ \let\@@tstidx at subsubindexopenpre\@tstidx at gls@subsubindexopenpre
+ \let\@@tstidx at subsubindexclosepre\@tstidx at gls@subsubindexclosepre
+ \let\@tidx at par@i\@tidx at gls@par at i
+ \let\@tidx at par@ii\@tidx at gls@par at ii
+ \let\@tidx at par@iii\@tidx at gls@par at iii
+ \let\@tidx at par@iv\@tidx at gls@par at iv
+ \let\@tidx at par@vi\@tidx at gls@par at vi
+ \let\@tidx at mathslettergroup\@tidx at gls@mathslettergroup
+ \let\@tidx at numberlettergroup\@tidx at gls@numberlettergroup
+ \let\@tidx at scriptnote\@tidx at gls@scriptnote
+ \let\@tidx at sanitizenote\@tidx at gls@sanitizenote
+ \let\@tidx at stripaccentsnote\@tidx at gls@stripaccentsnote
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\testidx}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\renewcommand*{\testidx}{%
+  \@tstidx at usemakegloss
+  \@ifstar
+  {%
+    \def\@testidx at block@sep{\space}%
+    \@testidx
+  }%
+  {%
+    \def\@testidx at block@sep{\tstidxdefblocksep}%
+    \@testidx
+  }%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxglyphfile}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\iftestidxdiglyphs
+  \newcommand*{\tstidxglyphfile}{testidx-glossaries-diglyphs}
+\else
+  \newcommand*{\tstidxglyphfile}{testidx-glossaries-nodiglyphs}
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewentry}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewentry}\marg{label}\marg{category}\marg{key=value list}
+%\end{definition}
+%Defines a new entry. If the \sty{glossaries-extra} package has been
+%loaded, also set the category.
+%    \begin{macrocode}
+\@ifpackageloaded{glossaries-extra}
+{
+  \newcommand*{\tstidxnewentry}[3]{\newglossaryentry{#1}{category={#2},#3}}
+}
+{
+  \newcommand*{\tstidxnewentry}[3]{\newglossaryentry{#1}{#3}}
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\subsection{Indexing Command Modifications}
+%
+%Modify commands that index, so that they use the defined entries
+%instead.
+%
+%\begin{macro}{\@tstindex}
+%\changes{1.1}{2017-08-11}{new}
+%Do nothing
+%    \begin{macrocode}
+\newcommand*{\@tstidx at gls@index}[1]{}
+\let\@tstidx at org@index\@tstindex
+\let\@tstindex\@tstidx at gls@index
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxwordpl}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at gls@wordpl}[2]{%
+ {\def\tstidx at gls{\glspl}\def\tstidx at glsentry{\glsentryplural}%
+  \tstidxword[#1]{#2}%
+ }%
+}
+\let\@tstidx at org@wordpl\@tstidxwordpl
+\let\@tstidxwordpl\@tstidx at gls@wordpl
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxphrasepl}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at gls@phrasepl}[2]{%
+ {\def\tstidx at gls{\glspl}\def\tstidx at glsentry{\glsentryplural}%
+  \tstidxphrase[#1]{#2}%
+ }%
+}
+\let\@tstidx at org@phrasepl\@tstidxphrasepl
+\let\@tstidxphrasepl\@tstidx at gls@phrasepl
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxcs}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at gls@cs}[2]{%
+ \tstidxfmtpost{cs.#2}{\tstidxcsfmt}{#1}%
+}
+\let\@tstidx at org@cs\@tstidxcs
+\let\@tstidxcs\@tstidx at gls@cs
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at gls}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at gls}{\gls}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at glsentry}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at glsentry}{\glsentrytext}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at label}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at label}{\glslabel}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at encap}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at encap}{}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at range}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at range}{}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at openrange}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at openrange}{(}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at closerange}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at closerange}{)}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at levelmarker}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at levelmarker}[4]{%
+  \ifcsdef{glo@#1 at level}%
+  {%
+    \ifcase\csname glo@#1 at level\endcsname
+     #2\or#3\else#4%
+    \fi
+  }%
+  {%
+    #2%
+  }%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at post@glstextformat}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at post@glstextformat}[1]{%
+ \ifx\@tstidx at encap\@empty
+  \iftestidxshowmarks
+    \ifx\@tstidx at range\tstidx at openrange
+      \tstidxtext{#1%
+        \tstidx at levelmarker\@tstidx at label
+         \tstidxopenmarker
+         \tstidxopensubmarker
+         \tstidxopensubsubmarker
+      }%
+    \else
+      \ifx\@tstidx at range\tstidx at closerange
+        \tstidxtext{#1%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxclosemarker
+           \tstidxclosesubmarker
+           \tstidxclosesubsubmarker
+        }%
+      \else
+        \tstidxtext{#1%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxmarker
+           \tstidxsubmarker
+           \tstidxsubsubmarker
+        }%
+      \fi
+    \fi
+  \else
+    #1%
+  \fi
+ \else
+   \iftestidxshowmarks
+     \tstidxtext{\tstidxencaptext{\@tstidx at encap}{#1%
+      \tstidx at levelmarker\@tstidx at label
+       \tstidxmarker
+       \tstidxsubmarker
+       \tstidxsubsubmarker
+     }}%
+   \else
+     #1%
+   \fi
+  \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at pre@glstextformat}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at pre@glstextformat}[1]{%
+ \ifx\@tstidx at encap\@empty
+  \iftestidxshowmarks
+    \ifx\@tstidx at range\tstidx at openrange
+      \tstidxtext{%
+        \tstidx at levelmarker\@tstidx at label
+         \tstidxopenmarker
+         \tstidxopensubmarker
+         \tstidxopensubsubmarker
+        #1}%
+    \else
+      \ifx\@tstidx at range\tstidx at closerange
+        \tstidxtext{%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxclosemarker
+           \tstidxclosesubmarker
+           \tstidxclosesubsubmarker
+        #1}%
+      \else
+        \tstidxtext{%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxmarker
+           \tstidxsubmarker
+           \tstidxsubsubmarker
+         #1}%
+      \fi
+    \fi
+  \else
+    #1%
+  \fi
+ \else
+  \iftestidxshowmarks
+    \tstidxtext{\tstidxencaptext{\@tstidx at encap}{%
+      \tstidx at levelmarker\@tstidx at label
+       \tstidxmarker
+       \tstidxsubmarker
+       \tstidxsubsubmarker
+    #1}}%
+  \else
+    #1%
+  \fi
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tstidx at zapnonlabel}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\@tstidx at zapnonlabel}[2]{%
+ \ifx,#1\@empty\else\ifx'#1\@empty\else\ifx-#1\@empty\else#1\fi\fi\fi
+ \ifx#2\@empty
+ \else
+  \expandafter\@tstidx at zapnonlabel
+ \fi
+ #2}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at getlabel}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at getlabel}[1]{\@tstidx at zapnonlabel#1\@empty\@empty}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at glspreindex}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at glspreindex}[2][]{%
+  \glshyperlink[\glstextformat{}]{#2}\glsadd[#1]{#2}}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at glspostindex}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidx at glspostindex}[2][]{%
+ \glsadd[#1]{#2}\glshyperlink[\glstextformat{}]{#2}}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+%    \end{macrocode}
+%Commands like \cs{gls} and \cs{glslink} put the indexing before the
+%text, so we need to do the display text and then use \cs{glsadd}.
+%Unless we have \sty{glossaries-extra} v1.14+, in which case this is
+%done automatically through the \texttt{wrgloss} setting.
+%    \begin{macrocode}
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexpost\@tstindexpost
+\let\@tstindexpost\@tstidx at gls@indexpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexopenpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexopenpost\@tstindexopenpost
+\let\@tstindexopenpost\@tstidx at gls@indexopenpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexclosepost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexclosepost\@tstindexclosepost
+\let\@tstindexclosepost\@tstidx at gls@indexclosepost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexpre\@tstindexpre
+\let\@tstindexpre\@tstidx at gls@indexpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexopenpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexopenpre\@tstindexopenpre
+\let\@tstindexopenpre\@tstidx at gls@indexopenpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexclosepre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexclosepre\@tstindexclosepre
+\let\@tstindexclosepre\@tstidx at gls@indexclosepre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\seealsoname}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\providecommand*\seealsoname{see also}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\seename}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\providecommand*\seename{see}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidx at seealso}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*\tstidx at seealso{seealso}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexsee}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexsee#1#2#3#4[#5]#6{%
+  \if at tstidx@useglsseekey
+  \else
+    \bgroup
+    \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+      \ifx\@tstidx at label\@empty
+        \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+      \fi
+    \fi
+    \ifx\relax#5\relax
+      \def\@tstidx at xrlabel{}%
+      \def\@tstidx at xrlabel@sep{}%
+      \@for\@tst at idxthis:=#6\do{%
+        \edef\@tstidx at xrlabel{\@tstidx at xrlabel\@tstidx at xrlabel@sep
+          \expandafter\tstidx at getlabel\expandafter{\@tst at idxthis}}%
+        \def\@tstidx at xrlabel@sep{,}%
+      }%
+    \else
+      \def\@tstidx at xrlabel{#5}%
+    \fi
+    \edef\@tstidx at seetag{#4}%
+    \ifx\@tstidx at seetag\tstidx at seealso
+     \if at tstidx@hasseealsokey
+       \expandafter\glsxtrindexseealso\expandafter\@tstidx at label\expandafter
+         {\@tstidx at xrlabel}%
+     \else
+       \expandafter\glssee\expandafter[\expandafter\seealsoname
+         \expandafter]\expandafter\@tstidx at label\expandafter{\@tstidx at xrlabel}%
+     \fi
+    \else
+     \expandafter\glssee\expandafter\@tstidx at label\expandafter
+       {\@tstidx at xrlabel}%
+    \fi
+    \iftestidxshowmarks
+      \ifx\relax#5\relax
+       \tstidxseeref{#2}{tst#4ref}{#6}%
+      \else
+       \tstidxseeref{#2}{tst#4ref}{#5}%
+      \fi
+    \fi
+    \egroup
+  \fi
+}
+\let\@tstidx at org@indexsee\@tstindexsee
+\let\@tstindexsee\@tstidx at gls@indexsee
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexpost\@tstidx at subindexpost
+\let\@tstidx at subindexpost\@tstidx at gls@subindexpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexopenpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexopenpost\@tstidx at subindexopenpost
+\let\@tstidx at subindexopenpost\@tstidx at gls@subindexopenpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexclosepost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+     \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexclosepost\@tstidx at subindexclosepost
+\let\@tstidx at subindexclosepost\@tstidx at gls@subindexclosepost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexpre\@tstidx at subindexpre
+\let\@tstidx at subindexpre\@tstidx at gls@subindexpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexopenpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexopenpre\@tstidx at subindexopenpre
+\let\@tstidx at subindexopenpre\@tstidx at gls@subindexopenpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubindexclosepre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subindexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexclosepre\@tstidx at subindexclosepre
+\let\@tstidx at subindexclosepre\@tstidx at gls@subindexclosepre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstindexsubsee}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@indexsubsee#1#2#3#4[#5]#6{%
+  \if at tstidx@useglsseekey
+  \else
+    \bgroup
+    \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+      \ifx\@tstidx at label\@empty
+        \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+      \fi
+    \fi
+    \ifx\relax#5\relax
+      \def\@tstidx at xrlabel{}%
+      \def\@tstidx at xrlabel@sep{}%
+      \@for\@tst at idxthis:=#6\do{%
+        \edef\@tstidx at xrlabel{\@tstidx at xrlabel\@tstidx at xrlabel@sep
+          \expandafter\tstidx at getlabel\expandafter{\@tst at idxthis}}%
+        \def\@tstidx at xrlabel@sep{,}%
+      }%
+    \else
+      \def\@tstidx at xrlabel{#5}%
+    \fi
+    \edef\@tstidx at seetag{#4}%
+    \ifx\@tstidx at seetag\tstidx at seealso
+     \if at tstidx@hasseealsokey
+       \expandafter\glsxtrindexseealso\expandafter\@tstidx at label\expandafter
+         {\@tstidx at xrlabel}%
+     \else
+       \expandafter\glssee\expandafter[\expandafter\seealsoname
+         \expandafter]\expandafter\@tstidx at label\expandafter{\@tstidx at xrlabel}%
+     \fi
+    \else
+     \expandafter\glssee\expandafter\@tstidx at label\expandafter
+       {\@tstidx at xrlabel}%
+    \fi
+    \iftestidxshowmarks
+      \protected at edef\tstidx at dosee{\noexpand\tstidxsubseeref
+        {\@tstidx at term}{#2}{tst#4ref}{\@tstidx at xrlabel}}%
+      \tstidx at dosee
+    \fi
+    \egroup
+  \fi
+}
+\let\@tstidx at org@indexsubsee\@tstidx at indexsubsee
+\let\@tstidx at indexsubsee\@tstidx at gls@indexsubsee
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexpost\@@tstidx at subsubindexpost
+\let\@@tstidx at subsubindexpost\@tstidx at gls@subsubindexpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexopenpost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexopenpost\@@tstidx at subsubindexopenpost
+\let\@@tstidx at subsubindexopenpost\@tstidx at gls@subsubindexopenpost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexclosepost}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+     \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexclosepost\@@tstidx at subsubindexclosepost
+\let\@@tstidx at subsubindexclosepost\@tstidx at gls@subsubindexclosepost
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexpre\@@tstidx at subsubindexpre
+\let\@@tstidx at subsubindexpre\@tstidx at gls@subsubindexpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexopenpre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexopenpre\@@tstidx at subsubindexopenpre
+\let\@@tstidx at subsubindexopenpre\@tstidx at gls@subsubindexopenpre
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstsubsubindexclosepre}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\def\@tstidx at gls@subsubindexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexclosepre\@@tstidx at subsubindexclosepre
+\let\@@tstidx at subsubindexclosepre\@tstidx at gls@subsubindexclosepre
+%    \end{macrocode}
+%\end{macro}
+%
+%\subsection{Entry Shortcut Definitions}
+%
+%Provide commands for defining entries (not used with
+%\cs{GlsXtrLoadResources}).
+%
+%\begin{macro}{\tstidxnewutfentry}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewutfentry}\marg{label}\marg{ascii}\marg{utf8}\marg{name
+%fmt}\marg{options}\marg{category}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfentry}[6]{%
+  \@tstidx at ifutfviii
+  {%
+    \tstidxprocessutf{\@tstidx at utf}{#3}%
+    \ifx\relax#4\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#6}%
+        {name={#3},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#5}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#6}%
+        {name={\noexpand#4{#3}},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#5}}%
+    \fi
+  }%
+  {%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \tstidxprocessasciisortstrip{\@tstidx at asciilabel}{#1}%
+    \ifx\relax#4\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{\@tstidx at asciilabel}{#6}%
+        {name={#2},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#5}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{\@tstidx at asciilabel}{#6}%
+        {name={\noexpand#4{#2}},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#5}}%
+    \fi
+  }%
+  \@tstidx at doidx
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{definition}
+%\cs{tstidxnewutfentrytext}\marg{label}\marg{ascii name}\marg{ascii
+%text}\marg{utf8 name}\marg{utf8 text}\marg{name
+%fmt}\marg{options}\marg{category}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfentrytext}[8]{%
+  \@tstidx at ifutfviii
+  {%
+    \tstidxprocessutf{\@tstidx at utf}{#4}%
+    \ifx\relax#6\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#4},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+         text={#5},%
+        description={},#7}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#4},%
+         text={\noexpand#6{#5}},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#7}}%
+    \fi
+  }%
+  {%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \ifx\relax#6\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#2},%
+         text={#3},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#7}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={\noexpand#6{#2}},%
+         text={\noexpand#6{#3}},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#7}}%
+    \fi
+  }%
+  \@tstidx at doidx
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewword}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewword}\oarg{options}\marg{word}\marg{description}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewword}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{word}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{word}{name={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewwordsee}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewwordsee}\oarg{options}\marg{word}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewwordsee}[4][]{%
+    \tstidxnewword[see={#4},#1]{#2}{#3}%
+  }
+\else
+  \newcommand*{\tstidxnewwordsee}[4][]{%
+    \tstidxnewword[#1]{#2}{#3}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewwordseealso}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewwordseealso}\oarg{options}\marg{word}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewwordseealso}[4][]{%
+      \tstidxnewword[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewwordseealso}[4][]{%
+      \tstidxnewword[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewwordseealso}[4][]{%
+    \tstidxnewword[#1]{#2}{#3}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewdigraph}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewdigraph}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{digraph}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{digraph}{name={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewtrigraph}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewtrigraph}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{trigraph}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{trigraph}{name={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewsubword}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewsubword}\oarg{options}\marg{parent}\marg{word}\marg{description}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewsubword}[4][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{word}%
+   {parent={\tstidx at getlabel{#2}},name={#3},description={#4},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{word}%
+   {parent={\tstidx at getlabel{#2}},name={#3},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewsubwordsee}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewsubwordsee}\oarg{options}\marg{parent}\marg{word}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewsubwordsee}[5][]{%
+    \tstidxnewsubword[see={#5},#1]{#2}{#3}{#4}%
+  }
+\else
+  \newcommand*{\tstidxnewsubwordsee}[5][]{%
+    \tstidxnewsubword[#1]{#2}{#3}{#4}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewsubwordseealso}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewsubwordseealso}\oarg{options}\marg{parent}\marg{word}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+      \tstidxnewsubword[seealso={#5},#1]{#2}{#3}{#4}%
+    }
+  \else
+    \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+      \tstidxnewsubword[see={[\seealsoname]#5},#1]{#2}{#3}{#4}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+    \tstidxnewsubword[#1]{#2}{#3}{#4}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\tstidxcsfmt}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\renewcommand*{\tstidxcsfmt}[1]{\texttt{\glsbackslash#1}}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewcs}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewcs}[3][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{cs.#2}}{cs}%
+   {sort={#2},name={\tstidxcsfmt{#2}},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{cs.#2}}{cs}%
+   {sort={#2},name={\tstidxcsfmt{#2}},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewencapcsn}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewencapcsn}[3][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#2}}{encapcsn}{sort={#2 (#2)},%
+    name={\texttt{#2} (\tstidxcsfmt{#2})},
+    text={\texttt{#2}},description={#3},#1}%
+   \tstidxnewentry{\tstidx at getlabel{encap.#2}}{encapcsn}{sort={#2},%
+    parent={\tstidx at getlabel{encap}},
+    name={\texttt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{encapcsn}{sort={#2 (#2)},%
+    name={\texttt{#2} (\tstidxcsfmt{#2})},
+    text={\texttt{#2}},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{encap.#2}}{encapcsn}{sort={#2},%
+    parent={\tstidx at getlabel{encap}},
+    name={\texttt{#2}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewenv}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewenv}[3][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#2environment}}%
+   {environment}{sort={#2 environment},%
+    name={\tstidxenvfmt{#2} environment},%
+    text={\tstidxenvfmt{#2}},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2environment}}%
+   {environment}{sort={#2 environment},%
+    name={\tstidxenvfmt{#2} environment},%
+    text={\tstidxenvfmt{#2}},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\tstidxnewapp}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewapp}[3][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#2}}{application}{sort={#2},%
+    name={\tstidxappfmt{#2}},description={#3},#1}%
+   \tstidxnewentry{applications.\tstidx at getlabel{#2}}{application}{sort={#2},%
+    parent={applications},name={\tstidxappfmt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{application}{sort={#2},%
+    name={\tstidxappfmt{#2}},description={},#1}%
+   \tstidxnewentry{applications.\tstidx at getlabel{#2}}{application}{sort={#2},%
+    parent={applications},name={\tstidxappfmt{#2}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewappopt}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewappopt}[4][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#3.#2option}}{applicationoption}%
+   {sort={#3 (#2)},%
+    name={\tstidxappoptfmt{#3} (\tstidxappfmt{#2})},description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{applicationoption}%
+   {parent={#2},sort={#3},%
+    name={\tstidxappoptfmt{#3}},description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{applications.#2.#3}}%
+   {applicationoption}{sort={#3},%
+    parent={\tstidx at getlabel{applications.#2}},name={\tstidxappoptfmt{#3}},%
+    description={#4}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#3.#2option}}{applicationoption}%
+   {sort={#3 (#2)},%
+    name={\tstidxappoptfmt{#3} (\tstidxappfmt{#2})},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{applicationoption}%
+   {parent={#2},sort={#3},%
+    name={\tstidxappoptfmt{#3}},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{applications.#2.#3}}%
+   {applicationoption}{sort={#3},%
+    parent={\tstidx at getlabel{applications.#2}},name={\tstidxappoptfmt{#3}},%
+    description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewsty}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewsty}[3][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#2package}}{package}{sort={#2 package},%
+    name={\tstidxstyfmt{#2} package},%
+    text={\tstidxstyfmt{#2}},%
+    description={#3},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package}}{package}{sort={#2},%
+    parent={packages},name={\tstidxstyfmt{#2}},%
+    text={\tstidxstyfmt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2package}}{package}{sort={#2 package},%
+    name={\tstidxstyfmt{#2} package},%
+    text={\tstidxstyfmt{#2}},%
+    description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package}}{package}{sort={#2},%
+    parent={packages},name={\tstidxstyfmt{#2}},%
+    text={\tstidxstyfmt{#2}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewstyseealso}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewstyseealso}[4][]{%
+      \tstidxnewsty[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewstyseealso}[4][]{%
+      \tstidxnewsty[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewstyseealso}[4][]{%
+    \tstidxnewsty[#1]{#2}{#3}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewstyopt}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewstyopt}[4][]{%
+ \if at tstidx@setdescription 
+   \tstidxnewentry{\tstidx at getlabel{#2package.#3}}{packageoption}{sort={#3},%
+    name={\tstidxstyoptfmt{#3}},%
+    parent={\tstidx at getlabel{#2package}},%
+    description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package.#3}}{packageoption}%
+   {sort={#3},%
+    parent={\tstidx at getlabel{packages.#2package}},name={\tstidxstyoptfmt{#3}},%
+    description={#4}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2package.#3}}{packageoption}{sort={#3},%
+    name={\tstidxstyoptfmt{#3}},%
+    parent={\tstidx at getlabel{#2package}},%
+    description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package.#3}}{packageoption}%
+   {sort={#3},%
+    parent={\tstidx at getlabel{packages.#2package}},name={\tstidxstyoptfmt{#3}},%
+    description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewnumber}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewnumber}[3][]{%
+ \if at tstidx@setdescription 
+  \tstidxnewentry{\tstidx at getlabel{#2}}{number}{name={#2},description={#3},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{number}{name={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewphrase}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewphrase}\oarg{options}\marg{phrase}\marg{description}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewphrase}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{phrase}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{phrase}{name={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewphrasesee}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewphrasesee}\oarg{options}\marg{phrase}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewphrasesee}[4][]{%
+    \tstidxnewphrase[see={#4},#1]{#2}{#3}%
+  }
+\else
+  \newcommand*{\tstidxnewphrasesee}[4][]{%
+    \tstidxnewphrase[#1]{#2}{#3}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewphraseseealso}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewphraseseealso}\oarg{options}\marg{phrase}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewphraseseealso}[4][]{%
+      \tstidxnewphrase[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewphraseseealso}[4][]{%
+      \tstidxnewphrase[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewphraseseealso}[4][]{%
+    \tstidxnewphrase[#1]{#2}{#3}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\tstidxnewartphrase}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewartphrase}[4][]{%
+ \if at tstidx@setdescription
+ \tstidxnewentry{\tstidx at getlabel{#3}}{phrase}{name={#3, #2},
+   text={#2 #3},description={#4},#1}%
+ \else
+ \tstidxnewentry{\tstidx at getlabel{#3}}{phrase}{name={#3, #2},
+   text={#2 #3},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\tstidxnewsubphrase}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewsubphrase}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2.#3}}{phrase}%
+    {parent={\tstidx at getlabel{#2}},%
+    name={#3},description={#4},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2.#3}}{phrase}%
+    {parent={\tstidx at getlabel{#2}},%
+    name={#3},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\tstidxnewperson}
+%\changes{1.1}{2017-08-11}{new}
+%Arguments: first name, surname.
+%    \begin{macrocode}
+\newcommand*{\tstidxnewperson}[4][]{%
+  \tstidxnewutfperson[#1]{#2}{#3}{#2}{#3}{#4}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfperson}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewutfperson}\oarg{options}\marg{ascii first
+%name}\marg{ascii surname}\oarg{label}\marg{utf first name}\marg{utf
+%surname}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfperson}[3][]{%
+  \@ifnextchar[{\@tstidxnewutfperson{#1}{#2}{#3}}%
+  {\@tstidxnewutfperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxnewutfperson#1#2#3[#4]#5#6#7{%
+ \if at tstidx@setdescription
+  \tstidxnewutfentrytext{\tstidx at getlabel{#4}}{#3, #2}{#2 #3}{#6, #5}{#5 #6}%
+   {}{description={#7},#1}{person}%
+  \tstidxnewutfentrytext{\tstidx at getlabel{people.#4}}{#3, #2}{#2 #3}{#6, #5}%
+  {#5 #6}{}{description={#7},parent={people}}{person}%
+ \else
+  \tstidxnewutfentrytext{\tstidx at getlabel{#4}}{#3, #2}{#2 #3}{#6, #5}{#5 #6}%
+   {}{#1}{person}%
+  \tstidxnewutfentrytext{\tstidx at getlabel{people.#4}}{#3, #2}{#2 #3}{#6, #5}%
+  {#5 #6}{}{parent={people}}{person}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewsym}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewsym}[4][]{%
+ \if at tstidx@setdescription 
+  \tstidxnewentry{\tstidx at getlabel{#2}}{symbol}%
+  {name={#3},sort={#2},description={#4},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{symbol}%
+  {name={#3},sort={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewindexmarker}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewindexmarker}[3][]{%
+ \if at tstidx@setdescription 
+  \toks@{description={#3},#1}%
+ \else
+  \toks@{description={},#1}%
+ \fi
+ \iftestidxprefix
+   \protected at edef\@tstidx at dodef{%
+    \noexpand\tstidxnewentry{\tstidx at getlabel{#2}}%
+    {indexmarker}{%
+     name={{}\noexpand\protect\expandonce{\csname#2\endcsname}\noexpand\space
+      (\noexpand\tstidxcsfmt{#2})},%
+     sort={\tstidxindexmarkerprefix#2},
+     \the\toks@}}%
+ \else
+   \protected at edef\@tstidx at dodef{%
+    \noexpand\tstidxnewentry{\tstidx at getlabel{#2}}%
+    {indexmarker}{%
+     name={{}\noexpand\protect\expandonce{\csname#2\endcsname}\noexpand\space
+      (\noexpand\tstidxcsfmt{#2})},%
+     sort={#2},
+     \the\toks@}}%
+ \fi
+  \@tstidx at dodef
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewmath}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewmath}\oarg{options}\marg{sort}\oarg{label}\marg{text}\marg{description}
+%\end{definition}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewmath}[2][]{%
+  \@ifnextchar[{\@tstidxnewmath{#1}{#2}}{\@tstidxnewmath{#1}{#2}[#2]}%
+}
+\def\@tstidxnewmath#1#2[#3]#4#5{%
+ \if at tstidx@setdescription 
+  \tstidxnewentry{\tstidx at getlabel{#3}}{math}%
+  {name={$#4$},text={#4},sort={#2},description={#5},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{math}%
+  {name={$#4$},text={#4},sort={#2},description={},#1}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewmathsym}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewmathsym}[2][]{%
+  \@ifnextchar[{\@tstidxnewmathsym{#1}{#2}}{\@tstidxnewmathsym{#1}{#2}[#2]}%
+}
+\def\@tstidxnewmathsym#1#2[#3]#4#5{%
+ \iftestidxprefix
+  \if at tstidx@setdescription 
+    \toks@{name={$#4$},text={#4},description={#5},#1}%
+  \else
+    \toks@{name={$#4$},text={#4},#1}%
+  \fi
+  \protected at edef\@tstidx at dodef{%
+   \noexpand\tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}%
+   {sort={\tstidxmathsymprefix#2},description={},\the\toks@}%
+  }%
+  \@tstidx at dodef
+ \else
+  \if at tstidx@setdescription 
+    \tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}{name={$#4$},%
+    text={#4},sort={#2},description={#5},#1}%
+  \else
+    \tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}{name={$#4$},%
+    text={#4},sort={#2},description={},#1}%
+  \fi
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfword}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfword}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{description={#5},#1}{word}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{word}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfwordsee}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewutfwordsee}\oarg{options}\marg{label}\marg{ascii}\marg{utf}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewutfwordsee}[6][]{%
+    \tstidxnewutfword[see={#6},#1]{#2}{#3}{#4}{#5}%
+  }
+\else
+  \newcommand*{\tstidxnewutfwordsee}[6][]{%
+    \tstidxnewutfword[#1]{#2}{#3}{#4}{#5}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfwordseealso}
+%\changes{1.1}{2017-08-11}{new}
+%\begin{definition}
+%\cs{tstidxnewutfwordseealso}\oarg{options}\marg{label}\marg{ascii}\marg{utf}\marg{description}\marg{xr-labels}
+%\end{definition}
+%    \begin{macrocode}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+      \tstidxnewutfword[seealso={#6},#1]{#2}{#3}{#4}{#5}%
+    }
+  \else
+    \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+      \tstidxnewutfword[see={[\seealsoname]#6},#1]{#2}{#3}{#4}{#5}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+    \tstidxnewutfword[#1]{#2}{#3}{#4}{#5}%
+  }
+\fi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfdigraph}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfdigraph}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{description={#5},#1}{digraph}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{digraph}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfphrase}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfphrase}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}%
+     {description={#5},#1}{phrase}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{phrase}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewplace}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewplace}[3][]{%
+ \tstidxnewutfplace[#1]{#2}{#2}{#2}{#3}%
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewutfplace}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewutfplace}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}%
+     {description={#5},#1}{place}%
+   \tstidxnewutfentry{\tstidx at getlabel{places.#2}}{#3}{#4}{}%
+     {description={#5},parent={places}}{place}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{place}%
+   \tstidxnewutfentry{\tstidx at getlabel{places.#2}}{#3}{#4}{}%
+     {parent={places}}{place}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewartplace}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewartplace}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{place}{name={#3, #2},%
+    text={#2 #3},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{places.#3}}{place}{%
+    parent={places},name={#3, #2},%
+    text={#2 #3},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{place}{name={#3, #2},%
+    text={#2 #3},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{places.#3}}{place}{%
+    parent={places},name={#3, #2},%
+    text={#2 #3},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewbook}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewbook}[3][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{book}{sort={#2},%
+   name={\tstidxbookfmt{#2}},description={#3},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#2}}{book}{sort={#2},%
+   parent={books},name={\tstidxbookfmt{#2}},description={#3}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{book}{sort={#2},%
+   name={\tstidxbookfmt{#2}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#2}}{book}{sort={#2},%
+   parent={books},name={\tstidxbookfmt{#2}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewartbook}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewartbook}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{book}{%
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#3}}{book}{%
+   parent={books},
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{book}{%
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#3}}{book}{%
+   parent={books},
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewfilm}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewfilm}[3][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{film}{sort={#2},%
+   name={\tstidxfilmfmt{#2}},description={#3},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#2}}{film}{sort={#2},%
+   parent={films},name={\tstidxfilmfmt{#2}},description={#3}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{film}{sort={#2},%
+   name={\tstidxfilmfmt{#2}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#2}}{film}{sort={#2},%
+   parent={films},name={\tstidxfilmfmt{#2}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\tstidxnewartfilm}
+%\changes{1.1}{2017-08-11}{new}
+%    \begin{macrocode}
+\newcommand*{\tstidxnewartfilm}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{film}{%
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#3}}{film}{%
+   parent={films},
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{film}{%
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#3}}{film}{%
+   parent={films},
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={}}%
+ \fi
+}
+%    \end{macrocode}
+%\end{macro}
+%
+%\subsection{Dummy Paragraph Redefinition}
+%\begin{macro}{\@tidx at par@i}
+%\changes{1.1}{2017-08-11}{new}
+%Modify the first paragraph.
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@par at i}{%
+ This is a~sample block of text designed to test indexing with 
+ the \expandafter\tstidxsty\expandafter{\tstidx at glossariespkg} package. To test
+ only \tstidxcs{index} and \tstidxenv{theindex} environment, just use
+ \tstidxsty{testidx} instead of \tstidxsty{testidx-glossaries}.
+ Alternatively, use \tstidxcs{tstidxtoidx} to switch back to the
+ original \tstidxsty{testidx} behaviour.
+ This sample text is provided to help test the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{layout}
+ \else
+  \tstidxword{layout}
+ \fi
+  of the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{index}
+ \else
+  \tstidxword{index}
+ \fi
+ (or
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{glossary}%
+ \else
+  \tstidxword{glossary}%
+ \fi
+ ) and the
+ \if at tstidx@use at encaps
+   \tstidxphrasepl[tstidxencapii]{indexing application},
+ \else
+   \tstidxphrasepl{indexing application},
+ \fi
+ such as
+ \tstidxapp{makeindex} or
+ \tstidxapp{xindy}, that may be used with the 
+ \expandafter\tstidxsty\expandafter{\tstidx at glossariespkg} package.
+ This \tstidxword{example} text is just
+ \tstidxword{filler} (produced using \tstidxcs{testidx} provided
+ by the \tstidxopensty{testidx} package) to
+ pad\tstindexsee{padding}{seealso}{filler} out
+ the document with instances of \tstidxcs{index} interspersed throughout. 
+ You can find out more
+ information from the \tstidxsty{testidx} user manual, which
+ can be accessed using the \tstidxapp{texdoc} application.
+}
+\let\@tidx at org@par at i\@tidx at par@i
+\let\@tidx at par@i\@tidx at gls@par at i
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at par@ii}
+%\changes{1.1}{2017-08-11}{new}
+%Modify the second paragraph.
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@par at ii}{%
+ The \tstidxsty{testidx-glossaries} package uses \tstidxcs{gls} (or
+ \tstidxcs{glspl}) unless no text should be displayed when indexing
+ occurs (in which case just \tstidxcs{glsadd} is used). This test package
+ doesn't make any modifications to 
+ \tstidxcs{gls} (or \tstidxcs{glspl}), but there are some minor changes to entry
+ definitions and command use to allow this \tstidxphrase{dummy text} to test 
+ various cases.  By default \tstidxcs{gls} performs the indexing before the 
+ \tstidxphrase{link text} to prevent any unwanted interference caused by the
+ \tstidxword{whatsit} introduced by the indexing.
+ However, it's possible that you may want the indexing to occur
+ after the \tstidxphrase{link text}, even though it creates 
+ a~\tstidxword{whatsit}. This \tstidxphrase{dummy text} is designed to use 
+ a mixture of pre- and post-indexing to investigate the results (particularly 
+ with \tstidxwordpl{phrase} spanning a \tstidxphrase{page break}). 
+ The \tstidxsty{glossaries-extra} package (as from 
+ version 1.14) provides a~new key \tstidxqt{wrgloss} (for commands
+ like \tstidxcs{gls}), which may take the values
+ \tstidxqt{before} or \tstidxqt{after}. If this key is available,
+ it will be used for the post-indexing \tstidxwordpl{example},
+ otherwise the post-indexing will be performed manually using
+ \tstidxcs{glsadd} after the \tstidxphrase{link text} (which is displayed using
+ \tstidxcs{glshyperlink}). The \tstidxsty{testidx-glossaries} package
+ just loads the base \tstidxsty{glossaries} package by default. Use
+ the \tstidxstyopt{testidx-glossaries}{extra} package option to also
+ load \tstidxsty{glossaries-extra}. The \tstidxphrase{visual effects} in this
+ \tstidxphrase{dummy text} are provided to illustrate where the
+ indexing occurs. The \tstidxsty{testidx-glossaries} package
+ doesn't attempt to produce a well-designed index or glossary. Its
+ \tstidxword{purpose} is to help you \tstidxword{test} your chosen
+ \tstidxword{design}, which is easier to do with a
+ relatively small test \tstidxword{document}, than with a large
+ \tstidxword{book}. The \tstidxphrase{dummy text} is intended to produce an
+ \tstidxword{index} that is at least three pages long to allow you
+ to test the page headers and footers in a two-sided document.
+ The \tstidxqt{mcolindexgroup} style is set by default (rather than
+ the \tstidxqt{list} style) as that style more closely represents
+ the style used in indexes.
+ \if at tstidx@setdescription 
+  However, since this document has used the 
+  \tstidxstyopt{testidx-glossaries}{desc} option,
+  the style is instead set to \tstidxqt{indexgroup}.
+ \else
+  If you use the \tstidxstyopt{testidx-glossaries}{desc} option,
+  the style will instead be set to \tstidxqt{indexgroup}.
+ \fi
+ You can change the style using \tstidxcs{setglossarystyle}.
+ By default the \tstidxqt{tree} styles (including
+ \tstidxqt{mcolindexgroup}) display the name field in bold in the
+ \tstidxword{glossary}. This is governed by the command
+ \tstidxcs{glstreenamefmt}, which may be redefined as appropriate.
+ You can hide the visual effects with the
+ \tstidxstyopt{testidx}{hidemarks} package option.%
+ \iftestidxshowmarks
+ \else
+  \space (It seems you already have this option set.
+  Remove it or use \tstidxstyopt{testidx}{showmarks} to show them
+  again.)%
+ \fi
+}
+\let\@tidx at org@par at ii\@tidx at par@ii
+\let\@tidx at par@ii\@tidx at gls@par at ii
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at par@iii}
+%\changes{1.1}{2017-08-11}{new}
+%Modify the third paragraph.
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@par at iii}{%
+ The actual place where the indexing occurs in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text}
+ \else
+   \tstidxphrase{dummy text}
+ \fi
+ is marked with the symbol
+ \tstidxindexmarker{tstidxmarker} if there is no \tstidxword{range}
+or
+ \tstidxphrase{cross-reference}. The
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapi]{word}
+ \else
+   \tstidxword{word}
+ \fi
+ or
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapii]{phrase}
+ \else
+   \tstidxword{phrase}
+ \fi
+ adjacent to this \tstidxword{marker} is
+ the text being indexed.\tstidxfootnote{The indexing may
+ occur before or after the \tstidxword{word} or \tstidxword{phrase}
+ (\tstidxphrase{link text}) being indexed in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text},
+ \else
+   \tstidxphrase{dummy text},
+ \fi
+ but there's no
+ space between the \tstidxword{marker} and the term being indexed.
+ Incidentally, this \tstidxword{footnote} text was produced
+ using the command \tstidxcs{tstidxfootnote}, which you can
+ redefined as required. (It defaults to just \tstidxcs{footnote}.)}
+ A sub-entry is indicated with the symbol
+ \tstidxindexmarker{tstidxsubmarker} and a sub-sub-entry is
+ indicated with the symbol \tstidxindexmarker{tstidxsubsubmarker}.
+ If an \tstidxword{encap} value is provided, both the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapiii]{text}
+ \else
+  \tstidxword{text}
+ \fi
+ and the
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapii]{marker}
+ \else
+   \tstidxword{marker}
+ \fi
+ are typeset in the \tstidxword{argument} of the corresponding
+command.
+ (The text occurring in the document is also typeset within the
+argument of
+ \tstidxcs{tstidxtext}. The default value is to use a dark grey, but
+since the
+ default values for the \tstidxword{predefined} encaps used in this
+text all
+ change the colour, the dark grey will only apply where the encap
+hasn't
+ been set.) There are three \tstidxword{encap} values used
+throughout this
+ \tstidxphrase{dummy text} (unless you've used the
+ \tstidxstyopt{testidx}{notestencaps} package option):
+ \if at tstidx@use at encaps
+  \tstidxencapcsn[tstidxencapi]{tstidxencapi},
+ \else
+  \tstidxencapcsn{tstidxencapi},
+ \fi
+ \if at tstidx@use at encaps
+   \tstidxencapcsn[tstidxencapii]{tstidxencapii}
+ \else
+   \tstidxencapcsn{tstidxencapii}
+ \fi
+ and
+ \if at tstidx@use at encaps
+   \tstidxencapcsn[tstidxencapiii]{tstidxencapiii}.
+ \else
+   \tstidxencapcsn{tstidxencapiii}.
+ \fi
+ (The default values use \tstidxcs{textcolor}, so you might want to
+use the
+ \tstidxstyopt{hyperref}{hidelinks} option
+ if you want to use the \tstidxsty{hyperref} package.) 
+ If you use the \tstidxstyopt{testidx-glossaries}{noseekey} package option, a
+ cross-referenced entry (using \tstidxcs{glssee}\if at tstidx@hasseealsokey
+  \ or \tstidxcs{glsxtrindexseealso}\fi) is identified
+  using the \tstidxword{marker}  \tstidxindexmarker{tstidxseemarker}
+ and the cross-referenced information is displayed as
+ a \tstidxphrase{marginal note} by default, with the term being indexed
+ followed by the \tstidxword{cross-reference}.
+ For example,  
+ \tstidxword{lyuk}\tstindexsee{lyuk}{seealso}{digraph} has
+ the marker \tstidxmarker\ to show that the word \tstidxqt{lyuk} was
+ indexed. If the 
+\tstidxstyopt{testidx-glossaries}{noseekey} package option is set,
+ this is followed by the marker \tstidxseemarker\ to show that 
+ a cross-reference to \tstidxword{digraph} has also been indexed (with the details shown in 
+ the margin).
+ \if at tstidx@useglsseekey
+   This document has used the \tstidxstyopt{testidx-glossaries}{seekey} package option, 
+   which means that \tstidxcs{glssee}
+   \if at tstidx@hasseealsokey
+    and \tstidxcs{glsxtrindexseealso} aren't
+   \else
+    isn't 
+   \fi
+   used in the \tstidxphrase{dummy text}.
+   Instead the \tstidxqt{see} 
+   \if at tstidx@hasseealsokey
+    and \tstidxqt{seealso} keys provided in the entry definition were
+   \else
+    key provided in the entry definition was 
+   \fi
+   used to perform the \tstidxword{cross-reference} at the time the entry was
+   defined, and so no markers or marginal notes are displayed.
+ \else
+   This document has used the \tstidxstyopt{testidx-glossaries}{noseekey} package option. This option ignores the \tstidxqt{see} 
+   \if at tstidx@hasseealsokey
+    and \tstidxqt{seealso} keys
+   \else
+    key
+   \fi
+   within the entry definitions for testing purposes. If you use the 
+   \tstidxstyopt{testidx-glossaries}{seekey} 
+   package option instead, the \tstidxqt{see} 
+   \if at tstidx@hasseealsokey
+     and \tstidxqt{seealso} keys will
+     be used when defining the entries with cross-references instead of
+     using \tstidxcs{glssee} and \tstidxcs{glsxtrindexseealso}.
+   \else
+     key will be used when defining the entries with cross-references instead of
+     using \tstidxcs{glssee}.
+   \fi
+   No markers will appear in that case as the
+   cross-referencing will be performed when the entry is defined in
+   the preamble.
+ \fi
+ A sub-level \tstidxword{cross-reference} is identified with the 
+ \tstidxword{marker} \tstidxindexmarker{tstidxsubseemarker} and the 
+ marginal note displays the main term followed by the sub-term (separated by the
+ symbol \tstidxsubseesep).  The \tstidxword{marker} used for the start of
+ a range is \tstidxindexmarker{tstidxopenmarker} and the
+ \tstidxword{marker} used for the end of
+ a range is \tstidxindexmarker{tstidxclosemarker}
+ unless the entry is a sub-level, in which case the
+ \tstidxword{marker} for the start of the range is
+ \tstidxindexmarker{tstidxopensubmarker}
+ and the \tstidxword{marker} used for the end of a range is
+ \tstidxindexmarker{tstidxclosesubmarker}, or for a sub-sub-level
+\tstidxindexmarker{tstidxopensubsubmarker} and
+ \tstidxindexmarker{tstidxclosesubsubmarker}. There are no tests for
+ any further sub-levels. Although \tstidxapp{xindy} allows more than
+ three levels (\tstidxapp{makeindex} doesn't), it's somewhat
+ \tstidxword{excessive} to go below a sub-sub-level.
+ You'll have to add your own tests for anything deeper.%
+
+}
+\let\@tidx at org@par at iii\@tidx at par@iii
+\let\@tidx at par@iii\@tidx at gls@par at iii
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@tidx at par@iv}
+%\changes{1.1}{2017-08-11}{new}
+%Modify the fourth paragraph.
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@par at iv}{%
+ Here's an \tstidxword{example} of the start of a
+\tstidxopenword{range} but
+ remember that a range must also have an end, so make sure that
+ \tstidxword{block}~\@tidx at closerangepar\ has been included in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text},
+ \else
+   \tstidxphrase{dummy text},
+ \fi
+  which closes this
+ \tstidxword{example}.
+ When the \tstidxstyopt{testidx}{verbose} option is used with just
+ \tstidxsty{testidx}, the indexing information 
+ will show the \tstidxword{argument} being passed to
+ \tstidxcs{tstindex} (which will cause \tstidxphrase{overfull lines}).
+ Since the \tstidxsty{testidx-glossaries} package doesn't use
+ \tstidxcs{tstindex}, the \tstidxstyopt{testidx-glossaries}{verbose} package 
+  option will instead write information to the transcript file showing the
+ label, name field, sort field, text field, parent field and see field for each
+ entry as it's defined. (The parent and see fields may be empty).
+ If the \tstidxstyopt{testidx-glossaries}{tex} package option is
+ used, the sorting may take a long time (since \TeX\ is being used
+ to sort the entries). In this case, the 
+ \tstidxstyopt{testidx-glossaries}{verbose} package 
+ option will also write information while it's sorting the entries,
+ so that you know \TeX\ is still doing something and hasn't got stuck.
+ This document has the 
+ \iftestidxverbose
+  \tstidxstyopt{testidx-glossaries}{verbose} package
+ \else
+  \tstidxstyopt{testidx-glossaries}{noverbose} package
+ \fi
+ option set.%
+}
+\let\@tidx at org@par at iv\@tidx at par@iv
+\let\@tidx at par@iv\@tidx at gls@par at iv
+%    \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@tidx at par@vi}
+%\changes{1.1}{2017-08-11}{new}
+%Modify the sixth paragraph.
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@par at vi}{%
+ On the subject of \tstidxapp{xindy}, if you want to use it with
+ this \tstidxword{example} document, you'll need to add the
+ \tstidxword{encap} values used in this \tstidxphrase{dummy text}
+ as allowed attributes. (Don't forget you'll also need the
+ \tstidxstyopt{testidx-glossaries}{xindy} package option when you
+ load \tstidxsty{testidx-glossaries}.) With the \tstidxsty{glossaries} package,
+ this means using \tstidxcs{GlsAddXdyAttribute} with the 
+ encap name as the argument. For example
+ \begin{flushleft}\ttfamily
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapi\expandafter\@gobble\string\}\endgraf
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapii\expandafter\@gobble\string\}\endgraf
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapiii\expandafter\@gobble\string\}
+ \end{flushleft}
+ This sets up allowed encap values and how they should be formatted.
+ The ordering of the allowed \tstidxword{attributes} here gives the
+ \tstidxencapcsn{tstidxencapi} encap precedence in the
+ event of a \tstidxphrase{multiple encaps} clash, since it's the
+ first one in the list.
+ Check out the difference between using \tstidxapp{xindy} and
+ \tstidxapp{makeindex} on this document. Also check the difference
+ between using \tstidxapp{makeglossaries} and
+ \tstidxapp{makeglossaries-lite} to build this document.
+ The \tstidxsubword{location list}{page separator} is given by
+ \tstidxcs{delimN}, and the 
+ \tstidxsubword{location list}{range separator}%
+ \tstindexsee{range separator}{see}{location list} is given by
+ \tstidxcs{delimR}.
+ On the subject of location lists, the word
+ \tstidxword{passim} (meaning \tstidxqt{here and there}) is
+ sometimes used to tidy up ragged lists. For example,
+ the locations \tstidxqt{1, 3, 4, 6, 7} may look neater as
+ \tstidxqt{1-7 passim}, which indicates references are scattered (here
+ and there) throughout that range.
+ The \tstidxapp{bib2gls} application may be used with the
+ \tstidxsty{glossaries-extra} package instead of
+ \tstidxapp{makeindex} or \tstidxapp{xindy}. Use the 
+ \tstidxstyopt{testidx-glossaries}{bib2gls} package option to set up
+ this dummy text to use it. Note that this option doesn't make use
+ of the prefix commands \tstidxcs{tstidxindexmarkerprefix} or
+ \tstidxcs{tstidxindexmathsymprefix}. The
+ \tstidxstyopt{testidx}{prefix} package option will instead alter
+ the way the bib files are loaded to produce a similar grouping.%
+}
+\let\@tidx at org@par at vi\@tidx at par@vi
+\let\@tidx at par@vi\@tidx at gls@par at vi
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at sanitizenote}
+%    \begin{macrocode}
+\newcommand{\@tidx at gls@sanitizenote}{%
+ \space You currently have the 
+ \@tstidx at ifsanitize
+ {\tstidxstyopt{testidx-glossaries}{sanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters will
+  first be sanitized before being passed to \tstidxcs{tstindex}, which 
+  will allow you to test how well the \tstidxphrase{indexing application} 
+  sorts \tstidxword{UTF-8} characters. If you'd rather test how 
+  \tstidxcs{index} writes these characters to the file read by the 
+  indexing application, use the \tstidxstyopt{testidx-glossaries}{nosanitize}
+  option instead. This may cause the \tstidxword{UTF-8} characters to be
+  written in terms of \tstidxcs{IeC}.
+ }%
+ {\tstidxstyopt{testidx-glossaries}{nosanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters 
+  may be written to the file processed by the 
+  \tstidxphrase{indexing application} in terms of
+  \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves. 
+  If you'd rather test how the indexing application sorts
+  \tstidxword{UTF-8} characters, use the
+  \tstidxstyopt{testidx-glossaries}{sanitize}
+  option instead, which will sanitize the \tstidxword{UTF-8} characters
+  before passing them to \tstidxcs{tstindex}.
+ }%
+ The \tstidxstyopt{testidx-glossaries}{nosanitize} option doesn't
+ have an effect when used with the 
+ \tstidxstyopt{testidx-glossaries}{bib2gls} package option, since
+ the sort value isn't written to an external file.%
+}
+\let\@tidx at org@sanitizenote\@tidx at sanitizenote
+\let\@tidx at sanitizenote\@tidx at gls@sanitizenote
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at stripaccentsnote}
+%    \begin{macrocode}
+\newcommand{\@tidx at gls@stripaccentsnote}{%
+ \space The \tstidxstyopt{testidx-glossaries}{stripaccents} package option will
+  effectively do, for example,
+  \texttt{sort=\char`\{elite\char`\}, 
+  name=\char`\{\string\'elite\char`\}}
+  whereas the
+  \tstidxstyopt{testidx-glossaries}{nostripaccents} package option will
+  effectively do, for example,
+  \texttt{sort=\char`\{\string\'elite\char`\}, 
+  name=\char`\{\string\'elite\char`\}}. These options have 
+  no effect in UTF-8 mode.%
+}
+\let\@tidx at org@stripaccentsnote\@tidx at stripaccentsnote
+\let\@tidx at stripaccentsnote\@tidx at gls@stripaccentsnote
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at scriptnote}
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@scriptnote}{%
+  (Note how the subscripts and superscripts can be affected
+  by material inserted between the symbol and the sub- and
+  superscripts. With the \tstidxsty{glossaries} package, this can be
+  avoided by using the final optional argument of commands like
+  \tstidxcs{gls} to bring the scripts into the 
+  \tstidxphrase{link text}, but not if the scripts also include
+  \tstidxcs{gls}, as the superscript does here.)
+}
+\let\@tidx at org@scriptnote\@tidx at scriptnote
+\let\@tidx at scriptnote\@tidx at gls@scriptnote
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at numberlettergroup}
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@numberlettergroup}{%
+  If you're using \tstidxapp{xindy}, the \tstidxqt{glsnumbers}
+  letter group (with the title \tstidxqt{\glsnumbersgroupname}) will 
+  automatically be added to your \texttt{.xdy}
+  file unless you switch off this feature with the
+  \tstidxstyopt{testidx-glossaries}{noglsnumbers} package option.
+}
+\let\@tidx at org@numberlettergroup\@tidx at numberlettergroup
+\let\@tidx at numberlettergroup\@tidx at gls@numberlettergroup
+%    \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@tidx at mathslettergroup}
+%    \begin{macrocode}
+\newcommand*{\@tidx at gls@mathslettergroup}{%
+ \@testidx at ifusebibgls
+ {%
+   Now I've been a bit fancy here and used multiple bib files
+   to define the glossary entries. The maths symbols are defined in 
+   their own separate bib file.
+  \iftestidxprefix
+  This document has used the \tstidxstyopt{testidx}{prefix} package
+  option, which means that \tstidxcs{tstidxmakegloss} is defined to
+  perform separate sorts for each resource block, which enables the
+  maths symbols to appear in their own group.
+  \else
+  This document has used the \tstidxstyopt{testidx}{noprefix} package
+  option, which means that \tstidxcs{tstidxmakegloss} is defined to
+  sort the maths symbols together with the main entries. If you
+  use the \tstidxstyopt{testidx}{prefix} package instead, the maths
+  symbols will be sorted separately and placed in their own group.
+  \fi
+  If you haven't used \tstidxcs{tstidxmakegloss} then the above
+  won't apply. If you don't use the
+  \tstidxstyopt{testidx-glossaries}{bib2gls} package option, then
+  the \tstidxstyopt{testidx}{prefix} package will instead insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  Here's
+ }%
+ {%
+ \iftestidxprefix
+  Now I've been a bit fancy here and inserted
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  Here's
+ \else
+  This document has used the \tstidxstyopt{testidx}{noprefix}
+  package option, which has switched of the sort prefixes.
+  If you use the \tstidxstyopt{testidx}{prefix} option I can be a
+  bit fancy here and insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  When you switch on the prefixes here's
+ \fi
+ }%
+the code you can add to your document to implement it:
+\begin{flushleft}\ttfamily
+\string\GlsAddLetterGroup\glsopenbrace Maths\glsclosebrace\glsopenbrace
+   \string:prefixes (\string"\tstidxmathsymprefix\string")
+   \string:before \string"glsnumbers\string"\glsclosebrace
+\end{flushleft}
+}
+\let\@tidx at org@mathslettergroup\@tidx at mathslettergroup
+\let\@tidx at mathslettergroup\@tidx at gls@mathslettergroup
+%    \end{macrocode}
+%\end{macro}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries.sty>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-diglyphs.tex>
+%    \end{macrocode}
+%\fi
+%This file contains the definitions of words containing glyphs
+%representing the digraphs ll, ij and dz.
+%    \begin{macrocode}
+\tstidxnewutfdigraph{ll}{ll}{ỻ}{a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature Ỻ}
+\tstidxnewutfdigraph{ij}{ij}{ij}{a \glshyperlink{digraph} used in Dutch that's sometimes
+considered
+a separate letter from I and may be rendered as the ligature IJ}
+\tstidxnewutfdigraph{dz}{dz}{dz}{a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as the ligature Dz}
+\tstidxnewutfword{llan}{llan}{ỻan}{commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+\tstidxnewutfword{llama}{llama}{ỻama}{domesticate animal found in the Andes}
+\tstidxnewutfword{lijnbus}{lijnbus}{lijnbus}{bus (Dutch)}
+\tstidxnewutfword{ijsvrij}{ijsvrij}{ijsvrij}{frost (Dutch)}
+\tstidxnewutfword{dzwon}{dzwon}{dzwon}{bell (Polish)}
+\tstidxnewutfword{dzeta}{dz\'eta}{dzéta}{the Greek letter zeta
+(Hungarian)}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-diglyphs.tex>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-nodiglyphs.tex>
+%    \end{macrocode}
+%\fi
+%This file contains the definitions of words containing 
+%the digraphs ll, ij and dz.
+%    \begin{macrocode}
+\tstidxnewdigraph{ll}{a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+\tstidxnewdigraph{ij}{a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+\tstidxnewdigraph{dz}{a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+\tstidxnewword{llan}{commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+\tstidxnewword{llama}{domesticate animal found in the Andes}
+\tstidxnewword{lijnbus}{bus (Dutch)}
+\tstidxnewword{ijsvrij}{frost (Dutch)}
+\tstidxnewword{dzwon}{bell (Polish)}
+
+\tstidxnewutfword{dzeta}{dz\'eta}{dzéta}{the Greek letter zeta
+(Hungarian)}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-nodiglyphs.tex>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-samples.tex>
+%    \end{macrocode}
+%\fi
+%This file contains the definitions of all the terms except for
+%those containing the digraphs ll, ij and dz. There are a few terms
+%that aren't actually used in the modified dummy text produced with
+%\sty{testidx-glossaries}, but are provided to compare indexed with
+%non-indexed entries. First the terms that
+%have sub-items need to be defined:
+%    \begin{macrocode}
+\tstidxnewword{packages}{files provided to adjust the document
+design or provide new commands}
+\tstidxnewword{books}{written or printed works}
+\tstidxnewword{films}{stories recorded by camera}
+\tstidxnewword{people}{human individuals (or fictional
+anthropomorphisms)}
+\tstidxnewword{places}{particular areas or locations}
+\tstidxnewword{applications}{computer programs}
+\tstidxnewword{environments}{a marked-up block within the document
+that requires special action or formatting}
+\tstidxnewword{attributes}{qualities or features that characterise
+something}
+%    \end{macrocode}
+% Now define words.
+%    \begin{macrocode}
+\tstidxnewword{parse}{divide a sentence into its component parts for
+analysis}
+\tstidxnewword{interpret}{translate or explain the meaning of}
+\tstidxnewword{oak}{large tree that produces acorns}
+\tstidxnewword{daft}{silly or foolish}
+\tstidxnewword{rhubarb}{thick reddish or green leaf stalks
+of a plant from the dock family}
+\tstidxnewword{rhinoceros}{a large plant-eating mammal
+with one or two horns on its nose}
+\tstidxnewword{aardvark}{an African mammal}
+\tstidxnewword{check}{make sure something is the case}
+\tstidxnewword{chalk}{soft limestone substance made into sticks to
+use for writing}
+\tstidxnewword{index}{an alphabetical list of names, terms or
+subjects with references to where they occur in the document}
+\tstidxnewword{phrase}{group of words forming a unit}
+\tstidxnewword{glossary}{an alphabetical list of words with
+explanations}
+\tstidxnewword{layout}{the way something is laid out (for example,
+on a page)}
+\tstidxnewword{filler}{something used to fill in gaps or increase bulk}
+\tstidxnewwordseealso{padding}{something used
+to pad out material to make it longer}{filler}
+\tstidxnewword{example}{thing used to illustrate something}
+\tstidxnewword{purpose}{the reason for doing something}
+\tstidxnewword{whatsit}{In \TeX\ terms, a mechanism to allow
+extensions to \TeX, including writing to files or providing
+special instructions to printing devices. More generally,
+a whatsit is an unnamed person or thing}
+\tstidxnewword{test}{a means of testing something}
+\tstidxnewword{design}{plan or purpose}
+\tstidxnewword{document}{a piece of written, printed or electronic
+matter that provides information}
+\tstidxnewword{book}{written or printed work}
+\tstidxnewword{range}{area of variation or scope}
+\tstidxnewword{word}{single unit of language which has meaning}
+\tstidxnewword{marker}{an identifying symbol}
+\tstidxnewword{footnote}{additional information written at the
+bottom of a page}
+\tstidxnewword{encap}{the format used to encapsulate the location}
+\tstidxnewword{text}{written or printed or electronically
+represented words}
+\tstidxnewword{argument}{parameter passed to a command or
+application}
+\tstidxnewword{predefined}{already defined}
+\tstidxnewword{excessive}{more than normal or desired}
+\tstidxnewword{block}{large quantity of things viewed as a unit}
+\tstidxnewword{paragraph}{block of writing, beginning on a new line}
+\tstidxnewword{waffle}{speak or write vague or trivial information in a lengthy way}
+\tstidxnewword{gibberish}{meaningless or hard to comprehend speech
+or writing}
+\tstidxnewwordsee{gobbledegook}{language that is
+difficult to understand}{gibberish}
+\tstidxnewword{clarify}{make it easier to understand}
+\tstidxnewword{confidential}{private or secret information}
+\tstidxnewword{roundabout}{not direct}
+\tstidxnewword{fashion}{a way of doing something}
+\tstidxnewwordseealso{illustration}{an example to explain something}{example}
+\tstidxnewword{wit}{natural talent for saying or writing things in
+an amusing or clever way}
+\tstidxnewword{eloquence}{fluent or persuasive speech or writing}
+\tstidxnewword{adage}{popular saying}
+\tstidxnewword{motto}{short sentence of phrase expressing a belief
+or aim}
+\tstidxnewword{verbiage}{excessively length speech or writing}
+\tstidxnewword{drivel}{nonsense}
+\tstidxnewword{tutor}{teacher}
+\tstidxnewword{grass}{in addition to the plant, also slang for
+reporting criminal activity}
+\tstidxnewword{distress}{cause anxiety}
+\tstidxnewword{concordance}{an alphabetical list of important words
+used in a document}
+\tstidxnewword{ogling}{staring at someone in a lecherous manner}
+\tstidxnewwordsee{gawping}{staring in a rude or stupid manner}{ogling}
+\tstidxnewword{passim}{referencing various places in a document}
+\tstidxnewword{localisation}{place or position}
+\tstidxnewword{digraph}{two letters representing a single sound}
+\tstidxnewword{trigraph}{three letters representing a single sound}
+\tstidxnewwordseealso{lyuk}{hole (Hungarian)}{digraph}
+\tstidxnewwordseealso{dzsungel}{jungle (Hungarian)}{trigraph}
+\tstidxnewword{nonsense}{something that doesn't make sense}
+\tstidxnewword{vol-au-vent}{small round puff pastry containing
+savoury food}
+\tstidxnewword{two}{number following one}
+\tstidxnewword{sculpture}{artwork made of wood, metal or stone}
+\tstidxnewword{Venus}{Roman goddess (or planet named after her)}
+\tstidxnewword{zoo}{place containing animals}
+\tstidxnewword{alphabet}{ordered set of letters used to form words}
+\tstidxnewword{resume}{continue after an interruption}
+\tstidxnewword{fly}{travel by air}
+\tstidxnewword{aeroplane}{fixed wing flying vehicle}
+\tstidxnewword{window}{opening in wall or window to view out or in}
+\tstidxnewword{ogonek}{a diacritic hook placed under the lower right
+corner of a vowel}
+\tstidxnewword{sail}{travel by or navigate a boat}
+\tstidxnewword{ship}{large boat}
+\tstidxnewword{OT1}{one of the original font encodings provided with
+\TeX}
+\tstidxnewword{UTF-8}{character encoding that uses 8-bit code units}
+\tstidxnewword{life}{existence}
+\tstidxnewword{universe}{all existing space and matter}
+\tstidxnewword{even}{multiple of two}
+\tstidxnewword{century}{period of 100 years or a score of 100 runs}
+\tstidxnewword{cricket}{bat and ball game played between two teams
+with eleven players on either side}
+\tstidxnewword{calendar}{chart or list showing a period of time}
+\tstidxnewword{prefix}{word or letter placed at the start of another
+word}
+\tstidxnewword{gobsmacked}{astonished}
+\tstidxnewword{astounded}{shocked or very surprised}
+\tstidxnewword{quaint}{old-fashioned or unusual}
+\tstidxnewword{yatter}{chatter or talk non-stop}
+\tstidxnewword{yawn}{open one's mouth due to tiredness or boredom}
+\tstidxnewword{quirky}{peculiar or unexpected habits}
+\tstidxnewword{badinage}{witty conversation}
+\tstidxnewword{expire}{come to an end}
+\tstidxnewword{story}{account or description of imaginary or real
+events}
+\tstidxnewword{begin}{start something}
+\tstidxnewword{forget}{fail to remember something}
+\tstidxnewword{tale}{a story}
+\tstidxnewword{adventure}{unusual or exciting or daring experience}
+\tstidxnewword{derring-do}{heroic action}
+\tstidxnewword{hero}{principle male character in a story or a person
+admired for their achievements}
+\tstidxnewword{title}{name of a document or work, or a name that
+describes a position}
+\tstidxnewword{knight}{a man raised to military rank after service
+as a page or squire, or a man entitled to use \tstidxqt{Sir} before
+his name}
+\tstidxnewword{handsome}{good-looking}
+\tstidxnewword{bold}{confident or brave}
+\tstidxnewword{brave}{prepared to face danger or difficulties}
+\tstidxnewword{duck}{a waterbird with a blunt bill, short legs and webbed feet}
+\tstidxnewword{name}{word or words by which something is known}
+\tstidxnewword{plight}{dangerous situation}
+\tstidxnewword{land}{area of ground}
+\tstidxnewword{OgRe}{an ogre is a man-eating giant or a terrifying
+person. The silly capitalisation is just a reference to \TeX's output
+routine}
+\tstidxnewword{reference}{referring to something}
+\tstidxnewword{perilous}{dangerous or full of risk}
+\tstidxnewword{quest}{long or difficult search for something}
+\tstidxnewword{xor}{\LaTeX3 experimental output routine}
+\tstidxnewword{continuation}{state of continuing}
+\tstidxnewword{newcomers}{recent arrivals}
+\tstidxnewword{nod}{in addition to the action of moving one's head
+up and down, also indicates a reference of acknowledgement of
+something}
+\tstidxnewword{centre}{point in the middle (UK spelling)}
+\tstidxnewword{center}{point in the middle (US spelling)}
+\tstidxnewword{lore}{tradition or knowledge of a particular subject}
+\tstidxnewword{raft}{flat water vessel made from pieces of wood
+tied together}
+\tstidxnewword{external}{belonging outside of something}
+\tstidxnewword{pun}{play on words}
+\tstidxnewword{joke}{something said to amuse others}
+\tstidxnewword{witty}{having the ability to say clever or
+amusing things}
+\tstidxnewword{cameo}{small part in a story for a distinguished
+actor}
+\tstidxnewword{exclamation}{sudden cry}
+\tstidxnewword{bog}{area of soft, wet, muddy ground}
+\tstidxnewword{leviathans}{very large, powerful thing (such as a sea
+monster)}
+\tstidxnewword{vale}{valley}
+\tstidxnewword{doom}{fate}
+\tstidxnewword{chaos}{complete confusion or disorder}
+\tstidxnewword{butterfly}{winged insect}
+\tstidxnewword{motif}{repeated theme}
+\tstidxnewword{sentence}{set of words forming a complete statement,
+instruction or question}
+\tstidxnewword{conjunction}{word used to connect words or clauses}
+\tstidxnewword{naughty}{badly behaved}
+\tstidxnewword{leap}{jump far or high across something}
+\tstidxnewword{bound}{leaping movement}
+\tstidxnewword{sword}{weapon with a long metal blade}
+\tstidxnewword{myriad}{countless or a very great number}
+\tstidxnewword{clones}{identical copy}
+\tstidxnewword{repetition}{something that's been repeated}
+\tstidxnewword{lair}{hiding place or den}
+\tstidxnewword{roar}{loud, deep sound}
+\tstidxnewword{peace}{freedom from war or anxiety}
+\tstidxnewword{harmony}{arranged well or peacefully together}
+\tstidxnewword{span}{length of time or full extent or extend across
+something}
+\tstidxnewword{fear}{anxiety about something unpleasant}
+\tstidxnewword{thrilling}{exciting}
+\tstidxnewword{quixotic}{impractically unselfish and idealist}
+\tstidxnewword{sea}{large area of salt water}
+\tstidxnewword{seal}{seal-dwelling fish-eating mammal with flippers}
+\tstidxnewword{seaborne}{transported or travelling by sea}
+\tstidxnewword{zither}{a type of stringed musical instrument}
+\tstidxnewword{zealous}{having great enthusiasm for something}
+\tstidxnewword{fan}{an admirer of something}
+\tstidxnewword{youthful}{seeming young}
+\tstidxnewword{magic}{having the apparent power of supernatural or
+mysterious forces}
+\tstidxnewword{magical}{relating to or using magic}
+\tstidxnewword{yo-yo}{a round toy consisting of two discs and a
+piece of string}
+\tstidxnewword{wily}{using cunning or crafty methods to gain an
+advantage}
+\tstidxnewword{wombat}{a type of small marsupial}
+\tstidxnewword{warrior}{brave or experienced fighter}
+\tstidxnewword{laser-guided}{guided by a laser}
+\tstidxnewword{villainous}{characteristic of a villain}
+\tstidxnewword{zany}{amusingly unconventional}
+\tstidxnewword{zoologist}{someone who studies animals}
+\tstidxnewword{xebec}{a type of small sailing ship}
+\tstidxnewword{xenon}{a type of inert gas}
+\tstidxnewword{xylem}{a plant tissue}
+\tstidxnewword{xylene}{a type of liquid hydrocarbon}
+\tstidxnewword{zounds}{an exclamation}
+\tstidxnewword{Ooh}{an exclamation}
+\tstidxnewword{zucchini}{a type of long, green summer squash (called
+a courgette in British English)}
+\tstidxnewword{xylophone}{a type of musical instrument}
+\tstidxnewword{exhilarating}{pleasing or energetic}
+\tstidxnewword{yuppie}{urban well-paid young middle-class professional}
+\tstidxnewword{yoghurt}{thick, liquid food made from milk}
+\tstidxnewword{yummy}{delicious}
+\tstidxnewword{yuck}{disgusting}
+\tstidxnewword{Viking}{a member of Scandinavian seafaring people
+between the eighth and eleventh centuries}
+\tstidxnewword{vignette}{brief episode}
+\tstidxnewword{viceroy}{a person who governs a colony on behalf of
+the sovereign}
+\tstidxnewword{vichyssoise}{a type of soup}
+\tstidxnewword{viceregal}{relating to a viceroy}
+\tstidxnewword{quiz}{game or competition}
+\tstidxnewword{glyph}{small graphic symbol}
+\tstidxnewword{asleep}{in or into a state of sleep}
+\tstidxnewword{ashore}{to or on shore or land}
+\tstidxnewword{aspire}{to have strong ambitions to be or do something}
+\tstidxnewword{assailed}{past tense of assail}
+\tstidxnewword{recover}{get well again}
+\tstidxnewword[name={re-cover}]{reecover}{to cover again}
+%    \end{macrocode}
+%Digraphs and trigraph:
+%    \begin{macrocode}
+\tstidxnewdigraph{cz}{digraph in some languages, such as Polish}
+\tstidxnewdigraph{dd}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ff}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ng}{digraph in some languages, such as Welsh}
+\tstidxnewdigraph{ly}{digraph in some languages, such as Hungarian}
+\tstidxnewtrigraph{dzs}{Hungarian \glshyperlink{trigraph} considered a separate letter}
+%    \end{macrocode}
+%Some words with the Welsh dd diagraph:
+%    \begin{macrocode}
+\tstidxnewword{ddisgynedig}{descending (Welsh)}
+\tstidxnewword{ddyrchafedig}{advanced (Welsh)}
+\tstidxnewword{ffotograff}{photo (Welsh)}
+
+%    \end{macrocode}
+%Some words with the Hungarian ly and dz diagraphs:
+%    \begin{macrocode}
+\tstidxnewutfword{dzsoker}{dzs\'oker}{dzsóker}{joker (Hungarian)}
+%    \end{macrocode}
+%and a Polish cz digraph:
+%    \begin{macrocode}
+\tstidxnewutfword{czesc}{cze\'s\'c}{cześć}{hello (Polish)}
+%    \end{macrocode}
+% Now for some English words with accents.
+%    \begin{macrocode}
+\tstidxnewutfword{elite}{\'elite}{élite}{group of people regarded as
+the best of a particular society or organisation}
+\tstidxnewutfword{aesthetic}{\ae sthetic}{æsthetic}{concerning
+beauty}
+\tstidxnewutfword{blase}{blas\'e}{blasé}{unimpressed or indifferent
+due to familiarity}
+\tstidxnewutfword{protege}{prot\'eg\'e}{protégé}{person guided by an
+older more experienced person}
+\tstidxnewutfword{clientele}{client\`ele}{clientèle}{all the clients
+of a particular business}
+\tstidxnewutfword{resumee}{r\'esum\'e}{résumé}{summary of something
+or curriculum vitae}
+\tstidxnewutfword{soiree}{soir\'ee}{soirée}{an evening social
+gathering involving conversation or music}
+\tstidxnewutfword{phoenix}{ph\oe nix}{phœnix}{mythical bird that
+periodically burned itself and was reborn from the ashes}
+\tstidxnewutfword{decor}{d\'ecor}{décor}{the furnishings and
+decorations of a room}
+\tstidxnewutfword{faerie}{f\ae rie}{færie}{fairyland}
+\tstidxnewutfword{facade}{fa\c{c}ade}{façade}{the front face of a
+building}
+\tstidxnewutfword{aethereal}{\ae thereal}{æthereal}{light, airy or
+tenuous}
+\tstidxnewutfword{debutante}{d\'ebutante}{débutante}{a young
+upper-class woman making her first appearance in society}
+\tstidxnewutfword{naive}{na\"{\i}ve}{naïve}{lacking experience or
+wisdom}
+\tstidxnewutfword{foetid}{f\oe tid}{fœtid}{smelling very unpleasant}
+\tstidxnewutfword{cliche}{clich\'e}{cliché}{overused phrase or idea}
+\tstidxnewutfword{deshabille}{d\'eshabill\'e}{déshabillé}{the state
+of being only partially clothed}
+\tstidxnewutfword{negligee}{n\'eglig\'ee}{négligée}{a woman's very
+thin dressing gown}
+\tstidxnewutfword{cafe}{caf\'e}{café}{small restaurant that sells
+light meals}
+\tstidxnewutfword{anaemic}{an\ae mic}{anæmic}{suffering from anaemia}
+
+\tstidxnewutfwordsee{thornletter}{\th}{þ}{thorn}{thorn}
+\tstidxnewutfwordsee{ethletter}{\dh}{ð}{eth}{eth}
+\tstidxnewutfword{thorn}{thorn (\th)}{thorn (þ)}{Old English and
+Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+\tstidxnewutfword{eth}{eth (\dh)}{eth (ð)}{Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+\tstidxnewutfword{oesophagus}{\oe sophagus}{œsophagus}{part of the
+alimentary canal}
+%    \end{macrocode}
+% Places.
+%    \begin{macrocode}
+\tstidxnewplace{Poland}{an Eastern European country}
+\tstidxnewplace{Glasgow}{a Scottish city}
+\tstidxnewplace{Iceland}{a Nordic island nation}
+\tstidxnewplace{Nghaerdydd}{Cardiff}
+\tstidxnewplace{Nghymru}{Wales}
+\tstidxnewplace{Ffestiniog}{a place in Wales}
+%    \end{macrocode}
+% Places with extended Latin characters.
+%    \begin{macrocode}
+\tstidxnewutfplace{Ostergotland}{\"Osterg\"otland}{Östergötland}{a
+county in Sweden}
+\tstidxnewutfplace{Angelholm}{\"Angelholm}{Ängelholm}{a place in
+Sweden}
+\tstidxnewutfplace{Oresund}{\O resund}{Øresund}{a strait which
+separates Denmark and Sweden}
+\tstidxnewutfplace{Tarnby}{T\r{a}rnby}{Tårnby}{a town in Denmark}
+\tstidxnewutfplace{Rodovre}{R\o dovre}{Rødovre}{a Danish town}
+\tstidxnewutfplace{Naestved}{N\ae stved}{Næstved}{a Danish town on
+the island of Zealand}
+\tstidxnewutfplace{OlstykkeStenlose}{\O lstykke-Stenl\o se}%
+{Ølstykke-Stenløse}{a Danish city in North Zealand}
+\tstidxnewutfplace{Asslar}{A\ss lar}{Aßlar}{German town}
+\tstidxnewutfplace{BadGottleubaBerggiesshubel}%
+{Bad Gottleuba-Berggie\ss h\"ubel}{Bad Gottleuba-Berggießhübel}%
+{a town in the Free State of Saxony, Germany}
+\tstidxnewutfplace{Lodz}{\L\'od\'z}{Łódź}{Polish city}
+\tstidxnewutfplace{Swietokrzyskie}{\'Swi\k{e}tokrzyskie}%
+{Świętokrzyskie}{Polish province}
+\tstidxnewutfplace{Zory}{\.Zory}{Żory}{Polish town and city county}
+\tstidxnewutfplace{Zelechow}{\.Zelech\'ow}{Żelechów}%
+{Polish town}
+\tstidxnewutfplace{Lobez}{\L obez}{Łobez}{Polish town}
+\tstidxnewutfplace{Glogow}{G\l og\'ow}{Głogów}{Polish town}
+\tstidxnewutfplace{Cmielow}{\'Cmiel\'ow}{Ćmielów}{Polish town}
+\tstidxnewutfplace{Scinawa}{\'Scinawa}{Ścinawa}{Polish town}
+\tstidxnewutfplace{Swidnica}{\'Swidnica}{Świdnica}{Polish town}
+\tstidxnewutfplace{Olvesvatn}{\"Olvesvatn}{Ölvesvatn}{Icelandic lake}
+\tstidxnewutfplace{Ulfsvatn}{\'Ulfsvatn}{Úlfsvatn}{Icelandic lake}
+\tstidxnewutfplace{Anavatn}{\'Anavatn}{Ánavatn}{Icelandic lake}
+\tstidxnewutfplace{Masvatn}{M\'asvatn}{Másvatn}{Icelandic lake}
+\tstidxnewutfplace{Thrihyrningsvatn}{\TH r\'{\i}hyrningsvatn}%
+{Þríhyrningsvatn}{Icelandic lake}
+\tstidxnewutfplace{Sigridharstadhavatn}%
+{Sigr\'{\i}\dh arsta\dh avatn}{Sigríðarstaðavatn}%
+{Icelandic lagoon}
+\tstidxnewutfplace{Graenavatn}{Gr\ae navatn}{Grænavatn}%
+{Icelandic lake}
+\tstidxnewutfplace{Arneslon}{\'Arnesl\'on}{Árneslón}%
+{Icelandic lake}
+\tstidxnewutfplace{Isholsvatn}{\'Ish\'olsvatn}{Íshólsvatn}%
+{Icelandic lake}
+%    \end{macrocode}
+%Place starting with an article.
+%    \begin{macrocode}
+\tstidxnewartplace{the}{Bog of Eternal Stench}{place in the film
+\glshyperlink{Labyrinth}}
+%    \end{macrocode}
+%Phrases.
+%    \begin{macrocode}
+\tstidxnewphrase{dado rail}{waist-high moulding around the
+wall of a room}
+\tstidxnewphrase{indexing application}{an application that generates
+a document index}
+\tstidxnewphrase{visual effects}{use of imagery to create an effect}
+\tstidxnewphrase{dummy text}{sample text used for demonstration not
+for its content}
+\tstidxnewphrase{page break}{the point where document text is broken
+across two pages}
+\tstidxnewphrase{link text}{for the \glshyperlink{glossariespackage}
+package, this refers to the text inserted into the document
+through commands like \glshyperlink{cs.gls}}
+\tstidxnewphrase{cross-reference}{reference to another part of the
+document or to a part of another document}
+\tstidxnewphrase{marginal note}{text that's placed in the page
+margin}
+\tstidxnewphrase{overfull lines}{lines where the text extends into
+the margin because of a formatting failure}
+\tstidxnewphrase{lorem ipsum}{dummy text}
+\tstidxnewphrase{between you, me and the gatepost}{an expression
+meaning you're telling someone a secret that shouldn't be passed on
+(common in some British dialects)}
+\tstidxnewphrase{way with words}{have a particular talent with words}
+\tstidxnewphrase{creative writing}{writing typically identified 
+by narrative craft, character development and use of literary tropes}
+\tstidxnewphrase{cut to the chase}{get to the point}
+\tstidxnewphrase{get to the point}{state something directly}
+\tstidxnewphraseseealso{keep mum}{be silent about something}{confidential}
+\tstidxnewphrase{output routine}{\TeX's method of outputting a page}
+\tstidxnewphrase{out of whack}{out of order or not working}
+\tstidxnewphrase{page dimensions}{the dimensions of a page (such as
+the page width and page height)}
+\tstidxnewphrase{font family}{the name of a font}
+\tstidxnewphrase{font size}{the size of a font}
+\tstidxnewphraseseealso{location list}%
+{the list of locations used in an index to indicate where
+the term being referenced was used in the document}{crossreference}
+\tstidxnewphrasesee{range separator}{the symbol
+used between the start and end location to indicate a range}{locationlist}
+\tstidxnewphrase{page number}{the number identifying a
+particular page}
+\tstidxnewphrase{multiple encaps}{a warning issued by
+\glshyperlink{makeindex} when the same page number is indexed
+with different encap values}
+\tstidxnewphrase{input encoding}{the character encoding used
+in the document source code}
+\tstidxnewphrase{font encoding}{the encoding used by the document
+font}
+\tstidxnewphrase{extended Latin characters}{Latin characters outside
+the basic ASCII set}
+\tstidxnewphrase{cup of tea}{an expression indicating what one likes
+or is interested in}
+\tstidxnewphrase{whistle-stop tour}{a series of short visits to
+different places}
+\tstidxnewphrase{number group}{a group associated with numbers}
+\tstidxnewphrase{prime number}{a number that is only divisible by
+itself and 1}
+\tstidxnewphrase{hold my breath}{stop breathing temporarily, also
+used as an expression to indicate a state of anticipation or
+suspense}
+\tstidxnewphrase{letter groups}{groups associated with letters}
+\tstidxnewphrase{Once upon a time}{an expression commonly used at
+the start of fairy tales}
+\tstidxnewphrase{across the pond}{colloquial expression indicating
+the other side of the Atlantic}
+\tstidxnewphrase{bad form}{an offence against accepted behaviour}
+\tstidxnewphrase{Monty Python}{a British surreal comedy group}
+\tstidxnewphrase{magic incantation}{words used to create a magical
+effect}
+\tstidxnewphrase{common knowledge}{something widely known}
+\tstidxnewphrase{intrepid hero}{a hero known for his boldness
+and bravery}
+\tstidxnewphrase{sea lion}{a type of large seal}
+\tstidxnewphrase{sealant gun}{a device used for applying sealant}
+\tstidxnewphrase{zoot suit}{a suit typically having a long loose
+jacket and high-waisted trousers}
+\tstidxnewphrase{anonymous reviewer}{an unnamed reviewer}
+\tstidxnewphrase{yule log}{a large log traditionally burnt on
+Christmas Eve or a log-shaped chocolate cake}
+\tstidxnewphrase{vice-president}{a president's deputy}
+\tstidxnewphrase{vice admiral}{a high rank of naval officer}
+\tstidxnewphrase{Victoria plum}{a large, red, dessert plum}
+\tstidxnewphrase{Victoria sponge}{a sponge cake consisting of two
+layers with jam filling in between}
+\tstidxnewphrase{vice versa}{reversing the order of the items just
+mentioned}
+\tstidxnewphrase{vice chancellor}{a deputy chancellor of a 
+British university in charge of its administration}
+\tstidxnewphrase{letter ordering}{ordering according to the
+individual characters}
+\tstidxnewphrase{word ordering}{ordering according to the
+language or locale's definition of words}
+\tstidxnewphrase{mot juste}{the most appropriate word}
+%    \end{macrocode}
+%Phrases with extended Latin characters.
+%    \begin{macrocode}
+\tstidxnewutfphrase{attachecase}{attach\'e case}{attaché case}%
+{small, flat briefcase for carrying documents}
+\tstidxnewutfphrase{piedaterre}{pied-\`a-terre}{pied-à-terre}%
+{small flat or house kept for occasional use}
+\tstidxnewutfphrase{bergerehat}{berg\`ere hat}{bergère hat}%
+{a type of wide-brimmed straw hat}
+%    \end{macrocode}
+%Phrases starting with an article.
+%    \begin{macrocode}
+\tstidxnewartphrase{the}{commercial world}{pertaining to commerce}
+\tstidxnewartphrase{a}{far away land}{somewhere that's far away; a
+term often used in fairy tales}
+\tstidxnewartphrase{the}{Golden Arara}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Mighty Helm of Knuth}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Legendary Sword}{a made-up item in the dummy
+text}
+\tstidxnewartphrase{the}{Bog of Eternal Glossaries}{a made-up place in the dummy
+text}
+\tstidxnewartphrase{the}{Dread Vale of the Editors}{a made-up place in the dummy
+text}
+\tstidxnewartphrase{the}{butterflies of chaos}{the butterfly effect
+is a popular method of describing aspects of chaos theory}
+\tstidxnewartphrase{The}{End}{denotes the end of a
+story, especially fairy tales}
+%    \end{macrocode}
+%Sub-entries (terms).
+%    \begin{macrocode}
+\tstidxnewsubword{document}{properties}{attributes such as page size}
+\tstidxnewsubword{font encoding}{OT1}{one of the original font
+encodings supplied with \TeX}
+\tstidxnewsubwordsee{hero}{intrepid}{a hero known for his boldness
+and bravery}{intrepidhero}
+%    \end{macrocode}
+%Sub-entries (phrases).
+%    \begin{macrocode}
+\tstidxnewsubphrase{location list}{page separator}%
+{symbol used to separate page references}
+\tstidxnewsubphrase{location list}{range separator}%
+{symbol used to mark page range references}
+%    \end{macrocode}
+%People.
+%    \begin{macrocode}
+\tstidxnewperson{James}{Joyce}{an author}
+\tstidxnewperson{Donald}{Knuth}{creator of \TeX}
+\tstidxnewperson{Paulo}{Cereda}{creator of \glshyperlink{arara}}
+\tstidxnewperson{Sir}{Quackalot}{fictitious character}
+\tstidxnewperson{the}{Fairy Goose}{fictitious character}
+\tstidxnewperson{David}{Carlisle}{member of the \LaTeX3 team}
+\tstidxnewperson{Joseph}{Wright}{member of the \LaTeX3 team}
+%    \end{macrocode}
+%People (extended Latin characters).
+%    \begin{macrocode}
+\tstidxnewutfperson{Anders Jonas}{\AA ngstr\"om}%
+[AndersJonasAngstrom]{Anders Jonas}{Ångström}%
+{Swedish physicist}
+%    \end{macrocode}
+%Books.
+%    \begin{macrocode}
+\tstidxnewbook{Ulysses}{a modernist novel by James Joyce}
+\tstidxnewbook{Sir Quackalot and the Golden Arara}{a fictitious book}
+\tstidxnewbook{Sir Quackalot and the Hyper Lake of Doom}{a fictitious book}
+\tstidxnewbook{Compact Oxford English Dictionary}{a dictionary}
+%    \end{macrocode}
+%Books starting with an article.
+%    \begin{macrocode}
+\tstidxnewartbook{The}{Hitchhiker's Guide to the Galaxy}{a comedy
+series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+\tstidxnewartbook{The}{Adventures of Sir Quackalot}{a fictitious book}
+%    \end{macrocode}
+%Films.
+%    \begin{macrocode}
+\tstidxnewfilm{Labyrinth}{a musical fantasy film}
+%    \end{macrocode}
+%Films starting with an article.
+%    \begin{macrocode}
+\tstidxnewartfilm{The}{Third Man}{a British film noir}
+%    \end{macrocode}
+%Symbols.
+%    \begin{macrocode}
+\tstidxnewsym{TeX}{\TeX}{a typesetting system created by Donald
+Knuth}
+%    \end{macrocode}
+%Maths.
+%    \begin{macrocode}
+\tstidxnewmath{f(x)}[fx]{f(\protect\vec{x})}{a function of $x$}
+\tstidxnewmath{n}{n}{an integer}
+\tstidxnewmath{E}{E}{energy}
+%    \end{macrocode}
+%Maths symbols.
+%    \begin{macrocode}
+\tstidxnewmathsym{alpha}{\protect\alpha}{Greek letter alpha}
+\tstidxnewmathsym{beta}{\protect\beta}{Greek letter beta}
+\tstidxnewmathsym{gamma}{\protect\gamma}{Greek letter gamma}
+\tstidxnewmathsym{sum}{\protect\sum}{summation}
+\tstidxnewmathsym{partial}{\protect\partial}{partial derivative}
+\tstidxnewmathsym{eth}[spinderiv]{\protect\eth}{spin-weighted partial derivative}
+%    \end{macrocode}
+%Packages.
+%    \begin{macrocode}
+\tstidxnewsty{testidx}{package that produces dummy text for testing
+index styles and indexing applications}
+\tstidxnewsty{testidx-glossaries}{package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+\tstidxnewsty{glossaries}{a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+\tstidxnewsty{glossaries-extra}{an extension to the 
+\glshyperlink{glossariespackage} package}
+\tstidxnewsty{hyperref}{a package that provides extensive support
+for hypertext}
+\tstidxnewsty{lipsum}{a package that generates dummy text}
+\tstidxnewsty{inputenc}{a package that can be used to identify the document encoding}
+\tstidxnewstyseealso{fontenc}{a package that can be used to set the font
+encoding}{inputencpackage}
+\tstidxnewsty{amsmath}{a package that provides AMS mathematical
+facilities}
+\tstidxnewsty{amssymb}{a package that provides mathematical
+symbols}
+\tstidxnewsty{longtable}{a package that allows tables to flow over
+page boundaries}
+\tstidxnewsty{makeidx}{a package that provides indexing
+facilities}
+\tstidxnewsty{imakeidx}{a sophisticated package that provides indexing
+facilities}
+%    \end{macrocode}
+%Package options.
+%    \begin{macrocode}
+\tstidxnewstyopt{testidx-glossaries}{extra}{load the
+\glshyperlink{glossariesextrapackage} package}
+\tstidxnewstyopt{testidx-glossaries}{noextra}{don't load the
+\glshyperlink{glossariesextrapackage} package (only load
+\glshyperlink{glossariespackage})}
+\tstidxnewstyopt{testidx-glossaries}{noseekey}{don't use the
+\tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+\tstidxnewstyopt{testidx-glossaries}{seekey}{use the
+\tstidxqt{see} key to implement the cross-referencing}
+\tstidxnewstyopt{testidx-glossaries}{xindy}{set up the
+\glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+\tstidxnewstyopt{testidx-glossaries}{tex}{set up the
+\glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+\tstidxnewstyopt{testidx-glossaries}{bib2gls}{set up the
+\glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+\tstidxnewstyopt{testidx-glossaries}{noglsnumbers}{pass
+the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+\tstidxnewstyopt{testidx-glossaries}{glsnumbers}{pass
+the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+\tstidxnewstyopt{testidx-glossaries}{verbose}{write
+information about the test entries in the transcript file}
+\tstidxnewstyopt{testidx-glossaries}{noverbose}{don't write
+information about the test entries in the transcript file}
+\tstidxnewstyopt{testidx-glossaries}{desc}{add descriptions
+to the dummy entries}
+\tstidxnewstyopt{testidx-glossaries}{sanitize}{sanitize the sort value}
+\tstidxnewstyopt{testidx-glossaries}{nosanitize}{don't sanitize the
+sort value}
+\tstidxnewstyopt{testidxglossaries}{stripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidxglossaries}{nostripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{hidemarks}{hide the marks showing
+where the indexing is occurring}
+\tstidxnewstyopt{testidx}{showmarks}{mark
+where the indexing is occurring}
+\tstidxnewstyopt{testidx}{notestencaps}{don't use the
+test encaps}
+\tstidxnewstyopt{testidx}{verbose}{show the index
+commands in the document text}
+\tstidxnewstyopt{testidx}{noverbose}{don't show the index
+commands in the document text}
+\tstidxnewstyopt{testidx}{digraphs}{use glyphs instead of
+the two-character digraphs for certain words}
+\tstidxnewstyopt{testidx}{german}{change the
+\glshyperlink{makeindex} quote character to allow the 
+double-quote character to indicate an umlaut}
+\tstidxnewstyopt{testidx}{ngerman}{change the
+\glshyperlink{makeindex} quote character to allow the 
+double-quote character to indicate an umlaut}
+\tstidxnewstyopt{testidx}{sanitize}{sanitize the sort value
+before passing it to the indexing command}
+\tstidxnewstyopt{testidx}{nosanitize}{don't sanitize the sort value
+before passing it to the indexing command}
+\tstidxnewstyopt{testidx}{stripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{nostripaccents}{in ASCII mode, strip accent
+commands from the sort value}
+\tstidxnewstyopt{testidx}{prefix}{insert a prefix before the sort
+value for certain symbols}
+\tstidxnewstyopt{testidx}{noprefix}{don't insert a prefix before the sort
+value for certain symbols}
+\tstidxnewstyopt{hyperref}{hidelinks}{don't use a visual effect to
+show the hyperlinks}
+\tstidxnewstyopt{fontenc}{T1}{set the font encoding to T1}
+%    \end{macrocode}
+%Environments.
+%    \begin{macrocode}
+\tstidxnewenv{theindex}{environment used to display an index}
+\tstidxnewenv{align}{environment provided by the
+\glshyperlink{amsmathpackage} package to align equations}
+\tstidxnewenv{eqnarray}{environment provided by the \LaTeX\
+kernel to align equations}
+%    \end{macrocode}
+%Applications.
+%    \begin{macrocode}
+\tstidxnewapp{bib2gls}{an indexing application designed 
+to work with the \glshyperlink{glossariesextrapackage} package}
+\tstidxnewapp{makeindex}{an indexing application}
+\tstidxnewapp{xindy}{a highly-configurable indexing application with
+localisation support}
+\tstidxnewapp{texdoc}{an application for viewing documentation
+installed in a \TeX\ distribution}
+\tstidxnewapp{arara}{an automation tool for building documents}
+\tstidxnewapp{Perl}{a scripting language}
+\tstidxnewapp{makeglossaries}{a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+\tstidxnewapp{makeglossaries-lite}{a light-weight Lua alternative to
+\glshyperlink{makeglossaries}}
+\tstidxnewapp{Emacs}{a text editor}
+\tstidxnewapp{Vi}{a text editor}
+%    \end{macrocode}
+%Application options.
+%    \begin{macrocode}
+\tstidxnewappopt{xindy}{-L swedish}{use the Swedish language module}
+\tstidxnewappopt{xindy}{-L danish}{use the Danish language module}
+\tstidxnewappopt{xindy}{-L polish}{use the Polish language module}
+\tstidxnewappopt{xindy}{-L icelandic}{use the Icelandic language module}
+\tstidxnewappopt{xindy}{-L german-duden}{use the German language
+module with the duden setting}
+\tstidxnewappopt{xindy}{-L german-din5007}{use the German language
+module with the din5007 setting}
+\tstidxnewappopt{xindy}{-M ord/letorder}{use the letter ordering
+module}
+\tstidxnewappopt{makeindex}{-g}{use the German setting that
+recognises the double-quote character as an umlaut command}
+\tstidxnewappopt{makeindex}{-l}{use letter ordering}
+%    \end{macrocode}
+%Index markers.
+%    \begin{macrocode}
+\tstidxnewindexmarker{tstidxmarker}{indicates where the indexing
+command was used for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxsubmarker}{indicates where the indexing
+command was used for a level~1 entry}
+\tstidxnewindexmarker{tstidxsubsubmarker}{indicates where the indexing
+command was used for a level~2 entry}
+\tstidxnewindexmarker{tstidxopenmarker}{indicates where
+the start of a range was indexed for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxclosemarker}{indicates where
+the end of a range was indexed for a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxopensubmarker}{indicates where
+the start of a range was indexed for a level~1 entry}
+\tstidxnewindexmarker{tstidxclosesubmarker}{indicates where
+the end of a range was indexed for a level~1 entry}
+\tstidxnewindexmarker{tstidxopensubsubmarker}{indicates where
+the start of a range was indexed for a level~2 entry}
+\tstidxnewindexmarker{tstidxclosesubsubmarker}{indicates where
+the end of a range was indexed for a level~2 entry}
+\tstidxnewindexmarker{tstidxseemarker}{indicates where the indexing
+command was used to cross-reference a top-level (level~0) entry}
+\tstidxnewindexmarker{tstidxsubseemarker}{indicates where the indexing
+command was used to cross-reference a level~1 entry}
+%    \end{macrocode}
+%Encaps.
+%    \begin{macrocode}
+\tstidxnewencapcsn{tstidxencapi}{first test encap}
+\tstidxnewencapcsn{tstidxencapii}{second test encap}
+\tstidxnewencapcsn{tstidxencapiii}{third test encap}
+%    \end{macrocode}
+%Control sequences.
+%    \begin{macrocode}
+\tstidxnewcs{index}{write information to the external index file 
+that will be processed by an indexing application (defined by the
+\LaTeX\ kernel)}
+
+\tstidxnewcs{testidx}{produce the dummy text (defined in the
+\glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{tstidxtoidx}{switch back to the original definitions
+provided by the base \glshyperlink{testidxpackage} package (defined
+in the \glshyperlink{testidxglossariespackage} package)}
+
+\tstidxnewcs{gls}{reference a term defined by the
+\glshyperlink{glossariespackage} package (displays text and performs
+indexing)}
+
+\tstidxnewcs{glspl}{as \glshyperlink{cs.gls} but displays the
+plural form}
+
+\tstidxnewcs{glsadd}{indexes a term defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glssee}{indexes a cross-referenced term or terms defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glsxtrindexseealso}{indexes a \tstidxqt{see also}
+cross-referenced term or terms defined by the
+\glshyperlink{glossariesextrapackage} package (but doesn't display any text)}
+
+\tstidxnewcs{glshyperlink}{displays the text associated with a
+term (with a hyperlink if enabled) but doesn't perform 
+any indexing (defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{setglossarystyle}{sets the glossary style
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{delimN}{page delimiter used in location lists
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{delimR}{page range delimiter used in location lists
+(defined by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{tstidxfootnote}{produces a footnote
+(defined by the \glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{footnote}{produces a footnote
+(defined by the \LaTeX\ kernel)}
+
+\tstidxnewcs{tstidxtext}{used to mark the sample text being indexed
+(defined by the \glshyperlink{testidxpackage} package)}
+
+\tstidxnewcs{textcolor}{displays the given text in the given colour
+(a colour package is required to enable this command)}
+
+\tstidxnewcs{glstreenamefmt}{used to set the font for
+the name field in the tree-like glossary styles}
+
+\tstidxnewcs{tstindex}{used to index the sample text
+for the base \glshyperlink{testidxpackage} package (not for the
+\glshyperlink{testidxglossariespackage} package)}
+
+\tstidxnewcs{GlsAddXdyAttribute}{adds a \glshyperlink{xindy}
+attribute (provided by the \glshyperlink{glossariespackage} package)}
+
+\tstidxnewcs{IeC}{used internally by the
+\glshyperlink{inputencpackage}
+package}
+
+\tstidxnewcs{tstidxindexmarkerprefix}{prefix used in the
+sort key for markers if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+
+\tstidxnewcs{tstidxindexmathsymprefix}{prefix used in the
+sort key for mathematical symbols if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+
+\tstidxnewcs{tstidxmakegloss}{command used to load
+the files containing the sample glossary definitions
+and also use the appropriate command to initialise the indexing,
+depending on the package options}
+%    \end{macrocode}
+%Numbers.
+%    \begin{macrocode}
+\tstidxnewnumber{42}{forty-two}
+\tstidxnewnumber{10}{ten}
+\tstidxnewnumber{16}{sixteen}
+\tstidxnewnumber{2}{two}
+\tstidxnewnumber{100}{one hundred}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-samples.tex>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-diglyphs-utf8.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+
+ at index{ll,
+  name={ỻ},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as the ligature Ỻ}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as the ligature IJ}
+}
+
+ at index{dz,
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate letter
+from D and may be rendered as the ligature Dz}
+}
+
+ at index{llan,
+  name={ỻan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={ỻama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dzéta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-diglyphs-utf8.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-markers.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at symbol{tstidxmarker,
+  name={\protect\tstidxmarker\space(\protect\tstidxcsfmt{tstidxmarker})},
+  category={indexmarker},
+  description={indicates where the indexing command was used for a
+top-level (level~0) entry}
+}
+
+ at symbol{tstidxsubmarker,
+  name={\protect\tstidxsubmarker\space(\protect\tstidxcsfmt{tstidxsubmarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used for a level~1 entry}
+}
+
+ at symbol{tstidxsubsubmarker,
+  name={\protect\tstidxsubsubmarker\space(\protect\tstidxcsfmt{tstidxsubsubmarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used for a level~2 entry}
+}
+
+ at symbol{tstidxopenmarker,
+  name={\protect\tstidxopenmarker\space(\protect\tstidxcsfmt{tstidxopenmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a top-level (level~0) entry}
+}
+
+ at symbol{tstidxclosemarker,
+  name={\protect\tstidxclosemarker\space(\protect\tstidxcsfmt{tstidxclosemarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a top-level (level~0) entry}
+}
+
+ at symbol{tstidxopensubmarker,
+  name={\protect\tstidxopensubmarker\space(\protect\tstidxcsfmt{tstidxopensubmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a level~1 entry}
+}
+
+ at symbol{tstidxclosesubmarker,
+  name={\protect\tstidxclosesubmarker\space(\protect\tstidxcsfmt{tstidxclosesubmarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a level~1 entry}
+}
+
+ at symbol{tstidxopensubsubmarker,
+  name={\protect\tstidxopensubsubmarker\space(\protect\tstidxcsfmt{tstidxopensubsubmarker})},
+  category={indexmarker},
+  description={indicates where
+the start of a range was indexed for a level~2 entry}
+}
+
+ at symbol{tstidxclosesubsubmarker,
+  name={\protect\tstidxclosesubsubmarker\space(\protect\tstidxcsfmt{tstidxclosesubsubmarker})},
+  category={indexmarker},
+  description={indicates where
+the end of a range was indexed for a level~2 entry}
+}
+
+ at symbol{tstidxseemarker,
+  name={\protect\tstidxseemarker\space(\protect\tstidxcsfmt{tstidxseemarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used to cross-reference a top-level (level~0) entry}
+}
+
+ at symbol{tstidxsubseemarker,
+  name={\protect\tstidxsubseemarker\space(\protect\tstidxcsfmt{tstidxsubseemarker})},
+  category={indexmarker},
+  description={indicates where the indexing
+command was used to cross-reference a level~1 entry}
+}
+
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-markers.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-mathsym.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at symbol{alpha,
+  name={$\alpha$},
+  text={\alpha},
+  category={mathsymbol},
+  description={Greek letter alpha}
+}
+
+ at symbol{beta,
+  name={$\beta$},
+  text={\beta},
+  category={mathsymbol},
+  description={Greek letter beta}
+}
+
+ at symbol{gamma,
+  name={$\gamma$},
+  text={\gamma},
+  category={mathsymbol},
+  description={Greek letter gamma}
+}
+
+ at symbol{sum,
+  name={$\sum$},
+  text={\sum},
+  category={mathsymbol},
+  description={summation}
+}
+
+ at symbol{partial,
+  name={$\partial$},
+  text={\partial},
+  category={mathsymbol},
+  description={partial derivative}
+}
+
+ at symbol{spinderiv,
+  name={$\eth$},
+  text={\eth},
+  category={mathsymbol},
+  description={spin-weighted partial derivative}
+}
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-mathsym.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-nodiglyphs-utf8.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+
+ at index{ll,
+  name={ll},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+}
+
+ at index{dz, 
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+}
+
+ at index{llan,
+  name={llan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={llama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dzéta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-nodiglyphs-utf8.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-nodiglyphs.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at index{ll,
+  name={ll},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Welsh, LL is considered a separate letter
+from L and may be rendered as a ligature}
+}
+
+ at index{ij,
+  name={ij},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in Dutch that's sometimes considered
+a separate letter from I and may be rendered as a ligature}
+}
+
+ at index{dz, 
+  name={dz},
+  category={digraph},
+  description={a \glshyperlink{digraph} used in
+a number of languages. In Hungarian, Dz is considered a separate
+letter
+from D and may be rendered as a ligature}
+}
+
+ at index{llan,
+  name={llan},
+  category={word},
+  description={commonly used placename element in Brittonic
+languages (such as Welsh) typically indicating parish church}
+}
+
+ at index{llama,
+  name={llama},
+  category={word},
+  description={domesticate animal found in the Andes}
+}
+
+ at index{lijnbus,
+  name={lijnbus},
+  category={word},
+  description={bus (Dutch)}
+}
+
+ at index{ijsvrij,
+  name={ijsvrij},
+  category={word},
+  description={frost (Dutch)}
+}
+
+ at index{dzwon,
+  name={dzwon},
+  category={word},
+  description={bell (Polish)}
+}
+
+ at index{dzeta,
+  name={dz\'eta},
+  category={word},
+  description={the Greek letter zeta (Hungarian)}
+}
+
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-nodiglyphs.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-numbers.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at number{42,
+  name={42},
+  category={number},
+  description={forty-two}
+}
+
+ at number{10,
+  name={10},
+  category={number},
+  description={ten}
+}
+
+ at number{16,
+  name={16},
+  category={number},
+  description={sixteen}
+}
+
+ at number{2,
+  name={2},
+  category={number},
+  description={two}
+}
+
+ at number{100,
+  name={100},
+  category={number},
+  description={one hundred}
+}
+
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-numbers.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-samples-ascii.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at index{dzsoker,
+  name={dzs\'oker},
+  category={word},
+  description={joker (Hungarian)}
+}
+
+ at index{czesc,
+  name={cze\'s\'c},
+  category={word},
+  description={hello (Polish)}
+}
+
+ at index{elite,
+  name={{\'e}lite},
+  category={word},
+  description={group of people regarded as
+the best of a particular society or organisation}
+}
+
+ at index{aesthetic,
+  name={\ae sthetic},
+  category={word},
+  description={concerning beauty}
+}
+
+ at index{oesophagus,
+  name={\oe sophagus},
+  category={word},
+  description={part of the alimentary canal}
+}
+
+ at index{blase,
+  name={blas\'e},
+  category={word},
+  description={unimpressed or indifferent due to familiarity}
+}
+
+ at index{protege,
+  name={prot\'eg\'e},
+  category={word},
+  description={person guided by an older more experienced person}
+}
+
+ at index{clientele,
+  name={client\`ele},
+  category={word},
+  description={all the clients of a particular business}
+}
+
+ at index{resumee,
+  name={r\'esum\'e},
+  category={word},
+  description={summary of something or curriculum vitae}
+}
+
+ at index{soiree,
+  name={soir\'ee},
+  category={word},
+  description={an evening social gathering involving conversation or music}
+}
+
+ at index{phoenix,
+  name={ph\oe nix},
+  category={word},
+  description={mythical bird that periodically burned itself and was reborn from the ashes}
+}
+
+ at index{decor,
+  name={d\'ecor},
+  category={word},
+  description={the furnishings and decorations of a room}
+}
+
+ at index{faerie,
+  name={f\ae rie},
+  category={word},
+  description={fairyland}
+}
+
+ at index{facade,
+  name={fa\c{c}ade},
+  category={word},
+  description={the front face of a building}
+}
+
+ at index{aethereal,
+  name={\ae thereal},
+  category={word},
+  description={light, airy or tenuous}
+}
+
+ at index{debutante,
+  name={d\'ebutante},
+  category={word},
+  description={a young upper-class woman making her first appearance in society}
+}
+
+ at index{naive,
+  name={na\"{\i}ve},
+  category={word},
+  description={lacking experience or wisdom}
+}
+
+ at index{foetid,
+  name={f\oe tid},
+  category={word},
+  description={smelling very unpleasant}
+}
+
+ at index{cliche,
+  name={clich\'e},
+  category={word},
+  description={overused phrase or idea}
+}
+
+ at index{deshabille,
+  name={d\'eshabill\'e},
+  category={word},
+  description={the state of being only partially clothed}
+}
+
+ at index{negligee,
+  name={n\'eglig\'ee},
+  category={word},
+  description={a woman's very thin dressing gown}
+}
+
+ at index{cafe,
+  name={caf\'e},
+  category={word},
+  description={small restaurant that sells light meals}
+}
+
+ at index{anaemic,
+  name={an\ae mic},
+  category={word},
+  description={suffering from anaemia}
+}
+
+ at index{thornletter,
+  name={\th},
+  category={word},
+  see={thorn},
+  description={thorn}
+}
+
+ at index{thorn,
+  name={thorn (\th)},
+  category={word},
+  description={Old English and Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+}
+
+ at index{ethletter,
+  name={\dh},
+  category={word},
+  see={ethletter},
+  description={eth}
+}
+
+ at index{eth,
+  name={eth (\dh)},
+  category={word},
+  description={Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+}
+
+ at index{Ostergotland,
+  name={{\"O}sterg\"otland},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{places.Ostergotland,
+  name={{\"O}sterg\"otland},
+  parent={places},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{Angelholm,
+  name={{\"A}ngelholm},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{places.Angelholm,
+  name={{\"A}ngelholm},
+  parent={places},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{Oresund,
+  name={\O resund},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{places.Oresund,
+  name={\O resund},
+  parent={places},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{Tarnby,
+  name={T\r{a}rnby},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{places.Tarnby,
+  name={T\r{a}rnby},
+  parent={places},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{Rodovre,
+  name={R\o dovre},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{places.Rodovre,
+  name={R\o dovre},
+  parent={places},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{Naestved,
+  name={N\ae stved},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{places.Naestved,
+  name={N\ae stved},
+  parent={places},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{OlstykkeStenlose,
+  name={\O lstykke-Stenl\o se},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{places.OlstykkeStenlose,
+  name={\O lstykke-Stenl\o se},
+  parent={places},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{Asslar,
+  name={A\ss lar},
+  category={place},
+  description={German town}
+}
+
+ at index{places.Asslar,
+  name={A\ss lar},
+  parent={places},
+  category={place},
+  description={German town}
+}
+
+ at index{BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggie\ss h\"ubel},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{places.BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggie\ss h\"ubel},
+  parent={places},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{Lodz,
+  name={\L\'od\'z},
+  category={place},
+  description={Polish city}
+}
+
+ at index{places.Lodz,
+  name={\L\'od\'z},
+  parent={places},
+  category={place},
+  description={Polish city}
+}
+
+ at index{Swietokrzyskie,
+  name={{\'S}wi\k{e}tokrzyskie},
+  category={place},
+  description={Polish province}
+}
+
+ at index{places.Swietokrzyskie,
+  name={{\'S}wi\k{e}tokrzyskie},
+  parent={places},
+  category={place},
+  description={Polish province}
+}
+
+ at index{Zory,
+  name={{\.Z}ory},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{places.Zory,
+  name={{\.Z}ory},
+  parent={places},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{Zelechow,
+  name={{\.Z}elech\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Zelechow,
+  name={{\.Z}elech\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Lobez,
+  name={\L obez},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Lobez,
+  name={\L obez},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Glogow,
+  name={G\l og\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Glogow,
+  name={G\l og\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Cmielow,
+  name={{\'C}miel\'ow},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Cmielow,
+  name={{\'C}miel\'ow},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Scinawa,
+  name={{\'S}cinawa},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Scinawa,
+  name={{\'S}cinawa},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Swidnica,
+  name={{\'S}widnica},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Swidnica,
+  name={{\'S}widnica},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Olvesvatn,
+  name={{\"O}lvesvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Olvesvatn,
+  name={{\"O}lvesvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Ulfsvatn,
+  name={{\'U}lfsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Ulfsvatn,
+  name={{\'U}lfsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Anavatn,
+  name={{\'A}navatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Anavatn,
+  name={{\'A}navatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Masvatn,
+  name={M\'asvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Masvatn,
+  name={M\'asvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Thrihyrningsvatn,
+  name={\TH r\'{\i}hyrningsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Thrihyrningsvatn,
+  name={\TH r\'{\i}hyrningsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Sigridharstadhavatn,
+  name={Sigr\'{\i}\dh arsta\dh avatn},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{places.Sigridharstadhavatn,
+  name={Sigr\'{\i}\dh arsta\dh avatn},
+  parent={places},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{Graenavatn,
+  name={Gr\ae navatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Graenavatn,
+  name={Gr\ae navatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Arneslon,
+  name={{\'A}rnesl\'on},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Arneslon,
+  name={{\'A}rnesl\'on},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Isholsvatn,
+  name={{\'I}sh\'olsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Isholsvatn,
+  name={{\'I}sh\'olsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{attachecase,
+  name={attach\'e case},
+  category={phrase},
+  description={small, flat briefcase for carrying documents}
+}
+
+ at index{piedaterre,
+  name={pied-\`a-terre},
+  category={phrase},
+  description={small flat or house kept for occasional use}
+}
+
+ at index{bergerehat,
+  name={berg\`ere hat},
+  category={phrase},
+  description={a type of wide-brimmed straw hat}
+}
+
+ at index{AndersJonasAngstrom,
+  name={\AA ngstr\"om, Anders Jonas},
+  text={Anders Jonas \AA ngstr\"om},
+  category={person},
+  description={Swedish physicist}
+}
+
+ at index{people.AndersJonasAngstrom,
+  name={\AA ngstr\"om, Anders Jonas},
+  text={Anders Jonas \AA ngstr\"om},
+  parent={people},
+  category={person},
+  description={Swedish physicist}
+}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-samples-ascii.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-samples-utf8.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+
+ at index{dzsoker,
+  name={dzsóker},
+  category={word},
+  description={joker (Hungarian)}
+}
+
+ at index{czesc,
+  name={cześć},
+  category={word},
+  description={hello (Polish)}
+}
+
+ at index{elite,
+  name={élite},
+  category={word},
+  description={group of people regarded as
+the best of a particular society or organisation}
+}
+
+ at index{aesthetic,
+  name={æsthetic},
+  category={word},
+  description={concerning beauty}
+}
+
+ at index{oesophagus,
+  name={œsophagus},
+  category={word},
+  description={part of the alimentary canal}
+}
+
+ at index{blase,
+  name={blasé},
+  category={word},
+  description={unimpressed or indifferent due to familiarity}
+}
+
+ at index{protege,
+  name={protégé},
+  category={word},
+  description={person guided by an older more experienced person}
+}
+
+ at index{clientele,
+  name={clientèle},
+  category={word},
+  description={all the clients of a particular business}
+}
+
+ at index{resumee,
+  name={résumé},
+  category={word},
+  description={summary of something or curriculum vitae}
+}
+
+ at index{soiree,
+  name={soirée},
+  category={word},
+  description={an evening social gathering involving conversation or music}
+}
+
+ at index{phoenix,
+  name={phœnix},
+  category={word},
+  description={mythical bird that periodically burned itself and was reborn from the ashes}
+}
+
+ at index{decor,
+  name={décor},
+  category={word},
+  description={the furnishings and decorations of a room}
+}
+
+ at index{faerie,
+  name={færie},
+  category={word},
+  description={fairyland}
+}
+
+ at index{facade,
+  name={façade},
+  category={word},
+  description={the front face of a building}
+}
+
+ at index{aethereal,
+  name={æthereal},
+  category={word},
+  description={light, airy or tenuous}
+}
+
+ at index{debutante,
+  name={débutante},
+  category={word},
+  description={a young upper-class woman making her first appearance in society}
+}
+
+ at index{naive,
+  name={naïve},
+  category={word},
+  description={lacking experience or wisdom}
+}
+
+ at index{foetid,
+  name={fœtid},
+  category={word},
+  description={smelling very unpleasant}
+}
+
+ at index{cliche,
+  name={cliché},
+  category={word},
+  description={overused phrase or idea}
+}
+
+ at index{deshabille,
+  name={déshabillé},
+  category={word},
+  description={the state of being only partially clothed}
+}
+
+ at index{negligee,
+  name={négligée},
+  category={word},
+  description={a woman's very thin dressing gown}
+}
+
+ at index{cafe,
+  name={café},
+  category={word},
+  description={small restaurant that sells light meals}
+}
+
+ at index{anaemic,
+  name={anæmic},
+  category={word},
+  description={suffering from anaemia}
+}
+
+ at index{thornletter,
+  name={þ},
+  category={word},
+  see={thorn},
+  description={thorn}
+}
+
+ at index{thorn,
+  name={thorn (þ)},
+  category={word},
+  description={Old English and Icelandic runic letter. In English, eventually replaced by the
+digraph \tstidxqt{th}}
+}
+
+ at index{ethletter,
+  name={ð},
+  category={word},
+  see={eth},
+  description={eth}
+}
+
+ at index{eth,
+  name={eth (ð)},
+  category={word},
+  description={Old English letter eventually
+superseded by the digraph \tstidxqt{th}, but still in use in
+some other languages}
+}
+
+ at index{Ostergotland,
+  name={Östergötland},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{places.Ostergotland,
+  name={Östergötland},
+  parent={places},
+  category={place},
+  description={a county in Sweden}
+}
+
+ at index{Angelholm,
+  name={Ängelholm},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{places.Angelholm,
+  name={Ängelholm},
+  parent={places},
+  category={place},
+  description={a place in Sweden}
+}
+
+ at index{Oresund,
+  name={Øresund},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{places.Oresund,
+  name={Øresund},
+  parent={places},
+  category={place},
+  description={a strait which separates Denmark and Sweden}
+}
+
+ at index{Tarnby,
+  name={Tårnby},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{places.Tarnby,
+  name={Tårnby},
+  parent={places},
+  category={place},
+  description={a town in Denmark}
+}
+
+ at index{Rodovre,
+  name={Rødovre},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{places.Rodovre,
+  name={Rødovre},
+  parent={places},
+  category={place},
+  description={a Danish town}
+}
+
+ at index{Naestved,
+  name={Næstved},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{places.Naestved,
+  name={Næstved},
+  parent={places},
+  category={place},
+  description={a Danish town on the island of Zealand}
+}
+
+ at index{OlstykkeStenlose,
+  name={Ølstykke-Stenløse},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{places.OlstykkeStenlose,
+  name={Ølstykke-Stenløse},
+  parent={places},
+  category={place},
+  description={a Danish city in North Zealand}
+}
+
+ at index{Asslar,
+  name={Aßlar},
+  category={place},
+  description={German town}
+}
+
+ at index{places.Asslar,
+  name={Aßlar},
+  parent={places},
+  category={place},
+  description={German town}
+}
+
+ at index{BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggießhübel},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{places.BadGottleubaBerggiesshubel,
+  name={Bad Gottleuba-Berggießhübel},
+  parent={places},
+  category={place},
+  description={a town in the Free State of Saxony, Germany}
+}
+
+ at index{Lodz,
+  name={Łódź},
+  category={place},
+  description={Polish city}
+}
+
+ at index{places.Lodz,
+  name={Łódź},
+  parent={places},
+  category={place},
+  description={Polish city}
+}
+
+ at index{Swietokrzyskie,
+  name={Świętokrzyskie},
+  category={place},
+  description={Polish province}
+}
+
+ at index{places.Swietokrzyskie,
+  name={Świętokrzyskie},
+  parent={places},
+  category={place},
+  description={Polish province}
+}
+
+ at index{Zory,
+  name={Żory},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{places.Zory,
+  name={Żory},
+  parent={places},
+  category={place},
+  description={Polish town and city county}
+}
+
+ at index{Zelechow,
+  name={Żelechów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Zelechow,
+  name={Żelechów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Lobez,
+  name={Łobez},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Lobez,
+  name={Łobez},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Glogow,
+  name={Głogów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Glogow,
+  name={Głogów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Cmielow,
+  name={Ćmielów},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Cmielow,
+  name={Ćmielów},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Scinawa,
+  name={Ścinawa},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Scinawa,
+  name={Ścinawa},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Swidnica,
+  name={Świdnica},
+  category={place},
+  description={Polish town}
+}
+
+ at index{places.Swidnica,
+  name={Świdnica},
+  parent={places},
+  category={place},
+  description={Polish town}
+}
+
+ at index{Olvesvatn,
+  name={Ölvesvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Olvesvatn,
+  name={Ölvesvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Ulfsvatn,
+  name={Úlfsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Ulfsvatn,
+  name={Úlfsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Anavatn,
+  name={Ánavatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Anavatn,
+  name={Ánavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Masvatn,
+  name={Másvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Masvatn,
+  name={Másvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Thrihyrningsvatn,
+  name={Þríhyrningsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Thrihyrningsvatn,
+  name={Þríhyrningsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Sigridharstadhavatn,
+  name={Sigríðarstaðavatn},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{places.Sigridharstadhavatn,
+  name={Sigríðarstaðavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lagoon}
+}
+
+ at index{Graenavatn,
+  name={Grænavatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Graenavatn,
+  name={Grænavatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Arneslon,
+  name={Árneslón},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Arneslon,
+  name={Árneslón},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{Isholsvatn,
+  name={Íshólsvatn},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{places.Isholsvatn,
+  name={Íshólsvatn},
+  parent={places},
+  category={place},
+  description={Icelandic lake}
+}
+
+ at index{attachecase,
+  name={attaché case},
+  category={phrase},
+  description={small, flat briefcase for carrying documents}
+}
+
+ at index{piedaterre,
+  name={pied-à-terre},
+  category={phrase},
+  description={small flat or house kept for occasional use}
+}
+
+ at index{bergerehat,
+  name={bergère hat},
+  category={phrase},
+  description={a type of wide-brimmed straw hat}
+}
+
+ at index{AndersJonasAngstrom,
+  name={Ångström, Anders Jonas},
+  text={Anders Jonas Ångström},
+  category={person},
+  description={Swedish physicist}
+}
+
+ at index{people.AndersJonasAngstrom,
+  name={Ångström, Anders Jonas},
+  text={Anders Jonas Ångström},
+  parent={people},
+  category={person},
+  description={Swedish physicist}
+}
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-samples-utf8.bib>
+%    \end{macrocode}
+%\fi
+%\iffalse
+%    \begin{macrocode}
+%<*testidx-glossaries-samples.bib>
+%    \end{macrocode}
+%\fi
+%    \begin{macrocode}
+%<<COMMENT
+% Encoding: ASCII
+%COMMENT
+
+ at index{packages,
+  category={word},
+  description={files provided to adjust the document
+  design or provide new commands}
+}
+
+ at index{books,
+  category={word},
+  description={written or printed works}
+}
+
+ at index{films,
+  category={word},
+  description={stories recorded by camera}
+}
+
+ at index{people,
+  category={word},
+  description={human individuals (or fictional
+    anthropomorphisms)}
+}
+
+ at index{places,
+  category={word},
+  description={particular areas or locations}
+}
+
+ at index{applications,
+  category={word},
+  description={computer programs}
+}
+
+ at index{environments,
+  category={word},
+  description={a marked-up block within the document
+that requires special action or formatting}
+}
+
+ at index{attributes,
+  category={word},
+  description={qualities or features that characterise something}
+}
+
+ at index{check,
+  category={word},
+  description={make sure something is the case}
+}
+
+ at index{chalk,
+  category={word},
+  description={soft limestone substance made into sticks to
+use for writing}
+}
+
+ at index{daft,
+  category={word},
+  description={silly or foolish}
+}
+
+ at index{parse,
+  category={word},
+  description={divide a sentence into its component parts for
+analysis}
+}
+
+ at index{interpret,
+  category={word},
+  description={translate or explain the meaning of}
+}
+
+ at index{oak,
+  category={word},
+  description={large tree that produces acorns}
+}
+
+ at index{rhubarb,
+  category={word},
+  description={thick reddish or green leaf stalks
+of a plant from the dock family}
+}
+
+ at index{rhinoceros,
+  category={word},
+  description={a large plant-eating mammal
+with one or two horns on its nose}
+}
+
+ at index{aardvark,
+  category={word},
+  description={an African mammal}
+}
+
+ at index{ddisgynedig,
+  category={word},
+  description={descending (Welsh)}
+}
+
+ at index{ddyrchafedig,
+  category={word},
+  description={advanced (Welsh)}
+}
+
+ at index{ffotograff,
+  category={word},
+  description={photo (Welsh)}
+}
+
+ at index{index,
+  category={word},
+  description={an alphabetical list of names, terms or
+   subjects with references to where they occur in the document}
+}
+
+ at index{phrase,
+  category={word},
+  description={group of words forming a unit}
+}
+
+ at index{glossary,
+  category={word},
+  description={an alphabetical list of words with explanations}
+}
+
+ at index{layout,
+  category={word},
+  description={the way something is laid out (for example, on a page)}
+}
+
+ at index{filler,
+  category={word},
+  description={something used to fill in gaps or increase bulk}
+}
+
+ at index{padding,
+  category={word},
+  description={something used to pad out material to make it
+longer},
+  seealso={filler}
+}
+
+ at index{example,
+  category={word},
+  description={thing used to illustrate something}
+}
+
+ at index{purpose,
+  category={word},
+  description={the reason for doing something}
+}
+
+ at index{whatsit,
+  category={word},
+  description={In \TeX\ terms, a mechanism to allow
+extensions to \TeX, including writing to files or providing
+special instructions to printing devices. More generally,
+a whatsit is an unnamed person or thing}
+}
+
+ at index{test,
+  category={word},
+  description={a means of testing something}
+}
+
+ at index{design,
+  category={word},
+  description={plan or purpose}
+}
+
+ at index{document,
+  category={word},
+  description={a piece of written, printed or electronic
+matter that provides information}
+}
+
+ at index{book,
+  category={word},
+  description={written or printed work}
+}
+
+ at index{range,
+  category={word},
+  description={area of variation or scope}
+}
+
+ at index{word,
+  category={word},
+  description={single unit of language which has meaning}
+}
+
+ at index{marker,
+  category={word},
+  description={an identifying symbol}
+}
+
+ at index{footnote,
+  category={word},
+  description={additional information written at the bottom of a page}
+}
+
+ at index{encap,
+  category={word},
+  description={the format used to encapsulate the location}
+}
+
+ at index{text,
+  category={word},
+  description={written or printed or electronically
+represented words}
+}
+
+ at index{argument,
+  category={word},
+  description={parameter passed to a command or
+application}
+}
+
+ at index{predefined,
+  category={word},
+  description={already defined}
+}
+
+ at index{excessive,
+  category={word},
+  description={more than normal or desired}
+}
+
+ at index{block,
+  category={word},
+  description={large quantity of things viewed as a unit}
+}
+
+ at index{paragraph,
+  category={word},
+  description={block of writing, beginning on a new line}
+}
+
+ at index{waffle,
+  category={word},
+  description={speak or write vague or trivial information in a
+lengthy way}
+}
+
+ at index{gibberish,
+  category={word},
+  description={meaningless or hard to comprehend speech
+or writing}
+}
+
+ at index{gobbledegook,
+  category={word},
+  description={language that is difficult to understand},
+  see={gibberish}
+}
+
+ at index{clarify,
+  category={word},
+  description={make it easier to understand}
+}
+
+ at index{confidential,
+  category={word},
+  description={private or secret information}
+}
+
+ at index{roundabout,
+  category={word},
+  description={not direct}
+}
+
+ at index{fashion,
+  category={word},
+  description={a way of doing something}
+}
+
+ at index{illustration,
+  category={word},
+  description={an example to explain something},
+  seealso={example}
+}
+
+ at index{wit,
+  category={word},
+  description={natural talent for saying or writing things in
+an amusing or clever way}
+}
+
+ at index{eloquence,
+  category={word},
+  description={fluent or persuasive speech or writing}
+}
+
+ at index{adage,
+  category={word},
+  description={popular saying}
+}
+
+ at index{motto,
+  category={word},
+  description={short sentence of phrase expressing a belief
+or aim}
+}
+
+ at index{verbiage,
+  category={word},
+  description={excessively length speech or writing}
+}
+
+ at index{drivel,
+  category={word},
+  description={nonsense}
+}
+
+ at index{tutor,
+  category={word},
+  description={teacher}
+}
+
+ at index{grass,
+  category={word},
+  description={in addition to the plant, also slang for
+reporting criminal activity}
+}
+
+ at index{distress,
+  category={word},
+  description={cause anxiety}
+}
+
+ at index{concordance,
+  category={word},
+  description={an alphabetical list of important words
+used in a document}
+}
+
+ at index{ogling,
+  category={word},
+  description={staring at someone in a lecherous manner}
+}
+
+ at index{gawping,
+  category={word},
+  description={staring in a rude or stupid manner},
+  see={ogling}
+}
+
+ at index{passim,
+  category={word},
+  description={referencing various places in a document}
+}
+
+ at index{localisation,
+  category={word},
+  description={place or position}
+}
+
+ at index{digraph,
+  category={word},
+  description={two letters representing a single sound}
+}
+
+ at index{trigraph,
+  category={word},
+  description={three letters representing a single sound}
+}
+
+ at index{lyuk,
+  category={word},
+  description={hole (Hungarian)},
+  seealso={digraph}
+}
+
+ at index{dzs,
+  category={trigraph},
+  description={Hungarian \glshyperlink{trigraph} considered a separate letter}
+}
+
+ at index{cz,
+  category={digraph},
+  description={digraph in some languages, such as Polish}
+}
+
+ at index{dd,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ff,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ng,
+  category={digraph},
+  description={digraph in some languages, such as Welsh}
+}
+
+ at index{ly,
+  category={digraph},
+  description={digraph in some languages, such as Hungarian}
+}
+
+ at index{dzsungel,
+  category={word},
+  description={jungle (Hungarian)},
+  seealso={trigraph}
+}
+
+ at index{nonsense,
+  category={word},
+  description={something that doesn't make sense}
+}
+
+ at index{volauvent,
+  category={word},
+  name={vol-au-vent},
+  description={small round puff pastry containing savoury food}
+}
+
+ at index{two,
+  category={word},
+  description={number following one}
+}
+
+ at index{sculpture,
+  category={word},
+  description={artwork made of wood, metal or stone}
+}
+
+ at index{Venus,
+  category={word},
+  description={Roman goddess (or planet named after her)}
+}
+
+ at index{zoo,
+  category={word},
+  description={place containing animals}
+}
+
+ at index{alphabet,
+  category={word},
+  description={ordered set of letters used to form words}
+}
+
+ at index{resume,
+  category={word},
+  description={continue after an interruption}
+}
+
+ at index{fly,
+  category={word},
+  description={travel by air}
+}
+
+ at index{aeroplane,
+  category={word},
+  description={fixed wing flying vehicle}
+}
+
+ at index{window,
+  category={word},
+  description={opening in wall or window to view out or in}
+}
+
+ at index{ogonek,
+  category={word},
+  description={a diacritic hook placed under the lower right
+corner of a vowel}
+}
+
+ at index{sail,
+  category={word},
+  description={travel by or navigate a boat}
+}
+
+ at index{ship,
+  category={word},
+  description={large boat}
+}
+
+ at index{OT1,
+  category={word},
+  description={one of the original font encodings provided with
+\TeX}
+}
+
+ at index{UTF8,
+  name={UTF-8},
+  category={word},
+  description={character encoding that uses 8-bit code units}
+}
+
+ at index{life,
+  category={word},
+  description={existence}
+}
+
+ at index{universe,
+  category={word},
+  description={all existing space and matter}
+}
+
+ at index{even,
+  category={word},
+  description={multiple of two}
+}
+
+ at index{century,
+  category={word},
+  description={period of 100 years or a score of 100 runs}
+}
+
+ at index{cricket,
+  category={word},
+  description={bat and ball game played between two teams
+with eleven players on either side}
+}
+
+ at index{calendar,
+  category={word},
+  description={chart or list showing a period of time}
+}
+
+ at index{prefix,
+  category={word},
+  description={word or letter placed at the start of another
+word}
+}
+
+ at index{gobsmacked,
+  category={word},
+  description={astonished}
+}
+
+ at index{astounded,
+  category={word},
+  description={shocked or very surprised}
+}
+
+ at index{quaint,
+  category={word},
+  description={old-fashioned or unusual}
+}
+
+ at index{yatter,
+  category={word},
+  description={chatter or talk non-stop}
+}
+
+ at index{yawn,
+  category={word},
+  description={open one's mouth due to tiredness or boredom}
+}
+
+ at index{quirky,
+  category={word},
+  description={peculiar or unexpected habits}
+}
+
+ at index{badinage,
+  category={word},
+  description={witty conversation}
+}
+
+ at index{expire,
+  category={word},
+  description={come to an end}
+}
+
+ at index{story,
+  category={word},
+  description={account or description of imaginary or real
+events}
+}
+
+ at index{begin,
+  category={word},
+  description={start something}
+}
+
+ at index{forget,
+  category={word},
+  description={fail to remember something}
+}
+
+ at index{tale,
+  category={word},
+  description={a story}
+}
+
+ at index{adventure,
+  category={word},
+  description={unusual or exciting or daring experience}
+}
+
+ at index{derringdo,
+  name={derring-do},
+  category={word},
+  description={heroic action}
+}
+
+ at index{hero,
+  category={word},
+  description={principle male character in a story or a person
+admired for their achievements}
+}
+
+ at index{title,
+  category={word},
+  description={name of a document or work, or a name that
+describes a position}
+}
+
+ at index{knight,
+  category={word},
+  description={a man raised to military rank after service
+as a page or squire, or a man entitled to use \tstidxqt{Sir} before
+his name}
+}
+
+ at index{handsome,
+  category={word},
+  description={good-looking}
+}
+
+ at index{bold,
+  category={word},
+  description={confident or brave}
+}
+
+ at index{brave,
+  category={word},
+  description={prepared to face danger or difficulties}
+}
+
+ at index{duck,
+  category={word},
+  description={a waterbird with a blunt bill, short legs and webbed
+feet}
+}
+
+ at index{name,
+  category={word},
+  description={word or words by which something is known}
+}
+
+ at index{plight,
+  category={word},
+  description={dangerous situation}
+}
+
+ at index{land,
+  category={word},
+  description={area of ground}
+}
+
+ at index{OgRe,
+  category={word},
+  description={an ogre is a man-eating giant or a terrifying
+person. The silly capitalisation is just a reference to \TeX's
+output routine}
+}
+
+ at index{reference,
+  category={word},
+  description={referring to something}
+}
+
+ at index{perilous,
+  category={word},
+  description={dangerous or full of risk}
+}
+
+ at index{quest,
+  category={word},
+  description={long or difficult search for something}
+}
+
+ at index{xor,
+  category={word},
+  description={\LaTeX3 experimental output routine}
+}
+
+ at index{continuation,
+  category={word},
+  description={state of continuing}
+}
+
+ at index{newcomers,
+  category={word},
+  description={recent arrivals}
+}
+
+ at index{nod,
+  category={word},
+  description={in addition to the action of moving one's head
+up and down, also indicates a reference of acknowledgement of
+something}
+}
+
+ at index{centre,
+  category={word},
+  description={point in the middle (UK spelling)}
+}
+
+ at index{center,
+  category={word},
+  description={point in the middle (US spelling)}
+}
+
+ at index{lore,
+  category={word},
+  description={tradition or knowledge of a particular subject}
+}
+
+ at index{raft,
+  category={word},
+  description={flat water vessel made from pieces of wood
+tied together}
+}
+
+ at index{external,
+  category={word},
+  description={belonging outside of something}
+}
+
+ at index{pun,
+  category={word},
+  description={play on words}
+}
+
+ at index{joke,
+  category={word},
+  description={something said to amuse others}
+}
+
+ at index{witty,
+  category={word},
+  description={having the ability to say clever or
+amusing things}
+}
+
+ at index{cameo,
+  category={word},
+  description={small part in a story for a distinguished
+actor}
+}
+
+ at index{exclamation,
+  category={word},
+  description={sudden cry}
+}
+
+ at index{bog,
+  category={word},
+  description={area of soft, wet, muddy ground}
+}
+
+ at index{leviathans,
+  category={word},
+  description={very large, powerful thing (such as a sea
+monster)}
+}
+
+ at index{vale,
+  category={word},
+  description={valley}
+}
+
+ at index{doom,
+  category={word},
+  description={fate}
+}
+
+ at index{chaos,
+  category={word},
+  description={complete confusion or disorder}
+}
+
+ at index{butterfly,
+  category={word},
+  description={winged insect}
+}
+
+ at index{motif,
+  category={word},
+  description={repeated theme}
+}
+
+ at index{sentence,
+  category={word},
+  description={set of words forming a complete statement,
+instruction or question}
+}
+
+ at index{conjunction,
+  category={word},
+  description={word used to connect words or clauses}
+}
+
+ at index{naughty,
+  category={word},
+  description={badly behaved}
+}
+
+ at index{leap,
+  category={word},
+  description={jump far or high across something}
+}
+
+ at index{bound,
+  category={word},
+  description={leaping movement}
+}
+
+ at index{sword,
+  category={word},
+  description={weapon with a long metal blade}
+}
+
+ at index{myriad,
+  category={word},
+  description={countless or a very great number}
+}
+
+ at index{clones,
+  category={word},
+  description={identical copy}
+}
+
+ at index{repetition,
+  category={word},
+  description={something that's been repeated}
+}
+
+ at index{lair,
+  category={word},
+  description={hiding place or den}
+}
+
+ at index{roar,
+  category={word},
+  description={loud, deep sound}
+}
+
+ at index{peace,
+  category={word},
+  description={freedom from war or anxiety}
+}
+
+ at index{harmony,
+  category={word},
+  description={arranged well or peacefully together}
+}
+
+ at index{span,
+  category={word},
+  description={length of time or full extent or extend across
+something}
+}
+
+ at index{fear,
+  category={word},
+  description={anxiety about something unpleasant}
+}
+
+ at index{thrilling,
+  category={word},
+  description={exciting}
+}
+
+ at index{quixotic,
+  category={word},
+  description={impractically unselfish and idealist}
+}
+
+ at index{seal,
+  category={word},
+  description={seal-dwelling fish-eating mammal with flippers}
+}
+
+ at index{sea,
+  category={word},
+  description={large area of salt water}
+}
+
+ at index{seaborne,
+  category={word},
+  description={transported or travelling by sea}
+}
+
+ at index{zither,
+  category={word},
+  description={a type of stringed musical instrument}
+}
+
+ at index{zealous,
+  category={word},
+  description={having great enthusiasm for something}
+}
+
+ at index{fan,
+  category={word},
+  description={an admirer of something}
+}
+
+ at index{youthful,
+  category={word},
+  description={seeming young}
+}
+
+ at index{magic,
+  category={word},
+  description={having the apparent power of supernatural or
+mysterious forces}
+}
+
+ at index{magical,
+  category={word},
+  description={relating to or using magic}
+}
+
+ at index{yoyo,
+  name={yo-yo},
+  category={word},
+  description={a round toy consisting of two discs and a
+piece of string}
+}
+
+ at index{wily,
+  category={word},
+  description={using cunning or crafty methods to gain an
+advantage}
+}
+
+ at index{wombat,
+  category={word},
+  description={a type of small marsupial}
+}
+
+ at index{warrior,
+  category={word},
+  description={brave or experienced fighter}
+}
+
+ at index{laserguided,
+  name={laser-guided},
+  category={word},
+  description={guided by a laser}
+}
+
+ at index{villainous,
+  category={word},
+  description={characteristic of a villain}
+}
+
+ at index{zany,
+  category={word},
+  description={amusingly unconventional}
+}
+
+ at index{zoologist,
+  category={word},
+  description={someone who studies animals}
+}
+
+ at index{xebec,
+  category={word},
+  description={a type of small sailing ship}
+}
+
+ at index{xenon,
+  category={word},
+  description={a type of inert gas}
+}
+
+ at index{xylem,
+  category={word},
+  description={a plant tissue}
+}
+
+ at index{xylene,
+  category={word},
+  description={a type of liquid hydrocarbon}
+}
+
+ at index{zounds,
+  category={word},
+  description={an exclamation}
+}
+
+ at index{Ooh,
+  category={word},
+  description={an exclamation}
+}
+
+ at index{zucchini,
+  category={word},
+  description={a type of long, green summer squash (called
+a courgette in British English)}
+}
+
+ at index{xylophone,
+  category={word},
+  description={a type of musical instrument}
+}
+
+ at index{exhilarating,
+  category={word},
+  description={pleasing or energetic}
+}
+
+ at index{yuppie,
+  category={word},
+  description={urban well-paid young middle-class professional}
+}
+
+ at index{yoghurt,
+  category={word},
+  description={thick, liquid food made from milk}
+}
+
+ at index{yummy,
+  category={word},
+  description={delicious}
+}
+
+ at index{yuck,
+  category={word},
+  description={disgusting}
+}
+
+ at index{Viking,
+  category={word},
+  description={a member of Scandinavian seafaring people
+between the eighth and eleventh centuries}
+}
+
+ at index{vignette,
+  category={word},
+  description={brief episode}
+}
+
+ at index{viceroy,
+  category={word},
+  description={a person who governs a colony on behalf of
+the sovereign}
+}
+
+ at index{vichyssoise,
+  category={word},
+  description={a type of soup}
+}
+
+ at index{viceregal,
+  category={word},
+  description={relating to a viceroy}
+}
+
+ at index{quiz,
+  category={word},
+  description={game or competition}
+}
+
+ at index{glyph,
+  category={word},
+  description={small graphic symbol}
+}
+
+ at index{asleep,
+  category={word},
+  description={in or into a state of sleep}
+}
+
+ at index{ashore,
+  category={word},
+  description={to or on shore or land}
+}
+
+ at index{aspire,
+  category={word},
+  description={to have strong ambitions to be or do something}
+}
+
+ at index{assailed,
+  category={word},
+  description={past tense of assail}
+}
+
+ at index{recover,
+  category={word},
+  description={get well again}
+}
+
+ at index{reecover,
+  name={re-cover},
+  category={word},
+  description={to cover again}
+}
+
+ at index{document.properties,
+  name={properties},
+  parent={document},
+  category={word},
+  description={attributes such as page size}
+}
+
+ at index{fontencoding.OT1,
+  name={OT1},
+  parent={fontencoding},
+  category={word},
+  description={one of the original font encodings supplied with \TeX}
+}
+
+ at index{hero.intrepid,
+  name={intrepid},
+  parent={hero},
+  category={word},
+  description={a hero known for his boldness and bravery},
+  see={intrepidhero}
+}
+ at index{dadorail,
+  name={dado rail},
+  category={phrase},
+  description={waist-high moulding around the wall of a room}
+}
+
+ at index{indexingapplication,
+  name={indexing application},
+  category={phrase},
+  description={an application that generates a document index}
+}
+
+ at index{visualeffects,
+  name={visual effects},
+  category={phrase},
+  description={use of imagery to create an effect}
+}
+
+ at index{dummytext,
+  name={dummy text},
+  category={phrase},
+  description={sample text used for demonstration not
+for its content}
+}
+
+ at index{pagebreak,
+  name={page break},
+  category={phrase},
+  description={the point where document text is broken
+across two pages}
+}
+
+ at index{linktext,
+  name={link text},
+  category={phrase},
+  description={for the \glshyperlink{glossariespackage}
+package, this refers to the text inserted into the document
+through commands like \glshyperlink{cs.gls}}
+}
+
+ at index{crossreference,
+  name={cross-reference},
+  category={phrase},
+  description={reference to another part of the
+document or to a part of another document}
+}
+
+ at index{marginalnote,
+  name={marginal note},
+  category={phrase},
+  description={text that's placed in the page margin}
+}
+
+ at index{overfulllines,
+  name={overfull lines},
+  category={phrase},
+  description={lines where the text extends into
+the margin because of a formatting failure}
+}
+
+ at index{loremipsum,
+  name={lorem ipsum},
+  category={phrase},
+  description={dummy text}
+}
+
+ at index{betweenyoumeandthegatepost,
+  name={between you, me and the gatepost},
+  category={phrase},
+  description={an expression
+meaning you're telling someone a secret that shouldn't be passed on
+(common in some British dialects)}
+}
+
+ at index{waywithwords,
+  name={way with words},
+  category={phrase},
+  description={have a particular talent with words}
+}
+
+ at index{creativewriting,
+  name={creative writing},
+  category={phrase},
+  description={writing typically identified
+by narrative craft, character development and use of literary tropes}
+}
+
+ at index{cuttothechase,
+  name={cut to the chase},
+  category={phrase},
+  description={get to the point}
+}
+
+ at index{gettothepoint,
+  name={get to the point},
+  category={phrase},
+  description={state something directly}
+}
+
+ at index{keepmum,
+  name={keep mum},
+  category={phrase},
+  description={be silent about something},
+  seealso={confidential}
+}
+
+ at index{outputroutine,
+  name={output routine},
+  category={phrase},
+  description={\TeX's method of outputting a page}
+}
+
+ at index{outofwhack,
+  name={out of whack},
+  category={phrase},
+  description={out of order or not working}
+}
+
+ at index{pagedimensions,
+  name={page dimensions},
+  category={phrase},
+  description={the dimensions of a page (such as
+the page width and page height)}
+}
+
+ at index{fontfamily,
+  name={font family},
+  category={phrase},
+  description={the name of a font}
+}
+
+ at index{fontsize,
+  name={font size},
+  category={phrase},
+  description={the size of a font}
+}
+
+ at index{locationlist,
+  name={location list},
+  category={phrase},
+  description={the list of locations used in an index to indicate
+where
+the term being referenced was used in the document},
+  seealso={crossreference}
+}
+
+ at index{rangeseparator,
+  name={range separator},
+  category={phrase},
+  description={the symbol
+used between the start and end location to indicate a range},
+  see={locationlist}
+}
+
+ at index{pagenumber,
+  name={page number},
+  category={phrase},
+  description={the number identifying a particular page}
+}
+
+ at index{multipleencaps,
+  name={multiple encaps},
+  category={phrase},
+  description={a warning issued by
+\glshyperlink{makeindex} when the same page number is indexed
+with different encap values}
+}
+
+ at index{inputencoding,
+  name={input encoding},
+  category={phrase},
+  description={the character encoding used
+in the document source code}
+}
+
+ at index{fontencoding,
+  name={font encoding},
+  category={phrase},
+  description={the encoding used by the document
+font}
+}
+
+ at index{extendedLatincharacters,
+  name={extended Latin characters},
+  category={phrase},
+  description={Latin characters outside the basic ASCII set}
+}
+
+ at index{cupoftea,
+  name={cup of tea},
+  category={phrase},
+  description={an expression indicating what one likes
+or is interested in}
+}
+
+ at index{whistlestoptour,
+  name={whistle-stop tour},
+  category={phrase},
+  description={a series of short visits to different places}
+}
+
+ at index{numbergroup,
+  name={number group},
+  category={phrase},
+  description={a group associated with numbers}
+}
+
+ at index{primenumber,
+  name={prime number},
+  category={phrase},
+  description={a number that is only divisible by itself and 1}
+}
+
+ at index{holdmybreath,
+  name={hold my breath},
+  category={phrase},
+  description={stop breathing temporarily, also used as an expression to indicate a state of anticipation or
+suspense}
+}
+
+ at index{lettergroups,
+  name={letter groups},
+  category={phrase},
+  description={groups associated with letters}
+}
+
+ at index{Onceuponatime,
+  name={Once upon a time},
+  category={phrase},
+  description={an expression commonly used at
+the start of fairy tales}
+}
+
+ at index{acrossthepond,
+  name={across the pond},
+  category={phrase},
+  description={colloquial expression indicating
+the other side of the Atlantic}
+}
+
+ at index{badform,
+  name={bad form},
+  category={phrase},
+  description={an offence against accepted behaviour}
+}
+
+ at index{MontyPython,
+  name={Monty Python},
+  category={phrase},
+  description={a British surreal comedy group}
+}
+
+ at index{magicincantation,
+  name={magic incantation},
+  category={phrase},
+  description={words used to create a magical effect}
+}
+
+ at index{commonknowledge,
+  name={common knowledge},
+  category={phrase},
+  description={something widely known}
+}
+
+ at index{intrepidhero,
+  name={intrepid hero},
+  category={phrase},
+  description={a hero known for his boldness and bravery}
+}
+
+ at index{sealion,
+  name={sea lion},
+  category={phrase},
+  description={a type of large seal}
+}
+
+ at index{sealantgun,
+  name={sealant gun},
+  category={phrase},
+  description={a device used for applying sealant}
+}
+
+ at index{zootsuit,
+  name={zoot suit},
+  category={phrase},
+  description={a suit typically having a long loose
+jacket and high-waisted trousers}
+}
+
+ at index{anonymousreviewer,
+  name={anonymous reviewer},
+  category={phrase},
+  description={an unnamed reviewer}
+}
+
+ at index{yulelog,
+  name={yule log},
+  category={phrase},
+  description={a large log traditionally burnt on
+Christmas Eve or a log-shaped chocolate cake}
+}
+
+ at index{vicepresident,
+  name={vice-president},
+  category={phrase},
+  description={a president's deputy}
+}
+
+ at index{viceadmiral,
+  name={vice admiral},
+  category={phrase},
+  description={a high rank of naval officer}
+}
+
+ at index{Victoriaplum,
+  name={Victoria plum},
+  category={phrase},
+  description={a large, red, dessert plum}
+}
+
+ at index{Victoriasponge,
+  name={Victoria sponge},
+  category={phrase},
+  description={a sponge cake consisting of two
+layers with jam filling in between}
+}
+
+ at index{viceversa,
+  name={vice versa},
+  category={phrase},
+  description={reversing the order of the items just mentioned}
+}
+
+ at index{vicechancellor,
+  name={vice chancellor},
+  category={phrase},
+  description={a deputy chancellor of a
+British university in charge of its administration}
+}
+
+ at index{letterordering,
+  name={letter ordering},
+  category={phrase},
+  description={ordering according to the
+individual characters}
+}
+
+ at index{wordordering,
+  name={word ordering},
+  category={phrase},
+  description={ordering according to the
+language or locale's definition of words}
+}
+
+ at index{commercialworld,
+  name={commercial world, the},
+  text={the commercial world},
+  category={phrase},
+  description={pertaining to commerce}
+}
+
+ at index{farawayland,
+  name={far away land, a},
+  text={a far away land},
+  category={phrase},
+  description={somewhere that's far away; a
+term often used in fairy tales}
+}
+
+ at index{GoldenArara,
+  name={Golden Arara, the},
+  text={the Golden Arara},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{MightyHelmofKnuth,
+  name={Mighty Helm of Knuth, the},
+  text={the Mighty Helm of Knuth},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{LegendarySword,
+  name={Legendary Sword, the},
+  text={the Legendary Sword},
+  category={phrase},
+  description={a made-up item in the dummy text}
+}
+
+ at index{BogofEternalGlossaries,
+  name={Bog of Eternal Glossaries, the},
+  text={the Bog of Eternal Glossaries},
+  category={phrase},
+  description={a made-up place in the dummy text}
+}
+
+ at index{DreadValeoftheEditors,
+  name={Dread Vale of the Editors, the},
+  text={the Dread Vale of the Editors},
+  category={phrase},
+  description={a made-up place in the dummy text}
+}
+
+ at index{butterfliesofchaos,
+  name={butterflies of chaos, the},
+  text={the butterflies of chaos},
+  category={phrase},
+  description={the butterfly effect is a popular method of describing aspects of chaos theory}
+}
+
+ at index{End,
+  name={End, The},
+  text={The End},
+  category={phrase},
+  description={denotes the end of a story, especially fairy tales}
+}
+
+ at index{locationlist.pageseparator,
+  name={page separator},
+  parent={locationlist},
+  category={phrase},
+  description={symbol used to separate page references}
+}
+
+ at index{locationlist.rangeseparator,
+  name={range separator},
+  parent={locationlist},
+  category={phrase},
+  description={symbol used to mark page range references}
+}
+
+ at index{motjuste,
+ name={mot juste},
+ description={the most appropriate word}
+}
+
+ at index{Poland,
+  name={Poland},
+  category={place},
+  description={an Eastern European country}
+}
+
+ at index{places.Poland,
+  name={Poland},
+  parent={places},
+  category={place},
+  description={an Eastern European country}
+}
+
+ at index{Glasgow,
+  name={Glasgow},
+  category={place},
+  description={a Scottish city}
+}
+
+ at index{places.Glasgow,
+  name={Glasgow},
+  parent={places},
+  category={place},
+  description={a Scottish city}
+}
+
+ at index{Iceland,
+  name={Iceland},
+  category={place},
+  description={a Nordic island nation}
+}
+
+ at index{places.Iceland,
+  name={Iceland},
+  parent={places},
+  category={place},
+  description={a Nordic island nation}
+}
+
+ at index{Nghaerdydd,
+  name={Nghaerdydd},
+  category={place},
+  description={Cardiff}
+}
+
+ at index{places.Nghaerdydd,
+  name={Nghaerdydd},
+  parent={places},
+  category={place},
+  description={Cardiff}
+}
+
+ at index{Nghymru,
+  name={Nghymru},
+  category={place},
+  description={Wales}
+}
+
+ at index{places.Nghymru,
+  name={Nghymru},
+  parent={places},
+  category={place},
+  description={Wales}
+}
+
+ at index{Ffestiniog,
+  name={Ffestiniog},
+  category={place},
+  description={a place in Wales}
+}
+
+ at index{places.Ffestiniog,
+  name={Ffestiniog},
+  parent={places},
+  category={place},
+  description={a place in Wales}
+}
+
+ at index{BogofEternalStench,
+  name={Bog of Eternal Stench, the},
+  text={the Bog of Eternal Stench},
+  category={place},
+  description={place in the film \glshyperlink{Labyrinth}}
+}
+
+ at index{places.BogofEternalStench,
+  name={Bog of Eternal Stench, the},
+  text={the Bog of Eternal Stench},
+  parent={places},
+  category={place},
+  description={place in the film \glshyperlink{Labyrinth}}
+}
+
+ at index{JamesJoyce,
+  name={Joyce, James},
+  text={James Joyce},
+  category={person},
+  description={an author}
+}
+
+ at index{people.JamesJoyce,
+  name={Joyce, James},
+  text={James Joyce},
+  parent={people},
+  category={person},
+  description={an author}
+}
+
+ at index{DonaldKnuth,
+  name={Knuth, Donald},
+  text={Donald Knuth},
+  category={person},
+  description={creator of \TeX}
+}
+
+ at index{people.DonaldKnuth,
+  name={Knuth, Donald},
+  text={Donald Knuth},
+  parent={people},
+  category={person},
+  description={creator of \TeX}
+}
+
+ at index{PauloCereda,
+  name={Cereda, Paulo},
+  text={Paulo Cereda},
+  category={person},
+  description={creator of \glshyperlink{arara}}
+}
+
+ at index{people.PauloCereda,
+  name={Cereda, Paulo},
+  text={Paulo Cereda},
+  parent={people},
+  category={person},
+  description={creator of \glshyperlink{arara}}
+}
+
+ at index{SirQuackalot,
+  name={Quackalot, Sir},
+  text={Sir Quackalot},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{people.SirQuackalot,
+  name={Quackalot, Sir},
+  text={Sir Quackalot},
+  parent={people},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{theFairyGoose,
+  name={Fairy Goose, the},
+  text={the Fairy Goose},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{people.theFairyGoose,
+  name={Fairy Goose, the},
+  text={the Fairy Goose},
+  parent={people},
+  category={person},
+  description={fictitious character}
+}
+
+ at index{DavidCarlisle,
+  name={Carlisle, David},
+  text={David Carlisle},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{people.DavidCarlisle,
+  name={Carlisle, David},
+  text={David Carlisle},
+  parent={people},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{JosephWright,
+  name={Wright, Joseph},
+  text={Joseph Wright},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{people.JosephWright,
+  name={Wright, Joseph},
+  text={Joseph Wright},
+  parent={people},
+  category={person},
+  description={member of the \LaTeX3 team}
+}
+
+ at index{Ulysses,
+  name={\tstidxbookfmt{Ulysses}},
+  category={book},
+  description={a modernist novel by James Joyce}
+}
+
+ at index{books.Ulysses,
+  name={\tstidxbookfmt{Ulysses}},
+  parent={books},
+  category={book},
+  description={a modernist novel by James Joyce}
+}
+
+ at index{SirQuackalotandtheGoldenArara,
+  name={\tstidxbookfmt{Sir Quackalot and the Golden Arara}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.SirQuackalotandtheGoldenArara,
+  name={\tstidxbookfmt{Sir Quackalot and the Golden Arara}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{SirQuackalotandtheHyperLakeofDoom,
+  name={\tstidxbookfmt{Sir Quackalot and the Hyper Lake of Doom}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.SirQuackalotandtheHyperLakeofDoom,
+  name={\tstidxbookfmt{Sir Quackalot and the Hyper Lake of Doom}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{CompactOxfordEnglishDictionary,
+  name={\tstidxbookfmt{Compact Oxford English Dictionary}},
+  category={book},
+  description={a dictionary}
+}
+
+ at index{books.CompactOxfordEnglishDictionary,
+  name={\tstidxbookfmt{Compact Oxford English Dictionary}},
+  parent={books},
+  category={book},
+  description={a dictionary}
+}
+
+ at index{HitchhikersGuidetotheGalaxy,
+  name={\tstidxbookfmt{Hitchhiker's Guide to the Galaxy, the}},
+  text={\tstidxbookfmt{the Hitchhiker's Guide to the Galaxy}},
+  category={book},
+  description={a comedy series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+}
+
+ at index{books.HitchhikersGuidetotheGalaxy,
+  name={\tstidxbookfmt{Hitchhiker's Guide to the Galaxy, the}},
+  text={\tstidxbookfmt{the Hitchhiker's Guide to the Galaxy}},
+  parent={books},
+  category={book},
+  description={a comedy series by Douglas Adams, originally created for radio but later
+adapted to book, TV and film}
+}
+
+ at index{AdventuresofSirQuackalot,
+  name={\tstidxbookfmt{Adventures of Sir Quackalot, the}},
+  text={\tstidxbookfmt{the Adventures of Sir Quackalot}},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{books.AdventuresofSirQuackalot,
+  name={\tstidxbookfmt{Adventures of Sir Quackalot, the}},
+  text={\tstidxbookfmt{the Adventures of Sir Quackalot}},
+  parent={books},
+  category={book},
+  description={a fictitious book}
+}
+
+ at index{Labyrinth,
+  name={\tstidxfilmfmt{Labyrinth}},
+  category={film},
+  description={a musical fantasy film}
+}
+
+ at index{films.Labyrinth,
+  name={\tstidxfilmfmt{Labyrinth}},
+  parent={films},
+  category={film},
+  description={a musical fantasy film}
+}
+
+ at index{ThirdMan,
+  name={\tstidxfilmfmt{Third Man, The}},
+  text={\tstidxfilmfmt{The Third Man}},
+  category={film},
+  description={a British film noir}
+}
+
+ at index{films.ThirdMan,
+  name={\tstidxfilmfmt{Third Man, The}},
+  text={\tstidxfilmfmt{The Third Man}},
+  parent={films},
+  category={film},
+  description={a British film noir}
+}
+
+ at index{TeX,
+  name={\TeX},
+  category={symbol},
+  description={a typesetting system created by Donald Knuth}
+}
+
+ at index{fx,
+  name={$f(\vec{x})$},
+  text={f(\vec{x})},
+  category={math},
+  description={a function of $x$}
+}
+
+ at index{n,
+  name={$n$},
+  text={n},
+  category={math},
+  description={an integer}
+}
+
+ at index{E,
+  name={$E$},
+  text={E},
+  category={math},
+  description={energy}
+}
+
+ at index{testidxpackage,
+  name={\tstidxstyfmt{testidx} package},
+  text={\tstidxstyfmt{testidx}},
+  category={package},
+  description={package that produces dummy text for testing
+index styles and indexing applications}
+}
+
+ at index{packages.testidxpackage,
+  name={\tstidxstyfmt{testidx}},
+  parent={packages},
+  category={package},
+  description={package that produces dummy text for testing
+index styles and indexing applications}
+}
+
+ at index{testidxglossariespackage,
+  name={\tstidxstyfmt{testidx-glossaries} package},
+  text={\tstidxstyfmt{testidx-glossaries}},
+  category={package},
+  description={package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+}
+
+ at index{packages.testidxglossariespackage,
+  name={\tstidxstyfmt{testidx-glossaries}},
+  parent={packages},
+  category={package},
+  description={package that produces dummy text
+for testing glossary styles and indexing applications that integrate
+with the \glshyperlink{glossariespackage} or
+\glshyperlink{glossariesextrapackage} packages}
+}
+
+ at index{glossariespackage,
+  name={\tstidxstyfmt{glossaries} package},
+  text={\tstidxstyfmt{glossaries}},
+  category={package},
+  description={a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+}
+
+ at index{packages.glossariespackage,
+  name={\tstidxstyfmt{glossaries}},
+  parent={packages},
+  category={package},
+  description={a package for creating glossaries or lists
+of terms, symbols or abbreviations}
+}
+
+ at index{glossariesextrapackage,
+  name={\tstidxstyfmt{glossaries-extra} package},
+  text={\tstidxstyfmt{glossaries-extra}},
+  category={package},
+  description={an extension to the \glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.glossariesextrapackage,
+  name={\tstidxstyfmt{glossaries-extra}},
+  parent={packages},
+  category={package},
+  description={an extension to the \glshyperlink{glossariespackage} package}
+}
+
+ at index{hyperrefpackage,
+  name={\tstidxstyfmt{hyperref} package},
+  text={\tstidxstyfmt{hyperref}},
+  category={package},
+  description={a package that provides extensive support for hypertext}
+}
+
+ at index{packages.hyperrefpackage,
+  name={\tstidxstyfmt{hyperref}},
+  parent={packages},
+  category={package},
+  description={a package that provides extensive support for hypertext}
+}
+
+ at index{lipsumpackage,
+  name={\tstidxstyfmt{lipsum} package},
+  text={\tstidxstyfmt{lipsum}},
+  category={package},
+  description={a package that generates dummy text}
+}
+
+ at index{packages.lipsumpackage,
+  name={\tstidxstyfmt{lipsum}},
+  parent={packages},
+  category={package},
+  description={a package that generates dummy text}
+}
+
+ at index{inputencpackage,
+  name={\tstidxstyfmt{inputenc} package},
+  text={\tstidxstyfmt{inputenc}},
+  category={package},
+  description={a package that can be used to identify the document
+encoding}
+}
+
+ at index{packages.inputencpackage,
+  name={\tstidxstyfmt{inputenc}},
+  parent={packages},
+  category={package},
+  description={a package that can be used to identify the document
+encoding}
+}
+
+ at index{fontencpackage,
+  name={\tstidxstyfmt{fontenc} package},
+  text={\tstidxstyfmt{fontenc}},
+  category={package},
+  description={a package that can be used to set the font
+encoding},
+  seealso={inputencpackage}
+}
+
+ at index{packages.fontencpackage,
+  name={\tstidxstyfmt{fontenc}},
+  parent={packages},
+  category={package},
+  description={a package that can be used to set the font encoding}
+}
+
+ at index{amsmathpackage,
+  name={\tstidxstyfmt{amsmath} package},
+  text={\tstidxstyfmt{amsmath}},
+  category={package},
+  description={a package that provides AMS mathematical
+facilities}
+}
+
+ at index{packages.amsmathpackage,
+  name={\tstidxstyfmt{amsmath}},
+  parent={packages},
+  category={package},
+  description={a package that provides AMS mathematical
+facilities}
+}
+
+ at index{amssymbpackage,
+  name={\tstidxstyfmt{amssymb} package},
+  text={\tstidxstyfmt{amssymb}},
+  category={package},
+  description={a package that provides mathematical
+symbols}
+}
+
+ at index{packages.amssymbpackage,
+  name={\tstidxstyfmt{amssymb}},
+  parent={packages},
+  category={package},
+  description={a package that provides mathematical
+symbols}
+}
+
+ at index{longtablepackage,
+  name={\tstidxstyfmt{longtable} package},
+  text={\tstidxstyfmt{longtable}},
+  category={package},
+  description={a package that allows tables to flow over
+page boundaries}
+}
+
+ at index{packages.longtablepackage,
+  name={\tstidxstyfmt{longtable}},
+  parent={packages},
+  category={package},
+  description={a package that allows tables to flow over
+page boundaries}
+}
+
+ at index{testidxglossariespackage.extra,
+  name={\tstidxstyoptfmt{extra}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={load the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{packages.testidxglossariespackage.extra,
+  name={\tstidxstyoptfmt{extra}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={load the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{testidxglossariespackage.noextra,
+  name={\tstidxstyoptfmt{noextra}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't load the \glshyperlink{glossariesextrapackage}
+package  (only load \glshyperlink{glossariespackage})}
+}
+
+ at index{packages.testidxglossariespackage.noextra,
+  name={\tstidxstyoptfmt{noextra}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't load the \glshyperlink{glossariesextrapackage}
+package (only load \glshyperlink{glossariespackage})}
+}
+
+ at index{testidxglossariespackage.noseekey,
+  name={\tstidxstyoptfmt{noseekey}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't use the \tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+}
+
+ at index{packages.testidxglossariespackage.noseekey,
+  name={\tstidxstyoptfmt{noseekey}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't use the \tstidxqt{see} key to implement the cross-referencing (use
+\glshyperlink{cs.glssee} instead)}
+}
+
+ at index{testidxglossariespackage.seekey,
+  name={\tstidxstyoptfmt{seekey}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={use the \tstidxqt{see} key to implement the cross-referencing}
+}
+
+ at index{packages.testidxglossariespackage.seekey,
+  name={\tstidxstyoptfmt{seekey}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={use the \tstidxqt{see} key to implement the cross-referencing}
+}
+
+ at index{testidxglossariespackage.xindy,
+  name={\tstidxstyoptfmt{xindy}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+}
+
+ at index{packages.testidxglossariespackage.xindy,
+  name={\tstidxstyoptfmt{xindy}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \glshyperlink{xindy}
+as the indexing application}
+}
+
+ at index{testidxglossariespackage.tex,
+  name={\tstidxstyoptfmt{tex}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+}
+
+ at index{packages.testidxglossariespackage.tex,
+  name={\tstidxstyoptfmt{tex}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariespackage} package to use \TeX\ to
+sort and collate the entries}
+}
+
+ at index{testidxglossariespackage.bib2gls,
+  name={\tstidxstyoptfmt{bib2gls}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+}
+
+ at index{packages.testidxglossariespackage.bib2gls,
+  name={\tstidxstyoptfmt{bib2gls}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={set up the \glshyperlink{glossariesextrapackage} package to use
+\glshyperlink{bib2gls} as the indexing application}
+}
+
+ at index{testidxglossariespackage.noglsnumbers,
+  name={\tstidxstyoptfmt{noglsnumbers}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.testidxglossariespackage.noglsnumbers,
+  name={\tstidxstyoptfmt{noglsnumbers}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=false} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{testidxglossariespackage.glsnumbers,
+  name={\tstidxstyoptfmt{glsnumbers}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{packages.testidxglossariespackage.glsnumbers,
+  name={\tstidxstyoptfmt{glsnumbers}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={pass the \tstidxstyoptfmt{glsnumbers=true} option to the
+\glshyperlink{glossariespackage} package}
+}
+
+ at index{testidxglossariespackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={write information about the test entries in the transcript file}
+}
+
+ at index{packages.testidxglossariespackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={write information about the test entries in the transcript file}
+}
+
+ at index{testidxglossariespackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't write information about the test entries in the transcript file}
+}
+
+ at index{packages.testidxglossariespackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't write information about the test entries in the transcript file}
+}
+
+ at index{testidxglossariespackage.desc,
+  name={\tstidxstyoptfmt{desc}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={add descriptions to the dummy entries}
+}
+
+ at index{packages.testidxglossariespackage.desc,
+  name={\tstidxstyoptfmt{desc}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={add descriptions to the dummy entries}
+}
+
+ at index{testidxpackage.hidemarks,
+  name={\tstidxstyoptfmt{hidemarks}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={hide the marks showing where the indexing is occurring}
+}
+
+ at index{packages.testidxpackage.hidemarks,
+  name={\tstidxstyoptfmt{hidemarks}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={hide the marks showing where the indexing is occurring}
+}
+
+ at index{testidxpackage.showmarks,
+  name={\tstidxstyoptfmt{showmarks}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={mark where the indexing is occurring}
+}
+
+ at index{packages.testidxpackage.showmarks,
+  name={\tstidxstyoptfmt{showmarks}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={mark where the indexing is occurring}
+}
+
+ at index{testidxpackage.notestencaps,
+  name={\tstidxstyoptfmt{notestencaps}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't use the test encaps}
+}
+
+ at index{packages.testidxpackage.notestencaps,
+  name={\tstidxstyoptfmt{notestencaps}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't use the test encaps}
+}
+
+ at index{testidxpackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={show the index commands in the document text}
+}
+
+ at index{packages.testidxpackage.verbose,
+  name={\tstidxstyoptfmt{verbose}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={show the index commands in the document text}
+}
+
+ at index{testidxpackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't show the index commands in the document text}
+}
+
+ at index{packages.testidxpackage.noverbose,
+  name={\tstidxstyoptfmt{noverbose}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't show the index commands in the document text}
+}
+
+ at index{testidxpackage.digraphs,
+  name={\tstidxstyoptfmt{digraphs}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={use glyphs instead of the two-character digraphs for certain words}
+}
+
+ at index{packages.testidxpackage.digraphs,
+  name={\tstidxstyoptfmt{digraphs}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={use glyphs instead of the two-character digraphs for certain words}
+}
+
+ at index{testidxpackage.german,
+  name={\tstidxstyoptfmt{german}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{packages.testidxpackage.german,
+  name={\tstidxstyoptfmt{german}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{testidxpackage.ngerman,
+  name={\tstidxstyoptfmt{ngerman}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{packages.testidxpackage.ngerman,
+  name={\tstidxstyoptfmt{ngerman}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={change the \glshyperlink{makeindex} quote character to allow the
+double-quote character to indicate an umlaut}
+}
+
+ at index{testidxpackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{packages.testidxpackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{testidxglossariespackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={sanitize the sort value}
+}
+
+ at index{packages.testidxglossariespackage.sanitize,
+  name={\tstidxstyoptfmt{sanitize}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={sanitize the sort value}
+}
+
+ at index{testidxpackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{packages.testidxpackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't sanitize the sort value before passing it to the indexing command}
+}
+
+ at index{testidxglossariespackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't sanitize the sort value}
+}
+
+ at index{packages.testidxglossariespackage.nosanitize,
+  name={\tstidxstyoptfmt{nosanitize}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't sanitize the sort value}
+}
+
+ at index{testidxpackage.prefix,
+  name={\tstidxstyoptfmt{prefix}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={insert a prefix before the sort value for certain symbols}
+}
+
+ at index{packages.testidxpackage.prefix,
+  name={\tstidxstyoptfmt{prefix}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={insert a prefix before the sort value for certain symbols}
+}
+
+ at index{testidxpackage.noprefix,
+  name={\tstidxstyoptfmt{noprefix}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't insert a prefix before the sort value for certain symbols}
+}
+
+ at index{packages.testidxpackage.noprefix,
+  name={\tstidxstyoptfmt{noprefix}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't insert a prefix before the sort value for certain symbols}
+}
+
+ at index{testidxpackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxpackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxpackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={testidxpackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxpackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={packages.testidxpackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxglossariespackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxglossariespackage.nostripaccents,
+  name={\tstidxstyoptfmt{nostripaccents}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={don't strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{testidxglossariespackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={testidxglossariespackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{packages.testidxglossariespackage.stripaccents,
+  name={\tstidxstyoptfmt{stripaccents}},
+  parent={packages.testidxglossariespackage},
+  category={packageoption},
+  description={strip accent commands from the sort value in
+ASCII mode}
+}
+
+ at index{hyperrefpackage.hidelinks,
+  name={\tstidxstyoptfmt{hidelinks}},
+  parent={hyperrefpackage},
+  category={packageoption},
+  description={don't use a visual effect to show the hyperlinks}
+}
+
+ at index{packages.hyperrefpackage.hidelinks,
+  name={\tstidxstyoptfmt{hidelinks}},
+  parent={packages.hyperrefpackage},
+  category={packageoption},
+  description={don't use a visual effect to show the hyperlinks}
+}
+
+ at index{fontencpackage.T1,
+  name={\tstidxstyoptfmt{T1}},
+  parent={fontencpackage},
+  category={packageoption},
+  description={set the font encoding to T1}
+}
+
+ at index{packages.fontencpackage.T1,
+  name={\tstidxstyoptfmt{T1}},
+  parent={packages.fontencpackage},
+  category={packageoption},
+  description={set the font encoding to T1}
+}
+
+ at index{theindexenvironment,
+  name={\tstidxenvfmt{theindex} environment},
+  text={\tstidxenvfmt{theindex}},
+  category={environment},
+  description={environment used to display an index}
+}
+
+ at index{alignenvironment,
+  name={\tstidxenvfmt{align} environment},
+  text={\tstidxenvfmt{align}},
+  category={environment},
+  description={environment provided by the
+\glshyperlink{amsmathpackage} package to align equations}
+}
+
+ at index{eqnarrayenvironment,
+  name={\tstidxenvfmt{eqnarray} environment},
+  text={\tstidxenvfmt{eqnarray}},
+  category={environment},
+  description={environment provided by the \LaTeX\ kernel to align equations}
+}
+
+ at index{bib2gls,
+  name={\tstidxappfmt{bib2gls}},
+  category={application},
+  description={an indexing application designed
+to work with the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{applications.bib2gls,
+  name={\tstidxappfmt{bib2gls}},
+  parent={applications},
+  category={application},
+  description={an indexing application designed
+to work with the \glshyperlink{glossariesextrapackage} package}
+}
+
+ at index{makeindex,
+  name={\tstidxappfmt{makeindex}},
+  category={application},
+  description={an indexing application}
+}
+
+ at index{applications.makeindex,
+  name={\tstidxappfmt{makeindex}},
+  parent={applications},
+  category={application},
+  description={an indexing application}
+}
+
+ at index{xindy,
+  name={\tstidxappfmt{xindy}},
+  category={application},
+  description={a highly-configurable indexing application with
+localisation support}
+}
+
+ at index{applications.xindy,
+  name={\tstidxappfmt{xindy}},
+  parent={applications},
+  category={application},
+  description={a highly-configurable indexing application with
+localisation support}
+}
+
+ at index{texdoc,
+  name={\tstidxappfmt{texdoc}},
+  category={application},
+  description={an application for viewing documentation
+installed in a \TeX\ distribution}
+}
+
+ at index{applications.texdoc,
+  name={\tstidxappfmt{texdoc}},
+  parent={applications},
+  category={application},
+  description={an application for viewing documentation
+installed in a \TeX\ distribution}
+}
+
+ at index{arara,
+  name={\tstidxappfmt{arara}},
+  category={application},
+  description={an automation tool for building documents}
+}
+
+ at index{applications.arara,
+  name={\tstidxappfmt{arara}},
+  parent={applications},
+  category={application},
+  description={an automation tool for building documents}
+}
+
+ at index{Perl,
+  name={\tstidxappfmt{Perl}},
+  category={application},
+  description={a scripting language}
+}
+
+ at index{applications.Perl,
+  name={\tstidxappfmt{Perl}},
+  parent={applications},
+  category={application},
+  description={a scripting language}
+}
+
+ at index{makeglossaries,
+  name={\tstidxappfmt{makeglossaries}},
+  category={application},
+  description={a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+}
+
+ at index{applications.makeglossaries,
+  name={\tstidxappfmt{makeglossaries}},
+  parent={applications},
+  category={application},
+  description={a Perl script provided with the
+\glshyperlink{glossariespackage} package that automatically runs
+either \glshyperlink{makeindex} or \glshyperlink{xindy}
+according to the document settings}
+}
+
+ at index{makeglossarieslite,
+  name={\tstidxappfmt{makeglossaries-lite}},
+  category={application},
+  description={a light-weight Lua alternative to \glshyperlink{makeglossaries}}
+}
+
+ at index{applications.makeglossarieslite,
+  name={\tstidxappfmt{makeglossaries-lite}},
+  parent={applications},
+  category={application},
+  description={a light-weight Lua alternative to \glshyperlink{makeglossaries}}
+}
+
+ at index{Emacs,
+  name={\tstidxappfmt{Emacs}},
+  category={application},
+  description={a text editor}
+}
+
+ at index{applications.Emacs,
+  name={\tstidxappfmt{Emacs}},
+  parent={applications},
+  category={application},
+  description={a text editor}
+}
+
+ at index{Vi,
+  name={\tstidxappfmt{Vi}},
+  category={application},
+  description={a text editor}
+}
+
+ at index{applications.Vi,
+  name={\tstidxappfmt{Vi}},
+  parent={applications},
+  category={application},
+  description={a text editor}
+}
+
+ at index{xindy.Lswedish,
+  name={\tstidxappoptfmt{-L swedish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{applications.xindy.Lswedish,
+  name={\tstidxappoptfmt{-L swedish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{Lswedish.xindyoption,
+  name={\tstidxappoptfmt{-L swedish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Swedish language module}
+}
+
+ at index{xindy.Ldanish,
+  name={\tstidxappoptfmt{-L danish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{applications.xindy.Ldanish,
+  name={\tstidxappoptfmt{-L danish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{Ldanish.xindyoption,
+  name={\tstidxappoptfmt{-L danish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Danish language module}
+}
+
+ at index{xindy.Lpolish,
+  name={\tstidxappoptfmt{-L polish}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{applications.xindy.Lpolish,
+  name={\tstidxappoptfmt{-L polish}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{Lpolish.xindyoption,
+  name={\tstidxappoptfmt{-L polish} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Polish language module}
+}
+
+ at index{xindy.Licelandic,
+  name={\tstidxappoptfmt{-L icelandic}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{applications.xindy.Licelandic,
+  name={\tstidxappoptfmt{-L icelandic}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{Licelandic.xindyoption,
+  name={\tstidxappoptfmt{-L icelandic} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the Icelandic language module}
+}
+
+ at index{xindy.Lgermanduden,
+  name={\tstidxappoptfmt{-L german-duden}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{applications.xindy.Lgermanduden,
+  name={\tstidxappoptfmt{-L german-duden}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{Lgermanduden.xindyoption,
+  name={\tstidxappoptfmt{-L german-duden} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the German language module with the duden setting}
+}
+
+ at index{xindy.Lgermandin5007,
+  name={\tstidxappoptfmt{-L german-din5007}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{applications.xindy.Lgermandin5007,
+  name={\tstidxappoptfmt{-L german-din5007}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{Lgermandin5007.xindyoption,
+  name={\tstidxappoptfmt{-L german-din5007} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the German language module with the din5007 setting}
+}
+
+ at index{xindy.Mord/letorder,
+  name={\tstidxappoptfmt{-M ord/letorder}},
+  parent={xindy},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{applications.xindy.Mord/letorder,
+  name={\tstidxappoptfmt{-M ord/letorder}},
+  parent={applications.xindy},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{Mord/letorder.xindyoption,
+  name={\tstidxappoptfmt{-M ord/letorder} (\tstidxappfmt{xindy})},
+  category={applicationoption},
+  description={use the letter ordering module}
+}
+
+ at index{makeindex.g,
+  name={\tstidxappoptfmt{-g}},
+  parent={makeindex},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{applications.makeindex.g,
+  name={\tstidxappoptfmt{-g}},
+  parent={applications.makeindex},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{g.makeindexoption,
+  name={\tstidxappoptfmt{-g} (\tstidxappfmt{makeindex})},
+  category={applicationoption},
+  description={use the German setting that
+recognises the double-quote character as an umlaut command}
+}
+
+ at index{makeindex.l,
+  name={\tstidxappoptfmt{-l}},
+  parent={makeindex},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{applications.makeindex.l,
+  name={\tstidxappoptfmt{-l}},
+  parent={applications.makeindex},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{l.makeindexoption,
+  name={\tstidxappoptfmt{-l} (\tstidxappfmt{makeindex})},
+  category={applicationoption},
+  description={use letter ordering}
+}
+
+ at index{tstidxencapi,
+  name={\texttt{tstidxencapi} (\tstidxcsfmt{tstidxencapi})},
+  text={\texttt{tstidxencapi}},
+  category={encapcsn},
+  description={first test encap}
+}
+
+ at index{encap.tstidxencapi,
+  name={\texttt{tstidxencapi}},
+  parent={encap},
+  category={encapcsn},
+  description={first test encap}
+}
+
+ at index{tstidxencapii,
+  name={\texttt{tstidxencapii} (\tstidxcsfmt{tstidxencapii})},
+  text={\texttt{tstidxencapii}},
+  category={encapcsn},
+  description={second test encap}
+}
+
+ at index{encap.tstidxencapii,
+  name={\texttt{tstidxencapii}},
+  parent={encap},
+  category={encapcsn},
+  description={second test encap}
+}
+
+ at index{tstidxencapiii,
+  name={\texttt{tstidxencapiii} (\tstidxcsfmt{tstidxencapiii})},
+  text={\texttt{tstidxencapiii}},
+  category={encapcsn},
+  description={third test encap}
+}
+
+ at index{encap.tstidxencapiii,
+  name={\texttt{tstidxencapiii}},
+  parent={encap},
+  category={encapcsn},
+  description={third test encap}
+}
+
+ at index{cs.index,
+  name={\tstidxcsfmt{index}},
+  category={cs},
+  description={write information to the external index file
+that will be processed by an indexing application (defined by the
+\LaTeX\ kernel)}
+}
+
+ at index{cs.testidx,
+  name={\tstidxcsfmt{testidx}},
+  category={cs},
+  description={produce the dummy text (defined in the
+\glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.tstidxtoidx,
+  name={\tstidxcsfmt{tstidxtoidx}},
+  category={cs},
+  description={switch back to the original definitions
+provided by the base \glshyperlink{testidxpackage} package (defined
+in the \glshyperlink{testidxglossariespackage} package)}
+}
+
+ at index{cs.gls,
+  name={\tstidxcsfmt{gls}},
+  category={cs},
+  description={reference a term defined by the
+\glshyperlink{glossariespackage} package (displays text and performs
+indexing)}
+}
+
+ at index{cs.glspl,
+  name={\tstidxcsfmt{glspl}},
+  category={cs},
+  description={as \glshyperlink{cs.gls} but displays the
+plural form}
+}
+
+ at index{cs.glsadd,
+  name={\tstidxcsfmt{glsadd}},
+  category={cs},
+  description={indexes a term defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any
+text)}
+}
+
+ at index{cs.glssee,
+  name={\tstidxcsfmt{glssee}},
+  category={cs},
+  description={indexes a cross-referenced term or terms defined by the
+\glshyperlink{glossariespackage} package (but doesn't display any
+text)}
+}
+
+ at index{cs.glsxtrindexseealso,
+  name={\tstidxcsfmt{glsxtrindexseealso}},
+  category={cs},
+  description={indexes a \tstidxqt{see also} cross-referenced term
+or terms
+defined by the
+\glshyperlink{glossariesextrapackage} package (but doesn't display
+any text)}
+}
+
+ at index{cs.glshyperlink,
+  name={\tstidxcsfmt{glshyperlink}},
+  category={cs},
+  description={displays the text associated with a
+term (with a hyperlink if enabled) but doesn't perform
+any indexing (defined by the \glshyperlink{glossariespackage}
+package)}
+}
+
+ at index{cs.setglossarystyle,
+  name={\tstidxcsfmt{setglossarystyle}},
+  category={cs},
+  description={sets the glossary style
+(defined by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.tstidxfootnote,
+  name={\tstidxcsfmt{tstidxfootnote}},
+  category={cs},
+  description={produces a footnote
+(defined by the \glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.footnote,
+  name={\tstidxcsfmt{footnote}},
+  category={cs},
+  description={produces a footnote
+(defined by the \LaTeX\ kernel)}
+}
+
+ at index{cs.tstidxtext,
+  name={\tstidxcsfmt{tstidxtext}},
+  category={cs},
+  description={used to mark the sample text being indexed
+(defined by the \glshyperlink{testidxpackage} package)}
+}
+
+ at index{cs.textcolor,
+  name={\tstidxcsfmt{textcolor}},
+  category={cs},
+  description={displays the given text in the given colour
+(a colour package is required to enable this command)}
+}
+
+ at index{cs.glstreenamefmt,
+  name={\tstidxcsfmt{glstreenamefmt}},
+  category={cs},
+  description={used to set the font for
+the name field in the tree-like glossary styles}
+}
+
+ at index{cs.tstindex,
+  name={\tstidxcsfmt{tstindex}},
+  category={cs},
+  description={used to index the sample text
+for the base \glshyperlink{testidxpackage} package (not for the
+\glshyperlink{testidxglossariespackage} package)}
+}
+
+ at index{cs.GlsAddXdyAttribute,
+  name={\tstidxcsfmt{GlsAddXdyAttribute}},
+  category={cs},
+  description={adds a \glshyperlink{xindy}
+attribute (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.delimN,
+  name={\tstidxcsfmt{delimN}},
+  category={cs},
+  description={page number separator used in the
+\glshyperlink{locationlist} (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.delimR,
+  name={\tstidxcsfmt{delimR}},
+  category={cs},
+  description={page range separator used in the
+\glshyperlink{locationlist} (provided by the \glshyperlink{glossariespackage} package)}
+}
+
+ at index{cs.IeC,
+  name={\tstidxcsfmt{IeC}},
+  category={cs},
+  description={used internally by the \glshyperlink{inputencpackage}
+package}
+}
+
+ at index{cs.tstidxindexmarkerprefix,
+  name={\tstidxcsfmt{tstidxindexmarkerprefix}},
+  category={cs},
+  description={prefix used in the
+sort key for markers if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+}
+
+ at index{cs.tstidxindexmathsymprefix,
+  name={\tstidxcsfmt{tstidxindexmathsymprefix}},
+  category={cs},
+  description={prefix used in the
+sort key for mathematical symbols if the \tstidxstyoptfmt{prefix}
+option is used (but not with the \tstidxstyoptfmt{bib2gls}
+option)}
+}
+
+ at index{cs.tstidxmakegloss,
+  name={\tstidxcsfmt{tstidxmakegloss}},
+  category={cs},
+  description={command used to load
+the files containing the sample glossary definitions
+and also use the appropriate command to initialise the indexing,
+depending on the package options}
+}
+
+%    \end{macrocode}
+%\iffalse
+%    \begin{macrocode}
+%</testidx-glossaries-samples.bib>
+%    \end{macrocode}
+%\fi
 %\Finale
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/testidx/testidx.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/testidx/testidx.ins	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/source/latex/testidx/testidx.ins	2017-08-11 23:06:40 UTC (rev 45021)
@@ -1,14 +1,14 @@
-% testidx.ins generated using makedtx version 1.1 2016/10/17 12:32
+% testidx.ins generated using makedtx version 1.2 2017/8/11 12:58
 \input docstrip
 
 \preamble
 
  testidx.dtx
- Copyright 2016 Nicola Talbot
+ Copyright 2017 Nicola Talbot
 
  This work may be distributed and/or modified under the
  conditions of the LaTeX Project Public License, either version 1.3
- of this license of (at your option) any later version.
+ of this license or (at your option) any later version.
  The latest version of this license is in
    http://www.latex-project.org/lppl.txt
  and version 1.3 or later is part of all distributions of LaTeX
@@ -18,7 +18,7 @@
 
  The Current Maintainer of this work is Nicola Talbot.
 
- This work consists of the files testidx.dtx and testidx.ins and the derived file testidx.sty.
+ This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
 
 \endpreamble
 
@@ -26,6 +26,23 @@
 
 \generate{\file{testidx.sty}{\usepreamble\defaultpreamble
 \usepostamble\defaultpostamble\from{testidx.dtx}{testidx.sty,package}}
+\file{testidx-glossaries.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{testidx.dtx}{testidx-glossaries.sty,package}}
+\file{testidx-glossaries-diglyphs.tex}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{testidx.dtx}{testidx-glossaries-diglyphs.tex,package}}
+\file{testidx-glossaries-nodiglyphs.tex}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{testidx.dtx}{testidx-glossaries-nodiglyphs.tex,package}}
+\file{testidx-glossaries-samples.tex}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{testidx.dtx}{testidx-glossaries-samples.tex,package}}
+\file{testidx-glossaries-diglyphs-utf8.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-diglyphs-utf8.bib}}
+\file{testidx-glossaries-markers.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-markers.bib}}
+\file{testidx-glossaries-mathsym.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-mathsym.bib}}
+\file{testidx-glossaries-nodiglyphs-utf8.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-nodiglyphs-utf8.bib}}
+\file{testidx-glossaries-nodiglyphs.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-nodiglyphs.bib}}
+\file{testidx-glossaries-numbers.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-numbers.bib}}
+\file{testidx-glossaries-samples-ascii.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-samples-ascii.bib}}
+\file{testidx-glossaries-samples-utf8.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-samples-utf8.bib}}
+\file{testidx-glossaries-samples.bib}{\nopreamble\nopostamble\from{testidx.dtx}{testidx-glossaries-samples.bib}}
 }
 
 \endbatchfile

Added: trunk/Master/texmf-dist/tex/latex/testidx/testidx-glossaries.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/testidx/testidx-glossaries.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/testidx/testidx-glossaries.sty	2017-08-11 23:06:40 UTC (rev 45021)
@@ -0,0 +1,2436 @@
+%%
+%% This is file `testidx-glossaries.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% testidx.dtx  (with options: `testidx-glossaries.sty,package')
+%% 
+%%  testidx.dtx
+%%  Copyright 2017 Nicola Talbot
+%% 
+%%  This work may be distributed and/or modified under the
+%%  conditions of the LaTeX Project Public License, either version 1.3
+%%  of this license or (at your option) any later version.
+%%  The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%%  and version 1.3 or later is part of all distributions of LaTeX
+%%  version 2005/12/01 or later.
+%% 
+%%  This work has the LPPL maintenance status `maintained'.
+%% 
+%%  The Current Maintainer of this work is Nicola Talbot.
+%% 
+%%  This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
+%% 
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{testidx-glossaries}[2017/08/11 v1.1 (NLCT)]
+\newcommand*{\tstidx at glossariespkg}{glossaries}
+\@ifpackageloaded{glossaries}
+{%
+  \newcommand*{\tstidx at setupglossaries}[1]{\setupglossaries{#1}}%
+}%
+{%
+  \newcommand*{\tstidx at setupglossaries}[1]{%
+    \PassOptionsToPackage{#1}{glossaries}%
+  }
+}
+\@ifpackageloaded{glossaries-extra}
+{%
+  \newcommand*{\tstidx at setupglossariesextra}[1]{\glossariesextrasetup{#1}}%
+}%
+{%
+  \newcommand*{\tstidx at setupglossariesextra}[1]{%
+    \PassOptionsToPackage{#1}{glossaries-extra}%
+  }
+}
+\newcommand*{\tstidx at usemakegloss}{\PackageError{testidx-glossaries}{You
+need to put \string\tstidxmakegloss\MessageBreak in the preamble in order
+to use\MessageBreak \string\testidx\space with testidx-glossaries}{}}
+\newcommand*{\tstidxmakegloss}[1][]{%
+ \@tstidx at ifgerman{\GlsSetQuote{+}}{}%
+ \tstidxdefaultmakegloss
+}
+\newcommand*{\tstidxprintglossaries}{\printglossaries}
+\newcommand*{\tstidxprintglossary}{\printglossary}
+\newcommand*{\tstidxtexfiles}{testidx-glossaries-samples,\tstidxglyphfile}
+\newcommand*{\tstidxbasebibfiles}{testidx-glossaries-samples}
+\newcommand*{\tstidxasciibibfiles}{testidx-glossaries-samples-ascii}
+\newcommand*{\tstidxutfbibfiles}{testidx-glossaries-samples-utf8}
+
+\newcommand*{\tstidxloadsamples}{%
+ \@for\tstidxfile:=\tstidxtexfiles\do{\input{\tstidxfile}}%
+ \renewcommand*{\tstidx at usemakegloss}{}%
+}
+\newcommand*{\tstidxdefaultmakegloss}{%
+ \makeglossaries
+ \tstidxloadsamples
+}
+\newcommand*{\tstidxnoidxmakegloss}{%
+ \makenoidxglossaries
+ \tstidxloadsamples
+}
+\newcommand*{\tstidxbibmakegloss}[1]{%
+  \def\@tstidx at resourceargs{}%
+  \@tstidx at ifutfviii
+  {%
+    \def\@tstidx at resource@src{\tstidxbasebibfiles,%
+      \tstidxutfbibfiles,%
+      \tstidxglyphfile-utf8}%
+  }%
+  {%
+    \def\@tstidx at resource@src{\tstidxbasebibfiles,%
+      \tstidxasciibibfiles,%
+       testidx-glossaries-nodiglyphs}%
+  }%
+  \if at tstidx@setdescription
+    \if at tstidx@useglsseekey
+      \def\@tstidx at resourceargs{selection={recorded and deps and see}}%
+    \else
+      \def\@tstidx at resourceargs{ignore-fields={see,seealso}}%
+    \fi
+  \else
+    \if at tstidx@useglsseekey
+      \def\@tstidx at resourceargs{%
+        selection={recorded and deps and see},
+        ignore-fields={description}}%
+    \else
+      \def\@tstidx at resourceargs{%
+        ignore-fields={description,see,seealso}}%
+    \fi
+  \fi
+  \iftestidxprefix
+    \tstidxloadglsresource{src={testidx-glossaries-mathsym},%
+      group={Maths},sort={letter-case},\@tstidx at resourceargs}%
+    \tstidxloadglsresource{src={testidx-glossaries-markers},%
+      group={Markers},sort={letter-case},\@tstidx at resourceargs}%
+    \iftstidxnumbergroup
+      \tstidxloadglsresource{src={testidx-glossaries-numbers},%
+        sort={integer},\@tstidx at resourceargs}%
+      \tstidxloadglsresource{src={\@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \else
+      \tstidxloadglsresource{src={testidx-glossaries-numbers,%
+         \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \fi
+  \else
+    \iftstidxnumbergroup
+      \tstidxloadglsresource{src={testidx-glossaries-numbers},%
+        sort={integer},\@tstidx at resourceargs}%
+      \tstidxloadglsresource{%
+        src={testidx-glossaries-mathsym,%
+             testidx-glossaries-markers,%
+            \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \else
+      \tstidxloadglsresource{%
+        src={testidx-glossaries-mathsym,%
+             testidx-glossaries-markers,%
+             testidx-glossaries-numbers,%
+            \@tstidx at resource@src},%
+        \@tstidx at resourceargs,#1}%
+    \fi
+  \fi
+  \renewcommand*{\tstidx at usemakegloss}{}%
+}
+\newcommand{\tstidxloadglsresource}[1]{%
+  \iftestidxverbose
+    \PackageInfo{testidx-glossaries}{\string\GlsXtrLoadResources[#1]}%
+  \fi
+  \GlsXtrLoadResources[#1]%
+}
+\newif\if at tstidx@useglsseekey
+\@tstidx at useglsseekeytrue
+\DeclareOption{seekey}{\@tstidx at useglsseekeytrue}
+\DeclareOption{noseekey}{\@tstidx at useglsseekeyfalse}
+\newif\if at tstidx@setdescription
+\@tstidx at setdescriptionfalse
+\DeclareOption{desc}{\@tstidx at setdescriptiontrue}
+\DeclareOption{nodesc}{\@tstidx at setdescriptionfalse}
+\DeclareOption{extra}{\renewcommand*{\tstidx at glossariespkg}{glossaries-extra}}
+\DeclareOption{noextra}{\renewcommand*{\tstidx at glossariespkg}{glossaries}}
+\newcommand*{\@testidx at ifusebibgls}[2]{#2}
+\DeclareOption{makeindex}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \tstidx at setupglossaries{makeindex}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \@tstidx at ifgerman{\GlsSetQuote{+}}{}%
+    \tstidxdefaultmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printglossary}%
+}
+\DeclareOption{xindy}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \tstidx at setupglossaries{xindy}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxdefaultmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printglossary}%
+}
+\DeclareOption{tex}{%
+  \let\@testidx at ifusebibgls\@secondoftwo
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxnoidxmakegloss
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printnoidxglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printnoidxglossary}%
+}
+\DeclareOption{bib2gls}{%
+  \renewcommand*{\tstidx at glossariespkg}{glossaries-extra}%
+  \let\@testidx at ifusebibgls\@firstoftwo
+  \tstidx at setupglossariesextra{record}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \tstidxbibmakegloss{#1}%
+  }%
+  \renewcommand*{\tstidxprintglossaries}{\printunsrtglossaries}%
+  \renewcommand*{\tstidxprintglossary}{\printunsrtglossary}%
+}
+\DeclareOption{manual}{%
+ \renewcommand*{\tstidx at usemakegloss}{}%
+  \renewcommand*{\tstidxmakegloss}[1][]{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxmakegloss\space
+     disabled by `manual' package option}%
+  }%
+  \renewcommand*{\tstidxprintglossaries}{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxprintglossaries\space
+     disabled by `manual' package option}%
+  }%
+  \renewcommand*{\tstidxprintglossary}{%
+    \PackageWarning{testidx-glossaries}{\string\tstidxprintglossary\space
+     disabled by `manual' package option}%
+  }%
+}
+\newif\iftstidxnumbergroup
+\tstidxnumbergrouptrue
+\DeclareOption{noglsnumbers}{\tstidxnumbergroupfalse}
+\DeclareOption{glsnumbers}{\tstidxnumbergrouptrue}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{testidx}}
+\ProcessOptions
+\RequirePackage{testidx}
+\@tstidx at ifsanitize
+ {\tstidx at setupglossaries{sanitizesort=true}}
+ {\tstidx at setupglossaries{sanitizesort=false}}
+\RequirePackage{\tstidx at glossariespkg}
+\RequirePackage{glossary-mcols}
+\if at tstidx@setdescription
+ \setupglossaries{nopostdot=false}
+ \setglossarystyle{indexgroup}
+\else
+ \setupglossaries{nopostdot}
+ \setglossarystyle{mcolindexgroup}
+\fi
+\ifglsxindy
+\iftstidxnumbergroup
+   \gls at xindy@glsnumberstrue
+  \else
+   \gls at xindy@glsnumbersfalse
+  \fi
+\fi
+\newif\if at tstidx@hasseealsokey
+\key at ifundefined{glossentry}{seealso}%
+{\@tstidx at hasseealsokeyfalse}
+{\@tstidx at hasseealsokeytrue}
+\iftestidxverbose
+ \appto\@newglossaryentryposthook{\@testidx at writeglsinfo}
+ \newcommand\@testidx at writeglsinfo{%
+   \letcs{\@tstidx at sort}{glo@\glsdetoklabel{\@glo at label}@sort}%
+   \@onelevel at sanitize\@tstidx at sort
+   \letcs{\@tstidx at name}{glo@\glsdetoklabel{\@glo at label}@name}%
+   \@onelevel at sanitize\@tstidx at name
+   \letcs{\@tstidx at text}{glo@\glsdetoklabel{\@glo at label}@text}%
+   \@onelevel at sanitize\@tstidx at text
+   \ifcsdef{glo@\glsdetoklabel{\@glo at label}@parent}%
+   {\letcs\@tstidx at parent{glo@\glsdetoklabel{\@glo at label}@parent}}%
+   {\def\@tstidx at parent{}}%
+   \PackageInfo{testidx-glossaries}{new term label={\@glo at label},
+    \MessageBreak
+    name={\@tstidx at name},
+    \MessageBreak
+    sort={\@tstidx at sort},
+    \MessageBreak
+    text={\@tstidx at text},
+    \MessageBreak
+    parent={\@tstidx at parent},
+    \MessageBreak
+    see={\@glo at see}%
+    \if at tstidx@hasseealsokey
+      ,\MessageBreak
+      seealso={\@glo at seealso}
+    \fi
+    \MessageBreak
+    }%
+ }
+ \let\tstidx at org@glo at sortedinsert\@glo at sortedinsert
+ \renewcommand{\@glo at sortedinsert}[2]{%
+   \typeout{#2}%
+   \tstidx at org@glo at sortedinsert{#1}{#2}%
+ }
+\fi
+\ifdef\glosortentrieswarning
+{}
+{%
+  \let\tstidx at org@glo at sortentries\@glo at sortentries
+  \renewcommand{\@glo at sortentries}[2]{%
+    \typeout{Using TeX to sort entries---this may take a while}%
+    \tstidx at org@glo at sortentries{#1}{#2}%
+  }
+}
+\newcommand*{\@tstidx at usemakegloss}{\tstidx at usemakegloss}
+\newcommand*{\tstidxtoidx}{%
+ \renewcommand*{\@tstidx at usemakegloss}{}%
+ \let\@tstindex\@tstidx at org@index
+ \let\@tstidxwordpl\@tstidx at org@wordpl
+ \let\@tstidxphrasepl\@tstidx at org@phrasepl
+ \let\@tstidxcs\@tstidx at org@cs
+ \let\@tstindexpost\@tstidx at org@indexpost
+ \let\@tstindexopenpost\@tstidx at org@indexopenpost
+ \let\@tstindexclosepost\@tstidx at org@indexclosepost
+ \let\@tstindexpre\@tstidx at org@indexpre
+ \let\@tstindexopenpre\@tstidx at org@indexopenpre
+ \let\@tstindexclosepre\@tstidx at org@indexclosepre
+ \let\@tstindexsee\@tstidx at org@indexsee
+ \let\@tstidx at indexsubsee\@tstidx at org@indexsubsee
+ \let\@tstidx at subindexpost\@tstidx at org@subindexpost
+ \let\@tstidx at subindexopenpost\@tstidx at org@subindexopenpost
+ \let\@tstidx at subindexclosepost\@tstidx at org@subindexclosepost
+ \let\@tstidx at subindexpre\@tstidx at org@subindexpre
+ \let\@tstidx at subindexopenpre\@tstidx at org@subindexopenpre
+ \let\@tstidx at subindexclosepre\@tstidx at org@subindexclosepre
+ \let\@@tstidx at subsubindexpost\@tstidx at org@subsubindexpost
+ \let\@@tstidx at subsubindexopenpost\@tstidx at org@subsubindexopenpost
+ \let\@@tstidx at subsubindexclosepost\@tstidx at org@subsubindexclosepost
+ \let\@@tstidx at subsubindexpre\@tstidx at org@subsubindexpre
+ \let\@@tstidx at subsubindexopenpre\@tstidx at org@subsubindexopenpre
+ \let\@@tstidx at subsubindexclosepre\@tstidx at org@subsubindexclosepre
+ \let\@tidx at par@i\@tidx at org@par at i
+ \let\@tidx at par@ii\@tidx at org@par at ii
+ \let\@tidx at par@iii\@tidx at org@par at iii
+ \let\@tidx at par@iv\@tidx at org@par at iv
+ \let\@tidx at par@vi\@tidx at org@par at vi
+ \let\@tidx at mathslettergroup\@tidx at org@mathslettergroup
+ \let\@tidx at numberlettergroup\@tidx at org@numberlettergroup
+ \let\@tidx at scriptnote\@tidx at org@scriptnote
+ \let\@tidx at sanitizenote\@tidx at org@sanitizenote
+ \let\@tidx at stripaccentsnote\@tidx at org@stripaccentsnote
+}
+\newcommand*{\tstidxtogls}{%
+ \renewcommand*{\@tstidx at usemakegloss}{\tstidx at usemakegloss}%
+ \let\@tstindex\@tstidx at org@index
+ \let\@tstidxwordpl\@tstidx at gls@wordpl
+ \let\@tstidxphrasepl\@tstidx at gls@phrasepl
+ \let\@tstidxcs\@tstidx at gls@cs
+ \let\@tstindexpost\@tstidx at gls@indexpost
+ \let\@tstindexopenpost\@tstidx at gls@indexopenpost
+ \let\@tstindexclosepost\@tstidx at gls@indexclosepost
+ \let\@tstindexpre\@tstidx at gls@indexpre
+ \let\@tstindexopenpre\@tstidx at gls@indexopenpre
+ \let\@tstindexclosepre\@tstidx at gls@indexclosepre
+ \let\@tstindexsee\@tstidx at gls@indexsee
+ \let\@tstidx at indexsubsee\@tstidx at gls@indexsubsee
+ \let\@tstidx at subindexpost\@tstidx at gls@subindexpost
+ \let\@tstidx at subindexopenpost\@tstidx at gls@subindexopenpost
+ \let\@tstidx at subindexclosepost\@tstidx at gls@subindexclosepost
+ \let\@tstidx at subindexpre\@tstidx at gls@subindexpre
+ \let\@tstidx at subindexopenpre\@tstidx at gls@subindexopenpre
+ \let\@tstidx at subindexclosepre\@tstidx at gls@subindexclosepre
+ \let\@@tstidx at subsubindexpost\@tstidx at gls@subsubindexpost
+ \let\@@tstidx at subsubindexopenpost\@tstidx at gls@subsubindexopenpost
+ \let\@@tstidx at subsubindexclosepost\@tstidx at gls@subsubindexclosepost
+ \let\@@tstidx at subsubindexpre\@tstidx at gls@subsubindexpre
+ \let\@@tstidx at subsubindexopenpre\@tstidx at gls@subsubindexopenpre
+ \let\@@tstidx at subsubindexclosepre\@tstidx at gls@subsubindexclosepre
+ \let\@tidx at par@i\@tidx at gls@par at i
+ \let\@tidx at par@ii\@tidx at gls@par at ii
+ \let\@tidx at par@iii\@tidx at gls@par at iii
+ \let\@tidx at par@iv\@tidx at gls@par at iv
+ \let\@tidx at par@vi\@tidx at gls@par at vi
+ \let\@tidx at mathslettergroup\@tidx at gls@mathslettergroup
+ \let\@tidx at numberlettergroup\@tidx at gls@numberlettergroup
+ \let\@tidx at scriptnote\@tidx at gls@scriptnote
+ \let\@tidx at sanitizenote\@tidx at gls@sanitizenote
+ \let\@tidx at stripaccentsnote\@tidx at gls@stripaccentsnote
+}
+\renewcommand*{\testidx}{%
+  \@tstidx at usemakegloss
+  \@ifstar
+  {%
+    \def\@testidx at block@sep{\space}%
+    \@testidx
+  }%
+  {%
+    \def\@testidx at block@sep{\tstidxdefblocksep}%
+    \@testidx
+  }%
+}
+\iftestidxdiglyphs
+  \newcommand*{\tstidxglyphfile}{testidx-glossaries-diglyphs}
+\else
+  \newcommand*{\tstidxglyphfile}{testidx-glossaries-nodiglyphs}
+\fi
+\@ifpackageloaded{glossaries-extra}
+{
+  \newcommand*{\tstidxnewentry}[3]{\newglossaryentry{#1}{category={#2},#3}}
+}
+{
+  \newcommand*{\tstidxnewentry}[3]{\newglossaryentry{#1}{#3}}
+}
+\newcommand*{\@tstidx at gls@index}[1]{}
+\let\@tstidx at org@index\@tstindex
+\let\@tstindex\@tstidx at gls@index
+\newcommand*{\@tstidx at gls@wordpl}[2]{%
+ {\def\tstidx at gls{\glspl}\def\tstidx at glsentry{\glsentryplural}%
+  \tstidxword[#1]{#2}%
+ }%
+}
+\let\@tstidx at org@wordpl\@tstidxwordpl
+\let\@tstidxwordpl\@tstidx at gls@wordpl
+\newcommand*{\@tstidx at gls@phrasepl}[2]{%
+ {\def\tstidx at gls{\glspl}\def\tstidx at glsentry{\glsentryplural}%
+  \tstidxphrase[#1]{#2}%
+ }%
+}
+\let\@tstidx at org@phrasepl\@tstidxphrasepl
+\let\@tstidxphrasepl\@tstidx at gls@phrasepl
+\newcommand*{\@tstidx at gls@cs}[2]{%
+ \tstidxfmtpost{cs.#2}{\tstidxcsfmt}{#1}%
+}
+\let\@tstidx at org@cs\@tstidxcs
+\let\@tstidxcs\@tstidx at gls@cs
+\newcommand*{\tstidx at gls}{\gls}
+\newcommand*{\tstidx at glsentry}{\glsentrytext}
+\newcommand*{\tstidx at label}{\glslabel}
+\newcommand*{\tstidx at encap}{}
+\newcommand*{\tstidx at range}{}
+\newcommand*{\tstidx at openrange}{(}
+\newcommand*{\tstidx at closerange}{)}
+\newcommand*{\tstidx at levelmarker}[4]{%
+  \ifcsdef{glo@#1 at level}%
+  {%
+    \ifcase\csname glo@#1 at level\endcsname
+     #2\or#3\else#4%
+    \fi
+  }%
+  {%
+    #2%
+  }%
+}
+\newcommand*{\tstidx at post@glstextformat}[1]{%
+ \ifx\@tstidx at encap\@empty
+  \iftestidxshowmarks
+    \ifx\@tstidx at range\tstidx at openrange
+      \tstidxtext{#1%
+        \tstidx at levelmarker\@tstidx at label
+         \tstidxopenmarker
+         \tstidxopensubmarker
+         \tstidxopensubsubmarker
+      }%
+    \else
+      \ifx\@tstidx at range\tstidx at closerange
+        \tstidxtext{#1%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxclosemarker
+           \tstidxclosesubmarker
+           \tstidxclosesubsubmarker
+        }%
+      \else
+        \tstidxtext{#1%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxmarker
+           \tstidxsubmarker
+           \tstidxsubsubmarker
+        }%
+      \fi
+    \fi
+  \else
+    #1%
+  \fi
+ \else
+   \iftestidxshowmarks
+     \tstidxtext{\tstidxencaptext{\@tstidx at encap}{#1%
+      \tstidx at levelmarker\@tstidx at label
+       \tstidxmarker
+       \tstidxsubmarker
+       \tstidxsubsubmarker
+     }}%
+   \else
+     #1%
+   \fi
+  \fi
+}
+\newcommand*{\tstidx at pre@glstextformat}[1]{%
+ \ifx\@tstidx at encap\@empty
+  \iftestidxshowmarks
+    \ifx\@tstidx at range\tstidx at openrange
+      \tstidxtext{%
+        \tstidx at levelmarker\@tstidx at label
+         \tstidxopenmarker
+         \tstidxopensubmarker
+         \tstidxopensubsubmarker
+        #1}%
+    \else
+      \ifx\@tstidx at range\tstidx at closerange
+        \tstidxtext{%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxclosemarker
+           \tstidxclosesubmarker
+           \tstidxclosesubsubmarker
+        #1}%
+      \else
+        \tstidxtext{%
+          \tstidx at levelmarker\@tstidx at label
+           \tstidxmarker
+           \tstidxsubmarker
+           \tstidxsubsubmarker
+         #1}%
+      \fi
+    \fi
+  \else
+    #1%
+  \fi
+ \else
+  \iftestidxshowmarks
+    \tstidxtext{\tstidxencaptext{\@tstidx at encap}{%
+      \tstidx at levelmarker\@tstidx at label
+       \tstidxmarker
+       \tstidxsubmarker
+       \tstidxsubsubmarker
+    #1}}%
+  \else
+    #1%
+  \fi
+ \fi
+}
+\newcommand*{\@tstidx at zapnonlabel}[2]{%
+ \ifx,#1\@empty\else\ifx'#1\@empty\else\ifx-#1\@empty\else#1\fi\fi\fi
+ \ifx#2\@empty
+ \else
+  \expandafter\@tstidx at zapnonlabel
+ \fi
+ #2}
+\newcommand*{\tstidx at getlabel}[1]{\@tstidx at zapnonlabel#1\@empty\@empty}
+\newcommand*{\tstidx at glspreindex}[2][]{%
+  \glshyperlink[\glstextformat{}]{#2}\glsadd[#1]{#2}}
+\newcommand*{\tstidx at glspostindex}[2][]{%
+ \glsadd[#1]{#2}\glshyperlink[\glstextformat{}]{#2}}
+\def\@tstidx at gls@indexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexpost\@tstindexpost
+\let\@tstindexpost\@tstidx at gls@indexpost
+\def\@tstidx at gls@indexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexopenpost\@tstindexopenpost
+\let\@tstindexopenpost\@tstidx at gls@indexopenpost
+\def\@tstidx at gls@indexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexclosepost\@tstindexclosepost
+\let\@tstindexclosepost\@tstidx at gls@indexclosepost
+\def\@tstidx at gls@indexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexpre\@tstindexpre
+\let\@tstindexpre\@tstidx at gls@indexpre
+\def\@tstidx at gls@indexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexopenpre\@tstindexopenpre
+\let\@tstindexopenpre\@tstidx at gls@indexopenpre
+\def\@tstidx at gls@indexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@indexclosepre\@tstindexclosepre
+\let\@tstindexclosepre\@tstidx at gls@indexclosepre
+\providecommand*\seealsoname{see also}
+\providecommand*\seename{see}
+\newcommand*\tstidx at seealso{seealso}
+\def\@tstidx at gls@indexsee#1#2#3#4[#5]#6{%
+  \if at tstidx@useglsseekey
+  \else
+    \bgroup
+    \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+      \ifx\@tstidx at label\@empty
+        \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+      \fi
+    \fi
+    \ifx\relax#5\relax
+      \def\@tstidx at xrlabel{}%
+      \def\@tstidx at xrlabel@sep{}%
+      \@for\@tst at idxthis:=#6\do{%
+        \edef\@tstidx at xrlabel{\@tstidx at xrlabel\@tstidx at xrlabel@sep
+          \expandafter\tstidx at getlabel\expandafter{\@tst at idxthis}}%
+        \def\@tstidx at xrlabel@sep{,}%
+      }%
+    \else
+      \def\@tstidx at xrlabel{#5}%
+    \fi
+    \edef\@tstidx at seetag{#4}%
+    \ifx\@tstidx at seetag\tstidx at seealso
+     \if at tstidx@hasseealsokey
+       \expandafter\glsxtrindexseealso\expandafter\@tstidx at label\expandafter
+         {\@tstidx at xrlabel}%
+     \else
+       \expandafter\glssee\expandafter[\expandafter\seealsoname
+         \expandafter]\expandafter\@tstidx at label\expandafter{\@tstidx at xrlabel}%
+     \fi
+    \else
+     \expandafter\glssee\expandafter\@tstidx at label\expandafter
+       {\@tstidx at xrlabel}%
+    \fi
+    \iftestidxshowmarks
+      \ifx\relax#5\relax
+       \tstidxseeref{#2}{tst#4ref}{#6}%
+      \else
+       \tstidxseeref{#2}{tst#4ref}{#5}%
+      \fi
+    \fi
+    \egroup
+  \fi
+}
+\let\@tstidx at org@indexsee\@tstindexsee
+\let\@tstindexsee\@tstidx at gls@indexsee
+\def\@tstidx at gls@subindexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexpost\@tstidx at subindexpost
+\let\@tstidx at subindexpost\@tstidx at gls@subindexpost
+\def\@tstidx at gls@subindexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexopenpost\@tstidx at subindexopenpost
+\let\@tstidx at subindexopenpost\@tstidx at gls@subindexopenpost
+\def\@tstidx at gls@subindexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+     \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexclosepost\@tstidx at subindexclosepost
+\let\@tstidx at subindexclosepost\@tstidx at gls@subindexclosepost
+\def\@tstidx at gls@subindexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexpre\@tstidx at subindexpre
+\let\@tstidx at subindexpre\@tstidx at gls@subindexpre
+\def\@tstidx at gls@subindexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexopenpre\@tstidx at subindexopenpre
+\let\@tstidx at subindexopenpre\@tstidx at gls@subindexopenpre
+\def\@tstidx at gls@subindexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+        .\@tstidx at label}%
+    \else
+      \edef\@tstidx at label{%
+        \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+        .\@tstidx at label}%
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subindexclosepre\@tstidx at subindexclosepre
+\let\@tstidx at subindexclosepre\@tstidx at gls@subindexclosepre
+\def\@tstidx at gls@indexsubsee#1#2#3#4[#5]#6{%
+  \if at tstidx@useglsseekey
+  \else
+    \bgroup
+    \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+      \ifx\@tstidx at label\@empty
+        \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+      \fi
+    \fi
+    \ifx\relax#5\relax
+      \def\@tstidx at xrlabel{}%
+      \def\@tstidx at xrlabel@sep{}%
+      \@for\@tst at idxthis:=#6\do{%
+        \edef\@tstidx at xrlabel{\@tstidx at xrlabel\@tstidx at xrlabel@sep
+          \expandafter\tstidx at getlabel\expandafter{\@tst at idxthis}}%
+        \def\@tstidx at xrlabel@sep{,}%
+      }%
+    \else
+      \def\@tstidx at xrlabel{#5}%
+    \fi
+    \edef\@tstidx at seetag{#4}%
+    \ifx\@tstidx at seetag\tstidx at seealso
+     \if at tstidx@hasseealsokey
+       \expandafter\glsxtrindexseealso\expandafter\@tstidx at label\expandafter
+         {\@tstidx at xrlabel}%
+     \else
+       \expandafter\glssee\expandafter[\expandafter\seealsoname
+         \expandafter]\expandafter\@tstidx at label\expandafter{\@tstidx at xrlabel}%
+     \fi
+    \else
+     \expandafter\glssee\expandafter\@tstidx at label\expandafter
+       {\@tstidx at xrlabel}%
+    \fi
+    \iftestidxshowmarks
+      \protected at edef\tstidx at dosee{\noexpand\tstidxsubseeref
+        {\@tstidx at term}{#2}{tst#4ref}{\@tstidx at xrlabel}}%
+      \tstidx at dosee
+    \fi
+    \egroup
+  \fi
+}
+\let\@tstidx at org@indexsubsee\@tstidx at indexsubsee
+\let\@tstidx at indexsubsee\@tstidx at gls@indexsubsee
+\def\@tstidx at gls@subsubindexpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspostindex{\@tstidx at label}%
+    \else
+     \tstidx at glspostindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \ifx\@tstidx at encap\@empty
+       \glsadd{\@tstidx at label}%
+      \else
+       \glsadd[format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+    {%
+      \ifx\@tstidx at encap\@empty
+       \tstidx at gls[wrgloss=after]{\@tstidx at label}%
+      \else
+       \tstidx at gls[wrgloss=after,format={#4}]{\@tstidx at label}%
+      \fi
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexpost\@@tstidx at subsubindexpost
+\let\@@tstidx at subsubindexpost\@tstidx at gls@subsubindexpost
+\def\@tstidx at gls@subsubindexopenpost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={(#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={(#4}]{\@tstidx at label}%
+    }%
+    {%
+      \tstidx at gls[wrgloss=after,format={(#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexopenpost\@@tstidx at subsubindexopenpost
+\let\@@tstidx at subsubindexopenpost\@tstidx at gls@subsubindexopenpost
+\def\@tstidx at gls@subsubindexclosepost#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at post@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \tstidx at glspostindex[format={)#4}]{\@tstidx at label}%
+  \else
+    \@ifundefined{glsxtrinitwrgloss}%
+    {%
+      \glshyperlink[\glstextformat{\tstidx at glsentry{\@tstidx at label}}]%
+       {\@tstidx at label}%
+      \glsadd[format={)#4}]{\@tstidx at label}%
+    }%
+    {%
+     \tstidx at gls[wrgloss=after,format={)#4}]{\@tstidx at label}%
+    }%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexclosepost\@@tstidx at subsubindexclosepost
+\let\@@tstidx at subsubindexclosepost\@tstidx at gls@subsubindexclosepost
+\def\@tstidx at gls@subsubindexpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+    \ifx\@tstidx at encap\@empty
+     \tstidx at glspreindex{\@tstidx at label}%
+    \else
+     \tstidx at glspreindex[format={#4}]{\@tstidx at label}%
+    \fi
+  \else
+    \ifx\@tstidx at encap\@empty
+     \tstidx at gls{\@tstidx at label}%
+    \else
+     \tstidx at gls[format={#4}]{\@tstidx at label}%
+    \fi
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexpre\@@tstidx at subsubindexpre
+\let\@@tstidx at subsubindexpre\@tstidx at gls@subsubindexpre
+\def\@tstidx at gls@subsubindexopenpre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{(}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={(#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={(#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexopenpre\@@tstidx at subsubindexopenpre
+\let\@@tstidx at subsubindexopenpre\@tstidx at gls@subsubindexopenpre
+\def\@tstidx at gls@subsubindexclosepre#1#2[#3]#4#5{%
+  \bgroup
+  \edef\@tstidx at label{\tstidx at getlabel{#3}}%
+  \ifx\@tstidx at label\@empty
+    \edef\@tstidx at label{\tstidx at getlabel{#1}}%
+    \ifx\@tstidx at label\@empty
+      \edef\@tstidx at label{\tstidx at getlabel{#2}}%
+    \fi
+    \ifx\@tstidx at sort\empty
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at term}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \else
+      \ifx\@tstidx at subsort\empty
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subterm}%
+          .\@tstidx at label}%
+      \else
+        \edef\@tstidx at label{%
+          \expandafter\tstidx at getlabel\expandafter{\@tstidx at sort}%
+          .\expandafter\tstidx at getlabel\expandafter{\@tstidx at subsort}%
+          .\@tstidx at label}%
+      \fi
+    \fi
+  \fi
+  \def\@tstidx at encap{#4}%
+  \def\@tstidx at range{)}%
+  \let\tstidx at org@glstextformat\glstextformat
+  \renewcommand\glstextformat[1]{\tstidx at pre@glstextformat
+    {\tstidx at org@glstextformat{##1}}}%
+  \ifx\relax#5\relax
+   \tstidx at glspreindex[format={)#4}]{\@tstidx at label}%
+  \else
+   \tstidx at gls[format={)#4}]{\@tstidx at label}%
+  \fi
+  \egroup
+}
+\let\@tstidx at org@subsubindexclosepre\@@tstidx at subsubindexclosepre
+\let\@@tstidx at subsubindexclosepre\@tstidx at gls@subsubindexclosepre
+\newcommand*{\tstidxnewutfentry}[6]{%
+  \@tstidx at ifutfviii
+  {%
+    \tstidxprocessutf{\@tstidx at utf}{#3}%
+    \ifx\relax#4\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#6}%
+        {name={#3},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#5}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#6}%
+        {name={\noexpand#4{#3}},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#5}}%
+    \fi
+  }%
+  {%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \tstidxprocessasciisortstrip{\@tstidx at asciilabel}{#1}%
+    \ifx\relax#4\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{\@tstidx at asciilabel}{#6}%
+        {name={#2},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#5}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{\@tstidx at asciilabel}{#6}%
+        {name={\noexpand#4{#2}},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#5}}%
+    \fi
+  }%
+  \@tstidx at doidx
+}
+\newcommand*{\tstidxnewutfentrytext}[8]{%
+  \@tstidx at ifutfviii
+  {%
+    \tstidxprocessutf{\@tstidx at utf}{#4}%
+    \ifx\relax#6\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#4},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+         text={#5},%
+        description={},#7}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#4},%
+         text={\noexpand#6{#5}},%
+         sort={\unexpanded\expandafter{\@tstidx at utf}},%
+        description={},#7}}%
+    \fi
+  }%
+  {%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \ifx\relax#6\relax
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={#2},%
+         text={#3},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#7}}%
+    \else
+      \protected at edef\@tstidx at doidx{%
+        \noexpand\tstidxnewentry{#1}{#8}%
+        {name={\noexpand#6{#2}},%
+         text={\noexpand#6{#3}},%
+         sort={\unexpanded\expandafter{\@tstidx at asciisort}},%
+        description={},#7}}%
+    \fi
+  }%
+  \@tstidx at doidx
+}
+\newcommand*{\tstidxnewword}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{word}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{word}{name={#2},description={},#1}%
+ \fi
+}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewwordsee}[4][]{%
+    \tstidxnewword[see={#4},#1]{#2}{#3}%
+  }
+\else
+  \newcommand*{\tstidxnewwordsee}[4][]{%
+    \tstidxnewword[#1]{#2}{#3}%
+  }
+\fi
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewwordseealso}[4][]{%
+      \tstidxnewword[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewwordseealso}[4][]{%
+      \tstidxnewword[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewwordseealso}[4][]{%
+    \tstidxnewword[#1]{#2}{#3}%
+  }
+\fi
+\newcommand*{\tstidxnewdigraph}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{digraph}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{digraph}{name={#2},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewtrigraph}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{trigraph}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{trigraph}{name={#2},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewsubword}[4][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{word}%
+   {parent={\tstidx at getlabel{#2}},name={#3},description={#4},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{word}%
+   {parent={\tstidx at getlabel{#2}},name={#3},description={},#1}%
+ \fi
+}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewsubwordsee}[5][]{%
+    \tstidxnewsubword[see={#5},#1]{#2}{#3}{#4}%
+  }
+\else
+  \newcommand*{\tstidxnewsubwordsee}[5][]{%
+    \tstidxnewsubword[#1]{#2}{#3}{#4}%
+  }
+\fi
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+      \tstidxnewsubword[seealso={#5},#1]{#2}{#3}{#4}%
+    }
+  \else
+    \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+      \tstidxnewsubword[see={[\seealsoname]#5},#1]{#2}{#3}{#4}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewsubwordseealso}[5][]{%
+    \tstidxnewsubword[#1]{#2}{#3}{#4}%
+  }
+\fi
+\renewcommand*{\tstidxcsfmt}[1]{\texttt{\glsbackslash#1}}
+\newcommand*{\tstidxnewcs}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{cs.#2}}{cs}%
+   {sort={#2},name={\tstidxcsfmt{#2}},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{cs.#2}}{cs}%
+   {sort={#2},name={\tstidxcsfmt{#2}},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewencapcsn}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{encapcsn}{sort={#2 (#2)},%
+    name={\texttt{#2} (\tstidxcsfmt{#2})},
+    text={\texttt{#2}},description={#3},#1}%
+   \tstidxnewentry{\tstidx at getlabel{encap.#2}}{encapcsn}{sort={#2},%
+    parent={\tstidx at getlabel{encap}},
+    name={\texttt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{encapcsn}{sort={#2 (#2)},%
+    name={\texttt{#2} (\tstidxcsfmt{#2})},
+    text={\texttt{#2}},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{encap.#2}}{encapcsn}{sort={#2},%
+    parent={\tstidx at getlabel{encap}},
+    name={\texttt{#2}},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewenv}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2environment}}%
+   {environment}{sort={#2 environment},%
+    name={\tstidxenvfmt{#2} environment},%
+    text={\tstidxenvfmt{#2}},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2environment}}%
+   {environment}{sort={#2 environment},%
+    name={\tstidxenvfmt{#2} environment},%
+    text={\tstidxenvfmt{#2}},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewapp}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{application}{sort={#2},%
+    name={\tstidxappfmt{#2}},description={#3},#1}%
+   \tstidxnewentry{applications.\tstidx at getlabel{#2}}{application}{sort={#2},%
+    parent={applications},name={\tstidxappfmt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{application}{sort={#2},%
+    name={\tstidxappfmt{#2}},description={},#1}%
+   \tstidxnewentry{applications.\tstidx at getlabel{#2}}{application}{sort={#2},%
+    parent={applications},name={\tstidxappfmt{#2}},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewappopt}[4][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#3.#2option}}{applicationoption}%
+   {sort={#3 (#2)},%
+    name={\tstidxappoptfmt{#3} (\tstidxappfmt{#2})},description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{applicationoption}%
+   {parent={#2},sort={#3},%
+    name={\tstidxappoptfmt{#3}},description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{applications.#2.#3}}%
+   {applicationoption}{sort={#3},%
+    parent={\tstidx at getlabel{applications.#2}},name={\tstidxappoptfmt{#3}},%
+    description={#4}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#3.#2option}}{applicationoption}%
+   {sort={#3 (#2)},%
+    name={\tstidxappoptfmt{#3} (\tstidxappfmt{#2})},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{#2.#3}}{applicationoption}%
+   {parent={#2},sort={#3},%
+    name={\tstidxappoptfmt{#3}},description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{applications.#2.#3}}%
+   {applicationoption}{sort={#3},%
+    parent={\tstidx at getlabel{applications.#2}},name={\tstidxappoptfmt{#3}},%
+    description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewsty}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2package}}{package}{sort={#2 package},%
+    name={\tstidxstyfmt{#2} package},%
+    text={\tstidxstyfmt{#2}},%
+    description={#3},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package}}{package}{sort={#2},%
+    parent={packages},name={\tstidxstyfmt{#2}},%
+    text={\tstidxstyfmt{#2}},description={#3}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2package}}{package}{sort={#2 package},%
+    name={\tstidxstyfmt{#2} package},%
+    text={\tstidxstyfmt{#2}},%
+    description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package}}{package}{sort={#2},%
+    parent={packages},name={\tstidxstyfmt{#2}},%
+    text={\tstidxstyfmt{#2}},description={}}%
+ \fi
+}
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewstyseealso}[4][]{%
+      \tstidxnewsty[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewstyseealso}[4][]{%
+      \tstidxnewsty[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewstyseealso}[4][]{%
+    \tstidxnewsty[#1]{#2}{#3}%
+  }
+\fi
+\newcommand*{\tstidxnewstyopt}[4][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2package.#3}}{packageoption}{sort={#3},%
+    name={\tstidxstyoptfmt{#3}},%
+    parent={\tstidx at getlabel{#2package}},%
+    description={#4},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package.#3}}{packageoption}%
+   {sort={#3},%
+    parent={\tstidx at getlabel{packages.#2package}},name={\tstidxstyoptfmt{#3}},%
+    description={#4}}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2package.#3}}{packageoption}{sort={#3},%
+    name={\tstidxstyoptfmt{#3}},%
+    parent={\tstidx at getlabel{#2package}},%
+    description={},#1}%
+   \tstidxnewentry{\tstidx at getlabel{packages.#2package.#3}}{packageoption}%
+   {sort={#3},%
+    parent={\tstidx at getlabel{packages.#2package}},name={\tstidxstyoptfmt{#3}},%
+    description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewnumber}[3][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{number}{name={#2},description={#3},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{number}{name={#2},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewphrase}[3][]{%
+ \if at tstidx@setdescription
+   \tstidxnewentry{\tstidx at getlabel{#2}}{phrase}{name={#2},description={#3},#1}%
+ \else
+   \tstidxnewentry{\tstidx at getlabel{#2}}{phrase}{name={#2},description={},#1}%
+ \fi
+}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewphrasesee}[4][]{%
+    \tstidxnewphrase[see={#4},#1]{#2}{#3}%
+  }
+\else
+  \newcommand*{\tstidxnewphrasesee}[4][]{%
+    \tstidxnewphrase[#1]{#2}{#3}%
+  }
+\fi
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewphraseseealso}[4][]{%
+      \tstidxnewphrase[seealso={#4},#1]{#2}{#3}%
+    }
+  \else
+    \newcommand*{\tstidxnewphraseseealso}[4][]{%
+      \tstidxnewphrase[see={[\seealsoname]#4},#1]{#2}{#3}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewphraseseealso}[4][]{%
+    \tstidxnewphrase[#1]{#2}{#3}%
+  }
+\fi
+\newcommand*{\tstidxnewartphrase}[4][]{%
+ \if at tstidx@setdescription
+ \tstidxnewentry{\tstidx at getlabel{#3}}{phrase}{name={#3, #2},
+   text={#2 #3},description={#4},#1}%
+ \else
+ \tstidxnewentry{\tstidx at getlabel{#3}}{phrase}{name={#3, #2},
+   text={#2 #3},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewsubphrase}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2.#3}}{phrase}%
+    {parent={\tstidx at getlabel{#2}},%
+    name={#3},description={#4},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2.#3}}{phrase}%
+    {parent={\tstidx at getlabel{#2}},%
+    name={#3},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewperson}[4][]{%
+  \tstidxnewutfperson[#1]{#2}{#3}{#2}{#3}{#4}%
+}
+\newcommand*{\tstidxnewutfperson}[3][]{%
+  \@ifnextchar[{\@tstidxnewutfperson{#1}{#2}{#3}}%
+  {\@tstidxnewutfperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxnewutfperson#1#2#3[#4]#5#6#7{%
+ \if at tstidx@setdescription
+  \tstidxnewutfentrytext{\tstidx at getlabel{#4}}{#3, #2}{#2 #3}{#6, #5}{#5 #6}%
+   {}{description={#7},#1}{person}%
+  \tstidxnewutfentrytext{\tstidx at getlabel{people.#4}}{#3, #2}{#2 #3}{#6, #5}%
+  {#5 #6}{}{description={#7},parent={people}}{person}%
+ \else
+  \tstidxnewutfentrytext{\tstidx at getlabel{#4}}{#3, #2}{#2 #3}{#6, #5}{#5 #6}%
+   {}{#1}{person}%
+  \tstidxnewutfentrytext{\tstidx at getlabel{people.#4}}{#3, #2}{#2 #3}{#6, #5}%
+  {#5 #6}{}{parent={people}}{person}%
+ \fi
+}
+\newcommand*{\tstidxnewsym}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{symbol}%
+  {name={#3},sort={#2},description={#4},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{symbol}%
+  {name={#3},sort={#2},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewindexmarker}[3][]{%
+ \if at tstidx@setdescription
+  \toks@{description={#3},#1}%
+ \else
+  \toks@{description={},#1}%
+ \fi
+ \iftestidxprefix
+   \protected at edef\@tstidx at dodef{%
+    \noexpand\tstidxnewentry{\tstidx at getlabel{#2}}%
+    {indexmarker}{%
+     name={{}\noexpand\protect\expandonce{\csname#2\endcsname}\noexpand\space
+      (\noexpand\tstidxcsfmt{#2})},%
+     sort={\tstidxindexmarkerprefix#2},
+     \the\toks@}}%
+ \else
+   \protected at edef\@tstidx at dodef{%
+    \noexpand\tstidxnewentry{\tstidx at getlabel{#2}}%
+    {indexmarker}{%
+     name={{}\noexpand\protect\expandonce{\csname#2\endcsname}\noexpand\space
+      (\noexpand\tstidxcsfmt{#2})},%
+     sort={#2},
+     \the\toks@}}%
+ \fi
+  \@tstidx at dodef
+}
+\newcommand*{\tstidxnewmath}[2][]{%
+  \@ifnextchar[{\@tstidxnewmath{#1}{#2}}{\@tstidxnewmath{#1}{#2}[#2]}%
+}
+\def\@tstidxnewmath#1#2[#3]#4#5{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{math}%
+  {name={$#4$},text={#4},sort={#2},description={#5},#1}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{math}%
+  {name={$#4$},text={#4},sort={#2},description={},#1}%
+ \fi
+}
+\newcommand*{\tstidxnewmathsym}[2][]{%
+  \@ifnextchar[{\@tstidxnewmathsym{#1}{#2}}{\@tstidxnewmathsym{#1}{#2}[#2]}%
+}
+\def\@tstidxnewmathsym#1#2[#3]#4#5{%
+ \iftestidxprefix
+  \if at tstidx@setdescription
+    \toks@{name={$#4$},text={#4},description={#5},#1}%
+  \else
+    \toks@{name={$#4$},text={#4},#1}%
+  \fi
+  \protected at edef\@tstidx at dodef{%
+   \noexpand\tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}%
+   {sort={\tstidxmathsymprefix#2},description={},\the\toks@}%
+  }%
+  \@tstidx at dodef
+ \else
+  \if at tstidx@setdescription
+    \tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}{name={$#4$},%
+    text={#4},sort={#2},description={#5},#1}%
+  \else
+    \tstidxnewentry{\tstidx at getlabel{#3}}{mathsymbol}{name={$#4$},%
+    text={#4},sort={#2},description={},#1}%
+  \fi
+ \fi
+}
+\newcommand*{\tstidxnewutfword}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{description={#5},#1}{word}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{word}%
+ \fi
+}
+\if at tstidx@useglsseekey
+  \newcommand*{\tstidxnewutfwordsee}[6][]{%
+    \tstidxnewutfword[see={#6},#1]{#2}{#3}{#4}{#5}%
+  }
+\else
+  \newcommand*{\tstidxnewutfwordsee}[6][]{%
+    \tstidxnewutfword[#1]{#2}{#3}{#4}{#5}%
+  }
+\fi
+\if at tstidx@useglsseekey
+  \if at tstidx@hasseealsokey
+    \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+      \tstidxnewutfword[seealso={#6},#1]{#2}{#3}{#4}{#5}%
+    }
+  \else
+    \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+      \tstidxnewutfword[see={[\seealsoname]#6},#1]{#2}{#3}{#4}{#5}%
+    }
+  \fi
+\else
+  \newcommand*{\tstidxnewutfwordseealso}[6][]{%
+    \tstidxnewutfword[#1]{#2}{#3}{#4}{#5}%
+  }
+\fi
+\newcommand*{\tstidxnewutfdigraph}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{description={#5},#1}{digraph}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{digraph}%
+ \fi
+}
+\newcommand*{\tstidxnewutfphrase}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}%
+     {description={#5},#1}{phrase}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{phrase}%
+ \fi
+}
+\newcommand*{\tstidxnewplace}[3][]{%
+ \tstidxnewutfplace[#1]{#2}{#2}{#2}{#3}%
+}
+\newcommand*{\tstidxnewutfplace}[5][]{%
+ \if at tstidx@setdescription
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}%
+     {description={#5},#1}{place}%
+   \tstidxnewutfentry{\tstidx at getlabel{places.#2}}{#3}{#4}{}%
+     {description={#5},parent={places}}{place}%
+ \else
+   \tstidxnewutfentry{\tstidx at getlabel{#2}}{#3}{#4}{}{#1}{place}%
+   \tstidxnewutfentry{\tstidx at getlabel{places.#2}}{#3}{#4}{}%
+     {parent={places}}{place}%
+ \fi
+}
+\newcommand*{\tstidxnewartplace}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{place}{name={#3, #2},%
+    text={#2 #3},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{places.#3}}{place}{%
+    parent={places},name={#3, #2},%
+    text={#2 #3},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{place}{name={#3, #2},%
+    text={#2 #3},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{places.#3}}{place}{%
+    parent={places},name={#3, #2},%
+    text={#2 #3},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewbook}[3][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{book}{sort={#2},%
+   name={\tstidxbookfmt{#2}},description={#3},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#2}}{book}{sort={#2},%
+   parent={books},name={\tstidxbookfmt{#2}},description={#3}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{book}{sort={#2},%
+   name={\tstidxbookfmt{#2}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#2}}{book}{sort={#2},%
+   parent={books},name={\tstidxbookfmt{#2}},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewartbook}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{book}{%
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#3}}{book}{%
+   parent={books},
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{book}{%
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{books.#3}}{book}{%
+   parent={books},
+   name={\tstidxbookfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxbookfmt{#2 #3}},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewfilm}[3][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#2}}{film}{sort={#2},%
+   name={\tstidxfilmfmt{#2}},description={#3},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#2}}{film}{sort={#2},%
+   parent={films},name={\tstidxfilmfmt{#2}},description={#3}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#2}}{film}{sort={#2},%
+   name={\tstidxfilmfmt{#2}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#2}}{film}{sort={#2},%
+   parent={films},name={\tstidxfilmfmt{#2}},description={}}%
+ \fi
+}
+\newcommand*{\tstidxnewartfilm}[4][]{%
+ \if at tstidx@setdescription
+  \tstidxnewentry{\tstidx at getlabel{#3}}{film}{%
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={#4},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#3}}{film}{%
+   parent={films},
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={#4}}%
+ \else
+  \tstidxnewentry{\tstidx at getlabel{#3}}{film}{%
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={},#1}%
+  \tstidxnewentry{\tstidx at getlabel{films.#3}}{film}{%
+   parent={films},
+   name={\tstidxfilmfmt{#3, #2}},
+   sort={#3, #2},
+   text={\tstidxfilmfmt{#2 #3}},description={}}%
+ \fi
+}
+\newcommand*{\@tidx at gls@par at i}{%
+ This is a~sample block of text designed to test indexing with
+ the \expandafter\tstidxsty\expandafter{\tstidx at glossariespkg} package. To test
+ only \tstidxcs{index} and \tstidxenv{theindex} environment, just use
+ \tstidxsty{testidx} instead of \tstidxsty{testidx-glossaries}.
+ Alternatively, use \tstidxcs{tstidxtoidx} to switch back to the
+ original \tstidxsty{testidx} behaviour.
+ This sample text is provided to help test the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{layout}
+ \else
+  \tstidxword{layout}
+ \fi
+  of the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{index}
+ \else
+  \tstidxword{index}
+ \fi
+ (or
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapii]{glossary}%
+ \else
+  \tstidxword{glossary}%
+ \fi
+ ) and the
+ \if at tstidx@use at encaps
+   \tstidxphrasepl[tstidxencapii]{indexing application},
+ \else
+   \tstidxphrasepl{indexing application},
+ \fi
+ such as
+ \tstidxapp{makeindex} or
+ \tstidxapp{xindy}, that may be used with the
+ \expandafter\tstidxsty\expandafter{\tstidx at glossariespkg} package.
+ This \tstidxword{example} text is just
+ \tstidxword{filler} (produced using \tstidxcs{testidx} provided
+ by the \tstidxopensty{testidx} package) to
+ pad\tstindexsee{padding}{seealso}{filler} out
+ the document with instances of \tstidxcs{index} interspersed throughout.
+ You can find out more
+ information from the \tstidxsty{testidx} user manual, which
+ can be accessed using the \tstidxapp{texdoc} application.
+}
+\let\@tidx at org@par at i\@tidx at par@i
+\let\@tidx at par@i\@tidx at gls@par at i
+\newcommand*{\@tidx at gls@par at ii}{%
+ The \tstidxsty{testidx-glossaries} package uses \tstidxcs{gls} (or
+ \tstidxcs{glspl}) unless no text should be displayed when indexing
+ occurs (in which case just \tstidxcs{glsadd} is used). This test package
+ doesn't make any modifications to
+ \tstidxcs{gls} (or \tstidxcs{glspl}), but there are some minor changes to entry
+ definitions and command use to allow this \tstidxphrase{dummy text} to test
+ various cases.  By default \tstidxcs{gls} performs the indexing before the
+ \tstidxphrase{link text} to prevent any unwanted interference caused by the
+ \tstidxword{whatsit} introduced by the indexing.
+ However, it's possible that you may want the indexing to occur
+ after the \tstidxphrase{link text}, even though it creates
+ a~\tstidxword{whatsit}. This \tstidxphrase{dummy text} is designed to use
+ a mixture of pre- and post-indexing to investigate the results (particularly
+ with \tstidxwordpl{phrase} spanning a \tstidxphrase{page break}).
+ The \tstidxsty{glossaries-extra} package (as from
+ version 1.14) provides a~new key \tstidxqt{wrgloss} (for commands
+ like \tstidxcs{gls}), which may take the values
+ \tstidxqt{before} or \tstidxqt{after}. If this key is available,
+ it will be used for the post-indexing \tstidxwordpl{example},
+ otherwise the post-indexing will be performed manually using
+ \tstidxcs{glsadd} after the \tstidxphrase{link text} (which is displayed using
+ \tstidxcs{glshyperlink}). The \tstidxsty{testidx-glossaries} package
+ just loads the base \tstidxsty{glossaries} package by default. Use
+ the \tstidxstyopt{testidx-glossaries}{extra} package option to also
+ load \tstidxsty{glossaries-extra}. The \tstidxphrase{visual effects} in this
+ \tstidxphrase{dummy text} are provided to illustrate where the
+ indexing occurs. The \tstidxsty{testidx-glossaries} package
+ doesn't attempt to produce a well-designed index or glossary. Its
+ \tstidxword{purpose} is to help you \tstidxword{test} your chosen
+ \tstidxword{design}, which is easier to do with a
+ relatively small test \tstidxword{document}, than with a large
+ \tstidxword{book}. The \tstidxphrase{dummy text} is intended to produce an
+ \tstidxword{index} that is at least three pages long to allow you
+ to test the page headers and footers in a two-sided document.
+ The \tstidxqt{mcolindexgroup} style is set by default (rather than
+ the \tstidxqt{list} style) as that style more closely represents
+ the style used in indexes.
+ \if at tstidx@setdescription
+  However, since this document has used the
+  \tstidxstyopt{testidx-glossaries}{desc} option,
+  the style is instead set to \tstidxqt{indexgroup}.
+ \else
+  If you use the \tstidxstyopt{testidx-glossaries}{desc} option,
+  the style will instead be set to \tstidxqt{indexgroup}.
+ \fi
+ You can change the style using \tstidxcs{setglossarystyle}.
+ By default the \tstidxqt{tree} styles (including
+ \tstidxqt{mcolindexgroup}) display the name field in bold in the
+ \tstidxword{glossary}. This is governed by the command
+ \tstidxcs{glstreenamefmt}, which may be redefined as appropriate.
+ You can hide the visual effects with the
+ \tstidxstyopt{testidx}{hidemarks} package option.%
+ \iftestidxshowmarks
+ \else
+  \space (It seems you already have this option set.
+  Remove it or use \tstidxstyopt{testidx}{showmarks} to show them
+  again.)%
+ \fi
+}
+\let\@tidx at org@par at ii\@tidx at par@ii
+\let\@tidx at par@ii\@tidx at gls@par at ii
+\newcommand*{\@tidx at gls@par at iii}{%
+ The actual place where the indexing occurs in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text}
+ \else
+   \tstidxphrase{dummy text}
+ \fi
+ is marked with the symbol
+ \tstidxindexmarker{tstidxmarker} if there is no \tstidxword{range}
+or
+ \tstidxphrase{cross-reference}. The
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapi]{word}
+ \else
+   \tstidxword{word}
+ \fi
+ or
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapii]{phrase}
+ \else
+   \tstidxword{phrase}
+ \fi
+ adjacent to this \tstidxword{marker} is
+ the text being indexed.\tstidxfootnote{The indexing may
+ occur before or after the \tstidxword{word} or \tstidxword{phrase}
+ (\tstidxphrase{link text}) being indexed in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text},
+ \else
+   \tstidxphrase{dummy text},
+ \fi
+ but there's no
+ space between the \tstidxword{marker} and the term being indexed.
+ Incidentally, this \tstidxword{footnote} text was produced
+ using the command \tstidxcs{tstidxfootnote}, which you can
+ redefined as required. (It defaults to just \tstidxcs{footnote}.)}
+ A sub-entry is indicated with the symbol
+ \tstidxindexmarker{tstidxsubmarker} and a sub-sub-entry is
+ indicated with the symbol \tstidxindexmarker{tstidxsubsubmarker}.
+ If an \tstidxword{encap} value is provided, both the
+ \if at tstidx@use at encaps
+  \tstidxword[tstidxencapiii]{text}
+ \else
+  \tstidxword{text}
+ \fi
+ and the
+ \if at tstidx@use at encaps
+   \tstidxword[tstidxencapii]{marker}
+ \else
+   \tstidxword{marker}
+ \fi
+ are typeset in the \tstidxword{argument} of the corresponding
+command.
+ (The text occurring in the document is also typeset within the
+argument of
+ \tstidxcs{tstidxtext}. The default value is to use a dark grey, but
+since the
+ default values for the \tstidxword{predefined} encaps used in this
+text all
+ change the colour, the dark grey will only apply where the encap
+hasn't
+ been set.) There are three \tstidxword{encap} values used
+throughout this
+ \tstidxphrase{dummy text} (unless you've used the
+ \tstidxstyopt{testidx}{notestencaps} package option):
+ \if at tstidx@use at encaps
+  \tstidxencapcsn[tstidxencapi]{tstidxencapi},
+ \else
+  \tstidxencapcsn{tstidxencapi},
+ \fi
+ \if at tstidx@use at encaps
+   \tstidxencapcsn[tstidxencapii]{tstidxencapii}
+ \else
+   \tstidxencapcsn{tstidxencapii}
+ \fi
+ and
+ \if at tstidx@use at encaps
+   \tstidxencapcsn[tstidxencapiii]{tstidxencapiii}.
+ \else
+   \tstidxencapcsn{tstidxencapiii}.
+ \fi
+ (The default values use \tstidxcs{textcolor}, so you might want to
+use the
+ \tstidxstyopt{hyperref}{hidelinks} option
+ if you want to use the \tstidxsty{hyperref} package.)
+ If you use the \tstidxstyopt{testidx-glossaries}{noseekey} package option, a
+ cross-referenced entry (using \tstidxcs{glssee}\if at tstidx@hasseealsokey
+  \ or \tstidxcs{glsxtrindexseealso}\fi) is identified
+  using the \tstidxword{marker}  \tstidxindexmarker{tstidxseemarker}
+ and the cross-referenced information is displayed as
+ a \tstidxphrase{marginal note} by default, with the term being indexed
+ followed by the \tstidxword{cross-reference}.
+ For example,
+ \tstidxword{lyuk}\tstindexsee{lyuk}{seealso}{digraph} has
+ the marker \tstidxmarker\ to show that the word \tstidxqt{lyuk} was
+ indexed. If the
+\tstidxstyopt{testidx-glossaries}{noseekey} package option is set,
+ this is followed by the marker \tstidxseemarker\ to show that
+ a cross-reference to \tstidxword{digraph} has also been indexed (with the details shown in
+ the margin).
+ \if at tstidx@useglsseekey
+   This document has used the \tstidxstyopt{testidx-glossaries}{seekey} package option,
+   which means that \tstidxcs{glssee}
+   \if at tstidx@hasseealsokey
+    and \tstidxcs{glsxtrindexseealso} aren't
+   \else
+    isn't
+   \fi
+   used in the \tstidxphrase{dummy text}.
+   Instead the \tstidxqt{see}
+   \if at tstidx@hasseealsokey
+    and \tstidxqt{seealso} keys provided in the entry definition were
+   \else
+    key provided in the entry definition was
+   \fi
+   used to perform the \tstidxword{cross-reference} at the time the entry was
+   defined, and so no markers or marginal notes are displayed.
+ \else
+   This document has used the \tstidxstyopt{testidx-glossaries}{noseekey} package option. This option ignores the \tstidxqt{see}
+   \if at tstidx@hasseealsokey
+    and \tstidxqt{seealso} keys
+   \else
+    key
+   \fi
+   within the entry definitions for testing purposes. If you use the
+   \tstidxstyopt{testidx-glossaries}{seekey}
+   package option instead, the \tstidxqt{see}
+   \if at tstidx@hasseealsokey
+     and \tstidxqt{seealso} keys will
+     be used when defining the entries with cross-references instead of
+     using \tstidxcs{glssee} and \tstidxcs{glsxtrindexseealso}.
+   \else
+     key will be used when defining the entries with cross-references instead of
+     using \tstidxcs{glssee}.
+   \fi
+   No markers will appear in that case as the
+   cross-referencing will be performed when the entry is defined in
+   the preamble.
+ \fi
+ A sub-level \tstidxword{cross-reference} is identified with the
+ \tstidxword{marker} \tstidxindexmarker{tstidxsubseemarker} and the
+ marginal note displays the main term followed by the sub-term (separated by the
+ symbol \tstidxsubseesep).  The \tstidxword{marker} used for the start of
+ a range is \tstidxindexmarker{tstidxopenmarker} and the
+ \tstidxword{marker} used for the end of
+ a range is \tstidxindexmarker{tstidxclosemarker}
+ unless the entry is a sub-level, in which case the
+ \tstidxword{marker} for the start of the range is
+ \tstidxindexmarker{tstidxopensubmarker}
+ and the \tstidxword{marker} used for the end of a range is
+ \tstidxindexmarker{tstidxclosesubmarker}, or for a sub-sub-level
+\tstidxindexmarker{tstidxopensubsubmarker} and
+ \tstidxindexmarker{tstidxclosesubsubmarker}. There are no tests for
+ any further sub-levels. Although \tstidxapp{xindy} allows more than
+ three levels (\tstidxapp{makeindex} doesn't), it's somewhat
+ \tstidxword{excessive} to go below a sub-sub-level.
+ You'll have to add your own tests for anything deeper.%
+
+}
+\let\@tidx at org@par at iii\@tidx at par@iii
+\let\@tidx at par@iii\@tidx at gls@par at iii
+\newcommand*{\@tidx at gls@par at iv}{%
+ Here's an \tstidxword{example} of the start of a
+\tstidxopenword{range} but
+ remember that a range must also have an end, so make sure that
+ \tstidxword{block}~\@tidx at closerangepar\ has been included in this
+ \if at tstidx@use at encaps
+   \tstidxphrase[tstidxencapiii]{dummy text},
+ \else
+   \tstidxphrase{dummy text},
+ \fi
+  which closes this
+ \tstidxword{example}.
+ When the \tstidxstyopt{testidx}{verbose} option is used with just
+ \tstidxsty{testidx}, the indexing information
+ will show the \tstidxword{argument} being passed to
+ \tstidxcs{tstindex} (which will cause \tstidxphrase{overfull lines}).
+ Since the \tstidxsty{testidx-glossaries} package doesn't use
+ \tstidxcs{tstindex}, the \tstidxstyopt{testidx-glossaries}{verbose} package
+  option will instead write information to the transcript file showing the
+ label, name field, sort field, text field, parent field and see field for each
+ entry as it's defined. (The parent and see fields may be empty).
+ If the \tstidxstyopt{testidx-glossaries}{tex} package option is
+ used, the sorting may take a long time (since \TeX\ is being used
+ to sort the entries). In this case, the
+ \tstidxstyopt{testidx-glossaries}{verbose} package
+ option will also write information while it's sorting the entries,
+ so that you know \TeX\ is still doing something and hasn't got stuck.
+ This document has the
+ \iftestidxverbose
+  \tstidxstyopt{testidx-glossaries}{verbose} package
+ \else
+  \tstidxstyopt{testidx-glossaries}{noverbose} package
+ \fi
+ option set.%
+}
+\let\@tidx at org@par at iv\@tidx at par@iv
+\let\@tidx at par@iv\@tidx at gls@par at iv
+\newcommand*{\@tidx at gls@par at vi}{%
+ On the subject of \tstidxapp{xindy}, if you want to use it with
+ this \tstidxword{example} document, you'll need to add the
+ \tstidxword{encap} values used in this \tstidxphrase{dummy text}
+ as allowed attributes. (Don't forget you'll also need the
+ \tstidxstyopt{testidx-glossaries}{xindy} package option when you
+ load \tstidxsty{testidx-glossaries}.) With the \tstidxsty{glossaries} package,
+ this means using \tstidxcs{GlsAddXdyAttribute} with the
+ encap name as the argument. For example
+ \begin{flushleft}\ttfamily
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapi\expandafter\@gobble\string\}\endgraf
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapii\expandafter\@gobble\string\}\endgraf
+ \string\GlsAddXdyAttribute\expandafter\@gobble\string\{tstidxencapiii\expandafter\@gobble\string\}
+ \end{flushleft}
+ This sets up allowed encap values and how they should be formatted.
+ The ordering of the allowed \tstidxword{attributes} here gives the
+ \tstidxencapcsn{tstidxencapi} encap precedence in the
+ event of a \tstidxphrase{multiple encaps} clash, since it's the
+ first one in the list.
+ Check out the difference between using \tstidxapp{xindy} and
+ \tstidxapp{makeindex} on this document. Also check the difference
+ between using \tstidxapp{makeglossaries} and
+ \tstidxapp{makeglossaries-lite} to build this document.
+ The \tstidxsubword{location list}{page separator} is given by
+ \tstidxcs{delimN}, and the
+ \tstidxsubword{location list}{range separator}%
+ \tstindexsee{range separator}{see}{location list} is given by
+ \tstidxcs{delimR}.
+ On the subject of location lists, the word
+ \tstidxword{passim} (meaning \tstidxqt{here and there}) is
+ sometimes used to tidy up ragged lists. For example,
+ the locations \tstidxqt{1, 3, 4, 6, 7} may look neater as
+ \tstidxqt{1-7 passim}, which indicates references are scattered (here
+ and there) throughout that range.
+ The \tstidxapp{bib2gls} application may be used with the
+ \tstidxsty{glossaries-extra} package instead of
+ \tstidxapp{makeindex} or \tstidxapp{xindy}. Use the
+ \tstidxstyopt{testidx-glossaries}{bib2gls} package option to set up
+ this dummy text to use it. Note that this option doesn't make use
+ of the prefix commands \tstidxcs{tstidxindexmarkerprefix} or
+ \tstidxcs{tstidxindexmathsymprefix}. The
+ \tstidxstyopt{testidx}{prefix} package option will instead alter
+ the way the bib files are loaded to produce a similar grouping.%
+}
+\let\@tidx at org@par at vi\@tidx at par@vi
+\let\@tidx at par@vi\@tidx at gls@par at vi
+\newcommand{\@tidx at gls@sanitizenote}{%
+ \space You currently have the
+ \@tstidx at ifsanitize
+ {\tstidxstyopt{testidx-glossaries}{sanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters will
+  first be sanitized before being passed to \tstidxcs{tstindex}, which
+  will allow you to test how well the \tstidxphrase{indexing application}
+  sorts \tstidxword{UTF-8} characters. If you'd rather test how
+  \tstidxcs{index} writes these characters to the file read by the
+  indexing application, use the \tstidxstyopt{testidx-glossaries}{nosanitize}
+  option instead. This may cause the \tstidxword{UTF-8} characters to be
+  written in terms of \tstidxcs{IeC}.
+ }%
+ {\tstidxstyopt{testidx-glossaries}{nosanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters
+  may be written to the file processed by the
+  \tstidxphrase{indexing application} in terms of
+  \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves.
+  If you'd rather test how the indexing application sorts
+  \tstidxword{UTF-8} characters, use the
+  \tstidxstyopt{testidx-glossaries}{sanitize}
+  option instead, which will sanitize the \tstidxword{UTF-8} characters
+  before passing them to \tstidxcs{tstindex}.
+ }%
+ The \tstidxstyopt{testidx-glossaries}{nosanitize} option doesn't
+ have an effect when used with the
+ \tstidxstyopt{testidx-glossaries}{bib2gls} package option, since
+ the sort value isn't written to an external file.%
+}
+\let\@tidx at org@sanitizenote\@tidx at sanitizenote
+\let\@tidx at sanitizenote\@tidx at gls@sanitizenote
+\newcommand{\@tidx at gls@stripaccentsnote}{%
+ \space The \tstidxstyopt{testidx-glossaries}{stripaccents} package option will
+  effectively do, for example,
+  \texttt{sort=\char`\{elite\char`\},
+  name=\char`\{\string\'elite\char`\}}
+  whereas the
+  \tstidxstyopt{testidx-glossaries}{nostripaccents} package option will
+  effectively do, for example,
+  \texttt{sort=\char`\{\string\'elite\char`\},
+  name=\char`\{\string\'elite\char`\}}. These options have
+  no effect in UTF-8 mode.%
+}
+\let\@tidx at org@stripaccentsnote\@tidx at stripaccentsnote
+\let\@tidx at stripaccentsnote\@tidx at gls@stripaccentsnote
+\newcommand*{\@tidx at gls@scriptnote}{%
+  (Note how the subscripts and superscripts can be affected
+  by material inserted between the symbol and the sub- and
+  superscripts. With the \tstidxsty{glossaries} package, this can be
+  avoided by using the final optional argument of commands like
+  \tstidxcs{gls} to bring the scripts into the
+  \tstidxphrase{link text}, but not if the scripts also include
+  \tstidxcs{gls}, as the superscript does here.)
+}
+\let\@tidx at org@scriptnote\@tidx at scriptnote
+\let\@tidx at scriptnote\@tidx at gls@scriptnote
+\newcommand*{\@tidx at gls@numberlettergroup}{%
+  If you're using \tstidxapp{xindy}, the \tstidxqt{glsnumbers}
+  letter group (with the title \tstidxqt{\glsnumbersgroupname}) will
+  automatically be added to your \texttt{.xdy}
+  file unless you switch off this feature with the
+  \tstidxstyopt{testidx-glossaries}{noglsnumbers} package option.
+}
+\let\@tidx at org@numberlettergroup\@tidx at numberlettergroup
+\let\@tidx at numberlettergroup\@tidx at gls@numberlettergroup
+\newcommand*{\@tidx at gls@mathslettergroup}{%
+ \@testidx at ifusebibgls
+ {%
+   Now I've been a bit fancy here and used multiple bib files
+   to define the glossary entries. The maths symbols are defined in
+   their own separate bib file.
+  \iftestidxprefix
+  This document has used the \tstidxstyopt{testidx}{prefix} package
+  option, which means that \tstidxcs{tstidxmakegloss} is defined to
+  perform separate sorts for each resource block, which enables the
+  maths symbols to appear in their own group.
+  \else
+  This document has used the \tstidxstyopt{testidx}{noprefix} package
+  option, which means that \tstidxcs{tstidxmakegloss} is defined to
+  sort the maths symbols together with the main entries. If you
+  use the \tstidxstyopt{testidx}{prefix} package instead, the maths
+  symbols will be sorted separately and placed in their own group.
+  \fi
+  If you haven't used \tstidxcs{tstidxmakegloss} then the above
+  won't apply. If you don't use the
+  \tstidxstyopt{testidx-glossaries}{bib2gls} package option, then
+  the \tstidxstyopt{testidx}{prefix} package will instead insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  Here's
+ }%
+ {%
+ \iftestidxprefix
+  Now I've been a bit fancy here and inserted
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  Here's
+ \else
+  This document has used the \tstidxstyopt{testidx}{noprefix}
+  package option, which has switched of the sort prefixes.
+  If you use the \tstidxstyopt{testidx}{prefix} option I can be a
+  bit fancy here and insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  When you switch on the prefixes here's
+ \fi
+ }%
+the code you can add to your document to implement it:
+\begin{flushleft}\ttfamily
+\string\GlsAddLetterGroup\glsopenbrace Maths\glsclosebrace\glsopenbrace
+   \string:prefixes (\string"\tstidxmathsymprefix\string")
+   \string:before \string"glsnumbers\string"\glsclosebrace
+\end{flushleft}
+}
+\let\@tidx at org@mathslettergroup\@tidx at mathslettergroup
+\let\@tidx at mathslettergroup\@tidx at gls@mathslettergroup
+\endinput
+%%
+%% End of file `testidx-glossaries.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/testidx/testidx-glossaries.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/testidx/testidx.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/testidx/testidx.sty	2017-08-11 23:05:20 UTC (rev 45020)
+++ trunk/Master/texmf-dist/tex/latex/testidx/testidx.sty	2017-08-11 23:06:40 UTC (rev 45021)
@@ -7,11 +7,11 @@
 %% testidx.dtx  (with options: `testidx.sty,package')
 %% 
 %%  testidx.dtx
-%%  Copyright 2016 Nicola Talbot
+%%  Copyright 2017 Nicola Talbot
 %% 
 %%  This work may be distributed and/or modified under the
 %%  conditions of the LaTeX Project Public License, either version 1.3
-%%  of this license of (at your option) any later version.
+%%  of this license or (at your option) any later version.
 %%  The latest version of this license is in
 %%    http://www.latex-project.org/lppl.txt
 %%  and version 1.3 or later is part of all distributions of LaTeX
@@ -21,7 +21,7 @@
 %% 
 %%  The Current Maintainer of this work is Nicola Talbot.
 %% 
-%%  This work consists of the files testidx.dtx and testidx.ins and the derived file testidx.sty.
+%%  This work consists of the files testidx.dtx and testidx.ins and the derived files testidx.sty, testidx-glossaries.sty, testidx-glossaries-diglyphs.tex, testidx-glossaries-nodiglyphs.tex, testidx-glossaries-samples.tex, testidx-glossaries-diglyphs-utf8.bib, testidx-glossaries-markers.bib, testidx-glossaries-mathsym.bib, testidx-glossaries-nodiglyphs-utf8.bib, testidx-glossaries-nodiglyphs.bib, testidx-glossaries-numbers.bib, testidx-glossaries-samples-ascii.bib, testidx-glossaries-samples-utf8.bib, testidx-glossaries-samples.bib.
 %% 
 %% \CharacterTable
 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -39,11 +39,11 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{testidx}[2016/10/17 v1.0 (NLCT)]
+\ProvidesPackage{testidx}[2017/08/11 v1.1 (NLCT)]
 \RequirePackage{color}
 \RequirePackage{ifxetex}
 \RequirePackage{ifluatex}
-\newcommand*{\@tstidx at ifutfviii}[2]{%
+\newcommand*{\@tstidx at ifxelua}[2]{%
   \ifxetex
    #1%
   \else
@@ -50,11 +50,16 @@
    \ifluatex
      #1%
    \else
-     \@ifundefined{inputencodingname}{#2}%
-     {\ifx\inputencodingname\@tstidx at utfviii#1\else#2\fi}%
+     #2%
    \fi
   \fi
 }
+\newcommand*{\@tstidx at ifutfviii}[2]{%
+ \@tstidx at ifxelua{#1}
+ {%
+   \ifx\inputencodingname\@tstidx at utfviii#1\else#2\fi
+ }%
+}
 \newcommand*{\@tstidx at utfviii}{utf8}
 \newcommand*{\tstidxprocessasciisort}{\tstidxprocessasciisortstrip}
 \newcommand*{\testidxStripAccents}{%
@@ -91,21 +96,17 @@
 \DeclareOption{german}{\testidxGermanOn}
 \DeclareOption{ngerman}{\testidxGermanOn}
 \DeclareOption{nogerman}{\testidxGermanOff}
-\ifxetex
+\@tstidx at ifxelua
+{
   \newcommand*{\tstidxprocessutf}{%
     \tstidxprocessutfnosanitize
   }
-\else
- \ifluatex
-   \newcommand*{\tstidxprocessutf}{%
-     \tstidxprocessutfnosanitize
-   }
- \else
-   \newcommand*{\tstidxprocessutf}{%
-     \tstidxprocessutfsanitize
-   }
- \fi
-\fi
+}
+{
+  \newcommand*{\tstidxprocessutf}{%
+    \tstidxprocessutfsanitize
+  }
+}
 \newcommand*{\@tstidx at ifsanitize}[2]{#1}
 \newcommand*{\testidxSanitizeOn}{%
    \let\@tstidx at ifsanitize\@firstoftwo
@@ -119,6 +120,19 @@
      \tstidxprocessutfnosanitize
    }%
 }
+\newif\iftestidxdiglyphs
+\testidxdiglyphsfalse
+\DeclareOption{diglyphs}{%
+ \@tstidx at ifutfviii{\testidxdiglyphstrue}%
+ {%
+   \PackageWarning{testidx}{diglyphs option requires UTF-8 support}%
+ }
+}
+\DeclareOption{nodiglyphs}{\testidxdiglyphsfalse}
+\newif\iftestidxprefix
+\testidxprefixtrue
+\DeclareOption{prefix}{\testidxprefixtrue}
+\DeclareOption{noprefix}{\testidxprefixfalse}
 \DeclareOption{sanitize}{\testidxSanitizeOn}
 \DeclareOption{nosanitize}{\testidxSanitizeOff}
 \newif\iftestidxverbose
@@ -139,6 +153,9 @@
   \@ifpackageloaded{amsmath}%
   {\let\@tstidx at ifamsmath\@firstoftwo}%
   {\let\@tstidx at ifamsmath\@secondoftwo}%
+  \@ifpackageloaded{amssymb}%
+  {\let\@tstidx at ifamssymb\@firstoftwo}%
+  {\let\@tstidx at ifamssymb\@secondoftwo}%
   \@ifpackageloaded{inputenc}
   {
     \let\@tstidx at if@inputenc\@firstoftwo
@@ -404,7 +421,7 @@
 \newcommand*{\tstidxdash}{\,---\,}
 \newcommand*{\tstidxfootnote}{\footnote}
 \newcommand*{\tstidxfmtpost}[3]{%
-  \tstindexpost[#1]{\protect#2{#1}}{#3}{#2{#1}}%
+  \tstindexpost[#1]{\protect#2{#1}}[#1]{#3}{#2{#1}}%
 }
 \newcommand*{\tstidxfmtopenpost}[3]{%
   \tstindexopenpost[#1]{\protect#2{#1}}{#3}{#2{#1}}%
@@ -421,34 +438,41 @@
 \newcommand*{\tstidxfmtclosepre}[3]{%
   \tstindexclosepre[#1]{\protect#2{#1}}{#3}{#2{#1}}%
 }
-\newcommand*{\tstidxutf}[5]{%
-  \def\@tstidx at text{#1}%
+\newcommand*{\tstidxutf}{%
+  \@ifnextchar[{\@tstidxutf}{\@tstidxutf[]}%
+}
+\def\@tstidxutf[#1]#2#3#4#5#6{%
+  \def\@tstidx at text{#2}%
   \@tstidx at ifutfviii
   {%
     \ifx\@tstidx at text\@empty
-      \def\@tstidx at text{#3}%
+      \def\@tstidx at text{#4}%
     \fi
-    \tstidxprocessutf{\@tstidx at utf}{#3}%
+    \tstidxprocessutf{\@tstidx at utf}{#4}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#5{\unexpanded\expandafter{\@tstidx at utf}}{#4}%
+      \noexpand#6{\unexpanded\expandafter{\@tstidx at utf}}[#1]{#5}%
         {\@tstidx at text}%
     }%
   }%
   {%
     \ifx\@tstidx at text\@empty
-      \def\@tstidx at text{#2}%
+      \def\@tstidx at text{#3}%
     \fi
-    \tstidxprocessascii{\@tstidx at ascii}{#2}%
-    \tstidxprocessasciisort{\@tstidx at asciisort}{#2}%
+    \tstidxprocessascii{\@tstidx at ascii}{#3}%
+    \tstidxprocessasciisort{\@tstidx at asciisort}{#3}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#5[\unexpanded\expandafter{\@tstidx at asciisort}]%
-        {\unexpanded\expandafter{\@tstidx at ascii}}{#4}%
+      \noexpand#6[\unexpanded\expandafter{\@tstidx at asciisort}]%
+        {\unexpanded\expandafter{\@tstidx at ascii}}[#1]{#5}%
         {\@tstidx at text}%
     }%
   }%
   \@tstidx at doidx
 }
-\newcommand*{\tstidxsubutf}[7]{%
+\newcommand*{\tstidxsubutf}[4]{%
+  \@ifnextchar[{\@tstidxsubutf{#1}{#2}{#3}{#4}}%
+  {\@tstidxsubutf{#1}{#2}{#3}{#4}[]}%
+}
+\def\@tstidxsubutf#1#2#3#4[#5]#6#7#8{%
   \def\@tstidx at text{#1}%
   \@tstidx at ifutfviii
   {%
@@ -456,11 +480,13 @@
       \def\@tstidx at text{#3}%
     \fi
     \tstidxprocessutf{\@tstidx at utf}{#3}%
-    \tstidxprocessutf{\@tstidx at subutf}{#5}%
+    \tstidxprocessutf{\@tstidx at subutf}{#6}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#7{\unexpanded\expandafter{\@tstidx at utf}}%
+      \noexpand#8%
+        {\unexpanded\expandafter{\@tstidx at utf}}%
         {\unexpanded\expandafter{\@tstidx at subutf}}%
-        {#6}%
+        [#5]%
+        {#7}%
         {\@tstidx at text}%
     }%
   }%
@@ -473,19 +499,24 @@
     \tstidxprocessascii{\@tstidx at subascii}{#4}%
     \tstidxprocessasciisort{\@tstidx at subasciisort}{#4}%
     \protected at edef\@tstidx at doidx{%
-      \noexpand#7[\unexpanded\expandafter{\@tstidx at asciisort}]%
+      \noexpand#8%
+        [\unexpanded\expandafter{\@tstidx at asciisort}]%
         {\unexpanded\expandafter{\@tstidx at ascii}}%
         [\unexpanded\expandafter{\@tstidx at subasciisort}]%
         {\unexpanded\expandafter{\@tstidx at subascii}}%
-        {#6}%
+        [#5]%
+        {#7}%
         {\@tstidx at text}%
     }%
   }%
   \@tstidx at doidx
 }
-\newcommand*{\tstidxutfpost}[4][]{%
-  \tstidxutf{#1}{#2}{#3}{#4}{\tstindexpost}%
+\newcommand*{\tstidxutfpost}[2][]{%
+  \@ifnextchar[{\@tstidxutfpost{#1}{#2}}{\@tstidxutfpost{#1}{#2}[]}%
 }
+\def\@tstidxutfpost#1#2[#3]#4#5{%
+  \tstidxutf[#3]{#1}{#2}{#4}{#5}{\tstindexpost}%
+}
 \newcommand*{\tstidxutfopenpost}[4][]{%
   \tstidxutf{#1}{#2}{#3}{#4}{\tstindexopenpost}%
 }
@@ -492,9 +523,12 @@
 \newcommand*{\tstidxutfclosepost}[4][]{%
   \tstidxutf{#1}{#2}{#3}{#4}{\tstindexclosepost}%
 }
-\newcommand*{\tstidxutfpre}[4][]{%
-  \tstidxutf{#1}{#2}{#3}{#4}{\tstindexpre}%
+\newcommand*{\tstidxutfpre}[2][]{%
+  \@ifnextchar[{\@tstidxutfpre{#1}{#2}}{\@tstidxutfpre{#1}{#2}[#2]}%
 }
+\def\@tstidxutfpre#1#2[#3]#4#5{%
+  \tstidxutf[#3]{#1}{#2}{#4}{#5}{\tstindexpre}%
+}
 \newcommand*{\tstidxutfopenpre}[4][]{%
   \tstidxutf{#1}{#2}{#3}{#4}{\tstindexopenpre}%
 }
@@ -501,9 +535,13 @@
 \newcommand*{\tstidxutfclosepre}[4][]{%
   \tstidxutf{#1}{#2}{#3}{#4}{\tstindexclosepre}%
 }
-\newcommand*{\tstidxutfsubpost}[6][]{%
-  \tstidxsubutf{#1}{#2}{#3}{#4}{#5}{#6}{\tstsubindexpost}%
+\newcommand*{\tstidxutfsubpost}[4][]{%
+ \@ifnextchar[{\@tstidxutfsubpost{#1}{#2}{#3}{#4}}%
+ {\@tstidxutfsubpost{#1}{#2}{#3}{#4}[]}%
 }
+\def\@tstidxutfsubpost#1#2#3#4[#5]#6#7{%
+  \tstidxsubutf{#1}{#2}{#3}{#4}[#5]{#6}{#7}{\tstsubindexpost}%
+}
 \newcommand*{\tstidxutfsubopenpost}[6][]{%
   \tstidxsubutf{#1}{#2}{#3}{#4}{#5}{#6}{\tstsubindexopenpost}%
 }
@@ -521,14 +559,11 @@
 }
 \newcommand*{\tstidxcsfmt}[1]{\texttt{\char`\\#1}}
 \if at tstidx@use at encaps
- \newcommand*{\tstidxcs}[2][tstidxencapi]{%
-   \tstidxfmtpost{#2}{\tstidxcsfmt}{#1}%
- }
+ \newcommand*{\tstidxcs}[2][tstidxencapi]{\@tstidxcs{#1}{#2}}
 \else
- \newcommand*{\tstidxcs}[2][]{%
-   \tstidxfmtpost{#2}{\tstidxcsfmt}{#1}%
- }
+ \newcommand*{\tstidxcs}[2][]{\@tstidxcs{#1}{#2}}
 \fi
+\newcommand*{\@tstidxcs}[2]{\tstidxfmtpost{#2}{\tstidxcsfmt}{#1}}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxopencs}[2][tstidxencapi]{%
     \tstidxfmtopenpost{#2}{\tstidxcsfmt}{#1}%
@@ -550,14 +585,14 @@
 \if at tstidx@use at encaps
   \newcommand*{\tstidxencapcsn}[2][tstidxencapi]{%
     \tstindexpost[#2 (#2)]%
-    {\texttt{#2} (\protect\tstidxcsfmt{#2})}{#1}{\texttt{#2}}%
-    \tstsubindexpost{encap}[#2]{\texttt{#2}}{#1}{}%
+    {\texttt{#2} (\protect\tstidxcsfmt{#2})}[#2]{#1}{\texttt{#2}}%
+    \tstsubindexpost{encap}[#2]{\texttt{#2}}[encap.#2]{#1}{}%
   }
 \else
   \newcommand*{\tstidxencapcsn}[2][]{%
     \tstindexpost[#2 (#2)]%
-    {\texttt{#2} (\protect\tstidxcsfmt{#2})}{#1}{\texttt{#2}}%
-    \tstsubindexpost{encap}[#2]{\texttt{#2}}{#1}{}%
+    {\texttt{#2} (\protect\tstidxcsfmt{#2})}[#2]{#1}{\texttt{#2}}%
+    \tstsubindexpost{encap}[#2]{\texttt{#2}}[encap.#2]{#1}{}%
   }
 \fi
 \if at tstidx@use at encaps
@@ -586,13 +621,13 @@
 \if at tstidx@use at encaps
   \newcommand*{\tstidxenv}[2][tstidxencapi]{%
     \tstindexpost[#2 environment]%
-    {\protect\tstidxenvfmt{#2} environment}{#1}%
+    {\protect\tstidxenvfmt{#2} environment}[#2environment]{#1}%
     {\tstidxenvfmt{#2}}%
   }
 \else
   \newcommand*{\tstidxenv}[2][]{%
     \tstindexpost[#2 environment]%
-    {\protect\tstidxenvfmt{#2} environment}{#1}%
+    {\protect\tstidxenvfmt{#2} environment}[#2environment]{#1}%
     {\tstidxenvfmt{#2}}%
   }
 \fi
@@ -659,15 +694,21 @@
 \newcommand*{\tstidxappoptfmt}[1]{\texttt{#1}}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxappopt}[3][tstidxencapiii]{%
+    \tstindexpost[#3 (#2)]%
+      {\protect\tstidxappoptfmt{#3} (\protect\tstidxappfmt{#2})}%
+      [#3.#2option]{#1}{\tstidxappoptfmt{#3}}%
     \tstsubindexpost[#2]{\protect\tstidxappfmt{#2}}%
-      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{\tstidxappoptfmt{#3}}%
+      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
     \tstsubsubindexpost{applications}[#2]{\protect\tstidxappfmt{#2}}%
       [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
   }
 \else
   \newcommand*{\tstidxappopt}[3][]{%
+    \tstindexpost[#3 (#2)]%
+      {\protect\tstidxappoptfmt{#3} (\protect\tstidxappfmt{#2})}%
+      [#3.#2option]{#1}{\tstidxappoptfmt{#3}}%
     \tstsubindexpost[#2]{\protect\tstidxappfmt{#2}}%
-      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{\tstidxappoptfmt{#3}}%
+      [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
     \tstsubsubindexpost{applications}[#2]{\protect\tstidxappfmt{#2}}%
       [#3]{\protect\tstidxappoptfmt{#3}}{#1}{}%
   }
@@ -707,49 +748,55 @@
   }
 \fi
 \newcommand*{\tstidxstyfmt}[1]{\texttt{#1}}
+\newcommand*{\tstindexstysee}[3]{%
+  \tstindexsee[#1package]{\protect\tstidxstyfmt{#1} package}{#2}%
+  [#3package]{\protect\tstidxstyfmt{#3}}%
+}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxsty}[2][tstidxencapiii]{%
     \tstindexpost[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{\tstidxstyfmt{#2}}%
+     {\protect\tstidxstyfmt{#2} package}[#2package]{#1}{\tstidxstyfmt{#2}}%
     \tstsubindexpost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxsty}[2][]{%
     \tstindexpost[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{\tstidxstyfmt{#2}}%
+     {\protect\tstidxstyfmt{#2} package}[#2package]{#1}{\tstidxstyfmt{#2}}%
     \tstsubindexpost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 \if at tstidx@use at encaps
   \newcommand*{\tstidxopensty}[2][tstidxencapiii]{%
-    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}[#2package]{#1}%
       {\tstidxstyfmt{#2}}%
     \tstsubindexopenpost{packages}[#2 package]%
-      {\protect\tstidxstyfmt{#2} package}{#1}{}%
+      {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxopensty}[2][]{%
-    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexopenpost[#2 package]{\protect\tstidxstyfmt{#2} package}[#2package]{#1}%
       {\tstidxstyfmt{#2}}%
     \tstsubindexopenpost{packages}[#2 package]%
-      {\protect\tstidxstyfmt{#2} package}{#1}{}%
+      {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 \if at tstidx@use at encaps
   \newcommand*{\tstidxclosesty}[2][tstidxencapiii]{%
-    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}%
+     [#2package]{#1}%
      {\tstidxstyfmt{#2}}%
     \tstsubindexclosepost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \else
   \newcommand*{\tstidxclosesty}[2][]{%
-    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}{#1}%
+    \tstindexclosepost[#2 package]{\protect\tstidxstyfmt{#2} package}%
+     [#2package]{#1}%
      {\tstidxstyfmt{#2}}%
     \tstsubindexclosepost{packages}[#2 package]%
-     {\protect\tstidxstyfmt{#2} package}{#1}{}%
+     {\protect\tstidxstyfmt{#2} package}[packages.#2package]{#1}{}%
   }
 \fi
 \newcommand*{\tstidxstyoptfmt}[1]{\texttt{#1}}
@@ -807,6 +854,8 @@
 \newcommand*{\tstidxword}[2][]{%
   \tstindexpost{#2}{#1}{#2}%
 }
+\newcommand*{\tstidxwordpl}[1][]{\@tstidxwordpl{#1}}
+\newcommand*{\@tstidxwordpl}[2]{\tstidxword[#1]{#2}s}
 \newcommand*{\tstidxopenword}[2][]{%
   \tstindexopenpost{#2}{#1}{#2}%
 }
@@ -828,6 +877,8 @@
 \newcommand*{\tstidxphrase}[2][]{%
   \tstindexpre{#2}{#1}{#2}%
 }
+\newcommand*{\tstidxphrasepl}[1][]{\@tstidxphrasepl{#1}}
+\newcommand*{\@tstidxphrasepl}[2]{\tstidxphrase[#1]{#2}s}
 \newcommand*{\tstidxopenphrase}[2][]{%
   \tstindexopenpre{#2}{#1}{#2}%
 }
@@ -835,13 +886,13 @@
   \tstindexclosepre{#2}{#1}{#2}%
 }
 \newcommand*{\tstidxartphrase}[3][]{%
-  \tstindexpost{#3, #2}{#1}{#2 #3}%
+  \tstindexpost{#3, #2}[#3]{#1}{#2 #3}%
 }
 \newcommand*{\tstidxopenartphrase}[3][]{%
-  \tstindexopenpost{#3, #2}{#1}{#2 #3}%
+  \tstindexopenpost{#3, #2}[#3]{#1}{#2 #3}%
 }
 \newcommand*{\tstidxcloseartphrase}[3][]{%
-  \tstindexclosepost{#3, #2}{#1}{#2 #3}%
+  \tstindexclosepost{#3, #2}[#3]{#1}{#2 #3}%
 }
 \newcommand*{\tstidxperson}[3][]{%
   \tstidxutfperson[#1]{#2}{#3}{#2}{#3}%
@@ -852,70 +903,121 @@
 \newcommand*{\tstidxcloseperson}[3][]{%
   \tstidxutfcloseperson[#1]{#2}{#3}{#2}{#3}%
 }
-\newcommand*{\tstidxutfperson}[5][]{%
+\newcommand*{\tstidxutfperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfperson{#1}{#2}{#3}}%
+  {\@tstidxutfperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfpost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfpost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfpost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfpost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
-  \tstidxutfsubpost[\relax]{people}{people}{#3, #2}{#5, #4}{#1}%
+  \tstidxutfsubpost[\relax]{people}{people}{#3, #2}[people.#4]{#6, #5}{#1}%
 }
-\newcommand*{\tstidxutfopenperson}[5][]{%
+\newcommand*{\tstidxutfopenperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfopenperson{#1}{#2}{#3}}%
+  {\@tstidxutfopenperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfopenperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfopenpost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfopenpost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfopenpost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfopenpost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
 }
-\newcommand*{\tstidxutfcloseperson}[7][]{%
+\newcommand*{\tstidxutfcloseperson}[3][]{%
+  \@ifnextchar[{\@tstidxutfcloseperson{#1}{#2}{#3}}%
+  {\@tstidxutfcloseperson{#1}{#2}{#3}[#2#3]}%
+}
+\def\@tstidxutfcloseperson#1#2#3[#4]#5#6{%
   \@tstidx at ifutfviii
   {%
-    \tstidxutfclosepost[#4 #5]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfclosepost[#5 #6]{#3, #2}[#4]{#6, #5}{#1}%
   }%
   {%
-    \tstidxutfclosepost[#2 #3]{#3, #2}{#5, #4}{#1}%
+    \tstidxutfclosepost[#2 #3]{#3, #2}[#4]{#6, #5}{#1}%
   }%
 }
-\newcommand*{\tstidxsym}[3][]{%
-  \tstindexpost[#2]{\protect#3}{#1}{#3}%
+\newcommand*{\tstidxsym}[2][]{%
+  \@ifnextchar[{\@tstidxsym{#1}{#2}}{\@tstidxsym{#1}{#2}[#2]}%
 }
-\newcommand*{\tstidxopensym}[3][]{%
-  \tstindexopenpost[#2]{\protect#3}{#1}{#3}%
+\def\@tstidxsym#1#2[#3]#4{%
+  \tstindexpost[#2]{\protect#4}[#3]{#1}{#4}%
 }
-\newcommand*{\tstidxclosesym}[3][]{%
-  \tstindexopenpost[#2]{\protect#3}{#1}{#3}%
+\newcommand*{\tstidxopensym}[2][]{%
+  \@ifnextchar[{\@tstidxopensym{#1}{#2}}{\@tstidxopensym{#1}{#2}[]}%
 }
+\def\@tstidxopensym#1#2[#3]#4{%
+  \tstindexopenpost[#2]{\protect#4}[#3]{#1}{#4}%
+}
+\newcommand*{\tstidxclosesym}[2][]{%
+  \@ifnextchar[{\@tstidxclosesym{#1}{#2}}{\@tstidxclosesym{#1}{#2}[]}%
+}
+\def\@tstidxclosesym#1#2[#3]#4{%
+  \tstindexclosepost[#2]{\protect#4}[#3]{#1}{#4}%
+}
 \newcommand{\tstidxindexmarker}[1]{%
- \tstidxsym{\tstidxindexmarkerprefix#1}{\csname#1\endcsname
-   \protect\space (\protect\tstidxcsfmt{#1})}%
+ \iftestidxprefix
+   \expandafter\tstidxsym\expandafter
+    {\tstidxindexmarkerprefix#1}[#1]{\csname#1\endcsname
+     \protect\space (\protect\tstidxcsfmt{#1})}%
+ \else
+   \tstidxsym{#1}[#1]{\csname#1\endcsname
+     \protect\space (\protect\tstidxcsfmt{#1})}%
+ \fi
 }
 \newcommand*{\tstidxindexmarkerprefix}{<}
 \if at tstidx@use at encaps
-  \newcommand*{\tstidxmath}[3][tstidxencapii]{%
-    \tstindexpre[#2]{$#3$}{#1}{#3}%
+  \newcommand*{\tstidxmath}[2][tstidxencapii]{%
+    \@ifnextchar[{\@tstidxmath{#1}{#2}}{\@tstidxmath{#1}{#2}[#2]}%
   }
 \else
-  \newcommand*{\tstidxmath}[3][]{%
-    \tstindexpre[#2]{$#3$}{#1}{#3}%
+  \newcommand*{\tstidxmath}[2][]{%
+    \@ifnextchar[{\@tstidxmath{#1}{#2}}{\@tstidxmath{#1}{#2}[#2]}%
   }
 \fi
+\def\@tstidxmath#1#2[#3]#4{%
+  \tstindexpre[#2]{$#4$}[#3]{#1}{#4}%
+}
 \if at tstidx@use at encaps
-  \newcommand*{\tstidxmathsym}[3][tstidxencapii]{%
-    \tstidxmath[#1]{\tstidxmathsymprefix#2}{#3}%
+  \newcommand*{\tstidxmathsym}[2][tstidxencapii]{%
+    \@ifnextchar[{\@tstidxmathsym{#1}{#2}}{\@tstidxmathsym{#1}{#2}[#2]}%
   }
 \else
-  \newcommand*{\tstidxmathsym}[3][]{%
-    \tstidxmath[#1]{\tstidxmathsymprefix#2}{#3}%
+  \newcommand*{\tstidxmathsym}[2][]{%
+    \@ifnextchar[{\@tstidxmathsym{#1}{#2}}{\@tstidxmathsym{#1}{#2}[#2]}%
   }
 \fi
+\def\@tstidxmathsym#1#2[#3]#4{%
+ \iftestidxprefix
+  \expandafter\tstindexpre\expandafter
+   [\tstidxmathsymprefix#2]{$#4$}[#3]{#1}{#4}%
+ \else
+  \tstindexpre[#2]{$#4$}[#3]{#1}{#4}%
+ \fi
+}
 \newcommand*{\tstidxmathsymprefix}{>}
-\newcommand*{\tstidxutfword}[3][]{%
-  \tstidxutfpost{#2}{#3}{#1}%
+\newcommand*{\tstidxutfword}[2][]{%
+  \@ifnextchar[{\@tstidxutfword{#1}{#2}}{\@tstidxutfword{#1}{#2}[#2]}%
 }
+\def\@tstidxutfword#1#2[#3]#4{%
+  \tstidxutfpost{#2}[#3]{#4}{#1}%
+}
+\newcommand*{\tstidxgphword}[2][]{%
+  \@ifnextchar[{\@tstidxgphword{#1}{#2}}{\@tstidxgphword{#1}{#2}[#2]}%
+}
+\def\@tstidxgphword#1#2[#3]#4#5{%
+  \iftestidxdiglyphs
+    \tstidxutfpost{#2}[#3]{#5}{#1}%
+  \else
+    \tstidxutfpost{#2}[#3]{#4}{#1}%
+  \fi
+}
 \newcommand*{\tstidxopenutf}[4][]{%
   \tstidxutfopenpost{#2}{#3}{#1}%
 }
@@ -922,9 +1024,12 @@
 \newcommand*{\tstidxcloseutf}[4][]{%
   \tstidxutfclosepost{#2}{#3}{#1}%
 }
-\newcommand*{\tstidxutfphrase}[3][]{%
-  \tstidxutfpre{#2}{#3}{#1}%
+\newcommand*{\tstidxutfphrase}[2][]{%
+  \@ifnextchar[{\@tstidxutfphrase{#1}{#2}}{\@tstidxutfphrase{#1}{#2}[#2]}%
 }
+\def\@tstidxutfphrase#1#2[#3]#4{%
+  \tstidxutfpre{#2}[#3]{#4}{#1}%
+}
 \newcommand*{\tstidxopenutfphrase}[3][]{%
   \tstidxutfopenpre{#2}{#3}{#1}%
 }
@@ -934,23 +1039,26 @@
 \newcommand*{\tstidxplace}[2][]{%
   \tstidxutfplace[#1]{#2}{#2}%
 }
-\newcommand*{\tstidxutfplace}[3][]{%
-  \tstidxutfpost{#2}{#3}{#1}%
-  \tstidxutfsubpost[\relax]{places}{places}{#2}{#3}{#1}%
+\newcommand*{\tstidxutfplace}[2][]{%
+  \@ifnextchar[{\@tstidxutfplace{#1}{#2}}{\@tstidxutfplace{#1}{#2}[#2]}%
 }
+\def\@tstidxutfplace#1#2[#3]#4{%
+  \tstidxutfpost{#2}[#3]{#4}{#1}%
+  \tstidxutfsubpost[\relax]{places}{places}{#2}[places.#3]{#4}{#1}%
+}
 \newcommand*{\tstidxartplace}[3][]{%
-  \tstindexpost{#3, #2}{#1}{#2 #3}%
-  \tstidxutfsubpost[\relax]{places}{places}{#3, #2}{#3, #2}{#1}%
+  \tstindexpost{#3, #2}[#3]{#1}{#2 #3}%
+  \tstidxutfsubpost[\relax]{places}{places}{#3, #2}[places.#3]{#3, #2}{#1}%
 }
 \newcommand*{\tstidxbookfmt}[1]{\emph{#1}}
 \if at tstidx@use at encaps
   \newcommand*{\tstidxbook}[2][tstidxencapii]{%
-    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}{#1}{\tstidxbookfmt{#2}}%
+    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}[#2]{#1}{\tstidxbookfmt{#2}}%
     \tstsubindexpost{books}[#2]{\protect\tstidxbookfmt{#2}}{#1}{}%
   }
 \else
   \newcommand*{\tstidxbook}[2][]{%
-    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}{#1}{\tstidxbookfmt{#2}}%
+    \tstindexpost[#2]{\protect\tstidxbookfmt{#2}}[#2]{#1}{\tstidxbookfmt{#2}}%
     \tstsubindexpost{books}[#2]{\protect\tstidxbookfmt{#2}}{#1}{}%
   }
 \fi
@@ -978,13 +1086,14 @@
 \fi
 \if at tstidx@use at encaps
   \newcommand*{\tstidxartbook}[3][tstidxencapii]{%
-    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{\tstidxbookfmt{#2 #3}}%
-    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[#3]{#1}{\tstidxbookfmt{#2 #3}}%
+    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxartbook}[3][]{%
-    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{\tstidxbookfmt{#2 #3}}%
-    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstindexpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[#3]{#1}{\tstidxbookfmt{#2 #3}}%
+    \tstsubindexpost{books}[#3, #2]{\protect\tstidxbookfmt{#3,
+#2}}[books.#3]{#1}{}%
   }
 \fi
 \if at tstidx@use at encaps
@@ -991,13 +1100,13 @@
   \newcommand*{\tstidxopenartbook}[3][tstidxencapii]{%
     \tstindexopenpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxopenartbook}[3][]{%
     \tstindexopenpost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexopenpost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \fi
 \if at tstidx@use at encaps
@@ -1004,13 +1113,13 @@
   \newcommand*{\tstidxcloseartbook}[3][tstidxencapii]{%
     \tstindexclosepost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxcloseartbook}[3][]{%
     \tstindexclosepost[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}%
       {\tstidxbookfmt{#2 #3}}%
-    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}{#1}{}%
+    \tstsubindexclosepost{books}[#3, #2]{\protect\tstidxbookfmt{#3, #2}}[books.#3]{#1}{}%
   }
 \fi
 \newcommand*{\tstidxfilmfmt}[1]{\emph{#1}}
@@ -1049,20 +1158,24 @@
 \fi
 \if at tstidx@use at encaps
   \newcommand*{\tstidxartfilm}[3][tstidxencapii]{%
-    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}%
+    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[#3]{#1}%
       {\tstidxfilmfmt{#2 #3}}%
-    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}{}%
+    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3,
+#2}}[films.#3]{#1}{}%
   }
 \else
   \newcommand*{\tstidxartfilm}[3][]{%
-    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}%
+    \tstindexpost[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[#3]{#1}%
       {\tstidxfilmfmt{#2 #3}}%
-    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}{#1}{}%
+    \tstsubindexpost{films}[#3, #2]{\protect\tstidxfilmfmt{#3, #2}}[films.#3]{#1}{}%
   }
 \fi
-\newcommand*{\tstindexpost}[4][]{%
+\newcommand*{\tstindexpost}[2][]{%
+  \@ifnextchar[{\@tstindexpost{#1}{#2}}{\@tstindexpost{#1}{#2}[]}%
+}%
+\def\@tstindexpost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1072,24 +1185,26 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxmarker}%
+     \tstidxtext{#5\tstidxmarker}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxmarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxmarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
-\newcommand*{\tstindexopenpost}[4][]{%
+\newcommand*{\tstindexopenpost}[2][]{%
+  \@ifnextchar[{\@tstindexopenpost{#1}{#2}}{\@tstindexopenpost{#1}{#2}[]}}%
+\def\@tstindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1099,26 +1214,28 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxopenmarker}%
+     \tstidxtext{#5\tstidxopenmarker}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopenmarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopenmarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
-\newcommand*{\tstindexclosepost}[4][]{%
+\newcommand*{\tstindexclosepost}[2][]{%
+  \@ifnextchar[{\@tstindexclosepost{#1}{#2}}{\@tstindexclosepost{#1}{#2}[]}}%
+\def\@tstindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1128,26 +1245,28 @@
   \fi
   \ifx\@tstidx at encap\@empty
    \iftestidxshowmarks
-     \tstidxtext{#4\tstidxclosemarker}%
+     \tstidxtext{#5\tstidxclosemarker}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
   \else
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosemarker}}%
+     \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosemarker}}%
    \else
-     #4%
+     #5%
    \fi
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
   \fi
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
 }
-\newcommand*{\tstindexpre}[4][]{%
+\newcommand*{\tstindexpre}[2][]{%
+  \@ifnextchar[{\@tstindexpre{#1}{#2}}{\@tstindexpre{#1}{#2}[]}}%
+\def\@tstindexpre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1158,24 +1277,26 @@
   \ifx\@tstidx at encap\@empty
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxmarker#4}%
+     \tstidxtext{\tstidxmarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxmarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxmarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
-\newcommand*{\tstindexopenpre}[4][]{%
+\newcommand*{\tstindexopenpre}[2][]{%
+  \@ifnextchar[{\@tstindexopenpre{#1}{#2}}{\@tstindexopenpre{#1}{#2}[]}}%
+\def\@tstindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1188,24 +1309,26 @@
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxopenmarker#4}%
+     \tstidxtext{\tstidxopenmarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxopenmarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxopenmarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
-\newcommand*{\tstindexclosepre}[4][]{%
+\newcommand*{\tstindexclosepre}[2][]{%
+  \@ifnextchar[{\@tstindexclosepre{#1}{#2}}{\@tstindexclosepre{#1}{#2}[]}}%
+\def\@tstindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at sort{#1}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
    \def\@tstidx at entry{#2}%
   \else
@@ -1218,46 +1341,109 @@
    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxclosemarker#4}%
+     \tstidxtext{\tstidxclosemarker#5}%
    \else
-     #4%
+     #5%
    \fi
   \else
    \expandafter\toks@\expandafter{\@tstidx at entry}%
-   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+   \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
    \expandafter\@tstindex\expandafter{\@tstidx at entry}%
    \iftestidxshowmarks
-     \tstidxtext{\tstidxencaptext{#3}{\tstidxclosemarker#4}}%
+     \tstidxtext{\tstidxencaptext{#4}{\tstidxclosemarker#5}}%
    \else
-     #4%
+     #5%
    \fi
   \fi
 }
-\newcommand*{\tstindexsee}[4][]{%
+\newcommand*{\@tstidxseeencap}[1]{%
+ \@ifundefined{tstidx@#1 at encapname}{#1}{\csname tstidx@#1 at encapname\endcsname}%
+}
+\newcommand*{\tstidxSetSeeEncap}[1]{%
+ \@namedef{tstidx at see@encapname}{#1}%
+}
+\newcommand*{\tstidxSetSeeAlsoEncap}[1]{%
+ \@namedef{tstidx at seealso@encapname}{#1}%
+}
+\newcommand*{\tstindexsee}[2][]{%
+  \@ifnextchar[{\@tstindex at see{#1}{#2}}{\@tstindex at see{#1}{#2}[]}}%
+\def\@tstindex at see#1#2[#3]#4{%
+  \@ifnextchar[{\@tstindexsee{#1}{#2}{#3}{#4}}{\@tstindexsee{#1}{#2}{#3}{#4}[]}}%
+\def\@tstindexsee#1#2#3#4[#5]#6{%
   \def\@tstidx at sort{#1}%
+  \def\@tstidx at entry{#2}%
   \ifx\@tstidx at sort\@empty
-   \def\@tstidx at entry{#2}%
+    \@tstidx at ifutfviii
+    {%
+      \tstidxprocessutf{\@tstidx at entry}{#2}%
+    }%
+    {%
+      \def\@tstidx at sort{#2}%
+      \tstidxprocessasciisort{\@tstidx at sort}{#2}%
+      \ifx\@tstidx at sort\@tstidx at entry
+      \else
+        \expandafter\toks@\expandafter{\@tstidx at sort}%
+        \edef\@tstidx at entry{\the\toks@\tstidxactual}%
+        \expandafter\def\expandafter\@tstidx at entry\expandafter
+          {\@tstidx at entry#2}%
+      \fi
+    }%
   \else
-   \toks@{#1}%
-   \edef\@tstidx at entry{\the\toks@\tstidxactual}%
-   \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
+    \@tstidx at ifutfviii
+    {%
+      \expandafter\tstidxprocessutf\expandafter\@tstidx at sort
+        \expandafter{\@tstidx at sort}%
+    }%
+    {%
+      \expandafter\tstidxprocessasciisort\expandafter\@tstidx at sort
+        \expandafter{\@tstidx at sort}%
+    }%
+    \expandafter\toks@\expandafter{\@tstidx at sort}%
+    \edef\@tstidx at entry{\the\toks@\tstidxactual}%
+    \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
   \fi
   \expandafter\toks@\expandafter{\@tstidx at entry}%
-  \edef\@tstidx at entry{\the\toks@\tstidxencap#3{#4}}%
+  \protected at edef\@tstidx at entry{\the\toks@\tstidxencap
+   \@tstidxseeencap{#4}{#6}}%
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \iftestidxshowmarks
-    \tstidxseeref{#2}{#3}{#4}%
+    \tstidxseeref{#2}{#4}{#6}%
   \fi
 }
+\newcommand*{\tstindexutfsee}[2][]{%
+  \@tstindexutfsee{#1}{#2}%
+}
+\newcommand*{\@tstindexutfsee}[2]{%
+  \@ifnextchar[{\@tst at indexutfsee{#1}{#2}}{\@tst at indexutfsee{#1}{#2}[]}%
+}
+\def\@tst at indexutfsee#1#2[#3]#4{%
+  \@ifnextchar[{\@@tst at indexutfsee{#1}{#2}{#3}{#4}}%
+  {\@@tst at indexutfsee{#1}{#2}{#3}{#4}[]}%
+}
+\def\@@tst at indexutfsee#1#2#3#4[#5]#6{%
+  \@ifnextchar[{\@@tst@@indexutfsee{#1}{#2}{#3}{#4}{#5}{#6}}%
+  {\@@tst@@indexutfsee{#1}{#2}{#3}{#4}{#5}{#6}[]}%
+}
+\def\@@tst@@indexutfsee#1#2#3#4#5#6[#7]#8#9{%
+ \@tstidx at ifutfviii
+ {%
+   \@tstindexsee{#3}{#4}{#5}{#6}[#7]{#9}%
+ }%
+ {%
+   \@tstindexsee{#1}{#2}{#5}{#6}[#7]{#8}%
+ }%
+}
 \newcommand*{\tstsubindexpost}[2][]{%
   \def\@tstidx at sort{#1}%
   \def\@tstidx at term{#2}%
   \@tst at subindexpost
 }
-\newcommand*{\@tst at subindexpost}[4][]{%
+\newcommand*{\@tst at subindexpost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexpost{#1}{#2}}{\@tstidx at subindexpost{#1}{#2}[]}}%
+\def\@tstidx at subindexpost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1274,19 +1460,19 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubmarker}%
+      \tstidxtext{#5\tstidxsubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1295,10 +1481,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexopenpost
 }
-\newcommand*{\@tst at subindexopenpost}[4][]{%
+\newcommand*{\@tst at subindexopenpost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexopenpost{#1}{#2}}{\@tstidx at subindexopenpost{#1}{#2}[]}}%
+\def\@tstidx at subindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1315,9 +1503,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
@@ -1324,12 +1512,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1338,10 +1526,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexclosepost
 }
-\newcommand*{\@tst at subindexclosepost}[4][]{%
+\newcommand*{\@tst at subindexclosepost}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexclosepost{#1}{#2}}{\@tstidx at subindexclosepost{#1}{#2}[]}}%
+\def\@tstidx at subindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1358,9 +1548,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
@@ -1367,12 +1557,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1381,10 +1571,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexpre
 }
-\newcommand*{\@tst at subindexpre}[4][]{%
+\newcommand*{\@tst at subindexpre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexpre{#1}{#2}}{\@tstidx at subindexpre{#1}{#2}[]}}%
+\def\@tstidx at subindexpre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1402,18 +1594,18 @@
   \ifx\@tstidx at encap\@empty
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubmarker}%
+      \tstidxtext{#5\tstidxsubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1422,10 +1614,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexopenpre
 }
-\newcommand*{\@tst at subindexopenpre}[4][]{%
+\newcommand*{\@tst at subindexopenpre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexopenpre{#1}{#2}}{\@tstidx at subindexopenpre{#1}{#2}[]}}%
+\def\@tstidx at subindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1445,18 +1639,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1465,10 +1659,12 @@
   \def\@tstidx at term{#2}%
   \@tst at subindexclosepre
 }
-\newcommand*{\@tst at subindexclosepre}[4][]{%
+\newcommand*{\@tst at subindexclosepre}[2][]{%
+ \@ifnextchar[{\@tstidx at subindexclosepre{#1}{#2}}{\@tstidx at subindexclosepre{#1}{#2}[]}}%
+\def\@tstidx at subindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at subsort{#1}%
   \def\@tstidx at subterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1488,18 +1684,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1515,7 +1711,15 @@
   \fi
   \@tstindexsubsee
 }
-\newcommand*{\@tstindexsubsee}[4][]{%
+\newcommand*{\@tstindexsubsee}[2][]{%
+ \@ifnextchar[{\@tstidx at index@subsee{#1}{#2}}%
+  {\@tstidx at index@subsee{#1}{#2}[]}%
+}%
+\def\@tstidx at index@subsee#1#2[#3]#4{%
+ \@ifnextchar[{\@tstidx at indexsubsee{#1}{#2}{#3}{#4}}%
+  {\@tstidx at indexsubsee{#1}{#2}{#3}{#4}[]}%
+}
+\def\@tstidx at indexsubsee#1#2#3#4[#5]#6{%
   \def\@tstidx at subsort{#1}%
   \ifx\@tstidx at subsort\@empty
    \toks@{#2}%
@@ -1528,10 +1732,11 @@
    \expandafter\def\expandafter\@tstidx at entry\expandafter{\@tstidx at entry#2}%
   \fi
   \expandafter\toks@\expandafter{\@tstidx at entry}%
-  \edef\@tstidx at entry{\the\toks@\tstidxencap#3{#4}}%
+  \edef\@tstidx at entry{\the\toks@\tstidxencap
+     \@tstidxseeencap{#4}{#6}}%
   \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \iftestidxshowmarks
-    \tstidxsubseeref{\@tstidx at term}{#2}{#3}{#4}%
+    \tstidxsubseeref{\@tstidx at term}{#2}{#4}{#6}%
   \fi
 }
 \newcommand*{\tstsubsubindexpost}[2][]{%
@@ -1544,10 +1749,13 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexpost
 }
-\newcommand*{\@@tst at subsubindexpost}[4][]{%
+\newcommand*{\@@tst at subsubindexpost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexpost{#1}{#2}}%
+ {\@@tstidx at subsubindexpost{#1}{#2}[]}}%
+\def\@@tstidx at subsubindexpost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1572,19 +1780,19 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubsubmarker}%
+      \tstidxtext{#5\tstidxsubsubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1598,10 +1806,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexopenpost
 }
-\newcommand*{\@@tst at subsubindexopenpost}[4][]{%
+\newcommand*{\@@tst at subsubindexopenpost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexopenpost{#1}{#2}}%
+ {\@@tstidx at subsubindexopenpost{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexopenpost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1626,9 +1839,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
@@ -1635,12 +1848,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1654,10 +1867,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexclosepost
 }
-\newcommand*{\@@tst at subsubindexclosepost}[4][]{%
+\newcommand*{\@@tst at subsubindexclosepost}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexclosepost{#1}{#2}}%
+ {\@@tstidx at subsubindexclosepost{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexclosepost#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1682,9 +1900,9 @@
   \fi
   \ifx\@tstidx at encap\@empty
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
@@ -1691,12 +1909,12 @@
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \else
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
   \fi
 }
@@ -1710,10 +1928,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexpre
 }
-\newcommand*{\@@tst at subsubindexpre}[4][]{%
+\newcommand*{\@@tst at subsubindexpre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexpre{#1}{#2}}%
+ {\@@tstidx at subsubindexpre{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexpre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1739,18 +1962,18 @@
   \ifx\@tstidx at encap\@empty
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxsubsubmarker}%
+      \tstidxtext{#5\tstidxsubsubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxsubsubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxsubsubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1764,10 +1987,14 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexopenpre
 }
-\newcommand*{\@@tst at subsubindexopenpre}[4][]{%
+\newcommand*{\@@tst at subsubindexopenpre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexopenpre{#1}{#2}}%
+ {\@@tstidx at subsubindexopenpre{#1}{#2}[]}%
+}%
+\def\@@tstidx at subsubindexopenpre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1795,18 +2022,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxopensubmarker}%
+      \tstidxtext{#5\tstidxopensubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxopenrange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxopensubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxopensubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1820,10 +2047,15 @@
   \def\@tstidx at subterm{#2}%
   \@@tst at subsubindexclosepre
 }
-\newcommand*{\@@tst at subsubindexclosepre}[4][]{%
+\newcommand*{\@@tst at subsubindexclosepre}[2][]{%
+ \@ifnextchar[{\@@tstidx at subsubindexclosepre{#1}{#2}}%
+ {\@@tstidx at subsubindexclosepre{#1}{#2}[]}%
+}%
+
+\def\@@tstidx at subsubindexclosepre#1#2[#3]#4#5{%
   \def\@tstidx at subsubsort{#1}%
   \def\@tstidx at subsubterm{#2}%
-  \def\@tstidx at encap{#3}%
+  \def\@tstidx at encap{#4}%
   \ifx\@tstidx at sort\@empty
     \let\@tstidx at entry\@tstidx at term
   \else
@@ -1851,18 +2083,18 @@
     \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{#4\tstidxclosesubmarker}%
+      \tstidxtext{#5\tstidxclosesubmarker}%
     \else
-      #4%
+      #5%
     \fi
   \else
     \expandafter\toks@\expandafter{\@tstidx at entry}%
-    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#3}%
+    \edef\@tstidx at entry{\the\toks@\tstidxencap\tstidxcloserange#4}%
     \expandafter\@tstindex\expandafter{\@tstidx at entry}%
     \iftestidxshowmarks
-      \tstidxtext{\tstidxencaptext{#3}{#4\tstidxclosesubmarker}}%
+      \tstidxtext{\tstidxencaptext{#4}{#5\tstidxclosesubmarker}}%
     \else
-      #4%
+      #5%
     \fi
   \fi
 }
@@ -1998,10 +2230,10 @@
  \tstidxword{index} that is at least three pages long to allow you
  to test the page headers and footers in a two-sided document.
  You can hide the visual effects with the
- \tstidxstyopt{testidx}{hidemarks} package option.
+ \tstidxstyopt{testidx}{hidemarks} package option.%
  \iftestidxshowmarks
  \else
-  (It seems you already have this option set.
+  \space (It seems you already have this option set.
   Remove it or use \tstidxstyopt{testidx}{showmarks} to show them
   again.)%
  \fi
@@ -2090,7 +2322,14 @@
  using the \tstidxword{marker}  \tstidxindexmarker{tstidxseemarker}
  and the cross-referenced information is displayed as
  a \tstidxphrase{marginal note} by default, with the term being indexed
- followed by the \tstidxword{cross-reference}. A sub-level
+ followed by the \tstidxword{cross-reference}.
+ For example,
+ \tstidxword{lyuk}\tstindexsee{lyuk}{seealso}{digraph} has
+ the marker \tstidxmarker\ to show that the word \tstidxqt{lyuk} was
+ indexed followed by the marker \tstidxseemarker\ to show that
+ a cross-reference to \tstidxword{digraph} has also been indexed
+ (with the details shown in the margin).
+ A sub-level
  \tstidxword{cross-reference} is identified with the \tstidxword{marker}
  \tstidxindexmarker{tstidxsubseemarker} and the marginal note
  displays the main term followed by the sub-term (separated by the
@@ -2136,7 +2375,7 @@
 \tstidxnewblock
 {%
  Now that the preliminaries have been dispensed with in the previous
- \tstidxword{paragraph}s, we can get on
+ \tstidxwordpl{paragraph}, we can get on
  to some serious
  \if at tstidx@use at encaps
    \tstidxword[tstidxencapii]{waffle}
@@ -2181,6 +2420,8 @@
  \tstidxphrase{keep mum}\tstindexsee{keep mum}{seealso}{confidential}
  and don't \tstidxword{grass} on me because that just won't be fair,
  and it might \tstidxword{distress} them to a certain extent.
+ I shall not be \tstidxword{assailed} by indecision and will
+ \tstidxword{aspire} to find the \tstidxphrase{mot juste}.
  Where was I? Oh, yes, \tstidxword{padding}. I'm trying to make this
  \tstidxword{paragraph} quite long, not because I have any pretensions of being
  the next \tstidxperson{James}{Joyce} and competing with
@@ -2222,7 +2463,8 @@
  has spanned a \tstidxphrase{page break}, you might want to check the terms
  indexed here to make sure they have the correct page numbers listed.
  Something else that you might want to check, while you're at it, is
- what's happened to the \tstidxword{location list} for the word
+ what's happened to the \tstindexsee{location list}{seealso}{cross-reference}%
+ \tstidxword{location list} for the word
  \if at tstidx@use at encaps
    \tstidxqt{\tstidxword[tstidxencapii]{paragraph}},
  \else
@@ -2307,22 +2549,59 @@
  \tstindexsee{range separator}{see}{location list}
  in your \texttt{.xdy} file.  For example:
  \begin{flushleft}\ttfamily
-(markup-locref-list :sep \string",\string")\par
+(markup-locref-list :sep \string", \string")\par
 (markup-range :sep \string"\string-\string-\string")
  \end{flushleft}
  Check out the difference between using \tstidxapp{xindy} and
- \tstidxapp{makeindex} on this document.%
+ \tstidxapp{makeindex} on this document.
+ On the subject of location lists, the word
+ \tstidxword{passim} (meaning \tstidxqt{here and there}) is
+ sometimes used to tidy up ragged lists. For example,
+ the locations \tstidxqt{1, 3, 4, 6, 7} may look neater as
+ \tstidxqt{1-7 passim}, which indicates references are scattered (here
+ and there) throughout that range.%
 }
 \tstidxnewblock
 {%
- We, the \tstidxutfword{\'elite}{élite} who discovered the
- \tstidxutfword{\ae sthetic}{æsthetic}
+ Computer algorithms can sometimes have difficulties with
+ \tstidxword{localisation}. They can be tripped up by
+ \tstidxphrase{input encoding} issues and \tstidxwordpl{digraph}
+ (such as the Welsh \tstidxgphword{ll}{ll}{ỻ} digraph in
+ \tstidxgphword{llan}{llan}{ỻan},
+ the Dutch \tstidxgphword{ij}{ij}{ij} digraph in
+ \tstidxgphword{lijnbus}{lijnbus}{lijnbus} and
+ \tstidxgphword{ijsvrij}{ijsvrij}{ijsvrij}, and the
+ \tstidxgphword{dz}{dz}{dz} digraph in the Hungarian
+ \tstidxgphword{dz\'eta}[dzeta]{dzéta}{dzéta} and Polish
+ \tstidxgphword{dzwon}{dzwon}{dzwon})
+ or \tstidxwordpl{trigraph} (such as the Hungarian \tstidxword{dzs}
+ trigraph in \tstidxutfword{dzs\'oker}[dzsoker]{dzsóker}
+ and \tstidxword{dzsungel}\tstindexsee{dzsungel}{seealso}{trigraph}),
+ so this \tstidxword{paragraph} is designed to provide some examples for
+ testing various Latin alphabets. If you enable both UTF-8 (either
+ with \tstidxsty{inputenc} or using XeLaTeX\slash LuaLaTeX) and
+ the \tstidxstyopt{testidx}{digraphs} option, then the examples above
+ will use the \tstidxqt{ll}, \tstidxqt{ij} and \tstidxqt{dz}
+ \tstidxwordpl{glyph} (\emph{if supported}) for the \tstidxwordpl{digraph}
+ (but not for \tstidxqt{dzs}, which is a
+ \tstidxword{trigraph}). Remember that you'll also need a font that
+ supports those glyphs.
+ \iftestidxdiglyphs
+  (If characters are missing from the above words, then they're not supported.)
+ \fi
+ Other digraphs include the Welsh \tstidxword{dd}, \tstidxword{ff},
+ and \tstidxword{ng}, the Hungarian \tstidxword{ly} (in \tstidxword{lyuk}
+ mentioned earlier) and the Polish \tstidxword{cz}, but these
+ don't use glyphs in the sort value.
+ Now for some more \tstidxword{nonsense} text to pad the index.
+ We, the \tstidxutfword{\'elite}[elite]{élite} who discovered the
+ \tstidxutfword{\ae sthetic}[aesthetic]{æsthetic}
  delights of \tstidxsym{TeX}{\TeX}, must not become
- \tstidxutfword{blas\'e}{blasé} about being the
- \tstidxutfword{prot\'eg\'e}{protégé}
+ \tstidxutfword{blas\'e}[blase]{blasé} about being the
+ \tstidxutfword{prot\'eg\'e}[protege]{protégé}
  of the great \tstidxperson{Donald}{Knuth}.
  It may stagger the
- \tstidxutfword{client\`ele}{clientèle} of
+ \tstidxutfword{client\`ele}[clientele]{clientèle} of
  \if at tstidx@use at encaps
    \tstidxartphrase[tstidxencapii]{the}{commercial world}
  \else
@@ -2329,58 +2608,66 @@
    \tstidxartphrase{the}{commercial world}
  \fi
  to discover our
- \tstidxutfword{r\'esum\'e}{résumé}
+ \tstidxutfword{r\'esum\'e}[resumee]{résumé}
  (after foraging for it in our natty
- \tstidxutfphrase{attach\'e case}{attaché case})
+ \tstidxutfphrase{attach\'e case}[attachecase]{attaché case})
  while we sample a \tstidxword{vol-au-vent} or \tstidxword{two}
- at the \tstidxutfword{soir\'ee}{soirée}
- in the \tstidxutfphrase{pied-\`a-terre}{pied-à-terre}
- with the delightful \tstidxutfword{ph\oe nix}{phœnix}-%
- themed \tstidxutfword{d\'ecor}{décor} and
- \tstidxutfword{f\ae rie}{færie}
- \tstidxutfword{fa\c{c}ade}{façade}
+ at the \tstidxutfword{soir\'ee}[soiree]{soirée}
+ in the \tstidxutfphrase{pied-\`a-terre}[piedaterre]{pied-à-terre}
+ with the delightful \tstidxutfword{ph\oe nix}[phoenix]{phœnix}-%
+ themed \tstidxutfword{d\'ecor}[decor]{décor}, \tstidxword{daft}
+ \tstidxword{oak} \tstidxphrase{dado rail} and
+ \tstidxutfword{f\ae rie}[faerie]{færie}
+ \tstidxutfword{fa\c{c}ade}[facade]{façade}
  that has stunned
- many an \tstidxutfword{\ae thereal}{æthereal}
- \tstidxutfword{d\'ebutante}{débutante}
- sporting a \tstidxutfphrase{berg\`ere hat}{bergère hat},
- but it would be \tstidxutfword{na\"ive}{naïve}
- to fall for such a \tstidxutfword{f\oe tid}{fœtid}
- \tstidxutfword{clich\'e}{cliché}.
+ many an \tstidxutfword{\ae thereal}[aethereal]{æthereal}
+ \tstidxutfword{d\'ebutante}[debutante]{débutante}
+ sporting a \tstidxutfphrase{berg\`ere hat}[bergerehat]{bergère hat},
+ but it would be \tstidxutfword{na\"ive}[naive]{naïve}
+ to fall for such a \tstidxutfword{f\oe tid}[foetid]{fœtid}
+ \tstidxutfword{clich\'e}[cliche]{cliché}.
  This \tstidxword{paragraph} is in a state of
- \tstidxutfword{d\'eshabill\'e}{déshabillé}.
+ \tstidxutfword{d\'eshabill\'e}[deshabille]{déshabillé}.
  Like a \tstidxword{sculpture} of \tstidxword{Venus} in a
- \tstidxutfword{n\'eglig\'ee}{négligée}, it's transparently
+ \tstidxutfword{n\'eglig\'ee}[negligee]{négligée}, it's transparently
  obvious that this \tstidxword{paragraph} is provided for the sole purpose of
  \tstidxword{ogling}\tstindexsee{gawping}{see}{ogling}
  \tstidxphrase{extended Latin characters} and testing
  how \tstidxapp{xindy} and \tstidxapp{makeindex} compare.
- Time for a quick trip to the \tstidxutfword{caf\'e}{café}
- for an \tstidxutfword{an\ae mic}{anæmic}
- \tstidxphrase{cup of tea} with
- \tstidxutfperson{Anders Jonas}{\AA ngstr\"om}%
- {Anders Jonas}{Ångström} and then off to find a \tstidxword{zoo}
- in \tstidxutfplace{\"Osterg\"otland}{Östergötland},
- so we can get to the end of the \tstidxword{alphabet}. Perhaps
+ Time for a quick trip to the \tstidxutfword{caf\'e}[cafe]{café}
+ for an \tstidxutfword{an\ae mic}[anaemic]{anæmic}
+ \tstidxphrase{cup of tea} (to \tstidxword{recover} from our travels) with
+ \tstidxutfperson{Anders Jonas}{\AA ngstr\"om}[AndersJonasAngstrom]%
+ {Anders Jonas}{Ångström} (but don't let it scald your
+ \tstidxutfword{\oe sophagus}[oesophagus]{œsophagus})
+ and then off to find a \tstidxword{zoo}
+ in \tstidxutfplace{\"Osterg\"otland}[Ostergotland]{Östergötland},
+ so we can get to the end of the \tstidxword{alphabet}. (We may even
+ see an adventurous \tstidxword{aardvark} or
+ a lucky \tstidxgphword{llama}{llama}{ỻama} or a
+ \tstidxword{rhinoceros} eating \tstidxword{rhubarb}.) Perhaps
  then we should go over to
- \tstidxutfplace{\"Angelholm}{Ängelholm}
+ \tstidxutfplace{\"Angelholm}[Angelholm]{Ängelholm}
  and head off across the
- \tstidxutfplace{\O resund}{Øresund} bridge and
+ \tstidxutfplace{\O resund}[Oresund]{Øresund} bridge and
  \tstidxword{resume} our search for some more examples.
  We'll go on a \tstidxphrase{whistle-stop tour} around
- \tstidxutfplace{T\r{a}rnby}{Tårnby},
- \tstidxutfplace{R\o dovre}{Rødovre},
- \tstidxutfplace{N\ae stved}{Næstved} and
- \tstidxutfplace{\O lstykke-Stenl\o se}{Ølstykke-Stenløse}.
+ \tstidxutfplace{T\r{a}rnby}[Tarnby]{Tårnby},
+ \tstidxutfplace{R\o dovre}[Rodovre]{Rødovre},
+ \tstidxutfplace{N\ae stved}[Naestved]{Næstved} and
+ \tstidxutfplace{\O lstykke-Stenl\o se}[OlstykkeStenlose]{Ølstykke-Stenløse}.
  Afterwards, we'll \tstidxword{fly} to
  \tstidxplace{Poland} (possibly in an \tstidxword{aeroplane}\tstidxdash
  if passengers would like to look out of their \tstidxword{window}, they'll
  see we're passing over
- \tstidxutfplace{A\ss lar}{Aßlar} and
- \tstidxutfplace{Bad Gottleuba-Berggie\ss h\"ubel}{Bad Gottleuba-Berggießhübel})
- and then we'll visit \tstidxutfplace{\L\'od\'z}{Łódź},
+ \tstidxutfplace{A\ss lar}[Asslar]{Aßlar} and
+ \tstidxutfplace{Bad Gottleuba-Berggie\ss h\"ubel}[BadGottleubaBerggiesshubel]{Bad Gottleuba-Berggießhübel})
+ and then we'll say
+\tstidxqt{\tstidxutfword{cze\'s\'c}[czesc]{cześć}} to
+\tstidxutfplace{\L\'od\'z}[Lodz]{Łódź}, and visit
  \@tstidx at if@notOT at ne
  {%
-   \tstidxutfplace{\'Swi\k{e}tokrzyskie}{Świętokrzyskie}%
+   \tstidxutfplace{\'Swi\k{e}tokrzyskie}[Swietokrzyskie]{Świętokrzyskie}%
    \ifxetex
    \else
      \ifluatex
@@ -2389,7 +2676,8 @@
        because of the \tstidxword{ogonek} and
        will be omitted if you use the default
        \tstidxsubword{font encoding}{OT1}
-       encoding, but not if you use the \tstidxsty{fontenc} package with,
+       encoding, but not if you use the \tstidxsty{fontenc}
+       package\tstindexstysee{fontenc}{seealso}{inputenc} with,
        for example, the \tstidxstyopt{fontenc}{T1} option)%
      \fi
    \fi,
@@ -2397,31 +2685,35 @@
  {%
    [a place with an \tstidxword{ogonek} has been omitted because this document
     is using the default \tstidxsubword{font encoding}{OT1} font
-   encoding\tstidxdash try loading \tstidxsty{fontenc} with the
+   encoding\tstidxdash try loading the \tstidxsty{fontenc}
+   package\tstindexstysee{fontenc}{seealso}{inputenc} with the
    \tstidxstyopt{fontenc}{T1} option],
  }%
- \tstidxutfplace{\.Zory}{Żory},
- \tstidxutfplace{\.Zelech\'ow}{Żelechów},
- \tstidxutfplace{\L obez}{Łobez},
- \tstidxutfplace{G\l og\'ow}{Głogów}
+ \tstidxutfplace{\.Zory}[Zory]{Żory},
+ \tstidxutfplace{\.Zelech\'ow}[Zelechow]{Żelechów},
+ \tstidxutfplace{\L obez}[Lobez]{Łobez},
+ \tstidxutfplace{G\l og\'ow}[Glogow]{Głogów}
  (not to be confused with \tstidxplace{Glasgow}),
- \tstidxutfplace{\'Cmiel\'ow}{Ćmielów},
- \tstidxutfplace{\'Scinawa}{Ścinawa}
+ \tstidxutfplace{\'Cmiel\'ow}[Cmielow]{Ćmielów},
+ \tstidxutfplace{\'Scinawa}[Scinawa]{Ścinawa}
  and
- \tstidxutfplace{\'Swidnica}{Świdnica}.
+ \tstidxutfplace{\'Swidnica}[Swidnica]{Świdnica}.
  Then let's \tstidxword{sail} to \tstidxplace{Iceland} (possibly in
  a \tstidxword{ship}) and visit the lakes of
  \tstidxplace{Iceland}, such as
- \tstidxutfplace{\"Olvesvatn}{Ölvesvatn},
- \tstidxutfplace{\'Ulfsvatn}{Úlfsvatn},
- \tstidxutfplace{\'Anavatn}{Ánavatn},
- \tstidxutfplace{M\'asvatn}{Másvatn},
+ \tstidxutfplace{\"Olvesvatn}[Olvesvatn]{Ölvesvatn},
+ \tstidxutfplace{\'Ulfsvatn}[Ulfsvatn]{Úlfsvatn},
+ \tstidxutfplace{\'Anavatn}[Anavatn]{Ánavatn},
+ \tstidxutfplace{M\'asvatn}[Masvatn]{Másvatn},
  \@tstidx at if@notOT at ne
  {%
-   \tstidxutfplace{\th r\'hyrningsvatn}{Þríhyrningsvatn}
-   (that one starts with a \tstidxutfword{thorn (\th)}{thorn (Þ)}),
-   \tstidxutfplace{Sigr\'i\dh arsta\dh avatn}{Sigríðarstaðavatn}
-   (that one has an \tstidxutfword{eth \dh}{eth ð}%
+   \tstidxutfplace{\TH r\'{\i}hyrningsvatn}[Thrihyrningsvatn]{Þríhyrningsvatn}
+   (that one starts with a
+    \tstidxutfword{thorn (\th)}[thorn]{thorn (þ)}%
+    \tstindexutfsee{\th}{þ}[thornletter]{see}[thorn]{thorn (\th)}{thorn (þ)}),
+   \tstidxutfplace{Sigr\'{\i}\dh arsta\dh avatn}[Sigridharstadhavatn]{Sigríðarstaðavatn}
+   (that one has an \tstidxutfword{eth (\dh)}[eth]{eth (ð)}%
+   \tstindexutfsee{\dh}{ð}[ethletter]{see}[eth]{eth (\dh)}{eth (ð)}%
    \ifxetex
     )%
    \else
@@ -2439,10 +2731,10 @@
    default \tstidxword{OT1} \tstidxword{font encoding}\tstidxdash try loading
    \tstidxsty{fontenc} with the \tstidxstyopt{fontenc}{T1} option],
  }%
- \tstidxutfplace{Gr\ae navatn}{Grænavatn},
- \tstidxutfplace{\'Arnesl\'on}{Árneslón}
+ \tstidxutfplace{Gr\ae navatn}[Graenavatn]{Grænavatn},
+ \tstidxutfplace{\'Arnesl\'on}[Arneslon]{Árneslón}
  and
- \tstidxutfplace{\'Ish\'olsvatn}{Íshólsvatn}.
+ \tstidxutfplace{\'Ish\'olsvatn}[Isholsvatn]{Íshólsvatn}.
  If you are using this with \tstidxapp{xindy} and
  \tstidxword{UTF-8}, try this out with a different language option,
  for example \tstidxappopt{xindy}{-L swedish} or
@@ -2467,33 +2759,46 @@
    \else
      \ifluatex
      \else
-       \space You currently have the
-       \@tstidx at ifsanitize
-       {\tstidxstyopt{testidx}{sanitize} option on.
-        This means that the words containing \tstidxword{UTF-8} characters will
-        first be sanitized before being passed to \tstidxcs{tstindex}, which
-        will allow you to test how well the \tstidxphrase{indexing application}
-        sorts \tstidxword{UTF-8} characters. If you'd rather test how
-        \tstidxcs{index} writes these characters to the file read by the
-        indexing application, use the \tstidxstyopt{testidx}{nosanitize}
-        option instead. This may cause the \tstidxword{UTF-8} characters to be
-        written in terms of \tstidxcs{IeC}.%
-       }%
-       {\tstidxstyopt{testidx}{nosanitize} option on.
-        This means that the words containing \tstidxword{UTF-8} characters
-        may be written to the file processed by the
-        \tstidxphrase{indexing application} in terms of
-        \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves.
-        If you'd rather test how the indexing application sorts
-        \tstidxword{UTF-8} characters, use the \tstidxstyopt{testidx}{sanitize}
-        option instead, which will sanitize the \tstidxword{UTF-8} characters
-        before passing them to \tstidxcs{tstindex}.%
-       }
+       \@tidx at sanitizenote
      \fi
    \fi
  }%
- {}%
+ { No UTF-8 support has been detected for this document.\@tidx at stripaccentsnote}%
 }
+\newcommand{\@tidx at sanitizenote}{%
+ \space You currently have the
+ \@tstidx at ifsanitize
+ {\tstidxstyopt{testidx}{sanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters will
+  first be sanitized before being passed to \tstidxcs{tstindex}, which
+  will allow you to test how well the \tstidxphrase{indexing application}
+  sorts \tstidxword{UTF-8} characters. If you'd rather test how
+  \tstidxcs{index} writes these characters to the file read by the
+  indexing application, use the \tstidxstyopt{testidx}{nosanitize}
+  option instead. This may cause the \tstidxword{UTF-8} characters to be
+  written in terms of \tstidxcs{IeC}.%
+ }%
+ {\tstidxstyopt{testidx}{nosanitize} option on.
+  This means that the words containing \tstidxword{UTF-8} characters
+  may be written to the file processed by the
+  \tstidxphrase{indexing application} in terms of
+  \tstidxcs{IeC}. This allows you to test how \tstidxcs{index} behaves.
+  If you'd rather test how the indexing application sorts
+  \tstidxword{UTF-8} characters, use the \tstidxstyopt{testidx}{sanitize}
+  option instead, which will sanitize the \tstidxword{UTF-8} characters
+  before passing them to \tstidxcs{tstindex}.%
+ }%
+}
+\newcommand{\@tidx at stripaccentsnote}{%
+ \space The \tstidxstyopt{testidx}{stripaccents} package option will
+  effectively do, for example,
+  \texttt{\string\index\char`\{elite@\string\'elite\char`\}}
+   whereas the
+  \tstidxstyopt{testidx}{nostripaccents} package option will
+  effectively do, for example,
+  \texttt{\string\index\char`\{\string\'elite\char`\}}.
+  These options have no effect in UTF-8 mode.%
+}
 \tstidxnewblock
 {%
   Don't forget there's also a \tstidxphrase{number group}, so let's
@@ -2507,16 +2812,7 @@
   \tstidxword{even} \tstidxword{prime number}). A \tstidxword{century} in
   \tstidxword{cricket} means \tstidxnumber{100} runs, and in the
   \tstidxword{calendar} \tstidxnumber{100} years.
-  If you're using \tstidxapp{xindy}, you can provide a numbers group
-  by adding the following to your \texttt{.xdy} module:
-\begin{flushleft}\ttfamily
-(define-letter-group \string"Numbers\string"\par
-   \string:prefixes (\string"0\string" \string"1\string" \string"2\string"
-\string"3\string" \string"4\string" \string"5\string"
-\string"6\string" \string"7\string" \string"8\string"
-\string"9\string")\par
-   \string:before \string"A\string")
-\end{flushleft}
+  \@tidx at numberlettergroup
   Whilst we're on the subject of numbers, let's try out some
   equations.
 \begin{equation}
@@ -2527,12 +2823,15 @@
    Since this document is using \tstidxsty{amsmath}, let's try out
 the \tstidxenv{align} environment:
 \begin{align}
-\tstidxmath{f(x)}{f(\protect\vec{x})} &=
+\tstidxmath{f(x)}[fx]{f(\protect\vec{x})} &=
  \tstidxmathsym{alpha}{\protect\alpha}
  \tstidxmathsym{sum}{\protect\sum}_i^{\tstidxmath{n}{n}} x_i
 +\tstidxmathsym{beta}{\protect\beta} \sum_{i}^n x_i^2
-+\tstidxmathsym{gamma}{\protect\gamma}
++\tstidxmathsym{gamma}{\protect\gamma}\\
+ \frac{\tstidxmathsym{partial}{\protect\partial}f}{\partial x_j} &=
+  \alpha + 2\beta x_j
 \end{align}
+   \@tidx at scriptnote
    If this document hadn't loaded the \tstidxsty{amsmath} package,
 we would have had to use the \tstidxenv{eqnarray} environment
 instead.
@@ -2545,26 +2844,74 @@
  \tstidxmathsym{alpha}{\protect\alpha}
  \tstidxmathsym{sum}{\protect\sum}_i^{\tstidxmath{n}{n}} x_i
 +\tstidxmathsym{beta}{\protect\beta} \sum_{i}^n x_i^2
-+\tstidxmathsym{gamma}{\protect\gamma}
++\tstidxmathsym{gamma}{\protect\gamma}\\
+ \frac{\tstidxmathsym{partial}{\protect\partial}f}{\partial x_j} &=&
+  \alpha + 2\beta x_j
 \end{eqnarray}
+   \@tidx at scriptnote
    If you load the \tstidxsty{amsmath} package, we'll test the
    \tstidxenv{align} environment instead.
   }%
+  Incidentally, that's just a regular partial derivative symbol
+  $\tstidxmathsym{partial}{\protect\partial}$. Not to be confused
+  with the spin-weighted partial derivative
+  \@tstidx at ifamssymb{$\tstidxmathsym{eth}[spinderiv]{\protect\eth}$,
+   which can be displayed here as this document has loaded the
+   \tstidxsty{amssymb} package}
+  {[you need the \tstidxsty{amssymb} package for that symbol]}.
+ \@tidx at mathslettergroup
+ \iftestidxprefix
+ I've done something similar with the \tstidxwordpl{marker} where I've used
+ \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
+ \else
+ With the prefixes on I can also do something similar with the
+ \tstidxwordpl{marker} where I'll use
+ \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
+ \fi
+}
+\newcommand{\@tidx at scriptnote}{%
+  (Note how the subscripts and superscripts can be affected
+  by material inserted between the symbol and the sub- and
+  superscripts.)
+}
+\newcommand*{\@tidx at numberlettergroup}{%
+  If you're using \tstidxapp{xindy}, you can provide a numbers group
+  by adding the following to your \texttt{.xdy} module:
+\begin{flushleft}\ttfamily
+(define-letter-group \string"Numbers\string"\par
+   \string:prefixes (\string"0\string" \string"1\string" \string"2\string"
+\string"3\string" \string"4\string" \string"5\string"
+\string"6\string" \string"7\string" \string"8\string"
+\string"9\string")\par
+   \string:before \string"A\string")
+\end{flushleft}
+}
+\newcommand*{\@tidx at mathslettergroup}{%
+ \iftestidxprefix
   Now I've been a bit fancy here and inserted
   \texttt{\tstidxmathsymprefix} in front of
   the sort key so I can get \tstidxapp{xindy} to create a special
-group for the maths symbols. Here's the code you can add to your
-\texttt{.xdy} file to implement it:
+  group for the maths symbols.  Here's
+ \else
+  This document has used the \tstidxstyopt{testidx}{noprefix}
+  package option, which has switched of the sort prefixes.
+  If you use the \tstidxstyopt{testidx}{prefix} option I can be a
+  bit fancy here and insert
+  \texttt{\tstidxmathsymprefix} in front of
+  the sort key so I can get \tstidxapp{xindy} to create a special
+  group for the maths symbols.  When you switch on the prefixes here's
+ \fi
+the code you can add to your \texttt{.xdy} file to implement it:
 \begin{flushleft}\ttfamily
 (define-letter-group \string"Maths\string"
    \string:prefixes (\string"\tstidxmathsymprefix\string")
    \string:before \string"Numbers\string")
 \end{flushleft}
- I've done something similar with the \tstidxword{marker}s where I've used
- \texttt{\tstidxindexmarkerprefix} as the \tstidxword{prefix}.%
 }
 \tstidxnewblock*{\@tidx at closerangepar}%
 {%
+ Let's \tstidxutfword{re-cover}[reecover]{re-cover} old ground and
+ talk about ranges again.
  This is the end of the \tstidxcloseword{range}
  \tstidxword{example} from \tstidxword{block}~\@tidx at openrangepar.
  There's not much else to say about this \tstidxword{block} really.
@@ -2581,7 +2928,8 @@
   \tstidxphrase{letter groups}, and I've run out of anything
   \tstidxword{quaint} to say, so I'm going to have to
   \tstidxword{yatter} for a while longer, which will probably make
-  you \tstidxword{yawn}. What shall we talk about? My \tstidxword{quirky}
+  you \tstidxword{yawn} and fall \tstidxword{asleep}.
+  What shall we talk about? My \tstidxword{quirky}
   \tstidxword{badinage} is about to \tstidxword{expire}. How about a
   \tstidxword{story}? Here's one I made up for my friend
   \tstidxperson{Paulo}{Cereda} in \tstidxsym{TeX}{\TeX}.SE chat because he likes
@@ -2592,7 +2940,7 @@
   first story in
   \tstidxartbook{The}{Adventures of Sir Quackalot}.
   It's a \tstidxword{tale} of \tstidxword{adventure} and
-  \tstidxword{daring-do}. The \tstidxword{hero} of the
+  \tstidxword{derring-do}. The \tstidxword{hero} of the
   \tstidxword{story} is \tstidxperson{Sir}{Quackalot}, in case you
   can't tell from the \tstidxword{title}.
   \tstidxphrase{Once upon a time}, a long time ago in
@@ -2628,9 +2976,9 @@
  \tstidxphrase{across the pond}) of which was
  suspended \tstidxartphrase{the}{Mighty Helm of Knuth}, but
  \tstidxperson{Sir}{Quackalot} was learned in the \tstidxword{lore} of
- installing \tstidxapp{Perl} and was able to leap upon the
+ installing \tstidxapp{Perl} and was able to leap upon the \tstidxword{magical}
  \tstidxword{raft} \tstidxapp{makeglossaries} and steer his way through the
- \tstidxword{external} \tstidxphrase{indexing application}s and their many
+ \tstidxword{external} \tstidxphrasepl{indexing application} and their many
  arguments.  (That's supposed to be a \tstidxword{pun}, but it's
  \tstidxphrase{bad form} to explain the \tstidxword{joke}, and it
  wasn't even particularly \tstidxword{witty}.
@@ -2663,7 +3011,7 @@
 \tstidxartphrase{the}{Mighty Helm of Knuth} and
 raced past into the \tstidxword{vale}, where he found
 \tstidxartphrase{the}{Legendary Sword} \tstidxword{xor} in
-the centre of the great \tstidxsty{longtable}. (Ooh, I've started a
+the centre of the great \tstidxsty{longtable}. (\tstidxword{Ooh}, I've started a
 \tstidxword{sentence} with a \tstidxword{conjunction}.
 How \tstidxword{naughty} is that?)
 With a great \tstidxword{leap} and a \tstidxword{bound},
@@ -2689,12 +3037,12 @@
 \tstidxperson{Sir}{Quackalot} rescued \tstidxartphrase{the}{Golden Arara}
 and the \tstidxword{land} was once more restored to \tstidxword{peace} and
 \tstidxword{harmony} and
-\tstidxword{paragraph}s were able to \tstidxword{span}
-\tstidxphrase{page break}s without \tstidxword{fear}.
+\tstidxwordpl{paragraph} were able to \tstidxword{span}
+\tstidxphrasepl{page break} without \tstidxword{fear}.
 \tstidxartphrase{The}{End}. Don't miss the next \tstidxword{thrilling}
 \tstidxword{adventure} \tstidxbook{Sir Quackalot and the Hyper Lake of Doom}
-where our \tstidxphrase{intrepid hero}%
-\tstindexsubsee{hero}{intrepid}{see}{intrepid hero} meets a \tstidxword{quixotic}
+where our \tstidxword{seaborne} \tstidxphrase{intrepid hero}%
+\tstindexsubsee{hero}{intrepid}[hero.intrepid]{see}{intrepid hero} meets a \tstidxword{quixotic}
 \tstidxword{seal} with a \tstidxword{zither} (a \tstidxword{zealous}
 \tstidxword{fan} of \tstidxartfilm{The}{Third Man}), a \tstidxword{youthful}
 \tstidxphrase{sea lion} with a \tstidxword{magic}
@@ -2702,15 +3050,22 @@
 \tstidxword{warrior} with a \tstidxword{laser-guided}
 \tstidxphrase{sealant gun}. Can they defeat the
 \tstidxword{villainous}, \tstidxword{zany} \tstidxword{zoologist}
-sailing a \tstidxword{xebec} bearing canisters of
+sailing a \tstidxword{xebec} across the \tstidxword{sea} bearing canisters of
 \tstidxword{xenon}, \tstidxword{xylem} and \tstidxword{xylene}?
-Oh, \tstidxword{zounds}! He's wearing a \tstidxphrase{zoot suit}
-and smoking a \tstidxword{zucchini} whilst playing a \tstidxword{xylophone}.
+Oh, \tstidxword{zounds}! He's \tstidxword{ashore} wearing
+a \tstidxphrase{zoot suit} and smoking a \tstidxword{zucchini}
+whilst playing a \tstidxword{xylophone}.
 As one \tstidxphrase{anonymous reviewer} said,
 it's as \tstidxword{exhilarating} as watching a \tstidxword{yuppie}
 eating a \tstidxphrase{yule log} soaked in \tstidxphrase{yoghurt}.
 Hmm, \tstidxword{yummy}\tstidxdash or \tstidxword{yuck}, depending
-on your tastes.%
+on your tastes. Don't forget to \tstidxword{check} you
+have some \tstidxword{chalk} so we can write
+\tstidxword{ddisgynedig} and \tstidxword{ddyrchafedig}
+in \tstidxplace{Nghaerdydd} (over in \tstidxplace{Nghymru})
+because I want a few more words with \tstidxwordpl{digraph},
+and then we can take a \tstidxword{ffotograff} of
+\tstidxplace{Ffestiniog}.%
 }
 \tstidxnewblock
 {%
@@ -2730,7 +3085,7 @@
  \tstidxbook{Compact Oxford English Dictionary} (third edition,
  revised) for these words are: vice admiral, vice chancellor, vice-president,
  \tstidxword{viceregal}, viceroy, vice versa. Quick
- \tstidxword{quizz}. Can you get \tstidxapp{makeindex} or
+ \tstidxword{quiz}. Can you get \tstidxapp{makeindex} or
  \tstidxapp{xindy} to reproduce that order?%
 }
 \tstidxnewblock*{\@tidx at close@testidxsty}%



More information about the tex-live-commits mailing list