summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/glossaries
diff options
context:
space:
mode:
authorDr. Clea F. Rees <cfrees@imapmail.org>2008-12-28 23:49:33 +0000
committerDr. Clea F. Rees <cfrees@imapmail.org>2008-12-28 23:49:33 +0000
commit7051fa90f609a783739882d5f945d4c11bf44c48 (patch)
treed51c96157c87cc798fa65f22cfec5559d7df9b3a /Master/texmf-dist/source/latex/glossaries
parentb82fe98b309f7cf832c3dca6f124c2f5c48af80f (diff)
glossaries update 2008/12/28
git-svn-id: svn://tug.org/texlive/trunk@11739 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/glossaries')
-rw-r--r--Master/texmf-dist/source/latex/glossaries/glossaries.dtx6403
-rw-r--r--Master/texmf-dist/source/latex/glossaries/glossaries.ins12
2 files changed, 5761 insertions, 654 deletions
diff --git a/Master/texmf-dist/source/latex/glossaries/glossaries.dtx b/Master/texmf-dist/source/latex/glossaries/glossaries.dtx
index 2f8ddb199a9..2dcfce07d7d 100644
--- a/Master/texmf-dist/source/latex/glossaries/glossaries.dtx
+++ b/Master/texmf-dist/source/latex/glossaries/glossaries.dtx
@@ -3,6 +3,7 @@
% Command line args:
% -macrocode "glossaries\.perl"
% -macrocode ".*\.tex"
+% -macrocode ".*\.xdy"
% -src "glossaries.sty\Z=>glossaries.sty"
% -src "mfirstuc.sty\Z=>mfirstuc.sty"
% -src "(glossary-.+)\.(sty)\Z=>\1.\2"
@@ -10,18 +11,21 @@
% -src "(glossaries-dictionary-.+)\.(dict)\Z=>\1.\2"
% -src "(minimalgls\.tex)\Z=>\1"
% -src "(sample.*\.tex)\Z=>\1"
+% -src "(samplexdy-mc\.xdy)\Z=>\1"
% -src "(database.*\.tex)\Z=>\1"
% -src "(glossaries\.perl)\Z=>\1"
% -author "Nicola Talbot"
% -dir "source"
% -setambles "glossaries\.perl=>\nopreamble\nopostamble"
% -setambles ".*\.tex=>\nopreamble\nopostamble"
+% -setambles ".*\.xdy=>\nopreamble\nopostamble"
% -comment "glossaries\.perl"
% -comment ".*\.tex"
+% -comment ".*\.xdy"
% -doc "glossaries-manual.tex"
% -codetitle "Documented Code"
% glossaries
-% Created on 2008/8/27 12:55
+% Created on 2008/12/26 16:49
%\fi
%\iffalse
%<*package>
@@ -51,6 +55,8 @@
\documentclass[a4paper]{ltxdoc}
\usepackage{ifthen}
\usepackage{alltt}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
\usepackage[colorlinks,
bookmarks,
hyperindex=false,
@@ -72,7 +78,7 @@
\makeatother
\RecordChanges
\PageIndex
-\CheckSum{5329}
+\CheckSum{7758}
\CodelineNumbered
\newcommand*{\termdef}[1]{\emph{#1}\iterm{#1}}
\newcommand*{\term}[1]{#1\iterm{#1}}
@@ -96,24 +102,28 @@
\newcommand*{\istkey}[1]{\texttt{#1}\index{makeindex=\texttt{makeindex}>#1=\texttt{#1}|hyperpage}}
+\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}}
\newcommand*{\ics}[1]{\texttt{\char`\\#1}\SpecialMainIndex{#1}}
\newcommand*{\appname}[1]{\texttt{#1}\index{#1=\texttt{#1}|hyperpage}}
\newcommand*{\mkidxspch}{\index{makeindex=\texttt{makeindex}>special characters|hyperpage}}
\newcommand*{\igloskey}[2][newglossaryentry]{\index{#1 options=\cs{#1} options>#2=\textsf{#2}|hyperpage}}
\newcommand*{\gloskey}[2][newglossaryentry]{\textsf{#2}\igloskey[#1]{#2}}
+\newcommand*{\pkgoptni}[1]{\textsf{#1}}
\newcommand*{\ipkgopt}[2][]{%
\ifthenelse{\equal{#1}{}}{%
-\index{package options>#2=\textsf{#2}|hyperpage}}{%
-\index{package options>#2=\textsf{#2}>#1=\textsf{#1}|hyperpage}}}
+\index{package options>#2=\pkgoptni{#2}|hyperpage}}{%
+\index{package options>#2=\pkgoptni{#2}>#1=\pkgoptni{#1}|hyperpage}}}
\newcommand*{\pkgopt}[2][]{%
\ifthenelse{\equal{#1}{}}{%
-\textsf{#2}\index{package options>#2=\textsf{#2}|hyperpage}}{%
-\textsf{#2=#1}\index{package options>#2=\textsf{#2}>#1=\textsf{#1}|hyperpage}}}
-\newcommand*{\pkgoptval}[2]{\textsf{#1}\index{package options>#2=\textsf{#2}>#1=\textsf{#1}|hyperpage}}
+\pkgoptni{#2}\index{package options>#2=\pkgoptni{#2}|hyperpage}}{%
+\pkgoptni{#2=#1}\index{package options>#2=\pkgoptni{#2}>#1=\pkgoptni{#1}|hyperpage}}}
+\newcommand*{\pkgoptval}[2]{\pkgoptni{#1}\index{package options>#2=\pkgoptni{#2}>#1=\pkgoptni{#1}|hyperpage}}
\newcommand*{\glostyle}[1]{\textsf{#1}\index{glossary styles>#1|hyperpage}}
\newcommand*{\filetype}[1]{\texttt{#1}\index{file types>#1|hyperpage}}
\newcommand*{\sty}[1]{\textsf{#1}}
\newcommand*{\isty}[1]{\sty{#1}\index{#1 package=\sty{#1} package|hyperpage}}
+\newcommand*{\cls}[1]{\textsf{#1}}
+\newcommand*{\icls}[1]{\cls{#1}\index{#1 class=\cls{#1} class|hyperpage}}
\newcommand*{\envname}[1]{\textsf{#1}}
@@ -124,7 +134,7 @@
%\MakeShortVerb{"}
%\DeleteShortVerb{\|}
%
-% \title{glossaries.sty v 1.16: \LaTeXe\ Package to Assist Generating Glossaries}
+% \title{glossaries.sty v 1.17: \LaTeXe\ Package to Assist Generating Glossaries}
% \author{Nicola L.C. Talbot\\[10pt]
%School of Computing Sciences\\
%University of East Anglia\\
@@ -132,7 +142,7 @@
%NR4 7TJ. United Kingdom.\\
%\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
%
-% \date{27th August 2008}
+% \date{26th December 2008}
% \maketitle
%\tableofcontents
%
@@ -140,26 +150,399 @@
%
% \changes{1.0}{2007 May 16}{Initial version}
%The \sty{glossaries} package is provided to assist generating
-%glossaries. It has a certain amount of flexibility, allowing the user
-%to customize the format of the glossary and define multiple glossaries.
-%It also supports acronyms and glossary styles that include
-%symbols (in addition to a name and description) for glossary
+%glossaries. It has a certain amount of flexibility, allowing the
+%user to customize the format of the glossary and define multiple
+%glossaries. It also supports acronyms and glossary styles that
+%include symbols (in addition to a name and description) for glossary
%entries. There is provision for loading a database of glossary terms
%where only those terms used in the text are added to the glossary.
-%This package replaces the \isty{glossary} package which is now
-%obsolete.
%
-%This documentation is structured as follows: \autoref{sec:quick} is for people who want a few quick pointers of how to get started,
-%without having to read through lengthy descriptions,
-%\autoref{sec:overview} gives an overview of available commands and their syntax, \autoref{sec:mfirstuc} describes the associated
-%\sty{mfirstuc}
-%package, \autoref{sec:code} contains the documented source code for those who want to know more about how the
-%package works and \autoref{sec:code:mfirstuc} contains the documented
-%code for the \sty{mfirstuc} package.
+%\textbf{This package replaces the \isty{glossary} package which is
+%now obsolete. Please see the file
+%\url{glossary2glossaries.pdf} for assistance in upgrading.}
+%
+%\begin{important}
+%The \sty{glossaries} package comes with a
+%\htmladdnormallink{Perl}{http://www.perl.org/about.html} script
+%called \appname{makeglossaries}. This provides a convenient interface
+%to \appname{makeindex} or \appname{xindy}. It is strongly
+%recommended that you use this script, but it is not
+%essential. If you are reluctant to install Perl, or for any
+%other reason you don't want to use \appname{makeglossaries}, you
+%can called \appname{makeindex} or \appname{xindy} explicitly.
+%See \autoref{sec:makeglossaries} for
+%further details.
+%\end{important}
+%
+%One of the strengths of this package is its flexibility, however
+%the drawback of this is the necessity of having a large manual
+%that can cover all the various settings. The documentation is
+%therefore structured as follows:
+%\begin{itemize}
+%\item \autoref{sec:quick} is for people who want a few quick
+%pointers of how to get started creating a basic glossary, without
+%having to read through lengthy descriptions.
+%
+%\item \autoref{sec:overview} gives an overview of available commands and their syntax.
+%
+%\item \autoref{sec:mfirstuc} describes the associated \sty{mfirstuc} package.
+%
+%\item\autoref{sec:code} contains the documented source code for those who
+%want to know more about how the package works.
+%
+%\item \autoref{sec:code:mfirstuc} contains the documented code for
+%the \sty{mfirstuc} package.
+%\end{itemize}
+%
+%\noindent The remainder of this introductory section covers the
+%following:
+%\begin{itemize}
+%\item \autoref{sec:samples} lists the sample documents provided
+%with this package.
+%
+%\item \autoref{sec:languages} provides information for users who
+%wish to write in a language other than English.
+%
+%\item \autoref{sec:makeglossaries}
+%describes how to use a post-processor to create the sorted glossaries
+%for your document.
+%
+%\item \autoref{sec:trouble} provides some assistance in the event that you encounter a problem.
+%\end{itemize}
+%
+%\subsection{Sample Documents}
+%\label{sec:samples}
+%
+%The \sty{glossaries} package is provided with some sample
+%documents that illustrate the various functions. These should
+%be located in the \texttt{samples} subdirectory (folder) of the
+%\sty{glossaries} documentation directory. This location varies
+%according to your operating system and \TeX\ distribution.
+%
+%The sample documents are as follows:
+%\begin{description}
+%\item[minimalgls.tex] This document is a minimal working example.
+%You can test your installation using this file. To create the
+%complete document you will need to do the following steps:
+% \begin{enumerate}
+% \item Run \texttt{minimalgls.tex} through \LaTeX\ by either
+% typing
+%\begin{verbatim}
+%latex minimalgls
+%\end{verbatim}
+% in a terminal or by using the relevant button or menu item in
+% your text editor or front-end. This will create the required
+% associated files but you will not see the glossary. If you use
+% PDF\LaTeX\ you will also get warnings about non-existent
+% references. These warnings may be ignored on the first run.
+%
+% \item Run \appname{makeglossaries} on the document. This can
+% be done on a terminal by either typing
+%\begin{verbatim}
+%makeglossaries minimalgls
+%\end{verbatim}
+% or by typing
+%\begin{verbatim}
+%perl makeglossaries minimalgls
+%\end{verbatim}
+% If your system doesn't recognise the command \texttt{perl} then
+% it's likely you don't have Perl installed. In which case you
+% will need to use \appname{makeindex} directly. You can do this
+% in a terminal by typing (all on one line):
+%\begin{verbatim}
+%makeindex -s minimalgls.ist -t minimalgls.glg -o minimalgls.gls
+%minimalgls.glo
+%\end{verbatim}
+% (See
+%\autoref{sec:makeindexapp} for further details on using \appname{makeindex} explicitly.)
+%
+% Note that if you need to specify the full path and the path
+% contains spaces, you will need to delimit the file names with
+% the double-quote character.
+%
+% \item Run \texttt{minimalgls.tex} through \LaTeX\ again (as step~1)
+% \end{enumerate}
+%You should now have a complete document. The number following
+%each entry in the glossary is the location number. By default, this
+%is the page number where the entry was referenced.
+%
+%\item[sample4col.tex] This document illustrates a four column
+%glossary where the entries have a symbol in addition to the
+%name and description. To create the complete document, you need
+%to do:
+%\begin{verbatim}
+%latex sample4col
+%makeglossaries sample4col
+%latex sample4col
+%\end{verbatim}
+%As before, if you don't have Perl installed, you will need to
+%use \appname{makeindex} directly instead of using
+%\appname{makeglossaries}. The vertical gap between entries
+%is the gap created at the start of each group. This can be
+%suppressed by redefining \ics{glsgroupskip} after the glossary
+%style has been set:
+%\begin{verbatim}
+%\renewcommand*{\glsgroupskip}{}
+%\end{verbatim}
+%
+%\item[sampleAcr.tex] This document has some sample acronyms. It
+%also adds the glossary to the table of contents, so an extra
+%run through \LaTeX\ is required to ensure the document is up-to-date:
+%\begin{verbatim}
+%latex sampleAcr
+%makeglossaries sampleAcr
+%latex sampleAcr
+%latex sampleAcr
+%\end{verbatim}
+%
+%\item[sampleAcrDesc.tex] This is similar to the previous example,
+%except that the acronyms have an associated description. As with
+%the previous example, the glossary is added to the table of
+%contents, so an extra run through \LaTeX\ is required:
+%\begin{verbatim}
+%latex sampleAcrDesc
+%makeglossaries sampleAcrDesc
+%latex sampleAcrDesc
+%latex sampleAcrDesc
+%\end{verbatim}
+%
+%\item[sampleDesc.tex] This is similar to the previous example,
+%except that it defines the acronyms using \ics{newglossaryentry}
+%instead of \ics{newacronym}. As with
+%the previous example, the glossary is added to the table of
+%contents, so an extra run through \LaTeX\ is required:
+%\begin{verbatim}
+%latex sampleDesc
+%makeglossaries sampleDesc
+%latex sampleDesc
+%latex sampleDesc
+%\end{verbatim}
+%
+%\item[sampleDB.tex] This document illustrates how to load
+%an external files containing the glossary definitions. It also
+%illustrates how to define a new glossary type. This document
+%has the \term{number list} suppressed and uses \ics{glsaddall} to add
+%all the entries to the glossaries without referencing each one
+%explicitly. To create the document do:
+%\begin{verbatim}
+%latex sampleDB
+%makeglossaries sampleDB
+%latex sampleDB
+%\end{verbatim}
+%The glossary definitions are stored in the files
+%\texttt{database1.tex} and \texttt{database2.tex}. Note that if
+%you don't have Perl installed, you will need to use
+%\appname{makeindex} twice instead of using \appname{makeglossaries}:
+%\begin{enumerate}
+%\item Create the main glossary:
+%\begin{verbatim}
+%makeindex -s sampleDB.ist -t sampleDB.glg -o sampleDB.gls sampleDB.glo
+%\end{verbatim}
+%\item Create the secondary glossary:
+%\begin{verbatim}
+%makeindex -s sampleDB.ist -t sampleDB.nlg -o sampleDB.not sampleDB.ntn
+%\end{verbatim}
+%\end{enumerate}
+%
+%\item[sampleEq.tex] This document illustrates how to change the
+%location to something other than the page number. In this case,
+%the \texttt{equation} counter is used since all glossary entries
+%appear inside an \envname{equation} environment. To create the
+%document do:
+%\begin{verbatim}
+%latex sampleEq
+%makeglossaries sampleEq
+%latex sampleEq
+%\end{verbatim}
+%
+%\item[sampleEqPg.tex] This is similar to the previous example,
+%but the number lists\iterm{number list} are a mixture of page
+%numbers and equation numbers. This example adds the glossary to the
+%table of contents, so an extra \LaTeX\ run is required:
+%\begin{verbatim}
+%latex sampleEqPg
+%makeglossaries sampleEqPg
+%latex sampleEqPg
+%latex sampleEqPg
+%\end{verbatim}
+%
+%\item[sampleSec.tex] This document also illustrates how to change
+%the location to something other than the page number. In this case,
+%the \texttt{section} counter is used. This example adds the
+%glossary to the table of contents, so an extra \LaTeX\ run is
+%required:
+%\begin{verbatim}
+%latex sampleSec
+%makeglossaries sampleSec
+%latex sampleSec
+%latex sampleSec
+%\end{verbatim}
+%
+%\item[sampleNtn.tex] This document illustrates how to create
+%an additional glossary type. This example adds the glossary to the
+%table of contents, so an extra \LaTeX\ run is required:
+%\begin{verbatim}
+%latex sampleNtn
+%makeglossaries sampleNtn
+%latex sampleNtn
+%latex sampleNtn
+%\end{verbatim}
+%Note that if you don't have Perl installed, you will need to use
+%\appname{makeindex} twice instead of using \appname{makeglossaries}:
+%\begin{enumerate}
+%\item Create the main glossary:
+%\begin{verbatim}
+%makeindex -s sampleNtn.ist -t sampleNtn.glg -o sampleNtn.gls sampleNtn.glo
+%\end{verbatim}
+%\item Create the secondary glossary:
+%\begin{verbatim}
+%makeindex -s sampleNtn.ist -t sampleNtn.nlg -o sampleNtn.not sampleNtn.ntn
+%\end{verbatim}
+%\end{enumerate}
+%
+%\item[sample.tex] This document illustrates some of the basics,
+%including how to create child entries that use the same name as the
+%parent entry. This example adds the glossary to the table of
+%contents, so an extra \LaTeX\ run is required:
+%\begin{verbatim}
+%latex sample
+%makeglossaries sample
+%latex sample
+%latex sample
+%\end{verbatim}
+%You can see the difference between word and letter ordering
+%if you substitute \pkgopt[word]{order} with
+%\pkgopt[letter]{order}. (Note that this will only have an
+%effect if you use \appname{makeglossaries}. If you use
+%\appname{makeindex} explicitly, you will need to use the
+%\texttt{-l} switch to indicate letter ordering.)
+%
+%\item[sampletree.tex] This document illustrates a hierarchical
+%glossary structure where child entries have different names
+%to their corresponding parent entry. To create the document do:
+%\begin{verbatim}
+%latex sampletree
+%makeglossaries sampletree
+%latex sampletree
+%\end{verbatim}
+%
+%\item[samplexdy.tex] This document illustrates how to use the
+%\sty{glossaries} package with \appname{xindy} instead of
+%\appname{makeindex}. The document uses UTF8 encoding (with the
+%\isty{inputenc} package). The encoding is picked up by
+%\appname{makeglossaries}. By default, this document will create
+%a \appname{xindy} style file called \texttt{samplexdy.xdy}, but
+%if you uncomment the lines
+%\begin{verbatim}
+%\setStyleFile{samplexdy-mc}
+%\noist
+%\GlsSetXdyLanguage{}
+%\end{verbatim}
+%it will set the style file to \texttt{samplexdy-mc.xdy} instead.
+%This provides an additional letter group for entries starting
+%with \dq{Mc} or \dq{Mac}. If you use \appname{makeglossaries},
+%you don't need to supply any additional information. If you
+%don't use \appname{makeglossaries}, you will need to specify the
+%required information. Note that if you set the style file to
+%\texttt{samplexdy-mc.xdy} you must also specify \ics{noist},
+%otherwise the \isty{glossaries} package will overwrite
+%\texttt{samplexdy-mc.xdy} and you will lose the \dq{Mc} letter group.
+%
+%To create the document do:
+%\begin{verbatim}
+%latex samplexdy
+%makeglossaries samplexdy
+%latex samplexdy
+%\end{verbatim}
+%If you don't have Perl installed, you will have to call
+%\appname{xindy} explicitly instead of using \appname{makeglossaries}.
+%If you are using the default style file \texttt{samplexdy.xdy}, then
+%do (no line breaks):
+%\begin{verbatim}
+%xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg
+%-o samplexdy.gls samplexdy.glo
+%\end{verbatim}
+%otherwise, if you are using \texttt{samplexdy-mc.xdy}, then do
+%(no line breaks):
+%\begin{verbatim}
+%xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls
+%samplexdy.glo
+%\end{verbatim}
+%
+%\item[sampleutf8.tex] This is another example that uses
+%\appname{xindy}. Unlike \appname{makeindex}, \appname{xindy} can
+%cope with accented or non-Latin characters. This document uses
+%UTF8 encoding. To create the document do:
+%\begin{verbatim}
+%latex sampleutf8
+%makeglossaries sampleutf8
+%latex sampleutf8
+%\end{verbatim}
+%If you don't have Perl installed, you will have to call
+%\appname{xindy} explicitly instead of using \appname{makeglossaries}
+%(no line breaks):
+%\begin{verbatim}
+%xindy -L english -C utf8 -I xindy -M sampleutf8 -t sampleutf8.glg
+%-o sampleutf8.gls sampleutf8.glo
+%\end{verbatim}
+%
+%If you remove the \pkgopt{xindy} option and do:
+%\begin{verbatim}
+%latex sampleutf8
+%makeglossaries sampleutf8
+%latex sampleutf8
+%\end{verbatim}
+%you will see that the entries that start with a non-Latin character
+%now appear in the symbols group, and the word \dq{manœuvre} is now
+%after \dq{manor} instead of before it. If you are unable to use
+%\appname{makeglossaries}, the call to \appname{makeindex} is as
+%follows (no line breaks):
+%\begin{verbatim}
+%makeindex -s sampleutf8.ist -t sampleutf8.glg -o sampleutf8.gls
+%sampleutf8.glo
+%\end{verbatim}
+%
+%\end{description}
%
%\subsection{Multi-Lingual Support}
%\label{sec:languages}
%
+%As from version 1.17, the \sty{glossaries} package can now be
+%used with \appname{xindy} as well as \appname{makeindex}. If you
+%are writing in a language that uses accented characters or
+%non-Latin characters it is recommended that you use \appname{xindy}
+%as \appname{makeindex} is hard-coded for Latin languages. This
+%means that you are not restricted to the A, \ldots, Z letter groups.
+%If you want to use \appname{xindy}, remember to use the
+%\pkgopt{xindy} package option. For example:
+%\begin{verbatim}
+%\documentclass[frenchb]{article}
+%\usepackage[utf8]{inputenc}
+%\usepackage[T1]{fontenc}
+%\usepackage{babel}
+%\usepackage[xindy]{glossaries}
+%\end{verbatim}
+%
+%\begin{important}
+%If you use an accented or non-Latin character at the start of
+%an entry name, you must place it in a group, or it will cause
+%a problem for commands that convert the first letter to uppercase
+%(e.g.\ \ics{Gls}) due to expansion issues. For example:
+%\begin{verbatim}
+%\newglossaryentry{elite}{name={{é}lite},
+%description={select group or class}}
+%\end{verbatim}
+%\end{important}
+%
+%If you use the \isty{inputenc} package, \appname{makeglossaries}
+%will pick up the encoding from the auxiliary file. If you use
+%\appname{xindy} explicitly instead of via \appname{makeglossaries},
+%you may need to specify the encoding using the \texttt{-C}
+%option. Read the \appname{xindy} manual for further details.
+%
+%\subsubsection{Changing the Fixed Names}
+%\label{sec:fixednames}
+%
%As from version 1.08, the \sty{glossaries} package now has
%limited multi-lingual support, thanks to all the people who have sent
%me the relevant translations either via email or via
@@ -176,6 +559,14 @@
%\usepackage[spanish]{translator}
%\usepackage{glossaries}
%\end{verbatim}
+%Alternatively, specify the language as a class option rather
+%than a package option. For example:
+%\begin{verbatim}
+%\documentclass[spanish]{report}
+%
+%\usepackage{babel}
+%\usepackage{glossaries}
+%\end{verbatim}
%
%If you want to use \isty{ngerman} or \isty{german} instead
%of \isty{babel}, you will need to include the \isty{translator} package
@@ -187,10 +578,12 @@
%\usepackage{glossaries}
%\end{verbatim}
%
-%The following languages are currently supported:
+%The following languages are currently supported by the
+%\isty{glossaries} package:
%\begin{center}
%\begin{tabular}{lc}
%\bfseries Language & \bfseries As from version\\
+%Brazilian Portuguese & 1.17\\
%Danish & 1.08\\
%Dutch & 1.08\\
%English & 1.08\\
@@ -217,15 +610,15 @@
%\ics{acronymname} & \texttt{Acronyms} & Title of the list of acronyms
%(when used with package option \pkgopt{acronym}).\\
%\ics{entryname} & \texttt{Notation (glossaries)} &
-%Header for first column in glossary (for 2, 3 or 4 column glossaries
+%Header for first column in the glossary (for 2, 3 or 4 column glossaries
%that support headers).\\
%\ics{descriptionname} & \texttt{Description (glossaries)} &
-%Header for second column in glossary (for 2, 3 or 4 column glossaries
+%Header for second column in the glossary (for 2, 3 or 4 column glossaries
%that support headers).\\
%\ics{symbolname} & \texttt{Symbol (glossaries)} & Header for symbol
-%column in glossary for glossary styles that support this option.\\
+%column in the glossary for glossary styles that support this option.\\
%\ics{pagelistname} & \texttt{Page List (glossaries)} &
-%Header for page list column in glossary for glossaries that support
+%Header for page list column in the glossary for glossaries that support
%this option.\\
%\ics{glssymbolsgroupname} & \texttt{Symbols (glossaries)} &
%Header for symbols section of the glossary for glossary styles that
@@ -252,54 +645,268 @@
%\deftranslation[to=Irish]{Symbol (glossaries)}{Siombail}
%\end{verbatim}
%
+%Note that \appname{xindy} provides much better multi-lingual
+%support than \appname{makeindex}, so it's recommended that you
+%use \appname{xindy} if you have glossary entries that contain
+%accented characters or non-Roman letters. See
+%\autoref{sec:xindy} for further details.
%\subsection{Generating the Associated Glossary Files}
%\label{sec:makeglossaries}
%
+%In order to generate a sorted glossary with compact location lists,
+%it is necessary to use an external indexing application as an
+%intermediate step. It is this application that creates the file
+%containing the code that typesets the glossary. If this step
+%is omitted, the glossaries will not appear in your document. The
+%two indexing applications that are most commonly used with
+%\LaTeX\ are \appname{makeindex} and \appname{xindy}. As
+%from version 1.17, the \sty{glossaries} package can be used
+%with either of these applications. Previous versions were designed
+%to be used with \appname{makeindex} only. Note that
+%\appname{xindy} has much better multi-lingual support than
+%\appname{makeindex}, so \appname{xindy} is recommended if you're
+%not writing in English. Commands that only have an
+%effect when \appname{xindy} is used are described
+%in \autoref{sec:xindy}.
+%
%The \sty{glossaries} package comes with the Perl script
-%\appname{makeglossaries} which will run \appname{makeindex} on
-%all the glossary files using a customized \appname{makeindex}
-%\filetype{.ist} style file (which is created by \ics{makeglossaries}).
-%The relevant extensions are obtained from the
-%auxiliary file, so you should only pass the basename as the
-%argument. For example, if your document is called
-%\texttt{myfile.tex}, do:
+%\appname{makeglossaries} which will run \appname{makeindex} or
+%\appname{xindy} on all the glossary files using a customized style
+%file (which is created by \ics{makeglossaries}). See
+%\autoref{sec:makeglossariesapp} for further
+%details. Perl is stable, cross-platform, open source software that
+%is used by a number of \TeX-related applications. Further
+%information is available at \url{http://www.perl.org/about.html}.
+%However, whilst it is strongly recommended that you use the
+%\appname{makeglossaries} script, it is possible to use the
+%\sty{glossaries} package without having Perl installed. In which
+%case, if you have used the \pkgopt{xindy} package option, you will
+%need to use \appname{xindy} (see
+%\autoref{sec:xindyapp}), otherwise you will need to use
+%\appname{makeindex} (see
+%\autoref{sec:makeindexapp}). Note that some commands and
+%package options have no effect if you don't use
+%\appname{makeglossaries}. These are listed in
+%Table~\ref{tab:makeglossariesCmds}.
+%
+%Note that if any of your entries use an entry
+%that is not referenced outside the glossary, you will need to
+%do an additional \appname{makeglossaries}, \appname{makeindex}
+%or \appname{xindy} run, as appropriate. For example,
+%suppose you have defined the following entries:
%\begin{verbatim}
-%latex myfile
-%makeglossaries myfile
-%latex myfile
+%\newglossaryentry{citrusfruit}{name={citrus fruit},
+%description={fruit of any citrus tree. (See also
+%\gls{orange})}}
+%
+%\newglossaryentry{orange}{name={orange},
+%description={an orange coloured fruit.}}
+%\end{verbatim}
+%and suppose you have \verb|\gls{citrusfruit}| in your document
+%but don't reference the \texttt{orange} entry, then the
+%\texttt{orange} entry won't appear in your glossary until
+%you first create the glossary and then do another run
+%of \appname{makeglossaries}, \appname{makeindex} or \appname{xindy}.
+%For example, if the document is called \texttt{myDoc.tex}, then
+%you must do:
+%\begin{verbatim}
+%latex myDoc
+%makeglossaries myDoc
+%latex myDoc
+%makeglossaries myDoc
+%latex myDoc
+%\end{verbatim}
+%
+%Likewise, an additional \appname{makeglossaries} and \LaTeX\ run
+%may be required if the document pages shift with re-runs. For
+%example, if the page numbering is not reset after the table of
+%contents, the insertion of the table of contents on the second
+%\LaTeX\ run may push glossary entries across page boundaries, which
+%means that the number lists\iterm{number list} in the glossary may
+%need updating.
+%
+%The examples in this document assume that you are accessing
+%\appname{makeglossaries}, \appname{xindy} or \appname{makeindex} via
+%a terminal. Windows users can use the MSDOS Prompt which
+%is usually accessed via the
+%\textsf{Start}$\to$\textsf{All Programs} menu or
+%\textsf{Start}$\to$\textsf{All Programs}%$\to$\textsf{Accessories} menu. Alternatively, your text editor may have the
+%facility to create a function that will call the
+%required application. See your editor's user manual for further
+%details.
+%
+%If any problems occur, remember to check the transcript files
+%(e.g.\ \filetype{.glg} or \filetype{.alg}) for messages.
+%
+%\begin{table}[htbp]
+%\caption{Commands and package options that have no effect when
+%using \texttt{xindy} or \texttt{makeindex} explicity}
+%\label{tab:makeglossariesCmds}
+%\vskip\baselineskip
+%\begin{tabular}{@{}lll@{}}
+%\bfseries Command or Package Option & \appname{makeindex} &
+%\appname{xindy}\\
+%\pkgopt[letter]{order} & use \texttt{-l} &
+% use \texttt{-M ord/letorder}\\
+%\pkgopt[word]{order} & default & default\\
+%\pkgopt{xindy}=\{\pkgoptni{language=}\meta{lang}\pkgoptni{,codename=}\meta{code}\} &
+%N/A & use \texttt{-L} \meta{lang} \texttt{-C} \meta{code}\\
+%\ics{GlsSetXdyLanguage}\marg{lang} & N/A &
+%use \texttt{-L} \meta{lang}\\
+%\ics{GlsSetXdyCodePage}\marg{code} & N/A &
+%use \texttt{-C} \meta{code}
+%\end{tabular}
+%\par
+%\end{table}
+%
+%\subsubsection{Using the makeglossaries Perl Script}
+%\label{sec:makeglossariesapp}
+%
+%The \appname{makeglossaries} script picks up the relevant
+%information from the auxiliary (\filetype{.aux}) file and
+%will either call \appname{xindy} or \appname{makeindex},
+%depending on whether the indexing style file ends with
+%\filetype{.xdy} or \filetype{.ist}. Therefore, you only need to
+%pass the document's name without the extension to
+%\appname{makeglossaries}.
+%For example, if your document is called \texttt{myDoc.tex},
+%type the following in your terminal:
+%\begin{verbatim}
+%latex myDoc
+%makeglossaries myDoc
+%latex myDoc
%\end{verbatim}
%You may need to explicitly load \appname{makeglossaries} into
%Perl:
%\begin{verbatim}
-%perl makeglossaries myfile
+%perl makeglossaries myDoc
%\end{verbatim}
%There is a batch file called \texttt{makeglossaries.bat} which
%does this for Windows users, but you must have Perl installed to
%be able to use it.
%
-%If you don't have Perl installed, you will have to run
-%\appname{makeindex} for each glossary type you have defined.
-%For example, if you have used the \pkgopt{acronym} package option
-%then you will have both a main glossary as well as a list of acronyms, so you
-%will need to do (assuming your document is called \texttt{myfile.tex}):
+%\subsubsection{Using xindy explicitly}
+%\label{sec:xindyapp}
+%
+%If you want to use \appname{xindy} to process the glossary
+%files, you must make sure you have used the
+%\pkgopt{xindy} package option:
%\begin{verbatim}
-%makeindex -s myfile.ist -t myfile.glg -o myfile.gls myfile.glo
-%makeindex -s myfile.ist -t myfile.alg -o myfile.acr myfile.acn
+%\usepackage[xindy]{glossaries}
+%\end{verbatim}
+%This is required regardless of whether you use \appname{xindy}
+%explicitly or via \appname{makeglossaries}. This causes the glossary
+%entries to be written in raw \appname{xindy} format, so you need to
+%use \texttt{-I xindy} \emph{not} \texttt{-I tex}.
+%
+%To run \appname{xindy} type the following in your terminal
+%(all on one line):\\[10pt]
+%\begin{ttfamily}
+%xindy -L \textrm{\meta{language}} -C \textrm{\meta{encoding}} -I xindy
+%-M \textrm{\meta{style}} -t \textrm{\meta{base}}.glg\newline
+%-o \textrm{\meta{base}}.gls \textrm{\meta{base}}.glo
+%\end{ttfamily}
+%\\[10pt]
+%where \meta{language} is required language name, \meta{encoding} is
+%the encoding, \meta{base} is the name of the document without
+%the \filetype{.tex} extension and \meta{style} is the name of the
+%\appname{xindy} style file without the \filetype{.xdy} extension. The
+%default name for this style file is \meta{base}\filetype{.xdy} but
+%can be changed via \ics{setStyleFile}\marg{style}. You may need to
+%specify the full path name. If any of the file names contain spaces,
+%you must delimit them using double-quotes.
+%
+%For example, if your document is called \texttt{myDoc.tex} and
+%you are using UTF8 encoding in English, then type the
+%following in your terminal:
+%\begin{verbatim}
+%xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.glg -o myDoc.gls myDoc.glo
%\end{verbatim}
-%This requires remembering all extensions for each of the glossaries
-%defined in your document, so where possible you should use
-%\appname{makeglossaries} instead to reduce the possibility of error.
-%Don't pass all the glossary files in a single call to
-%\appname{makeindex} or it will merge all your glossaries into a
-%single glossary.
%
-%If any problems occur, remember to check the transcript files
-%(e.g.\ \filetype{.glg} or \filetype{.alg}) for messages.
+%Note that this just creates the main glossary. You need to do
+%the same for each of the other glossaries (including the
+%list of acronyms if you have used the \pkgopt{acronym}
+%package option), substituting \filetype{.glg}, \filetype{.gls}
+%and \filetype{.glo} with the relevant extensions. For example,
+%if you have used the \pkgopt{acronym} package option, then
+%you would need to do:
+%\begin{verbatim}
+%xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.alg -o myDoc.acr myDoc.acn
+%\end{verbatim}
+%For additional glossaries, the extensions are those supplied
+%when you created the glossary with \ics{newglossary}.
+%
+%Note that if you use \appname{makeglossaries} instead, you can
+%replace all those calls to \appname{xindy} with just one call
+%to \appname{makeglossaries}:
+%\begin{verbatim}
+%makeglossaries myDoc
+%\end{verbatim}
+%Note also that some commands and package options have no effect if
+%you use \appname{xindy} explicitly instead of using
+%\appname{makeglossaries}. These are listed in
+%Table~\ref{tab:makeglossariesCmds}.
+%
+%\subsubsection{Using makeindex explicitly}
+%\label{sec:makeindexapp}
+%
+%If you want to use \appname{makeindex} explicitly, you must
+%make sure that you haven't used the \pkgopt{xindy} package
+%option or the glossary entries will be written in the wrong
+%format. To run \appname{makeindex}, type the following in
+%your terminal:\\[10pt]
+%\begin{ttfamily}
+%makeindex -s \textrm{\meta{style}}.ist -t \textrm{\meta{base}}.glg
+%-o \textrm{\meta{base}}.gls \textrm{\meta{base}}.glo
+%\end{ttfamily}\\[10pt]
+%where \meta{base} is the name of your document without the
+%\filetype{.tex} extension and \meta{style}\filetype{.ist} is the
+%name of the \appname{makeindex} style file. By default, this is
+%\meta{base}\filetype{.ist}, but may be changed via
+%\ics{setStyleFile}\marg{style}. Note that there are other options,
+%such as \texttt{-l} (letter ordering). See the \appname{makeindex}
+%manual for further details.
+%
+%For example, if your document is called \texttt{myDoc.tex}, then
+%type the following at the terminal:
+%\begin{verbatim}
+%makeindex -s myDoc.ist -t myDoc.glg -o myDoc.gls myDoc.glo
+%\end{verbatim}
+%Note that this only creates the main glossary. If you have
+%additional glossaries (for example, if you have used the
+%\pkgopt{acronym} package option) then you must call
+%\appname{makeindex} for each glossary, substituting
+%\filetype{.glg}, \filetype{.gls} and \filetype{.glo} with the
+%relevant extensions. For example, if you have used the
+%\pkgopt{acronym} package option, then you need to type the
+%following in your terminal:
+%\begin{verbatim}
+%makeindex -s myDoc.ist -t myDoc.alg -o myDoc.acr myDoc.acn
+%\end{verbatim}
+%For additional glossaries, the extensions are those supplied
+%when you created the glossary with \ics{newglossary}.
+%
+%Note that if you use \appname{makeglossaries} instead, you can
+%replace all those calls to \appname{makeindex} with just one call
+%to \appname{makeglossaries}:
+%\begin{verbatim}
+%makeglossaries myDoc
+%\end{verbatim}
+%Note also that some commands and package options have no effect if
+%you use \appname{makeindex} explicitly instead of using
+%\appname{makeglossaries}. These are listed in
+%Table~\ref{tab:makeglossariesCmds}.
+%
%\subsection{Troubleshooting}
+%\label{sec:trouble}
%
%The \sty{glossaries} package comes with a minimal file called
%\texttt{minimalgls.tex} which can be used for testing. This
-%should be located in \texttt{texmf/doc/latex/glossaries/samples/}.
+%should be located in the \texttt{samples} subdirectory (folder)
+%of the \sty{glossaries} documentation directory. The location
+%varies according to your operating system and \TeX\ installation.
+%For example, on my Linux partition it can be found in
+%\texttt{/usr/local/texlive/2008/texmf-dist/doc/latex/glossaries/}.
%Further information on debugging \LaTeX\ code is available at
%\url{http://theoval.cmp.uea.ac.uk/~nlct/latex/minexample/}.
%
@@ -345,7 +952,9 @@
%\item I don't have Perl installed, do I have to use
%\appname{makeglossaries}?
%
-%Read \autoref{sec:makeglossaries}.
+%Read \autoref{sec:xindyapp} or
+%\autoref{sec:makeindexapp}, depending on
+%whether you want to use \appname{xindy} or \appname{makeindex}.
%
%
%\item I'm used to using the \sty{glossary} package: are there any
@@ -359,9 +968,10 @@
%translated.
%
%The \sty{glossaries} package currently only supports the following
-%languages: Danish, Dutch, English, French, German, Irish, Italian,
-%Hungarian, Polish and Spanish. If you want to add another language,
-%send me the translations, and I'll add them to the next version.
+%languages: Brazilian Portuguese, Danish, Dutch, English, French,
+%German, Irish, Italian, Hungarian, Polish and Spanish. If you want
+%to add another language, send me the translations, and I'll add them
+%to the next version.
%
%If you are using one of the above languages, but the text hasn't been
%translated, try adding the \isty{translator} package with the
@@ -372,9 +982,9 @@
%\usepackage[ngerman]{translator}
%\usepackage{glossaries}
%\end{verbatim}
-%Alternatively, you may be able to add the language as a global option
-%to the class file. Check the \sty{translator} package documentation for
-%further details.
+%Alternatively, you can add the language as a global option
+%to the class file. Check the \sty{translator} package documentation
+%for further details.
%
%\item My glossaries haven't appeared.
%
@@ -385,15 +995,23 @@
%\item Use either \ics{printglossary} for each glossary that has
%been defined or \ics{printglossaries}.
%
-%\item Use \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl}, \ics{Glspl},
-%\ics{GLSpl}, \ics{glslink}, \ics{glsadd} or \ics{glsaddall} in the
-%document.
+%\item Use the commands listed in
+%\autoref{sec:glslink},
+%\autoref{sec:glsadd} or
+%\autoref{sec:glssee} for each entry
+%that you want to appear in the glossary.
%
%\item Run \LaTeX\ on your document, then run \appname{makeglossaries},
%then run \LaTeX\ on your document again. If you want the glossaries
%to appear in the table of contents, you will need an extra \LaTeX\
-%run.
+%run. If any of your entries cross-reference an entry that's not
+%referenced in the main body of the document, you will need to
+%run \appname{makeglossaries} after the second \LaTeX\ run, followed
+%by another \LaTeX\ run.
%\end{itemize}
+%
+%Check the log files (\filetype{.log}, \filetype{.glg} etc) for any
+%warnings.
%\end{enumerate}
%
%\section{A Quick Guide For The Impatient}
@@ -401,7 +1019,10 @@
%
%This section is for people who want a few quick pointers
%of how to get started. However it is recommended that you read
-%\autoref{sec:overview} for additional commands and advice not listed here.
+%\autoref{sec:overview} for additional commands and advice not listed here. There are
+%also some sample files to help you get started, listed in
+%\autoref{sec:samples}.
+%
%
%\begin{enumerate}
%\item Load \sty{glossaries} \emph{after} \isty{hyperref}:
@@ -418,7 +1039,6 @@
%\item Always use \ics{makeglossaries} if you want the glossary
%entries to be written to the glossary file:
%\begin{verbatim}
-%\documentclass{article}
%\usepackage{glossaries}
%\makeglossaries
%\end{verbatim}
@@ -443,35 +1063,52 @@
%makeglossaries myfile
%latex myfile
%\end{verbatim}
-%(You may need to run \LaTeX\ again if you have used the \pkgopt{toc}
-%package option.)
+%(You need to run \LaTeX\ again if you have used the \pkgopt{toc}
+%package option. You may also need an extra \appname{makeglossaries}
+%run and another \LaTeX\ run if an entry is only referenced in the
+%glossary, or if including the glossary has caused the
+%number lists\iterm{number list} to change.)
+%
%If you use Windows, there is a batch file called
%\texttt{makeglossaries.bat} which you can use, but you will
-%still need Perl installed.
+%still need Perl installed. Alternatively, you can call
+%\appname{makeindex} directly. See
+%\autoref{sec:makeglossaries} for
+%further details.
+%
+%\item If you want to use \appname{xindy} instead of
+%\appname{makeindex}, you must specify it in the package option:
+%\begin{verbatim}
+%\usepackage[xindy]{glossaries}
+%\end{verbatim}
+%See
+%\autoref{sec:makeglossaries} for
+%further details.
%
%\item New glossaries can be defined using:\par
%\ics{newglossary}\oarg{log-ext}%
%\marg{label}\marg{in-ext}\marg{out-ext}%
%\marg{title}\par where \meta{label} is an identifying label,
%\meta{in-ext} is the extension of the file to be created
-%by \appname{makeindex} (called by \appname{makeglossaries}),
+%by \appname{makeindex} or \appname{xindy} (called by
+%\appname{makeglossaries}),
%\meta{out-ext} is the extension of the file to be read by
-%\appname{makeindex} and \meta{title} is the title for this
+%\appname{makeindex} or \appname{xindy} and \meta{title} is the title for this
%new glossary. The first optional argument \meta{log-ext} specifies
-%the extension of the \appname{makeindex} transcript file. Example:
+%the extension of the \appname{makeindex} or \appname{xindy}
+%transcript file. Example:
%\begin{verbatim}
%\newglossary[nlg]{notation}{not}{ntn}{Notation}
%\end{verbatim}
%This glossary's label is \texttt{notation} and its title
%will be Notation. If you use \appname{makeglossaries}, the
-%\appname{makeindex} transcript will be written to a file with the
+%\appname{makeindex} or \appname{xindy} transcript will be written to a file with the
%extension \filetype{.nlg}. If \meta{log-ext} is omitted, the extension
%\filetype{.glg} will be used.
%
%\item Any new glossaries must be defined before
-%\cs{makeglossaries}
+%\ics{makeglossaries}:
%\begin{verbatim}
-%\documentclass{article}
%\usepackage{glossaries}
%\newglossary{notation}{not}{ntn}{Notation}
%\makeglossaries
@@ -486,12 +1123,12 @@
%\end{verbatim}
%
%\item If your pages have a hyphen compositor (i.e.\ your page
-%numbers appear in the form 2-1), redefine \ics{glscompositor}
+%numbers appear in the form 2-1), use \ics{glsSetCompositor}
%\emph{before} \ics{makeglossaries}:
%\begin{verbatim}
%\documentclass{article}
%\usepackage{glossaries}
-%\renewcommand{\glscompositor}{-}
+%\glsSetCompositor{-}
%\makeglossaries
%\end{verbatim}
%
@@ -500,6 +1137,10 @@
%\begin{verbatim}
%\usepackage[toc]{glossaries}
%\end{verbatim}
+%This will require an extra \LaTeX\ run. Note that if the table
+%of contents affects the subsequent page numbering (i.e.\ the
+%page numbers are not reset after the table of contents) then you
+%may need to rerun \appname{makeglossaries} and \LaTeX.
%
%\item Define a new entry with:\par
%\ics{newglossaryentry}\marg{label}\marg{key-val list}\par
@@ -514,20 +1155,96 @@
%Whenever I want to use this entry, that is the label I need
%to use to identify it.
%
-%\item If the entry name starts with an accented letter, you will
-%need to group the first letter (otherwise it will cause a
-%problem for \ics{Gls} and \ics{Glspl}):
+%\item To define a sub-entry, use the \gloskey{parent} key. For
+%example:
+%\begin{verbatim}
+%\newglossaryentry{fruit}{name={fruit}, % parent entry
+%description={tree product that contains seeds}}
+%
+%\newglossaryentry{apple}{name={apple}, % sub-entry
+%description={firm, round fruit},
+%parent=fruit}
+%\end{verbatim}
+%
+%\item To change the sorting order, use the \gloskey{sort} key.
+%For example:
+%\begin{verbatim}
+%\newglossaryentry{tex}{name={\TeX},
+%description={A typesetting language},
+%sort=tex}
+%\end{verbatim}
+%This will put the entry in the \dq{T} group (entries starting with
+%the letter \dq{t} or \dq{T}) rather than the
+%\dq{symbols} group (entries starting with a symbol).
+%Similarly, the following example puts the entry in the \dq{U}
+%group instead of the \dq{symbol} group.
+%\begin{verbatim}
+%\newglossaryentry{universal}{name={\ensuremath{\mathcal{U}}},
+%description=The universal set,
+%sort=U}
+%\end{verbatim}
+%
+%Note that if you use \appname{xindy} instead of \appname{makeindex},
+%characters such as a backslash are ignored, so if you have used
+%the \pkgopt{xindy} package option, you can just do:
+%\begin{verbatim}
+%\newglossaryentry{tex}{name={\TeX},
+%description={A typesetting language},
+%}
+%\end{verbatim}
+%
+%\item Sub-entries may have the same name as the parent entry:
+%\begin{verbatim}
+%\newglossaryentry{glossary}{name=glossary, % parent entry
+%description={\nopostdesc},
+%plural={glossaries}}
+%
+%\newglossaryentry{glossarylist}{% first child entry
+%description={1) list of technical words},
+%sort={1},
+%parent={glossary}}
+%
+%\newglossaryentry{glossarycol}{% second child entry
+%description={2) collection of glosses},
+%sort={2},
+%parent={glossary}}
+%\end{verbatim}
+%Note that in this instance the \gloskey{name} key is not
+%required for the child entries, but the \gloskey{sort} key is
+%needed to sort the sub-entries. The parent entry has no
+%description, so the description terminator is suppressed using
+%\ics{nopostdesc}.
+%
+%\item If the entry name starts with an accented letter or
+%non-Latin character, you will need to group the first letter
+%(otherwise it will cause a problem for commands like \ics{Gls} and
+%\ics{Glspl}):
%\begin{verbatim}
%\newglossaryentry{elite}{name={{\'e}lite},
+%sort=elite,
%description={select group or class}}
%\end{verbatim}
%Likewise with commands such as \cs{ae} and \cs{oe}:
%\begin{verbatim}
%\newglossaryentry{oesophagus}{%
%name={{\oe}sophagus},
+%sort=oesophagus,
%description={canal from mouth to stomach}}
%\end{verbatim}
%
+%\item If you use \appname{xindy}, you can specify the accented
+%or non-Latin character directly (in combination with the
+%\isty{inputenc} and \isty{fontenc} packages) but you still
+%need to group the first letter (otherwise it will cause a
+%problem for commands like \ics{Gls} and \ics{Glspl} due to
+%expansion issues):
+%\begin{verbatim}
+%\newglossaryentry{elite}{name={{é}lite},
+%description={select group or class}}
+%\end{verbatim}
+%Note that in this case the \gloskey{sort} key is not required
+%as \appname{xindy} knows how to sort the letter \'e.
+%
%\item If you have multiple glossaries, use the \gloskey{type}
%key to specify in which glossary the entry belongs. For example:
%\begin{verbatim}
@@ -549,6 +1266,27 @@
%(e.g.\ 1,2,4,7--9)}}
%\end{verbatim}
%
+%\item You can cross-reference an entry using the
+%\gloskey{see} key when you define it. For example, suppose
+%you have defined an entry whose label is \texttt{taylorstheorem},
+%then you can cross-reference it:
+%\begin{verbatim}
+%\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+%description={Series expansion},
+%see={taylorstheorem}}
+%\end{verbatim}
+%Alternatively, you can use \ics{glssee} after you have defined
+%the entry:
+%\begin{verbatim}
+%\glssee{maclaurinseries}{taylorstheorem}
+%\end{verbatim}
+%(The final argument may be a comma-separated list of labels.)
+%The \dq{see} tag may be overridden for a given entry:
+%\begin{verbatim}
+%\glssee[see also]{maclaurinseries}{taylorstheorem}
+%\end{verbatim}
+%or it can be changed for all entries by redefining \ics{seename}.
+%
%\item Plural forms are assumed to be the singular form with an
%\dq{s} appended, unless otherwise specified. To specify an
%irregular plural, use the \gloskey{plural} key. For example:
@@ -613,11 +1351,11 @@
%\begin{verbatim}
%\renewcommand{\glsnamefont}[1]{\textsf{\mdseries #1}}
%\end{verbatim}
-%Note that the list-like glossary styles defined in the
-%\isty{glossary-list} package place the entry name in
+%Note that the list-like glossary styles place the entry name in
%the optional argument to \ics{item}, so they will
-%appear in bold, unless you redefine \ics{glsnamefont} to counteract the
-%bold font.
+%appear in bold, unless you redefine \ics{glsnamefont} to counteract
+%the bold font. Similarly, the tree-like styles display the
+%entry name in bold.
%
%\item In the document use \ics{gls}\marg{label}
%to use a predefined term (this will also enter the term into
@@ -674,9 +1412,10 @@
%The primary definition of \glspl[format=hyperbf]{singmtx}.
%\end{verbatim}
%
-%\item Don't use declarations in \gloskey[glslink]{format} as this can
-%cause unpredictable results, as there is no guarantee that the effect
-%will be localised to the required text.
+%\item Don't use declarations in \gloskey[glslink]{format} (e.g.\
+%\texttt{format=bfseries}) as this can cause unpredictable results,
+%since there is no guarantee that the effect will be localised to the
+%required text.
%
%\item Entries can be added to the glossary without producing
%any text using \ics{glsadd}\marg{label} or
@@ -691,7 +1430,7 @@
%
%\item A number range can be entered using \verb|format=(| and
%\verb"format=)" to mark the beginning and ending of the
-%range\footnote{This is new to version 1.01}. For example:
+%range. For example:
%\begin{verbatim}
% \glsadd[format=(]{singmtx}
% This is a very long section all about \glspl{singmtx}.
@@ -701,7 +1440,8 @@
% \glsadd[format=)]{singmtx}
%\end{verbatim}
%This is equivalent to \appname{makeindex}'s \verb"|(" and \verb"|)"
-%formats.
+%formats or \appname{xindy}'s \texttt{:open-range} and
+%\texttt{:close-range} tags.
%
%\item You can combine the range markers with a formatting command
%(again without the preceding backslash). For example:
@@ -719,26 +1459,8 @@
%document will be placed in the glossary. If you have defined
%a term that doesn't appear in the document, then it means
%you haven't used it in the text (either via \ics{glslink}
-%or \ics{gls} and related commands, or via \ics{glsadd}
-%or \ics{glsaddall}).
-%
-%\item To change the sorting order, use the \gloskey{sort} key.
-%For example:
-%\begin{verbatim}
-%\newglossaryentry{tex}{name={\TeX},
-%description={A typesetting language},
-%sort=tex}
-%\end{verbatim}
-%This will put the entry in the \dq{T} group (entries starting with
-%the letter \dq{t} or \dq{T}) rather than the
-%\dq{symbols} group (entries starting with a symbol).
-%Similarly, the following example puts the entry in the \dq{U}
-%group instead of the \dq{symbol} group.
-%\begin{verbatim}
-%\newglossaryentry{universal}{name={\ensuremath{\mathcal{U}}},
-%description=The universal set,
-%sort=U}
-%\end{verbatim}
+%or \ics{gls} and related commands or via \ics{glsadd}
+%or \ics{glsaddall} or via \ics{glssee}).
%
%\item You don't need to escape \appname{makeindex}'s special characters:
%\begin{verbatim}
@@ -759,17 +1481,8 @@
%description={A metric measurement of length},
%symbol={m}}
%\end{verbatim}
-%The predefined glossary styles that display the entry symbol
-%are: \glostyle{long4col}, \glostyle{long4colheader},
-%\glostyle{long4colborder}, \glostyle{long4colheaderborder},
-% \glostyle{altlong4col}, \glostyle{altlong4colheader},
-%\glostyle{altlong4colborder}, \glostyle{altlong4colheaderborder},
-%\glostyle{super4col}, \glostyle{super4colheader},
-%\glostyle{super4colborder}, \glostyle{super4colheaderborder}.
-%\glostyle{altsuper4col}, \glostyle{altsuper4colheader},
-%\glostyle{altsuper4colborder} and \glostyle{altsuper4colheaderborder}.
-%All the other styles supplied by this package ignore the associated
-%symbol.
+%See \autoref{sec:styles} for a list of predefined glossary
+%styles.
%
%\item Glossary styles can be set using the \pkgopt{style}
%package option. For example:
@@ -782,13 +1495,15 @@
%\end{verbatim}
%The predefined glossary styles provided by the \sty{glossaries}
%bundle are listed in \autoref{sec:styles}.
+%
+%
%\item The list of numbers associated with each glossary entry
%can be suppressed using the package option \pkgopt{nonumberlist}:
%\begin{verbatim}
%\usepackage[nonumberlist]{glossaries}
%\end{verbatim}
%
-%\item By default, the glossaries will appear in an unnumbered
+%\item By default, the glossary will appear in an unnumbered
%chapter if chapters are defined, otherwise in an unnumbered
%section. This can be changed using the \pkgopt{section} package
%option. For example, to make the glossaries appear in an unnumbered
@@ -813,6 +1528,7 @@
%The \sty{glossaries} package options are as follows:
%\begin{description}
%\item[\pkgopt{toc}] Add the glossaries to the table of contents.
+%Note that an extra \LaTeX\ run is required with this option.
%
%\item[\pkgopt{numberline}] When used with \pkgopt{toc}, this will
%add \cs{numberline}\verb|{}| in the final argument of
@@ -822,13 +1538,25 @@
%used without \pkgopt{numberline}, the title will be aligned with
%the section numbers rather than the section titles.
%
-%\item[\pkgopt{acronym}] Make a separate glossary for acronyms.
+%\item[\pkgopt{acronym}] This creates a new glossary with the
+%label \texttt{acronym}:
+%\begin{verbatim}
+%\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+%\end{verbatim}
+%If the \pkgopt{acronym} package option is used, \ics{acronymtype}
+%is set to \texttt{acronym} otherwise it is set to
+%\texttt{main}.\footnote{Actually it sets \ics{acronymtype} to
+%\ics{glsdefaulttype} if the \pkgopt{acronym} package option is
+%not used, but \ics{glsdefaulttype} usually has the value
+%\texttt{main}.}
+%Entries that are defined using \ics{newacronym} are placed in
+%the glossary whose label is given by \ics{acronymtype}.
%
%\item[\pkgopt{section}] This is a \meta{key}=\meta{value} option. Its
%value should be the name of a sectional unit (e.g.\ chapter).
%This will make the glossaries appear in the named sectional unit,
%otherwise each glossary will appear in a chapter, if chapters
-%exists, otherwise in a section. Unnumbered sectional units will be used
+%exist, otherwise in a section. Unnumbered sectional units will be used
%by default. Example:
%\begin{verbatim}
%\usepackage[section=subsection]{glossaries}
@@ -841,8 +1569,9 @@
%\begin{verbatim}
%\usepackage[section=section]{glossaries}
%\end{verbatim}
-%You can change this value later in the document using
-%\ics{setglossarysection}\marg{type}.
+%You can change this value later in the document using\\[10pt]
+%\DescribeMacro{\setglossarysection}\cs{setglossarysection}\marg{name}\\[10pt]
+%where \meta{name} is the sectional unit.
%
%\item[\pkgopt{numberedsection}]
%The glossaries are placed in unnumbered sectional units by default,
@@ -951,6 +1680,41 @@
%for acronyms.
%See \autoref{sec:acronyms} for further details.
%
+%\item[\pkgopt{makeindex}] (Default) The glossary information and
+%indexing style file will be written in \appname{makeindex} format. If you use
+%\appname{makeglossaries}, it will automatically detect that it needs
+%to call \appname{makeindex}. If you don't use
+%\appname{makeglossaries}, you need to remember to use
+%\appname{makeindex} not \appname{xindy}. The indexing style file
+%will been given a \filetype{.ist} extension.
+%
+%\item[\pkgopt{xindy}] The glossary information and indexing style file will
+%be written in \appname{xindy} format. If you use
+%\appname{makeglossaries}, it will automatically detect that it needs
+%to call \appname{xindy}. If you don't use \appname{makeglossaries},
+%you need to remember to use \appname{xindy} not \appname{makeindex}.
+%The indexing style file will been given a \filetype{.xdy} extension.
+%
+%The \pkgopt{xindy} package option may additionally have a
+%value that is a key=value comma-separated list to override
+%the language and codepage. For example:
+%\begin{verbatim}
+%\usepackage[xindy={language=english,codepage=utf8}]{glossaries}
+%\end{verbatim}
+%You can also specify whether you want a number group in
+%the glossary. This defaults to true, but can be suppressed. For
+%example:
+%\begin{verbatim}
+%\usepackage[xindy={glsnumbers=false}]{glossaries}
+%\end{verbatim}
+%See \autoref{sec:xindy} for further details on using \appname{xindy} with the
+%\sty{glossaries} package.
+%
+%\item[\pkgopt{order}] This may take two values:
+%\pkgoptval{word}{order} or \pkgoptval{letter}{order}. The default
+%is word ordering. Note that this option has no effect if you
+%don't use \appname{makeglossaries}.
+%
%\end{description}
%\subsection{Defining Glossary Entries}
%\label{sec:newglosentry}
@@ -961,29 +1725,77 @@
%was removed in version 1.13, but the restriction remains for
%\cs{loadglsentries}.} However
%only those entries that occur in the document
-%(using any of the commands described in \autoref{sec:glslink} and \autoref{sec:glsadd}) will appear in the glossary. Each time an entry is used in this way, a line is added to an associated glossary
-%(\filetype{.glo}) file, which then needs to be converted into a
-%corresponding \filetype{.gls} file which contains the typeset glossary
-%which is input by \ics{printglossary} or
-%\ics{printglossaries}. The Perl script \appname{makeglossaries}
-%can be used to call \appname{makeindex}, using a customised
-%\filetype{.ist} style file, for each of the glossaries that are defined
-%in the document. Note that there should be no need for you to
-%explicitly edit or input any of these external files.
+%(using any of the commands described in \autoref{sec:glslink} and \autoref{sec:glsadd}) will appear in the glossary. Each time an entry is used in this way, a line is added to an associated glossary file
+%(\filetype{.glo}), which then needs to be converted into a
+%corresponding \filetype{.gls} file which contains the typeset
+%glossary which is input by \ics{printglossary} or
+%\ics{printglossaries}. The Perl script \appname{makeglossaries} can
+%be used to call \appname{makeindex} or \appname{xindy}, using a
+%customised indexing style file, for each of the glossaries that are
+%defined in the document. Note that there should be no need for you
+%to explicitly edit or input any of these external files. See
+%\autoref{sec:makeglossaries}
+%for further details.
%
%\DescribeMacro{\makeglossaries}
%The command \cs{makeglossaries} must be placed in the preamble in
-%order to create the customised \appname{makeindex} \filetype{.ist}
+%order to create the customised \appname{makeindex} (\filetype{.ist})
+%or \appname{xindy} (\filetype{.xdy})
%style file and to ensure that glossary entries are written to the
-%appropriate output file. If you omit \cs{makeglossaries} none of the
-%glossaries will be created. Note that if your page numbers use a
-%hyphen compositor, you must set this by redefining
-%\DescribeMacro{\glscompositor}\cs{glscompositor} \emph{before}
-%using \cs{makeglossaries}:
+%appropriate output files. If you omit \cs{makeglossaries} none of the
+%glossaries will be created.
+%
+%\begin{important}
+%Note that some of the commands provided by the \sty{glossaries}
+%package must be placed before \cs{makeglossaries} as they are
+%required when creating the customised style file. If you attempt
+%to use those commands after \cs{makeglossaries} you will generate
+%an error.
+%\end{important}
+%
+%\DescribeMacro{\noist}
+%You can suppress the creation of the customised \appname{xindy}
+%or \appname{makeindex} style file using \cs{noist}. Note that this
+%command must be used before \cs{makeglossaries}.
+%
+%The default name for the customised style file is given by
+%\ics{jobname}\filetype{.ist} (for \appname{makeindex}) or
+%\ics{jobname}\filetype{.xdy} (for \appname{xindy}). This name may be
+%changed using:\\[10pt]
+%\DescribeMacro{\setStyleFile}
+%\cs{setStyleFile}\marg{name}\\[10pt]
+%where \meta{name} is the name of the style file without the
+%extension. Note that this command must be used before
+%\cs{makeglossaries}.
+%
+%Each glossary entry is assigned a \term{number list} that lists all
+%the locations in the document where that entry was used. By default,
+%the location refers to the page number but this may be overridden
+%using the \pkgopt{counter} package option. The default form of
+%the location number assumes a full stop compositor (e.g.\ 1.2),
+%but if your location numbers use a different compositor (e.g. 1-2)
+%you need to set this using\\[10pt]
+%\DescribeMacro{\glsSetCompositor}\cs{glsSetCompositor}\marg{symbol}\\[10pt]
+%For example:
+%\begin{verbatim}
+%\glsSetCompositor{-}
+%\end{verbatim}
+%Note that this command must be used before \cs{makeglossaries}.
+%
+%If you use \appname{xindy}, you can have a different compositor
+%for page numbers starting with an uppercase alphabetical
+%character using:\\[10pt]
+%\DescribeMacro{\glsSetAlphaCompositor}\cs{glsSetAlphaCompositor}\marg{symbol}\\[10pt]
+%Note that this command has no effect if you haven't used the
+%\pkgopt{xindy} package option. For example, if you want
+%number lists\iterm{number list} containing a mixture of A-1 and 2.3
+%style formats, then do:
%\begin{verbatim}
-%\renewcommand*{\glscompositor}{-}
+%\glsSetCompositor{.}
+%\glsSetAlphaCompositor{-}
%\end{verbatim}
-%(The default value of \cs{glscompositor} is a full stop.)
+%See \autoref{sec:numberlists} for
+%further information about number lists\iterm{number list}.
%
%\DescribeMacro{\newglossaryentry}
%New glossary entries are defined using the command:\\[10pt]
@@ -992,14 +1804,28 @@
%this entry. The second argument, \meta{key-val list}, is a
%\meta{key}=\meta{value} list that supplies the relevant information
%about this entry. There are two required fields: \gloskey{name} and
-%\gloskey{description}. Available fields are listed below:
+%\gloskey{description}, except for sub-entries where the
+%\gloskey{name} field may be omitted. Available fields are listed
+%below:
%
%\begin{description}
-%\item[{\gloskey{name}}] The name of the entry (as it will appear in the
-%glossary).
+%\item[{\gloskey{name}}] The name of the entry (as it will appear in
+%the glossary). If this key is omitted and the \gloskey{parent}
+%key is supplied, this value will be the same as the parent's name.
%
%\item[{\gloskey{description}}] A brief description of this term (to
-%appear in the glossary).
+%appear in the glossary). Within this value, you can use
+%\DescribeMacro{\nopostdesc}\cs{nopostdesc} to suppress the
+%description terminator for this entry. For example, if this
+%entry is a parent entry that doesn't require a description, you
+%can do \verb|description={\nopostdesc}|. If you want a paragraph
+%break in the description use \DescribeMacro{\glspar}\cs{glspar}.
+%However, note that not all glossary styles support multi-line
+%descriptions.
+%
+%\item[{\gloskey{parent}}] The label of the parent entry. Note that
+%the parent entry must be defined before its sub-entries.
+%See \autoref{sec:subentries} for further details.
%
%\item[{\gloskey{descriptionplural}}] The plural form of the
%description (as passed to \ics{glsdisplay} and \ics{glsdisplayfirst}
@@ -1034,8 +1860,9 @@
%used the \gloskey{first} key.
%
%\item[{\gloskey{symbol}}] This field is provided to allow the user to
-%specify an associated symbol, but most glossary styles ignore
-%this value. If omitted, the value is set to \cs{relax}.
+%specify an associated symbol. If omitted, the value is set to
+%\cs{relax}. Note that not all glossary styles display the
+%symbol.
%
%\item[{\gloskey{symbolplural}}] This is the plural form of the
%symbol (as passed to \ics{glsdisplay} and \ics{glsdisplayfirst}
@@ -1043,41 +1870,63 @@
%is set to the same as the \gloskey{symbol} key.
%
%\item[{\gloskey{sort}}] This value indicates how \appname{makeindex}
-%should sort this entry. If omitted, the value is given by the
-%\gloskey{name} field. This value is equivalent to
-%\appname{makeindex}'s \dq{actual} character (which is usually the
-%at-sign @ although the \sty{glossaries} package uses a different
-%symbol).
-%
-%\item[{\gloskey{type}}] This is the glossary type to which this entry
-%belongs. If omitted, the default glossary is assumed.
-%The list of acronyms type is given by
+%or \appname{xindy} should sort this entry. If omitted, the value is
+%given by the \gloskey{name} field.
+%
+%\item[{\gloskey{type}}] This specifies the label of the glossary in
+%which this entry belongs. If omitted, the default glossary is
+%assumed. The list of acronyms type is given by
%\ics{acronymtype} which will either be \texttt{main} or
%\texttt{acronym}, depending on whether the \pkgopt{acronym} package
%option was used.
+%
+%\item[{\gloskey{nonumberlist}}] Suppress the \term{number list} for
+%this entry.
+%
+%\item[{\gloskey{see}}] Cross-reference another entry. Using the
+%\gloskey{see} key will automatically add this entry to the
+%glossary, but will not automatically add the cross-referenced entry.
+%The referenced entry should be supplied as the value to this key.
+%If you want to override the \dq{see} tag, you can supply the new
+%tag in square brackets before the label. For example
+%\verb|see=[see also]{anotherlabel}|. For further details,
+%see \autoref{sec:crossref}.
%\end{description}
-%Note that if the key starts with an accented letter,
-%you must group the accented letter, otherwise it will cause a
-%problem for commands like \cs{Gls} and \cs{Glspl}. For example:
+%Note that if the name starts with an accented letter or non-Latin
+%character, you must group the accented letter, otherwise it will
+%cause a problem for commands like \cs{Gls} and \cs{Glspl}.
+%For example:
%\begin{verbatim}
%\newglossaryentry{elite}{name={{\'e}lite},
%description={select group or class}}
%\end{verbatim}
+%Note that the same applies if you are using the \isty{inputenc}
+%package:
+%\begin{verbatim}
+%\newglossaryentry{elite}{name={{é}lite},
+%description={select group or class}}
+%\end{verbatim}
+%Note that in both of the above examples, you will also need to
+%supply the \gloskey{sort} key if you are using \appname{makeindex}
+%whereas \appname{xindy} is usually able to sort accented letters
+%correctly.
+%
%
%
%\subsubsection{Plurals}
%You may have noticed from above that you can specify the plural form
-%when you define a term. If you omit this, the plural will be obtained
-%\DescribeMacro{\glspluralsuffix}by appending \cs{glspluralsuffix} to
-%the singular form. This command defaults to \texttt{s}. For example:
+%when you define a term. If you omit this, the plural will be
+%obtained by appending
+%\DescribeMacro{\glspluralsuffix}\cs{glspluralsuffix} to
+%the singular form. This command defaults to \dq{s}. For example:
%\begin{verbatim}
%\newglossaryentry{cow}{name=cow,description={a fully grown
%female of any bovine animal}}
%\end{verbatim}
-%defines a new entry whose singular form is \dq{cow} and plural form
-%is \dq{cows}. However, if you are writing in archaic English, you
-%may want to use \dq{kine} as the plural form, in which case you would
-%have to do:
+%defines a new entry whose singular form is \dq{cow} and plural form
+%is \dq{cows}. However, if you are writing in archaic English, you
+%may want to use \dq{kine} as the plural form, in which case you
+%would have to do:
%\begin{verbatim}
%\newglossaryentry{cow}{name=cow,plural=kine,
%description={a fully grown female of any bovine animal}}
@@ -1107,6 +1956,111 @@
%key where necessary).
%
%
+%\subsubsection{Sub-Entries}
+%\label{sec:subentries}
+%
+%As from version 1.17, it is possible to specify sub-entries. These
+%may be used to order the glossary into categories, in which case
+%the sub-entry will have a different name to its parent entry, or
+%it may be used to distinguish different definitions for the same
+%word, in which case the sub-entries will have the same name as
+%the parent entry. Note that not all glossary styles support
+%hierarchical entries and may display all the entries in a flat
+%format. Of the styles that support sub-entries, some display the
+%sub-entry's name whilst others don't. Therefore you need to
+%ensure that you use a suitable style. See \autoref{sec:styles} for a list of predefined
+%styles.
+%
+%Note that the parent entry will automatically be added to the
+%glossary if any of its child entries are used in the document.
+%If the parent entry is not referenced in the document, it will not
+%have a \term{number list}.
+%
+%\paragraph{Hierarchical Categories} To arrange a glossary
+%with hierarchical categories, you need to first define the
+%category and then define the sub-entries using the relevant
+%category entry as the value of the \gloskey{parent} key. For
+%example, suppose I want a glossary of mathematical symbols that
+%are divided into Greek letters and Roman letters. Then I can
+%define the categories as follows:
+%\begin{verbatim}
+%\newglossaryentry{greekletter}{name={Greek letters},
+%text={Greek letter},
+%description={\nopostdesc}}
+%
+%\newglossaryentry{romanletter}{name={Roman letters},
+%text={Roman letter},
+%description={\nopostdesc}}
+%\end{verbatim}
+%
+%Note that in this example, the category entries don't need a
+%description so I have set the descriptions to \ics{nopostdesc}.
+%This gives a blank description and suppresses the
+%description terminator.
+%
+%I can now define my sub-entries as follows:
+%\begin{verbatim}
+%\newglossaryentry{pi}{name={pi},
+%description={ratio of the circumference of a circle to the diameter},
+%parent=greekletter}
+%
+%\newglossaryentry{C}{name=C,
+%description={Euler's constant},
+%parent=romanletter}
+%\end{verbatim}
+%
+%\paragraph{Homographs} Sub-entries that have the same name as
+%the parent entry, don't need to have the \gloskey{name} key.
+%For example, the word \dq{glossary} can mean a list of technical
+%words or a collection of glosses. In both cases the plural is
+%\dq{glossaries}. So first define the parent entry:
+%\begin{verbatim}
+%\newglossaryentry{glossary}{name=glossary,
+%description={\nopostdesc},
+%plural={glossaries}}
+%\end{verbatim}
+%Again, the parent entry has no description, so the description
+%terminator needs to be suppressed using \ics{nopostdesc}.
+%
+%Now define the two different meanings of the word:
+%\begin{verbatim}
+%\newglossaryentry{glossarylist}{
+%description={1) list of technical words},
+%sort={1},
+%parent={glossary}}
+%
+%\newglossaryentry{glossarycol}{
+%description={2) collection of glosses},
+%sort={2},
+%parent={glossary}}
+%\end{verbatim}
+%Note that if I reference the parent entry, the location will be
+%added to the parent's \term{number list}, whereas if I reference
+%any of the child entries, the location will be added to the child
+%entry's number list. Note also that since the sub-entries have the
+%same name, the \gloskey{sort} key is required.
+%
+%In the above example, the plural form for both of the child entries
+%is the same as the parent entry, so the \gloskey{plural} key was
+%not required for the child entries. However, if the sub-entries
+%have different plurals, they will need to be specified. For example:
+%\begin{verbatim}
+%\newglossaryentry{bravo}{name={bravo},
+%description={\nopostdesc}}
+%
+%\newglossaryentry{bravocry}{description={1) cry of approval
+%(pl.\ bravos)},
+%sort={1},
+%plural={bravos},
+%parent=bravo}
+%
+%\newglossaryentry{bravoruffian}{description={2) hired ruffian or
+%killer (pl.\ bravoes)},
+%sort={2},
+%plural={bravoes},
+%parent=bravo}
+%\end{verbatim}
+%
%\subsubsection{Loading Entries From a File}
%\label{sec:loadglsentries}
%
@@ -1158,7 +2112,9 @@
%will add \texttt{aca} to the glossary type \texttt{acronym}, if the
%package option \pkgopt{acronym} has been specified, or will add
%\texttt{aca} to the glossary type \texttt{altacronym}, if the
-%package option \pkgopt{acronym} is not specified. In this instance,
+%package option \pkgopt{acronym} is not specified.\footnote{This
+%is because \cs{acronymtype} is set to \cs{glsdefaulttype} if
+%the \pkgopt{acronym} package option is not used.} In this instance,
%it is better to change \texttt{myacronyms.tex} to:
%\begin{verbatim}
%\newacronym[type=\glsdefaulttype]{aca}{aca}{a contrived acronym}
@@ -1183,6 +2139,53 @@
%these numbers refer to the pages on which that entry has been used
%(using any of the commands described in \autoref{sec:glslink} and \autoref{sec:glsadd}). The number list can be suppressed using the \pkgopt{nonumberlist} package option, or an alternative counter
%can be set as the default using the \pkgopt{counter} package option.
+%The number list is also referred to as the location
+%list\index{location list|see{number list}}.
+%
+%Both \appname{makeindex} and \appname{xindy} concatenate a
+%sequence of 3 or more consecutive pages into a range. With
+%\appname{xindy} you can vary the minimum sequence length using
+%\ics{GlsSetXdyMinRangeLength}\marg{n} where \meta{n} is either
+%an integer or the keyword \texttt{none} which indicates that there
+%should be no range formation.
+%
+%\begin{important}
+%Note that \cs{GlsSetXdyMinRangeLength} must be used before
+%\ics{makeglossaries} and has no effect if \ics{noist} is used.
+%\end{important}
+%
+%With both \appname{makeindex} and \appname{xindy}, you can replace
+%separator and the closing number in the range using:\\[10pt]
+%\DescribeMacro{\glsSetSuffixF}\cs{glsSetSuffixF}\marg{suffix}\\
+%\DescribeMacro{\glsSetSuffixFF}\cs{glsSetSuffixFF}\marg{suffix}\\[10pt]
+%where the former command specifies the suffix to use for a 2 page
+%list and the latter specifies the suffix to use for longer lists.
+%For example:
+%\begin{verbatim}
+%\glsSetSuffixF{f.}
+%\glsSetSuffixFF{ff.}
+%\end{verbatim}
+%Note that if you use \appname{xindy}, you will also need to
+%set the minimum range length to 1 if you want to change these
+%suffixes:
+%\begin{verbatim}
+%\GlsSetXdyMinRangeLength{1}
+%\end{verbatim}
+%Note that if you use the \isty{hyperref} package, you will need
+%to use \ics{nohyperpage} in the suffix to ensure that the hyperlinks
+%work correctly. For example:
+%\begin{verbatim}
+%\glsSetSuffixF{\nohyperpage{f.}}
+%\glsSetSuffixFF{\nohyperpage{ff.}}
+%\end{verbatim}
+%
+%\begin{important}
+%Note that \cs{glsSetSuffixF} and \cs{glsSetSuffixFF} must be used
+%before \ics{makeglossaries} and have no effect if \ics{noist} is
+%used.
+%\end{important}
+%
+%
%\subsection{Links to Glossary Entries}
%\label{sec:glslink}
%
@@ -1193,10 +2196,19 @@
%one of these commands is referred to as the
%\termdef{link text} (even if there are no hyperlinks). The commands
%in this section also add a line to an external file that is used
-%by \appname{makeindex} to generate the relevant entry in the
-%glossary. It is strongly recommended that you don't use the commands
+%by \appname{makeindex} or \appname{xindy} to generate the relevant
+%entry in the glossary. This information includes an
+%associated location that is added to the \term{number list} for that
+%entry. By default, the location refers to the page number. For
+%further information on number lists, see \autoref{sec:numberlists}.
+%
+%\begin{important}
+%It is strongly recommended that you don't use the commands
%defined in this section in the arguments of sectioning or caption
-%commands. This is particularly important if you are using the
+%commands.
+%\end{important}
+%
+%The above warning is particularly important if you are using the
%\sty{glossaries} package in conjunction with the \isty{hyperref} package.
%Instead, use one of the commands listed in
%\autoref{sec:glsnolink} (such as \cs{glsentrytext}) or provide an alternative via
@@ -1218,74 +2230,101 @@
%\DescribeMacro{\glslink}
%The command:\\[10pt]
%\cs{glslink}\oarg{options}\marg{label}\marg{text}\\[10pt]
-%will place \cs{glstextformat}\marg{text} in the document at that point
-%and add a line into the associated glossary file for the glossary entry
-%given by \meta{label}. If hyperlinks are supported, \meta{text} will be
-%a hyperlink to the relevant line in the glossary. The optional argument
-%\meta{options} must be a \meta{key}=\meta{value} list which can take
-%any of the following keys:
+%will place \cs{glstextformat}\marg{text} in the document at that
+%point and add a line into the associated glossary file for the
+%glossary entry given by \meta{label}. If hyperlinks are supported,
+%\meta{text} will be a hyperlink to the relevant line in the
+%glossary. The optional argument \meta{options} must be a
+%\meta{key}=\meta{value} list which can take any of the following
+%keys:
%
%\begin{description}
%\item[{\gloskey[glslink]{format}}] This specifies how to format the
-%associated number for this entry in the glossary. This value is
-%equivalent to the \appname{makeindex} encap value, and (as with
-%\cs{index}) the value needs to be the name of a command \emph{without}
-%the initial backslash. As with \cs{index}, the characters \verb"(" and
-%\verb")" can also be used to specify the beginning and ending of a
-%number range. Again as with \cs{index}, the command should be the name
-%of a command which takes an argument (which will be the associated
-%number). Be careful not to use a declaration (such as \cs{bfseries})
-%instead of a text block command (such as \cs{textbf}) as the effect is
-%not guaranteed to be localised. If you want to apply more than one
-%style to a given entry (e.g.\ \textbf{bold} and \emph{italic}) you will
-%need to create a command that applies both formats, e.g.\
+%associated location number for this entry in the glossary. This
+%value is equivalent to the \appname{makeindex} encap value, and (as
+%with \cs{index}) the value needs to be the name of a command
+%\emph{without} the initial backslash. As with \cs{index}, the
+%characters \verb"(" and \verb")" can also be used to specify the
+%beginning and ending of a number range. Again as with \cs{index},
+%the command should be the name of a command which takes an argument
+%(which will be the associated location). Be careful not to use a
+%declaration (such as \texttt{bfseries}) instead of a text block command
+%(such as \texttt{textbf}) as the effect is not guaranteed to be
+%localised. If you want to apply more than one style to a given entry
+%(e.g.\ \textbf{bold} and \emph{italic}) you will need to create a
+%command that applies both formats, e.g.\
%\begin{verbatim}
%\newcommand*{\textbfem}[1]{\textbf{\emph{#1}}}
%\end{verbatim}
%and use that command.
%
+%In this document, the standard formats refer to the standard text
+%block commands such as \ics{textbf} or \ics{emph} or any of the
+%commands listed in Table~\ref{tab:hyperxx}.
+%
+%\begin{important}
+%If you use \appname{xindy} instead of \appname{makeindex}, you
+%must specify any non-standard formats that you want to use
+%with the \gloskey[glslink]{format} key using
+%\ics{GlsAddXdyAttribute}\marg{name}. For example
+%\begin{verbatim}
+%\GlsAddXdyAttribute{textbfem}
+%\end{verbatim}
+%\end{important}
+%
+%Note that unlike \cs{index}, you can't have
+%anything following the command name, such as an asterisk or
+%arguments. If you want to cross-reference another entry, either
+%use the \gloskey{see} key when you define the entry or use
+%\ics{glssee} (described in \autoref{sec:crossref}).
+%
%If you are using hyperlinks and you want to change the font of the
-%hyperlink, don't use \cs{hyperpage} (provided by the \isty{hyperref}
-%package) as the numbers may not refer to a page number.
-%Instead, the \sty{glossaries} package provides the following
-%number formats:
-%\begin{center}
-%\begin{tabular}{@{\sffamily}lp{0.8\linewidth}}hyperrm & The number is a serif hyperlink to the relevant part of the
-%document\\
-%hypersf & The number is a sans-serif hyperlink to the relevant part
-%of the document\\
-%hypertt & The number is a monospaced hyperlink to the relevant part
-%of the document\\
-%hyperbf & The number is a bold hyperlink to the relevant part of the
-%document\\
-%hypermd & The number is a medium weight hyperlink to the relevant
-%part of the document\\
-%hyperit & The number is an italic hyperlink to the relevant
-%part of the document\\
-%hypersl & The number is a slanted hyperlink to the relevant
-%part of the document\\
-%hyperup & The number is an upright hyperlink to the relevant
-%part of the document\\
-%hypersc & The number is a small caps hyperlink to the relevant
-%part of the document\\
-%hyperemph & The number is an emphasized hyperlink to the relevant
-%part of the document
+%hyperlinked location, don't use \ics{hyperpage} (provided by the
+%\isty{hyperref} package) as the locations may not refer to a page
+%number. Instead, the \sty{glossaries} package provides number
+%formats listed in Table~\ref{tab:hyperxx}.
+%
+%\begin{table}[htbp]
+%\caption{Predefined Hyperlinked Location Formats}
+%\label{tab:hyperxx}
+%\centering
+%\vskip\baselineskip
+%\begin{tabular}{ll}
+%\locfmt{hyperrm} & serif hyperlink\\
+%\locfmt{hypersf} & sans-serif hyperlink\\
+%\locfmt{hypertt} & monospaced hyperlink\\
+%\locfmt{hyperbf} & bold hyperlink\\
+%\locfmt{hypermd} & medium weight hyperlink\\
+%\locfmt{hyperit} & italic hyperlink\\
+%\locfmt{hypersl} & slanted hyperlink\\
+%\locfmt{hyperup} & upright hyperlink\\
+%\locfmt{hypersc} & small caps hyperlink\\
+%\locfmt{hyperemph} & emphasized hyperlink
%\end{tabular}
-%\end{center}
-%Note that if the \cs{hyperlink} command hasn't been defined,
+%\par
+%\end{table}
+%
+%Note that if the \ics{hyperlink} command hasn't been defined,
%the \texttt{hyper}\meta{xx} formats are equivalent to the
-%analogous \cs{text}\meta{xx} font commands. If you want to
+%analogous \texttt{text}\meta{xx} font commands (and \texttt{hyperemph}
+%is equivalent to \texttt{emph}). If you want to
%make a new format, you will need to define a command which takes
-%one argument and use that; for example, if you want the associated
-%number in the glossary to be in a bold sans-serif font, you can define a
+%one argument and use that; for example, if you want the location
+%number to be in a bold sans-serif font, you can define a
%command called, say, \cs{hyperbsf}:
%\begin{verbatim}
%\newcommand{\hyperbsf}[1]{\textbf{\hypersf{#1}}}
%\end{verbatim}
%and then use \texttt{hyperbsf} as the value for the \gloskey{format}
-%key. (See also \autoref{sec:printglos}.)
+%key. (See also \autoref{sec:printglos}.) Remember that if you use \appname{xindy}, you will need to add
+%this to the list of location attributes:
+%\begin{verbatim}
+%\GlsAddXdyAttribute{hyperbsf}
+%\end{verbatim}
+%
%\item[{\gloskey[glslink]{counter}}] This specifies which counter
-%to use for the associated number for this glossary entry. (See also
+%to use for this location. This overrides the default counter
+%used by this entry. (See also
%\autoref{sec:numberlists}.)
%\item[{\gloskey[glslink]{hyper}}] This is a boolean key which can
%be used to enable/disable the hyperlink to the relevant entry
@@ -1475,7 +2514,9 @@
%\cs{glspl} (or their uppercase variants). The default definitions
%of \cs{glsdisplay} and \cs{glsdisplayfirst} simply
%print the first argument immediately followed by the fourth argument.
-%The remaining arguments are ignored. Note that \ics{glslink} (which
+%The remaining arguments are ignored.
+%
+%Note that \ics{glslink} (which
%is used by commands like \cs{gls} and \cs{glspl}) sets
%\DescribeMacro{\glslabel}\ics{glslabel} to the label for the given
%entry (i.e.\ the label supplied to the mandatory argument to
@@ -1514,7 +2555,7 @@
%
%If you have multiple glossaries, changing \cs{glsdisplayfirst} and
%\cs{glsdisplay} will change the way entries for all of the
-%glossaries appear when using commands \cs{gls}, \cs{glspl} and their
+%glossaries appear when using the commands \cs{gls}, \cs{glspl} and their
%uppercase variants. If you only
%want the change to affect entries for a given glossary, then you need
%to use \DescribeMacro{\defglsdisplay}\cs{defglsdisplay} and
@@ -1601,6 +2642,72 @@
%\glsaddall[types={\acronymtype,notation}]
%\end{verbatim}
%
+%\subsection{Cross-Referencing Entries}
+%\label{sec:crossref}
+%
+%There are several ways of cross-referencing entries in the
+%glossary:
+%
+%\begin{enumerate}
+%\item You can use commands such as \ics{gls} in the
+%entries description. For example:
+%\begin{verbatim}
+%\newglossaryentry{apple}{name=apple,
+%description={firm, round fruit. See also \gls{pear}}}
+%\end{verbatim}
+%Note that with this method, if you don't use the
+%cross-referenced term in the glossary, you will need two runs of
+%\appname{makeglossaries}:
+%\begin{verbatim}
+%latex filename
+%makeglossaries filename
+%latex filename
+%makeglossaries filename
+%latex filename
+%\end{verbatim}
+%
+%\item As described in \autoref{sec:newglosentry},
+%you can use the \gloskey{see} key when you define the entry. For
+%example:
+%\begin{verbatim}
+%\newglossaryentry{MaclaurinSeries}{name={Maclaurin series},
+%description={Series expansion},
+%see={TaylorsTheorem}}
+%\end{verbatim}
+%Note that in this case, the entry with the \gloskey{see} key will
+%automatically be added to the glossary, but the cross-referenced
+%entry won't. You therefore need to ensure that you use the
+%cross-referenced term with the commands described in
+%\autoref{sec:glslink} or \autoref{sec:glsadd}.
+%
+%
+%You can optionally override the \dq{see} tag using square brackets
+%at the start of the \gloskey{see} value. For example:
+%\begin{verbatim}
+%\newglossaryentry{MaclaurinSeries}{name={Maclaurin series},
+%description={Series expansion},
+%see=[see also]{TaylorsTheorem}}
+%\end{verbatim}
+%
+%\item After you have defined the entry, use\\[10pt]
+%\DescribeMacro{\glssee}\cs{glssee}\oarg{tag}\marg{label}\marg{xr label list}\\[10pt]
+%where \meta{xr label list} is a comma-separated list of entry
+%labels to be cross-referenced, \meta{label} is the label of the
+%entry doing the cross-referencing and \meta{tag} is the \dq{see} tag.
+%For example:
+%\begin{verbatim}
+%\glssee[see also]{series}{FourierSeries,TaylorsTheorem}
+%\end{verbatim}
+%Note that this automatically adds the entry given by \meta{label} to
+%the glossary but doesn't add the cross-referenced entries (specified
+%by \meta{xr label list}) to the glossary.
+%\end{enumerate}
+%
+%In both cases~2 and 3 above, the cross-referenced information appears
+%in the \term{number list}, whereas in case~1, the cross-referenced
+%information appears in the description. In cases~2 and~3, the
+%default text for the \dq{see} tag is given by \ics{seename}.
+%
%\subsection{Using Glossary Terms Without Links}
%\label{sec:glsnolink}
%
@@ -1608,7 +2715,8 @@
%adding any information to the glossary. They don't use
%\cs{glstextformat}, they don't have any optional arguments,
%they don't affect the flag that determines if the term has been
-%used and they don't produce hyperlinks.
+%used and, apart from \ics{glshyperlink}, they don't produce
+%hyperlinks.
%\par\vskip10pt\noindent
%\DescribeMacro{\glsentryname}\cs{glsentryname}\marg{label}\\
%\DescribeMacro{\Glsentryname}\cs{Glsentryname}\marg{label}\par\vskip10pt\noindent
@@ -1661,6 +2769,19 @@
%\DescribeMacro{\Glsentrysymbolplural}\cs{Glsentrysymbolplural}\marg{label}\par\vskip10pt\noindent
%These commands display the plural symbol for the glossary entry given by
%\meta{label}. \cs{Glsentrysymbolplural} makes the first letter uppercase.
+%\par\vskip10pt\noindent
+%\DescribeMacro{\glshyperlink}\cs{glshyperlink}\oarg{link text}\marg{label}\par\vskip10pt\noindent
+%This command provides a hyperlink to the glossary entry given by
+%\meta{label} \textbf{but does not add any information to the
+%glossary file}. The link text is given by
+%\ics{glsentryname}\marg{label} by default, but can be overridden
+%using the optional argument.
+%\begin{important}
+%If you use \cs{glshyperlink}, you need to ensure that the relevant
+%entry has been added to the glossary using any of the
+%commands described in \autoref{sec:glslink} or \autoref{sec:glsadd} otherwise you will end up with a broken
+%link.
+%\end{important}
%
%For further information see \autoref{sec:code:glsnolink}.
%
@@ -1671,11 +2792,13 @@
%glossaries in the order in which they were defined.
%Note that no glossaries will appear until
%you have either used the Perl script \appname{makeglossaries}
-%or have directly used \appname{makeindex} (as described in
-%\autoref{sec:makeglossaries}). If the glossary still does not appear after you re-\LaTeX\ your document, check
-%the \appname{makeindex} log files to see if there is a problem.
-%Remember that you also need to use the command \ics{makeglossaries} in
-%the preamble to enable the glossaries.
+%or have directly used \appname{makeindex} or \appname{xindy} (as
+%described in
+%\autoref{sec:makeglossaries}). If the glossary
+%still does not appear after you re-\LaTeX\ your document, check the
+%\appname{makeindex}/\appname{xindy} log files to see if there is a
+%problem. Remember that you also need to use the command
+%\ics{makeglossaries} in the preamble to enable the glossaries.
%
%\DescribeMacro{\printglossary}
%An individual glossary can be displayed using:\\[10pt]
@@ -1716,7 +2839,8 @@
%\end{description}
%
%\DescribeMacro{\glossarypreamble}
-%Information can be added to the start of the glossary by redefining
+%Information can be added to the start of the glossary (after the
+%title and before the main body of the glossary) by redefining
%\cs{glossarypreamble}. For example:
%\begin{verbatim}
%\renewcommand{\glossarypreamble}{Numbers in italic indicate
@@ -1753,13 +2877,17 @@
%\label{sec:glsnamefont}
%
%\DescribeMacro{\glsnamefont}Within each glossary, each entry name is
-%formatted according to \cs{glsnamefont} which takes one argument: the
-%entry name. This command is always used regardless of the glossary
-%style. By default, \cs{glsnamefont} simply displays its argument in
-%whatever the surrounding font happens to be. This means that in the
-%list styles the name will appear in bold, since the name is placed in
-%the optional argument of \cs{item}, whereas in the tabular styles the
-%name will appear in the normal font.
+%formatted according to \cs{glsnamefont} which takes one argument:
+%the entry name. This command is always used regardless of the
+%glossary style. By default, \cs{glsnamefont} simply displays its
+%argument in whatever the surrounding font happens to be. This means
+%that in the list-like glossary styles (defined in the
+%\isty{glossary-list} style file) the name will appear in bold, since
+%the name is placed in the optional argument of \cs{item}, whereas in
+%the tabular styles (defined in the \isty{glossary-long} and
+%\isty{glossary-super} style files) the name will appear in the
+%normal font. The hierarchical glossary styles (defined in the
+%\isty{glossary-tree} style file) also set the name in bold.
%
%For example, suppose you want all the entry names to appear in
%medium weight small caps, then you can do:
@@ -1767,6 +2895,250 @@
%\renewcommand{\glsnamefont}[1]{\textsc{\mdseries #1}}
%\end{verbatim}
%
+%\subsubsection{Xindy}
+%\label{sec:xindy}
+%
+%If you want to use \appname{xindy} to sort the glossary, you
+%must use the package option \pkgopt{xindy}:
+%\begin{verbatim}
+%\usepackage[xindy]{glossaries}
+%\end{verbatim}
+%This ensures that the glossary information is written in
+%\appname{xindy} syntax.
+%
+%Section~\ref{sec:makeglossaries} covers how to use the external
+%indexing application. This section covers the commands provided
+%by the \sty{glossaries} package that allow you to adjust the
+%\appname{xindy} style file (\filetype{.xdy}) and parameters.
+%
+%To assist writing information to the \appname{xindy} style
+%file, the \sty{glossaries} package provides the following
+%commands:\\[10pt]
+%\DescribeMacro{\glsopenbrace}\cs{glsopenbrace}\\
+%\DescribeMacro{\glsclosebrace}\cs{glsclosebrace}\\[10pt]
+%which produce an open and closing brace. (This is needed because
+%\verb|\{| and \verb|\}| don't expand to a simple brace character
+%when written to a file.)
+%
+%In addition, if you are using a package that makes the double
+%quote character active (e.g. \isty{ngerman}) you can use:\\[10pt]
+%\DescribeMacro{\glsquote}\cs{glsquote}\marg{text}\\[10pt]
+%which will produce \verb|"|\meta{text}\verb|"|. Alternatively,
+%you can use \verb|\string"| to write the double-quote character.
+%This document assumes that the double quote character has not been
+%made active, so the examples just use \verb|"| for clarity.
+%
+%If you want greater control over the \appname{xindy} style file than
+%is available through the \LaTeX\ commands provided by the
+%\sty{glossaries} package, you will need to edit the \appname{xindy}
+%style file. In
+%which case, you must use \ics{noist} to prevent the style file from
+%being overwritten by the \sty{glossaries} package. For additional
+%information about \appname{xindy}, read the \appname{xindy}
+%documentation.
+%\paragraph{Language and Encodings}
+%When you use \appname{xindy}, you need to specify the language
+%and encoding used (unless you have written your own custom
+%\appname{xindy} style file that defines the relevant alphabet
+%and sort rules). If you use \appname{makeglossaries},
+%this information is obtained from the document's auxiliary
+%(\filetype{.aux}) file. The \sty{glossaries} package attempts to
+%find the root language, but in the event that it gets it wrong or if
+%\appname{xindy} doesn't support that language, then you can
+%specify the language using:\\[10pt]
+%\DescribeMacro{\GlsSetXdyLanguage}
+%\cs{GlsSetXdyLanguage}\oarg{glossary type}\marg{language}\\[10pt]
+%where \meta{language} is the name of the language. The
+%optional argument can be used if you have multiple glossaries
+%in different languages. If \meta{glossary type} is omitted, it
+%will be applied to all glossaries, otherwise the language
+%setting will only be applied to the glossary given by
+%\meta{glossary type}.
+%
+%If the \isty{inputenc} package is used, the encoding will be
+%obtained from the value of \ics{inputencodingname}.
+%Alternatively, you can specify the encoding using:\\[10pt]
+%\DescribeMacro{\GlsSetXdyCodePage}
+%\cs{GlsSetXdyCodePage}\marg{code}\\[10pt]
+%where \meta{code} is the name of the encoding. For example:
+%\begin{verbatim}
+%\GlsSetXdyCodePage{utf8}
+%\end{verbatim}
+%
+%Note that you can also specify the language and encoding using
+%the package option
+%\verb|xindy={language=|\meta{lang}\verb|,codepage=|\meta{code}\verb|}|.
+%For example:
+%\begin{verbatim}
+%\usepackage[xindy={language=english,codepage=utf8}]{glossaries}
+%\end{verbatim}
+%
+%If you write your own custom \appname{xindy} style file that
+%includes the language settings, you need to set the language
+%to nothing:
+%\begin{verbatim}
+%\GlsSetXdyLanguage{}
+%\end{verbatim}
+%(and remember to use \ics{noist} to prevent the style file from
+%being overwritten).
+%
+%\begin{important}
+%The commands \cs{GlsSetXdyLanguage} and \cs{GlsSetXdyCodePage}
+%have no effect if you don't use \appname{makeglossaries}. If
+%you call \appname{xindy} without \appname{makeglossaries} you
+%need to remember to set the language and encoding using the
+%\texttt{-L} and \texttt{-C} switches.
+%\end{important}
+%
+%\paragraph{Locations and Number lists}
+%
+%The most likely attributes used in the \gloskey[glslink]{format}
+%key (\locfmt{textrm}, \locfmt{hyperrm} etc) are automatically added
+%to the \appname{xindy} style file, but if you want to use another
+%attribute, you need to add it using:\\[10pt]
+%\DescribeMacro{\GlsAddXdyAttribute}
+%\cs{GlsAddXdyAttribute}\marg{name}\\[10pt]
+%where \meta{name} is the name of the attribute, as used in
+%the \gloskey[glslink]{format} key. For example, suppose I want a
+%bold, italic, hyperlinked location. I first need to define a
+%command that will do this:
+%\begin{verbatim}
+%\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+%\end{verbatim}
+%but with \appname{xindy}, I also need to add this as an allowed
+%attribute:
+%\begin{verbatim}
+%\GlsAddXdyAttribute{hyperbfit}
+%\end{verbatim}
+%
+%\begin{important}
+%Note that \cs{GlsAddXdyAttribute} has no effect if \ics{noist} is
+%used or if \ics{makeglossaries} is omitted.
+%
+%\cs{GlsAddXdyAttribute} must be used before \ics{makeglossaries}.
+%\end{important}
+%
+%If the location numbers don't get expanded to a simple Arabic or
+%Roman number or a letter from a, \ldots, z or A, \ldots, Z, then
+%you need to add a location style in the appropriate format.
+%
+%For example, suppose you want the page numbers written as words
+%rather than digits and you use the \isty{fmtcount} package to
+%do this. You can redefine \ics{thepage} as follows:
+%\begin{verbatim}
+%\renewcommand*{\thepage}{\Numberstring{page}}
+%\end{verbatim}
+%This gets expanded to \verb|\protect \Numberstringnum |\marg{n}
+%where \meta{n} is the page number. This means that you need to
+%define a new location that has that form:
+%\begin{verbatim}
+%\GlsAddXdyLocation{Numberstring}{:sep "\string\protect\space
+% \string\Numberstringnum\space\glsopenbrace"
+% "arabic-numbers" :sep "\glsclosebrace"}
+%\end{verbatim}
+%Note that it's necessary to use \cs{space} to indicate that
+%spaces also appear in the format, since, unlike \TeX,
+%\appname{xindy} doesn't ignore spaces after control sequences.
+%
+%\begin{important}
+%Note that \cs{GlsAddXdyLocation} has no effect if \ics{noist} is
+%used or if \ics{makeglossaries} is omitted.
+%
+%\cs{GlsAddXdyLocation} must be used before \ics{makeglossaries}.
+%\end{important}
+%
+%In the \term{number list}, the locations are sorted according to
+%type. The default ordering is:
+%\texttt{roman-page-numbers} (e.g.\ i),
+%\texttt{arabic-page-numbers} (e.g.\ 1),
+%\texttt{arabic-section-numbers} (e.g.\ 1.1 if the compositor
+%is a full stop or 1-1 if the compositor is a hyphen\footnote{see
+%\ics{setCompositor} described in
+%\autoref{sec:newglosentry}}),
+%\texttt{alpha-page-numbers} (e.g.\ a),
+%\texttt{Roman-page-numbers} (e.g.\ I),
+%\texttt{Alpha-page-numbers} (e.g.\ A),
+%\texttt{Appendix-page-numbers} (e.g.\ A.1 if the Alpha compositor
+%is a full stop or A-1 if the Alpha compositor is a
+%hyphen\footnote{see \ics{setAlphaCompositor} described in
+%\autoref{sec:newglosentry}}),
+%user defined location names (as specified by
+%\ics{GlsAddXdyLocation} in the order in which they were defined),
+%\texttt{see} (cross-referenced entries).
+%This ordering can be changed using:\\[10pt]
+%\DescribeMacro{\GlsSetXdyLocationClassOrder}
+%\cs{GlsSetXdyLocationClassOrder}\\[10pt]
+%where each location name is delimited by double quote marks.
+%For example:
+%\begin{verbatim}
+%\GlsSetXdyLocationClassOrder{
+% "arabic-page-numbers"
+% "arabic-section-numbers"
+% "roman-page-numbers"
+% "Roman-page-numbers"
+% "alpha-page-numbers"
+% "Alpha-page-numbers"
+% "Appendix-page-numbers"
+% "see"
+%}
+%\end{verbatim}
+%
+%\begin{important}
+%Note that \cs{GlsSetXdyLocationClassOrder} has no effect if
+%\ics{noist} is used or if \ics{makeglossaries} is omitted.
+%
+%\cs{GlsSetXdyLocationClassOrder} must be used before
+%\ics{makeglossaries}.
+%\end{important}
+%
+%If a \term{number list} consists of a sequence of consecutive
+%numbers, the range will be concatenated. The
+%number of consecutive locations that causes a range formation
+%defaults to 2, but can be changed using:\\[10pt]
+%\DescribeMacro{\GlsSetXdyMinRangeLength}
+%\cs{GlsSetXdyMinRangeLength}\marg{n}\\[10pt]
+%For example:
+%\begin{verbatim}
+%\GlsSetXdyMinRangeLength{3}
+%\end{verbatim}
+%The argument may also be the keyword \texttt{none}, to indicate that
+%there should be no range formations. See the \appname{xindy}
+%manual for further details on range formations.
+%
+%\begin{important}
+%Note that \cs{GlsSetXdyMinRangeLength} has no effect if \ics{noist}
+%is used or if \ics{makeglossaries} is omitted.
+%
+%\cs{GlsSetXdyMinRangeLength} must be used before
+%\ics{makeglossaries}.
+%\end{important}
+%
+%See \autoref{sec:numberlists} for further details.
+%
+%\paragraph{Glossary Groups}
+%The glossary is divided into groups according to the first
+%letter of the sort key. The \sty{glossaries} package also adds
+%a number group by default, unless you suppress it in the
+%\pkgopt{xindy} package option. For example:
+%\begin{verbatim}
+%\usepackage[xindy={glsnumbers=false}]{glossaries}
+%\end{verbatim}
+%Any entry that doesn't go in one of the letter groups or the
+%number group is placed in the default group.
+%
+%If you have a number group, the default behaviour is to locate
+%it before the \dq{A} letter group. If you are not using a
+%Roman alphabet, you can change this using\\[10pt]
+%\cs{GlsSetXdyFirstLetterAfterDigits}\marg{letter}
+%
+%\begin{important}
+%Note that \cs{GlsSetXdyFirstLetterAfterDigits} has no effect if
+%\ics{noist} is used or if \ics{makeglossaries} is omitted.
+%
+%\cs{GlsSetXdyFirstLetterAfterDigits} must be used before
+%\ics{makeglossaries}.
+%\end{important}
+%
%\subsection{Defining New Glossaries}
%
%\DescribeMacro{\newglossary}
@@ -1778,9 +3150,9 @@
%title for this new glossary and the final optional argument
%\meta{counter} specifies which counter to use for the associated number
%lists\iterm{number list} (see also \autoref{sec:numberlists}). The first optional argument specifies the extension for the
-%\appname{makeindex} transcript file (this information is only used by
-%\appname{makeglossaries} which picks up the information from the
-%auxiliary file).
+%\appname{makeindex} or \appname{xindy} transcript file (this
+%information is only used by \appname{makeglossaries} which picks up
+%the information from the auxiliary file).
%
%Note that the main (default) glossary is automatically created as:
%\begin{verbatim}
@@ -1809,7 +3181,7 @@
%\cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrv}\marg{long}\\[10pt]
%By default, this is equivalent to:\vskip5pt
%\begin{ttfamily}\par\noindent
-%\cs{newglossaryentry}\textrm{\marg{label}}\{type=\cs{acronymtype},\\
+%\cs{newglossaryentry}\textrm{\marg{label}}\{type=\ics{acronymtype},\\
%name=\textrm{\marg{abbrv}},\\
%description=\textrm{\marg{long}},\\
%text=\textrm{\marg{abbrv}},\\
@@ -1820,18 +3192,20 @@
%\textrm{\meta{key-val list}}\}\par
%\end{ttfamily}
%\vskip5pt
-%As mentioned in the previous section, the command \cs{acronymtype} is
-%the name of the glossary in which the acronyms should appear. If the
-%\pkgopt{acronym} package option has been used, this will be
-%\texttt{acronym}, otherwise it will be \texttt{main}. The acronyms can
-%then be used in exactly the same way as any other glossary entry.
+%As mentioned in the previous section, the command \ics{acronymtype}
+%is the name of the glossary in which the acronyms should appear. If
+%the \pkgopt{acronym} package option has been used, this will be
+%\texttt{acronym}, otherwise it will be \texttt{main}. The acronyms
+%can then be used in exactly the same way as any other glossary
+%entry.
%
%\begin{important}%
%\textbf{Note:} since \cs{newacronym} sets \verb|type=\acronymtype|,
%if you want to load a file containing acronym definitions using
%\cs{loadglsentries}\oarg{type}\marg{filename}, the optional argument
%\meta{type} will not have an effect unless you explicitly set the
-%type as \verb|type=\glsdefaulttype|. See \autoref{sec:loadglsentries}.\end{important}
+%type as \verb|type=\glsdefaulttype| in the optional argument to
+%\ics{newacronym}. See \autoref{sec:loadglsentries}.\end{important}
%
%For example, the following defines the acronym IDN:
%\begin{verbatim}
@@ -1854,11 +3228,11 @@
%\cs{newacronym}. If you prefer to define all your acronyms using
%\cs{newglossaryentry} explicitly, then you should skip this section
%and ignore the package options: \pkgopt{smallcaps}, \pkgopt{smaller},
-%\pkgopt{description}, \pkgopt{dua}, \pkgopt{footnote} and
-%\pkgopt{shortcuts}, as these options change the
-%definition of \ics{newacronym} for common acronym formats
-%as well as the way that the link text is displayed (see
-%\autoref{sec:glsdisplay}). Likewise you should ignore the new commands described in this section,
+%\pkgopt{description}, \pkgopt{dua} and \pkgopt{footnote}, as these
+%options change the definition of \ics{newacronym} for common acronym
+%formats as well as the way that the link text is displayed (see
+%\autoref{sec:glsdisplay}). Likewise you should ignore the package option \pkgopt{shortcuts}
+%and the new commands described in this section,
%such as \cs{acrshort}, as they vary according to the definition of
%\cs{newacronym}.
%
@@ -1989,6 +3363,12 @@
%optional argument to \cs{gls}, \cs{glspl} or their uppercase
%variants.
%
+%In this case, the long form is stored in the \gloskey{symbol} key.
+%This means that the long form will not be displayed in the list of
+%acronyms unless you use a glossary style that displays the entry's
+%symbol (for example, the \glostyle{index} style). Entries will
+%be sorted according to the short form.
+%
%Note also that when these two package options are used (in the
%given order), the \sty{glossaries} package additionally implements the
%\pkgopt{sanitize} option using
@@ -2003,7 +3383,16 @@
%If the \pkgopt{description} package option is also used, the
%\gloskey{name} key is set to the long form, otherwise the
%\gloskey{name} key is set to the short form and the
-%\gloskey{description} key is set to the long form.
+%\gloskey{description} key is set to the long form. In both
+%cases the \gloskey{symbol} is set to the short form. Therefore,
+%if you use the \pkgopt{description} package option and you want
+%the short form to appear in the list of acronyms, you will need
+%to use a glossary style that displays the entry's symbol (for
+%example, the \glostyle{index} style). Entries will be sorted
+%according to the long form if the \pkgopt{description} option
+%is used, otherwise they will be sorted according to the
+%short form (unless overridden by the \gloskey{sort} key in
+%the optional argument of \ics{newacronym}).
%
%\item[\pkgopt{description}]\mbox{}\par This package option displays the entry on first use as:\\[10pt]
%\meta{long}\meta{insert} (\cs{firstacronymfont}\marg{abbrv})\\[10pt]
@@ -2014,23 +3403,71 @@
%\ipkgopt[symbol]{sanitize}\verb|sanitize={symbol=false}|, so
%remember to protect fragile commands when defining acronyms.
%
+%Note that with this option, you need to specify the description
+%using the \gloskey{description} key in the optional argument
+%of \ics{newacronym}. When this option is used without
+%the \pkgopt{footnote} or \pkgopt{dua} options, the name field
+%is specified as
+%\DescribeMacro{\acrnameformat}\ics{acrnameformat}\marg{short}\marg{long}. This
+%defaults to \ics{acronymfont}\marg{short}, which means that the
+%long form will not appear in the list of acronyms by default.
+%To change this, you need to redefine \ics{acrnameformat} as
+%appropriate. For example, to display the long form followed
+%by the short form in parentheses do:
+%\begin{verbatim}
+%\renewcommand*{\acrnameformat}[2]{#2 (\acronymfont{#1})}
+%\end{verbatim}
+%Note that even if you redefine \ics{acrnameformat}, the
+%entries will be sorted according to the short form, unless you
+%override this using the \gloskey{sort} key in the optional
+%argument to \ics{newacronym}.
+%
%\item[\pkgopt{footnote}]\mbox{}\par This package option displays the entry on first use as:\\[10pt]
%\cs{firstacronymfont}\marg{abbrv}\meta{insert}\cs{footnote}\marg{long}\\[10pt]
%while subsequent use displays the entry as:\\[10pt]
-%\cs{acronymfont}\marg{abbrv}\meta{insert}
+%\cs{acronymfont}\marg{abbrv}\meta{insert}\\[10pt]
+%Acronyms will be sorted according to the short form.
%
%Note also that if this package option is used, the \sty{glossaries}
%package additionally implements the option
%\ipkgopt[description]{sanitize}\verb|sanitize={description=false}|, so
%remember to protect fragile commands when defining acronyms.
%
+%Note that on first use, it is the long form in the footnote that
+%links to the relevant glossary entry (where hyperlinks are enabled),
+%whereas on subsequent use, the acronym links to the relevant
+%glossary entry. It is possible to change this to make the acronym
+%on first use have the hyperlink instead of the footnote, but
+%since the footnote marker will also be a hyperlink, you will
+%have two hyperlinks in immediate succession. This can be
+%ambiguous where the hyperlinks are coloured rather than boxed.
+%The code required to change the first use to make the
+%acronym a hyperlink is as follows:
+%\begin{verbatim}
+% \defglsdisplayfirst[\acronymtype]{%
+% \noexpand\protect\noexpand
+% \glslink[\@gls@link@opts]{\@gls@link@label}{\firstacronymfont{#1}#4}%
+% \noexpand\protect\noexpand\footnote{#2}}%
+%\end{verbatim}
+%\textbf{Note} that this involves using internal commands
+%(i.e.\ commands whose name contains an \verb|@| character), so
+%if this code is place in a \texttt{.tex} file it needs to be
+%placed within a \cs{makeatletter} \ldots\ \cs{makeatother} pair.
+%(See \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=atsigns}
+%for further details.)
+%
%\item[\pkgopt{smallcaps}]\mbox{}\par If neither the \pkgopt{footnote} nor \pkgopt{description} options
%have been set, this option displays the entry on first use as:\\[10pt]
%\meta{long}\meta{insert} (\cs{firstacronymfont}\marg{abbrv})\\[10pt]
%while subsequent use displays the entry as:\\[10pt]
%\cs{acronymfont}\marg{abbrv}\meta{insert}\\[10pt]
-%where \cs{acronymfont} is set to \verb|\textsc{#1}|, so \meta{abbrv}
-%should be specified in lower case.
+%where \cs{acronymfont} is set to \verb|\textsc{#1}|.
+%
+%\begin{important}
+%Note that since the acronym is displayed using \ics{textsc},
+%the short form, \meta{abbrv}, should be specified in lower case.
+%(Recall that "\textsc{abc}" produces \textsc{abc} whereas "\textsc{ABC}" produces \textsc{ABC}.)
+%\end{important}
%
%Note also that if this package option is used, the \sty{glossaries}
%package additionally implements the option
@@ -2043,9 +3480,13 @@
%while subsequent use displays the entry as:\\[10pt]
%\cs{acronymfont}\marg{abbrv}\meta{insert}\\[10pt]
%where \cs{acronymfont} is set to \verb|{\smaller #1}|.
+%The entries will be sorted according to the short form.
%
+%\begin{important}
%Remember to load a package that defines \ics{smaller} (such as
-%\isty{relsize}) if you want to use this option.
+%\isty{relsize}) if you want to use this option, unless you want
+%to redefine \ics{acronymfont} to use some other formatting command.
+%\end{important}
%
%Note also that if this package option is used, the \sty{glossaries}
%package additionally implements the option
@@ -2057,7 +3498,8 @@
%then on first use the entry is displayed as:\\[10pt]
%\meta{long} (\meta{abbrv})\meta{insert}\\[10pt]
%while subsequent use displays the entry as:\\[10pt]
-%\meta{abbrv}\meta{insert}
+%\meta{abbrv}\meta{insert}\\[10pt]
+%Entries will be sorted according to the short form.
%\end{description}
%
%Recall from \autoref{sec:glslink} that you can access the values of individual keys using commands
@@ -2103,7 +3545,7 @@
%
%Note that if you change the definition of \ics{newacronym}, you
%may additionally need to change the above commands as well as
-%the changing way the text is displayed using \ics{defglsdisplay}
+%changing the way the text is displayed using \ics{defglsdisplay}
%and \ics{defglsdisplayfirst}.
%
%The package option \pkgopt{shortcuts} provides the synonyms listed
@@ -2114,7 +3556,7 @@
%produce all upper case text.
%
%\begin{table}[htbp]
-%\caption{Synonyms provided by the package option \pkgopt{shortcuts}}
+%\caption[Synonyms provided by the package option shortcuts]{Synonyms provided by the package option \pkgopt{shortcuts}}
%\label{tab:shortcuts}
%\begin{center}
%\begin{tabular}{ll}
@@ -2164,23 +3606,33 @@
%\subsection{Glossary Styles}
%\label{sec:styles}
%The \sty{glossaries} package comes with some pre-defined
-%glossary styles. These are as follows:
+%glossary styles. Note that the styles are suited to different
+%types of glossaries: some styles ignore the associated
+%symbol; some styles are not designed for hierarchical entries,
+%so they display sub-entries in the same way as they display top
+%level entries; some styles are designed for homographs, so they
+%ignore the name for sub-entries. You should therefore pick a style
+%that suits your type of glossary.
+%The predefined styles are as follows:
+%
%\begin{description}
%\item[list] The \glostyle{list} style uses the \envname{description}
-%environment. The entry name is placed in the optional argument
-%of the \cs{item} command (so it will appear in bold by
-%default). The description follows, and then the associated number
-%list for that entry. Sub groups are separated using \cs{indexspace}.
+%environment. The entry name is placed in the optional argument of
+%the \cs{item} command (so it will appear in bold by default). The
+%description follows, and then the associated \term{number list} for
+%that entry. The symbol is ignored. If the entry has child entries,
+%the description and number list follows (but not the name) for each
+%child entry. Groups are separated using \cs{indexspace}.
%
%\item[listgroup] The \glostyle{listgroup} style is like
%\glostyle{list} but the glossary groups have headings.
%
%\item[listhypergroup] The \glostyle{listhypergroup} style is like
-%\glostyle{listgroup} but has a set of links to the glossary
-%groups. The start of the glossary has a navigation panel to
-%each group that is present in the glossary. This requires an
-%additional run through \LaTeX\ to ensure the group information
-%is up-to-date. In the navigation panel, each group is separated
+%\glostyle{listgroup} but has a navigation line at the start of
+%the glossary with links to each group that is present in the
+%glossary. This requires an additional run through \LaTeX\ to ensure
+%the group information is up-to-date. In the navigation line, each
+%group is separated
%by \DescribeMacro{\glshypernavsep}\cs{glshypernavsep} which
%defaults to a vertical bar with a space on either side. For example,
%to simply have a space separating each group, do:
@@ -2188,21 +3640,24 @@
%\renewcommand*{\glshypernavsep}{\space}
%\end{verbatim}
%
-%Note that the hyper-navigation panel is now (as from version 1.14)
+%Note that the hyper-navigation line is now (as from version 1.14)
%set inside the optional argument to \cs{item} instead of after it
%to prevent a spurious space at the start. This can be changed
%by redefining \ics{glossaryheader}, but note that this needs to
%be done \emph{after} the glossary style has been set.
%
%\item[altlist] The \glostyle{altlist} style is like \glostyle{list}
-%but the description is placed on the following line.
+%but the description starts on the line following the name. (As
+%with the \glostyle{list} style, the symbol is ignored.) Each child
+%entry starts a new line, but as with the \glostyle{list} style,
+%the name associated with each child entry is ignored.
%
%\item[altlistgroup] The \glostyle{altlistgroup} style is like
%\glostyle{altlist} but the glossary groups have headings.
%
%\item[altlisthypergroup] The \glostyle{altlisthypergroup} style is like
%\glostyle{altlistgroup} but has a set of links to the glossary
-%groups. The navigation panel is the same as that for
+%groups. The navigation line is the same as that for
%\glostyle{listhypergroup}, described above.
%
%\item[listdotted] This style uses the \envname{description}
@@ -2211,16 +3666,19 @@
%this style ignores both the \term{number list} and the symbol. The
%length \DescribeMacro{\glslistdottedwidth}\cs{glslistdottedwidth}
%governs where the description should start.\footnote{This style was
-%supplied by Axel~Menzel.}
+%supplied by Axel~Menzel.} This is a flat style, so child
+%entries are formatted in the same way as the parent entries.
%
%\item[long] The \glostyle{long} style uses the \envname{longtable}
%environment (defined by the \isty{longtable} package). It has two
%columns: the first column contains the entry's name and the second
%column contains the description followed by the \term{number list}.
+%The entry's symbol is ignored.
%Sub groups are separated with a blank row. The width of the
%first column is governed by the widest entry in that column. The
%width of the second column is governed by the length
-%\ics{glsdescwidth}.
+%\ics{glsdescwidth}. Child entries have a similar format to the
+%parent entries except that their name is suppressed.
%
%\item[longborder] The \glostyle{longborder} style is like
%\glostyle{long} but has horizontal and vertical lines around it.
@@ -2235,10 +3693,11 @@
%\item[long3col] The \glostyle{long3col} style is like
%\glostyle{long} but has three columns. The first column contains
%the entry's name, the second column contains the description
-%and the third column contains the \term{number list}. The width of the
-%first column is governed by the widest entry in that column. The
+%and the third column contains the \term{number list}.
+%The entry's symbol is ignored. The width of the
+%first column is governed by the widest entry in that column, the
%width of the second column is governed by the length
-%\ics{glsdescwidth}. The width of the third column is governed by the
+%\ics{glsdescwidth}, and the width of the third column is governed by the
%length \ics{glspagelistwidth}.
%
%\item[long3colborder] The \glostyle{long3colborder} style is like
@@ -2256,8 +3715,8 @@
%\glostyle{long3col} but has an additional column in which the
%entry's associated symbol appears. This style is used for brief
%single line descriptions. The column widths are governed by the
-%widest entry in the given column. Use \glostyle{altlong4col} for long
-%descriptions.
+%widest entry in the given column. Use \glostyle{altlong4col} for
+%multi-line descriptions.
%
%\item[long4colborder] The \glostyle{long4colborder} style is like
%the \glostyle{long4col} style but has horizontal and vertical
@@ -2270,12 +3729,12 @@
%like \glostyle{long4colheader} but has horizontal and vertical lines
%around it.
%
-%\item[altlong4col] The \glostyle{altlong4col} style is like
-%\glostyle{long4col} but allows multi-line descriptions and page lists.
-%The width of the description column is governed by the length
-%\ics{glsdescwidth} and the width of the page list column is
-%governed by the length \ics{glspagelistwidth}. The width of the name
-%and symbol columns is governed by the widest entry in the
+%\item[altlong4col] The \glostyle{altlong4col} style is like
+%\glostyle{long4col} but allows multi-line descriptions and page
+%lists. The width of the description column is governed by the
+%length \ics{glsdescwidth} and the width of the page list column is
+%governed by the length \ics{glspagelistwidth}. The widths of the
+%name and symbol columns are governed by the widest entry in the
%given column.
%
%\item[altlong4colborder] The \glostyle{altlong4colborder} style is like
@@ -2294,10 +3753,12 @@
%environment (defined by the \isty{supertabular} package). It has two
%columns: the first column contains the entry's name and the second
%column contains the description followed by the \term{number list}.
+%The entry's symbol is ignored.
%Sub groups are separated with a blank row. The width of the
%first column is governed by the widest entry in that column. The
%width of the second column is governed by the length
-%\ics{glsdescwidth}.
+%\ics{glsdescwidth}. Child entries have a similar format to the
+%parent entries except that their name is suppressed.
%
%\item[superborder] The \glostyle{superborder} style is like
%\glostyle{super} but has horizontal and vertical lines around it.
@@ -2312,7 +3773,8 @@
%\item[super3col] The \glostyle{super3col} style is like
%\glostyle{super} but has three columns. The first column contains
%the entry's name, the second column contains the description
-%and the third column contains the \iterm{number list}. The width of the
+%and the third column contains the \term{number list}. The
+%entry's symbol is ignored. The width of the
%first column is governed by the widest entry in that column. The
%width of the second column is governed by the length
%\ics{glsdescwidth}. The width of the third column is governed by the
@@ -2334,7 +3796,7 @@
%entry's associated symbol appears. This style is designed for
%entries with brief single line descriptions. The column widths are governed by the
%widest entry in the given column. Use \glostyle{altsuper4col}
-%for longer descriptions.
+%for multi-line descriptions.
%
%\item[super4colborder] The \glostyle{super4colborder} style is like
%the \glostyle{super4col} style but has horizontal and vertical
@@ -2368,6 +3830,76 @@
%style is like \glostyle{super4colheaderborder} but allows multi-line
%descriptions and page lists.
%
+%\item[index] The \glostyle{index} style is similar to the
+%way indices are usually formatted in that it has a
+%hierarchical structure up to three levels. The name is typeset in
+%bold, and if the symbol is present it is set in parentheses after
+%the name and before the description. Sub-entries are indented and
+%also include the name, the symbol (if present) and the description.
+%Groups are separated using \ics{indexspace}.
+%
+%\item[indexgroup] The \glostyle{indexgroup} style is similar to
+%the \glostyle{index} style except that each group has a heading.
+%
+%\item[indexhypergroup] The \glostyle{indexhypergroup} style is like
+%\glostyle{indexgroup} but has a set of links to the glossary
+%groups. The navigation line is the same as that for
+%\glostyle{listhypergroup}, described above.
+%
+%\item[tree] The \glostyle{tree} style is similar to the
+%\glostyle{index} style except that it can have arbitrary levels.
+%(Note that \appname{makeindex} is limited to three levels, so
+%you will need to use \appname{xindy} if you want more than
+%three levels.) Each sub-level is indented by
+%\DescribeMacro{\glstreeindent}\cs{glstreeindent}. Note that the
+%name, symbol (if present) and description are placed in the
+%same paragraph block. If you want the name to be apart from the
+%description, use the \glostyle{alttree} style instead. (See below.)
+%
+%\item[treegroup] The \glostyle{treegroup} style is similar to
+%the \glostyle{tree} style except that each group has a heading.
+%
+%\item[treehypergroup] The \glostyle{treehypergroup} style is like
+%\glostyle{treegroup} but has a set of links to the glossary
+%groups. The navigation line is the same as that for
+%\glostyle{listhypergroup}, described above.
+%
+%\item[treenoname] The \glostyle{treenoname} style is like
+%the \glostyle{tree} style except that the name for each sub-entry
+%is ignored.
+%
+%\item[treenonamegroup] The \glostyle{treenonamegroup} style is
+%similar to the \glostyle{treenoname} style except that each group
+%has a heading.
+%
+%\item[treenonamehypergroup] The \glostyle{treenonamehypergroup}
+%style is like \glostyle{treenonamegroup} but has a set of links to
+%the glossary groups. The navigation line is the same as that for
+%\glostyle{listhypergroup}, described above.
+%
+%\item[alttree] The \glostyle{alttree} style is similar to the
+%\glostyle{tree} style except that the indentation for each level
+%is determined by the width of the text specified by\\[10pt]
+%\DescribeMacro{\glssetwidest}\cs{glssetwidest}\oarg{level}\marg{text}\\[10pt]
+%The optional argument \meta{level} indicates the level, where
+%0 indicates the top-most level, 1 indicates the first level
+%sub-entries, etc. If \cs{glssetwidest} hasn't been used for a
+%given sub-level, the level~0 widest text is used instead. If
+%\meta{level} is omitted, 0 is assumed.
+%
+%For each level, the name is placed to the left of the paragraph
+%block containing the symbol (optional) and the description. If the
+%symbol is present, it is placed in parentheses before the
+%description.
+%
+%\item[alttreegroup] The \glostyle{alttreegroup} is like the
+%\glostyle{alttree} style except that each group has a heading.
+%
+%\item[alttreehypergroup] The \glostyle{alttreehypergroup} style is
+%like \glostyle{alttreegroup} but has a set of links to the glossary
+%groups. The navigation line is the same as that for
+%\glostyle{listhypergroup}, described above.
+%
%\end{description}
%
%The glossary style can be set using the \pkgopt{style} package option
@@ -2384,6 +3916,9 @@
%variations) don't use these lengths as they are designed for single
%line entries. Instead you should use the analogous
%\glostyle{altlong4col} and \glostyle{altsuper4col} styles.
+%Note that if you want to explicitly create a line-break within
+%a multi-line description you should use \ics{newline} instead
+%of \verb|\\|.
%
%Note that if you use the \gloskey[printglossary]{style} key in the
%optional argument to \ics{printglossary}, it will override any
@@ -2405,7 +3940,11 @@
%named glossary style (\glostyle{long} in this case). If you want to
%modify the styles, either use \ics{newglossarystyle} (described
%in the next section) or make the modifications after
-%\ics{glossarystyle}.
+%\ics{glossarystyle}, e.g.:
+%\begin{verbatim}
+%\glossarystyle{long}
+%\renewcommand*{\glsgroupskip}{}
+%\end{verbatim}
%
% \changes{1.03}{2007 July 4}{'glspostdescription added}
%All the styles except for the three- and four-column styles and the
@@ -2414,8 +3953,12 @@
%description. This simply displays a full stop by default. To eliminate
%this full stop (or replace it with something else, say a comma) you
%will need to redefine \cs{glspostdescription} before the glossary is
-%displayed.
+%displayed. Alternatively, you can suppress it for a given entry
+%by placing \ics{nopostdesc} in the entry's description.
+%
+%
%\subsection{Defining your own glossary style}
+%\label{sec:newglossarystyle}
%
%If the predefined styles don't fit your requirements, you can
%define your own style using\DescribeMacro{\newglossarystyle}:\\[10pt]
@@ -2454,7 +3997,8 @@
%twenty-eight logical blocks that are determined by the first character
%of the \gloskey{sort} key (or \gloskey{name} key if the \gloskey{sort}
%key is omitted). The sub-divisions are in the following order: symbols,
-%numbers, A, \ldots, Z. Note that the argument to \cs{glsgroupheading}
+%numbers, A, \ldots, Z\@. (This may be different if you use
+%\appname{xindy}.) Note that the argument to \cs{glsgroupheading}
%is a label \emph{not} the group title. The group title can be obtained
%via \cs{glsgetgrouptitle}\marg{label}, and a navigation hypertarget can
%be created using \cs{glsnavhypertarget}\marg{label}. Most of the
@@ -2466,14 +4010,16 @@
%\item[\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}]}
%\end{verbatim}
%See also \cs{glsgroupskip} below. (Note that command definitions within
-%\cs{newglossarystyle} must use \verb|##1| etc instead of \verb|#1| etc.)
+%\cs{newglossarystyle} must use \verb|##1| instead of \verb|#1| etc.)
%
%\item
%\DescribeMacro{\glsgroupskip}
%\cs{glsgroupskip}\par\noindent
%This macro determines what to do after one logical group but before
%the header for the next logical group. The \glostyle{list} glossary
-%style simply redefines \cs{glsgroupskip} to be \cs{indexspace}.
+%style simply redefines \cs{glsgroupskip} to be \cs{indexspace},
+%whereas the tabular-like styles redefine \cs{glsgroupskip} to
+%produce a blank row.
%
%\item
%\DescribeMacro{\glossaryentryfield}
@@ -2520,6 +4066,17 @@
%Therefore, when you define a new glossary style, you don't need
%to worry about whether the user has specified the
%\pkgopt{nonumberlist} package option.
+%
+%\item
+%\DescribeMacro{\glossarysubentryfield}
+%\cs{glossarysubentryfield}\marg{level}\marg{label}\marg{formatted
+%name}\marg{description}\marg{symbol}
+%\marg{number list}\par\noindent
+%This is new to version 1.17, and is used to display sub-entries.
+%The first argument, \meta{level}, indicates the sub-entry level.
+%This must be an integer from 1 (first sub-level) onwards. The
+%remaining arguments are analogous to those for
+%\ics{glossaryentryfield} described above.
%\end{description}
%\subsubsection{Example: creating a completely new style}
%
@@ -2558,8 +4115,13 @@
% \space ##3% the description
% \space [##5]% the number list in square brackets
% }%
+% % set how sub-entries appear:
+% \renewcommand*{\glossarysubentryfield}[6]{%
+% \glossaryentryfield{#2}{#3}{#4}{#5}{#6}}%
% }
%\end{verbatim}
+%Note that this style creates a flat glossary, where sub-entries
+%are displayed in exactly the same way as the top level entries.
%
%\subsubsection{Example: creating a new glossary style based on an
%existing style}
@@ -2584,7 +4146,7 @@
%\section{Mfirstuc Package}
%\label{sec:mfirstuc}
%
-%The \sty{glossaries} package is supplied with the package
+%The \sty{glossaries} bundle is supplied with the package
%\isty{mfirstuc} which provides the command:\\[10pt]
%\DescribeMacro{\makefirstuc}
%\cs{makefirstuc}\marg{stuff}\\[10pt]
@@ -2599,12 +4161,15 @@
%(\ics{MakeUppercase} has been applied to the letter \dq{a} rather
%than \cs{emph}.)
%
-%\item \verb|\makefirstuc{{\'a}bc}| produces {\'A}bc
-%
-%\item \verb|\makefirstuc{\ae bc}| produces \AE bc
+%\item \verb|\makefirstuc{{\'a}bc}| produces \MakeUppercase{\'a}bc
%
-%\item \verb|\makefirstuc{{\ae}bc}| produces {\AE}bc
+%\item \verb|\makefirstuc{\ae bc}| produces \MakeUppercase\ae bc
+%\item \verb|\makefirstuc{{\ae}bc}| produces \MakeUppercase{\ae}bc
+%\item \verb|\makefirstuc{{ä}bc}| produces \MakeUppercase{ä}bc
%\end{itemize}
+%Note that non-Latin or accented characters appearing at the
+%start of the text must be placed in a group (even if you are
+%using the \isty{inputenc} package) due to expansion issues.
%
%\begin{important}
%In version 1.02 of \sty{mfirstuc}, a bug fix resulted in a change
@@ -2620,7 +4185,7 @@
%\makefirstuc{\abc}
%\end{verbatim}
%produces: ABC. This is because the first object in the argument of
-%\cs{makefirstuc} is \cs{abc}, so it does \verb|\MakeUppercase{\abc}|.
+%\cs{makefirstuc} is \cs{abc}, so it does \verb|\MakeUppercase\abc|.
%Whereas:
%\begin{verbatim}
%\newcommand{\abc}{abc}
@@ -2637,8 +4202,8 @@
%produces: Abc.
%
%If you want to use an alternative command to convert to uppercase,
-%for example \cs{MakeTextUppercase}\footnote{defined in the
-%\sty{textcase} package}, you can redefine the internal
+%for example \cs{MakeTextUppercase},\footnote{defined in the
+%\sty{textcase} package} you can redefine the internal
%command \cs{@gls@makefirstuc}. For example:
%\begin{verbatim}
%\renewcommand{\@gls@makefirstuc}[1]{\MakeTextUppercase #1}
@@ -2664,7 +4229,7 @@
% This package requires \LaTeXe.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries}[2008/08/27 v1.16 (NLCT)]
+\ProvidesPackage{glossaries}[2008/12/26 v1.17 (NLCT)]
% \end{macrocode}
% Required packages:
% \begin{macrocode}
@@ -2682,19 +4247,22 @@
% Need to use \cs{new@ifnextchar} instead of \cs{@ifnextchar} in
% commands that have a final optional argument (such as \ics{gls})
% so require \isty{amsgen}.
-% Thanks to Morten~H{\o}gholm for suggesting this. (This has
+% Thanks to Morten~H\o gholm for suggesting this. (This has
% replaced using the \sty{xspace} package.)
% \begin{macrocode}
\RequirePackage{amsgen}
% \end{macrocode}
%
% \subsection{Package Options}\label{sec:pkgopt}
+%\begin{macro}{toc}
% The \pkgopt{toc} package option will add the glossaries
% to the table of contents. This is a boolean key, if the
% value is omitted it is taken to be true.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{toc}[true]{}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{numberline}
%\changes{1.1}{2008 Feb 22}{numberline option added}
% The \pkgopt{numberline} package option adds \cs{numberline} to
% \cs{addcontentsline}. Note that this option only has an effect
@@ -2702,6 +4270,7 @@
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{numberline}[true]{}
% \end{macrocode}
+%\end{macro}
%
% The sectional unit used to start the glossary is stored in
% \cs{@@glossarysec}. If chapters are defined, this
@@ -2713,6 +4282,8 @@
\newcommand*{\@@glossarysec}{chapter}}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{section}
% The \pkgopt{section} key can be used to set the sectional unit.
% If no unit is specified, use \texttt{section} as the default.
% The starred form of the named sectional unit will be used.
@@ -2724,7 +4295,8 @@
subsection,subsubsection,paragraph,subparagraph}[section]{%
\renewcommand*{\@@glossarysec}{#1}}
% \end{macrocode}
-%\changes{1.1}{2008 Feb 22}{numberedsection option added}
+%\end{macro}
+%
% Determine whether or not to use numbered sections.
%\begin{macro}{\@@glossarysecstar}
% \begin{macrocode}
@@ -2743,6 +4315,8 @@ subsection,subsubsection,paragraph,subparagraph}[section]{%
\newcommand*{\glsautoprefix}{}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{numberedsection}
+%\changes{1.1}{2008 Feb 22}{numberedsection package option added}
% \begin{macrocode}
\define@choicekey{glossaries.sty}{numberedsection}[\val\nr]{%
false,nolabel,autolabel}[nolabel]{%
@@ -2757,6 +4331,7 @@ false,nolabel,autolabel}[nolabel]{%
\renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}%
\fi}
% \end{macrocode}
+%\end{macro}
%
% The default glossary style is stored in
% \cs{@glossary@default@style}. This is initialised to
@@ -2768,6 +4343,8 @@ false,nolabel,autolabel}[nolabel]{%
\newcommand*{\@glossary@default@style}{list}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{style}
% The default glossary style can be changed using the \pkgopt{style}
% package option. The value can be the name of any
% defined glossary style. The glossary style is set at the beginning
@@ -2779,6 +4356,7 @@ false,nolabel,autolabel}[nolabel]{%
\define@key{glossaries.sty}{style}{%
\renewcommand*{\@glossary@default@style}{#1}}
% \end{macrocode}
+%\end{macro}
%
% Each entry within a given glossary will have an associated
% number list. By default, this refers to the page numbers on
@@ -2790,6 +4368,7 @@ false,nolabel,autolabel}[nolabel]{%
\newcommand*{\glossaryentrynumbers}[1]{#1}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{nonumberlist}
% Note that the entire number list for a given entry will be
% passed to \cs{glossaryentrynumbers} so any font changes
% will also be applied to the delimiters.
@@ -2800,6 +4379,7 @@ false,nolabel,autolabel}[nolabel]{%
\DeclareOptionX{nonumberlist}{%
\renewcommand*{\glossaryentrynumbers}[1]{}}
% \end{macrocode}
+%\end{macro}
%
% Keep track of the default glossary. This is initialised to
% the main glossary, but can be changed if for some reason
@@ -2824,12 +4404,15 @@ false,nolabel,autolabel}[nolabel]{%
\newcommand{\acronymtype}{\glsdefaulttype}
% \end{macrocode}
%\end{macro}
+%
+%\begin{macro}{acronym}
% The \pkgopt{acronym} option sets an associated conditional
% which is used in \autoref{sec:acronym} to determine whether
% or not to define a separate glossary for acronyms.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{acronym}[true]{}
% \end{macrocode}
+%\end{macro}
%
% The default counter associated with the numbers in the glossary
% is stored in \cs{glscounter}. This is initialised to the
@@ -2842,12 +4425,14 @@ false,nolabel,autolabel}[nolabel]{%
\newcommand{\glscounter}{page}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{counter}
% The \pkgopt{counter} option changes the default counter. (This
% just redefines \cs{glscounter}.)
% \begin{macrocode}
\define@key{glossaries.sty}{counter}{%
\renewcommand*{\glscounter}{#1}}
% \end{macrocode}
+%\end{macro}
%
% The glossary keys whose values are written to another file (i.e.\
% \gloskey{sort}, \gloskey{name}, \gloskey{description} and
@@ -2892,8 +4477,8 @@ false,nolabel,autolabel}[nolabel]{%
% \end{macrocode}
%\end{macro}
% (There is no equivalent for the \gloskey{sort} key, since that
-% is only provided for the benefit of \appname{makeindex}, and
-% so will always be sanitized.)
+% is only provided for the benefit of \appname{makeindex} or
+% \appname{xindy}, and so will always be sanitized.)
%
% Before defining the \pkgopt{sanitize} package option, The
% key-value list for the \pkgopt{sanitize} value needs to be defined.
@@ -2931,6 +4516,8 @@ false,nolabel,autolabel}[nolabel]{%
\renewcommand*{\@gls@sanitizesymbol}{}%
\fi}
% \end{macrocode}
+%
+%\begin{macro}{sanitize}
% Now define the \pkgopt{sanitize} option. It can either take
% a key-val list as its value, or it can take the keyword
% \texttt{none}, which is equivalent to \texttt{description=false,
@@ -2945,18 +4532,23 @@ name=true]{%
}{\setkeys[gls]{sanitize}{#1}}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{translate}
%\changes{1.1}{2008 Feb 22}{translate option added}
% Define \pkgopt{translate} option. If false don't set up
% multi-lingual support.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[gls]{translate}[true]{}
% \end{macrocode}
+%\end{macro}
% Set the default value:
% \begin{macrocode}
\glstranslatefalse
\@ifpackageloaded{translator}{\glstranslatetrue}{%
\@ifpackageloaded{babel}{\glstranslatetrue}{}}
% \end{macrocode}
+%
+%\begin{macro}{footnote}
% Set the long form of the acronym in footnote on first use.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
@@ -2964,6 +4556,8 @@ name=true]{%
{\renewcommand*{\@gls@sanitizedesc}{}}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{description}
% Allow acronyms to have a description (needs to be set using
% the \gloskey{description} key in the optional argument of
% \ics{newacronym}).
@@ -2972,12 +4566,16 @@ name=true]{%
\renewcommand*{\@gls@sanitizesymbol}{}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{smallcaps}
% Define \ics{newacronym} to set the short form in small capitals.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
\renewcommand*{\@gls@sanitizesymbol}{}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{smaller}
% Define \ics{newacronym} to set the short form using \cs{smaller}
% which obviously needs to be defined by loading the appropriate
% package.
@@ -2986,6 +4584,8 @@ name=true]{%
\renewcommand*{\@gls@sanitizesymbol}{}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{dua}
% Define \ics{newacronym} to always use the long forms
% (i.e.\ don't use acronyms)
% \begin{macrocode}
@@ -2993,11 +4593,104 @@ name=true]{%
\renewcommand*{\@gls@sanitizesymbol}{}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{shotcuts}
% Define acronym shortcuts.
% \begin{macrocode}
\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsorder}
+% Stores the glossary ordering. This may either be \dq{word}
+% or \dq{letter}. This passes the relevant information to
+% \appname{makeglossaries}. The default is word ordering.
+% \begin{macrocode}
+\newcommand*{\glsorder}{word}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsorder}
+% The ordering information is written to the auxiliary file
+% for \appname{makeglossaries}, so ignore the auxiliary
+% information.
+% \begin{macrocode}
+\newcommand*{\@glsorder}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{order}
+%\changes{1.17}{2008 December 26}{order package option added}
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{order}{word,letter}{%
+ \def\glsorder{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.17}{2008 December 26}{added xindy support}
+%\begin{macro}{\ifglsxindy}
+%\changes{1.17}{2008 December 26}{new}
+% Provide boolean to determine whether \appname{xindy} or
+% \appname{makeindex} will be used to sort the glossaries.
+% \begin{macrocode}
+\newif\ifglsxindy
+% \end{macrocode}
+%\end{macro}
+% The default is \appname{makeindex}:
+% \begin{macrocode}
+\glsxindyfalse
+% \end{macrocode}
+%
+% Define package option to specify that \appname{makeindex} will
+% be used to sort the glossaries:
+% \begin{macrocode}
+\DeclareOptionX{makeindex}{\glsxindyfalse}
+% \end{macrocode}
+%
+% The \pkgopt{xindy} package option may have a value which in
+% turn can be a key=value list. First define the keys for this
+% sub-list. The boolean "glsnumbers" determines whether to
+% automatically add the \texttt{glsnumbers} letter group.
+% \begin{macrocode}
+\define@boolkey[gls]{xindy}{glsnumbers}[true]{}
+\gls@xindy@glsnumberstrue
+% \end{macrocode}
+%
+%\begin{macro}{\@xdy@main@language}
+% Define what language to use for each glossary type (if a
+% language is not defined for a particular glossary type
+% the language specified for the main glossary is used.)
+% \begin{macrocode}
+\def\@xdy@main@language{\rootlanguagename}%
+% \end{macrocode}
+%\end{macro}
+% Define key to set the language
+% \begin{macrocode}
+\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\gls@codepage}
+% Define the code page. If \ics{inputencodingname} is defined
+% use that, otherwise have initialise with no codepage.
+% \begin{macrocode}
+\@ifundefined{inputencodingname}{%
+ \def\gls@codepage{}}{%
+ \def\gls@codepage{\inputencodingname}
+}
+% \end{macrocode}
+% Define a key to set the code page.
+% \begin{macrocode}
+\define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}}
+% \end{macrocode}
+%\end{macro}
%
+% Define package option to specify that \appname{xindy} will be
+% used to sort the glossaries:
+% \begin{macrocode}
+\define@key{glossaries.sty}{xindy}[]{%
+ \glsxindytrue
+ \setkeys[gls]{xindy}{#1}%
+}
+% \end{macrocode}
%
% Process package options:
% \begin{macrocode}
@@ -3025,6 +4718,47 @@ name=true]{%
\@ifundefined{hyperdef}{}{\hyperdef{section}{\thesection}{}}}}}{}
% \end{macrocode}
%
+%\begin{macro}{\@gls@onlypremakeg}
+% Some commands only have an effect when used before
+% \ics{makeglossaries}. So define a list of commands that
+% should be disabled after \ics{makeglossaries}
+% \begin{macrocode}
+\newcommand*{\@gls@onlypremakeg}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@onlypremakeg}
+% Adds the specified control sequence to the list of commands that
+% must be disabled after \ics{makeglossaries}.
+% \begin{macrocode}
+\newcommand*{\@onlypremakeg}[1]{%
+\ifx\@gls@onlypremakeg\@empty
+ \def\@gls@onlypremakeg{#1}%
+\else
+ \expandafter\toks@\expandafter{\@gls@onlypremakeg}%
+ \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}%
+\fi}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disable@onlypremakeg}
+% Disable all commands listed in \cs{@gls@onlypremakeg}
+% \begin{macrocode}
+\newcommand*{\@disable@onlypremakeg}{%
+\@for\@thiscs:=\@gls@onlypremakeg\do{%
+ \expandafter\@disable@premakecs\@thiscs%
+}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disable@premakecs}
+% Disables the given command.
+% \begin{macrocode}
+\newcommand*{\@disable@premakecs}[1]{%
+ \def#1{\PackageError{glossaries}{\string#1\space may only be
+ used before \string\makeglossaries}{You can't use
+ \string#1\space after \string\makeglossaries}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\subsection{Default values}\label{sec:predefinednames}
% This section sets up default values that are used by this
% package. Some of the names may already be defined (e.g.\ by
@@ -3096,6 +4830,16 @@ name=true]{%
\newcommand*{\glspluralsuffix}{s}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\seename}
+% \begin{macrocode}
+\providecommand*{\seename}{see}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\andname}
+% \begin{macrocode}
+\providecommand*{\andname}{\&}
+% \end{macrocode}
+%\end{macro}
% Add multi-lingual support\changes{1.08}{2007 Oct 13}{Added
% babel support}. Thanks to everyone who contributed to the
% translations from both comp.text.tex and via email.
@@ -3131,29 +4875,80 @@ name=true]{%
\@ifpackageloaded{babel}{\RequirePackage{glossaries-babel}}{}}
\fi
% \end{macrocode}
+%\begin{macro}{\glspostdescription}
% The description terminator is given by \cs{glspostdescription}
% (except for the 3 and 4 column styles). This is a full stop
% by default:
-%\begin{macro}{\glspostdescription}
% \begin{macrocode}
\newcommand*{\glspostdescription}{.}
% \end{macrocode}
%\end{macro}
%
-% The name of the \appname{makeindex} style file is given by
-% \cs{istfilename}. This file is
+%\begin{macro}{\nopostdesc}
+% Provide a means to suppress description terminator for a given
+% entry. (Useful for entries with no description.) Has no
+% effect outside the glossaries.
+%\changes{1.17}{2008 December 26}{new}
+% \begin{macrocode}
+\newcommand*{\nopostdesc}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@nopostdesc}
+% Suppress next description terminator.
+% \begin{macrocode}
+\newcommand*{\@nopostdesc}{%
+ \let\org@glspostdescription\glspostdescription
+ \def\glspostdescription{%
+ \let\glspostdescription\org@glspostdescription}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glspar}
+% Provide means of having a paragraph break in glossary entries
+% \begin{macrocode}
+\newcommand{\glspar}{\par}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setStyleFile}
+% Sets the style file. The relevent extension is appended.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand{\setStyleFile}[1]{%
+ \renewcommand{\istfilename}{#1.xdy}}
+\else
+ \newcommand{\setStyleFile}[1]{%
+ \renewcommand{\istfilename}{#1.ist}}
+\fi
+% \end{macrocode}
+% This command only has an effect prior to using
+% \ics{makeglossaries}.
+% \begin{macrocode}
+\@onlypremakeg\setStyleFile
+% \end{macrocode}
+%\end{macro}
+%
+% The name of the \appname{makeindex} or \appname{xindy} style file
+% is given by \cs{istfilename}. This file is
% created by \ics{writeist} (which is used by
% \ics{makeglossaries}) so
% redefining this command will only have an effect if it is
-% done \emph{before} the \filetype{.ist} file is created.
+% done \emph{before} \cs{makeglossaries}. As from v1.17, use
+% \ics{setStyleFile} instead of directly redefining \cs{istfilename}.
%\begin{macro}{\istfilename}
+%\changes{1.17}{2008 December 26}{added xindy support}
% \begin{macrocode}
-\providecommand*{\istfilename}{\jobname.ist}
+\ifglsxindy
+ \def\istfilename{\jobname.xdy}
+\else
+ \def\istfilename{\jobname.ist}
+\fi
% \end{macrocode}
%\end{macro}
% The \appname{makeglossaries} Perl script picks up this name
-% from the auxiliary file and passes it to \appname{makeindex}
-% using the \texttt{-s} option. Since its not required by
+% from the auxiliary file. If the name ends with \filetype{.xdy}
+% it calls \appname{xindy} otherwise it calls \appname{makeindex}.
+% Since its not required by
% \LaTeX, \cs{@istfilename} ignores its argument.
%\begin{macro}{\@istfilename}
% \begin{macrocode}
@@ -3164,16 +4959,99 @@ name=true]{%
% This command is the value of the \istkey{page\_compositor}
% \appname{makeindex} key. Again, any redefinition of this command
% must take place \emph{before} \cs{writeist} otherwise it
-% will have no effect.
+% will have no effect. As from 1.17, use \ics{glsSetCompositor}
+% instead of directly redefining \cs{glscompositor}.
%\begin{macro}{\glscompositor}
% \begin{macrocode}
-\newcommand{\glscompositor}{.}
+\newcommand*{\glscompositor}{.}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glsSetCompositor}
+% Sets the compositor.
+% \begin{macrocode}
+\newcommand*{\glsSetCompositor}[1]{%
+ \renewcommand*{\glscompositor}{#1}}
+% \end{macrocode}
+% Only use before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetCompositor
+% \end{macrocode}
+%\end{macro}
+%
% (The page compositor is usually defined as a dash when using
% \appname{makeindex}, but most of the standard counters used
% by \LaTeX\ use a full stop as the compositor, which is why I
-% have used it as the default.)
+% have used it as the default.) If \appname{xindy} is used
+% \cs{glscompositor} only affects the \texttt{arabic-page-numbers}
+% location class.
+%\begin{macro}{\@glsAlphacompositor}
+% This is only used by \appname{xindy}. It specifies the
+% compositor to use when location numbers are in the form
+% \meta{letter}\meta{compositor}\meta{number}. For example,
+% if \cs{@glsAlphacompositor} is set to ``.'' then it allows
+% locations such as A.1 whereas if \cs{@glsAlphacompositor} is
+% set to ``-'' then it allows locations such as A-1.
+% \begin{macrocode}
+\newcommand*{\@glsAlphacompositor}{\glscompositor}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsSetAlphaCompositor}
+% Sets the alpha compositor.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \renewcommand*\@glsAlphacompositor{#1}}
+\else
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \glsnoxindywarning\glsSetAlphaCompositor}
+\fi
+% \end{macrocode}
+% Can only be used before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetAlphaCompositor
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@suffixF}
+%\changes{1.17}{2008 December 26}{new}
+% Suffix to use for a two page list. This overrides the separator
+% and the closing page number if set to something other than
+% an empty macro.
+% \begin{macrocode}
+\newcommand*{\gls@suffixF}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsSetSuffixF}
+%\changes{1.17}{2008 December 26}{new}
+% Sets the suffix to use for a two page list.
+% \begin{macrocode}
+\newcommand*{\glsSetSuffixF}[1]{%
+ \renewcommand*{\gls@suffixF}{#1}}
+% \end{macrocode}
+% Only has an effect when used before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetSuffixF
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@suffixFF}
+%\changes{1.17}{2008 December 26}{new}
+% Suffix to use for a three page list. This overrides the separator
+% and the closing page number if set to something other than
+% an empty macro.
+% \begin{macrocode}
+\newcommand*{\gls@suffixFF}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsSetSuffixFF}
+%\changes{1.17}{2008 December 26}{new}
+% Sets the suffix to use for a three page list.
+% \begin{macrocode}
+\newcommand*{\glsSetSuffixFF}[1]{%
+ \renewcommand*{\gls@suffixFF}{#1}}
+% \end{macrocode}
+%\end{macro}
%
% The command \cs{glsnumberformat} indicates the default
% format for the page numbers in the glossary. (Note that this
@@ -3189,6 +5067,7 @@ name=true]{%
\newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}}
% \end{macrocode}
%\end{macro}
+%
% Individual numbers in an entry's associated number list are
% delimited using \cs{delimN} (which corresponds to the
% \istkey{delim\_n} \appname{makeindex} keyword). The default value
@@ -3346,6 +5225,419 @@ name=true]{%
% \end{macrocode}
%\end{macro}
%
+%\subsection{Xindy}
+% This section defines commands that only have an effect if
+% \appname{xindy} is used to sort the glossaries.
+%\begin{macro}{\glsnoxindywarning}
+% Issues a warning if \appname{xindy} hasn't been specified.
+% These warnings can be suppressed by redefining
+% \cs{glsnoxindywarning} to ignore its argument
+% \begin{macrocode}
+\newcommand*{\glsnoxindywarning}[1]{%
+ \PackageWarning{glossaries}{Not in xindy mode --- ignoring
+ \string#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyattributes}
+% Define list of attributes (\cs{string} is used in case
+% the double quote character has been made active)
+% \begin{macrocode}
+\ifglsxindy
+ \edef\@xdyattributes{\string"default\string"}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@xdylocref}
+% Define list of markup location references.
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdylocref{}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddXdyAttribute}
+% Adds an attribute.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\string~n\string\setentrycounter
+ {\noexpand\glscounter}%
+ \expandafter\string\csname#1\endcsname
+ \expandafter\@gobble\string\{\string" ^^J
+ :close \string"\expandafter\@gobble\string\}\string" ^^J
+ :attr \string"#1\string")}}
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+ \@onlypremakeg\GlsAddXdyAttribute
+\else
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute}
+\fi
+% \end{macrocode}
+%\end{macro}
+% Add known attributes:
+% \begin{macrocode}
+\ifglsxindy
+ \GlsAddXdyAttribute{glsnumberformat}
+ \GlsAddXdyAttribute{textrm}
+ \GlsAddXdyAttribute{textsf}
+ \GlsAddXdyAttribute{texttt}
+ \GlsAddXdyAttribute{textbf}
+ \GlsAddXdyAttribute{textmd}
+ \GlsAddXdyAttribute{textit}
+ \GlsAddXdyAttribute{textup}
+ \GlsAddXdyAttribute{textsl}
+ \GlsAddXdyAttribute{textsc}
+ \GlsAddXdyAttribute{emph}
+ \GlsAddXdyAttribute{glshypernumber}
+ \GlsAddXdyAttribute{hyperrm}
+ \GlsAddXdyAttribute{hypersf}
+ \GlsAddXdyAttribute{hypertt}
+ \GlsAddXdyAttribute{hyperbf}
+ \GlsAddXdyAttribute{hypermd}
+ \GlsAddXdyAttribute{hyperit}
+ \GlsAddXdyAttribute{hyperup}
+ \GlsAddXdyAttribute{hypersl}
+ \GlsAddXdyAttribute{hypersc}
+ \GlsAddXdyAttribute{hyperemph}
+\fi
+% \end{macrocode}
+%
+%\begin{macro}{\@xdyuseralphabets}
+% List of additional alphabets
+% \begin{macrocode}
+\def\@xdyuseralphabets{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddXdyAlphabet}
+% \cs{GlsAddXdyAlphabet}\marg{name}\marg{definition}
+% adds a new alphabet called \meta{name}. The definition
+% must use \appname{xindy} syntax.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \edef\@xdyuseralphabets{%
+ \@xdyuseralphabets ^^J
+ (define-alphabet "#1" (#2))}}
+\else
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \glsnoxindywarning\GlsAddXdyAlphabet}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyuserlocationdefs}
+% List of additional location definitions
+% (separated by "^^J")
+% \begin{macrocode}
+\def\@xdyuserlocationdefs{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@xdyuserlocationnames}
+% List of additional user location names
+% \begin{macrocode}
+\def\@xdyuserlocationnames{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddXdyLocation}
+% \cs{GlsAddXdyLocation}\marg{name}\marg{definition}
+% Define a new location called \meta{name}. The definition
+% must use \appname{xindy} syntax. (Note that this doesn't
+% check to see if the location is already defined. That is left
+% to \appname{xindy} to complain about.)
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyLocation}[2]{%
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#1\string"^^J\space\space
+ \space(#2))
+ }%
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#1\string"}%
+ }
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+ \@onlypremakeg\GlsAddXdyLocation
+\else
+ \newcommand*{\GlsAddXdyLocation}[2]{%
+ \glsnoxindywarning\GlsAddXdyLocation}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylocationclassorder}
+% Define location class order
+% \begin{macrocode}
+\ifglsxindy
+ \edef\@xdylocationclassorder{^^J\space\space\space
+ \string"roman-page-numbers\string"^^J\space\space\space
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ \string"Appendix-page-numbers\string"
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"see\string"
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+% Change the location order.
+%\begin{macro}{\GlsSetXdyLocationClassOrder}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \def\@xdylocationclassorder{#1}}
+\else
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \glsnoxindywarning\GlsSetXdyLocationClassOrder}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdysortrules}
+% Define sort rules
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdysortrules{}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddSortRule}
+% Add a sort rule
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsAddSortRule[2]{%
+ \expandafter\toks@\expandafter{\@xdysortrules}%
+ \protected@edef\@xdysortrules{\the\toks@ ^^J
+ (sort-rule \string"#1\string" \string"#2\string")}%
+ }
+\else
+ \newcommand*\GlsAddSortRule[2]{%
+ \glsnoxindywarning\GlsAddSortRule}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyrequiredstyles}
+% Define list of required styles (this should be a comma-separated
+% list of \appname{xindy} styles)
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdyrequiredstyles{tex}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddXdyStyle}
+% Add a \appname{xindy} style to the list of required styles
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}%
+\else
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \glsnoxindywarning\GlsAddXdyStyle}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyStyles}
+% Reset the list of required styles
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \edef\@xdyrequiredstyles{#1}}
+\else
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \glsnoxindywarning\GlsSetXdyStyles}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\findrootlanguage}
+% The root language name is required by \appname{xindy}. This
+% information is for \appname{makeglossaries} to pass to
+% \appname{xindy}. Since \ics{languagename} only stores the
+% regional dialect rather than the root language name, some
+% trickery is required to determine the root language.
+% \begin{macrocode}
+\ifglsxindy
+ \@ifpackageloaded{babel}{%
+% \end{macrocode}
+% Need to parse \texttt{babel.sty} to determine the root language.
+% This code was provided by Enrico~Gregorio.
+% \begin{macrocode}
+ \def\findrootlanguage{\begingroup
+ \escapechar=-1\relax
+% \end{macrocode}
+% normalize \cs{languagename} to category 12 chars
+% \begin{macrocode}
+ \edef\languagename{%
+ \expandafter\string\csname\languagename\endcsname}%
+% \end{macrocode}
+% disable \texttt{babel.sty} useless commands
+% \begin{macrocode}
+ \def\NeedsTeXFormat##1[##2]{}%
+ \def\ProvidesPackage##1[##2]{}%
+ \let\LdfInit\relax
+ \def\languageattribute##1##2{}%
+% \end{macrocode}
+% change the meaning of \cs{DeclareOption}
+% \begin{macrocode}
+ \def\DeclareOption##1##2{%
+% \end{macrocode}
+% at \cs{DeclareOption*} we end
+% \begin{macrocode}
+ \ifx##1*\expandafter\endinput\else
+% \end{macrocode}
+% else we build a string with the first argument
+% \begin{macrocode}
+ \edef\testlanguage{\expandafter\string\csname##1\endcsname}%
+% \end{macrocode}
+% if \cs{testlanguage} and \cs{languagename} are the same
+% we execute the second argument
+% \begin{macrocode}
+ \ifx\testlanguage\languagename##2\fi
+ \fi}
+% \end{macrocode}
+% almost all options of babel are \cs{input}"{"\meta{name}".ldf}"
+% \begin{macrocode}
+ \def\input##1{\stripldf##1}%
+% \end{macrocode}
+% we put the root language name in \ics{rootlanguagename}
+% \begin{macrocode}
+ \def\stripldf##1.ldf{\gdef\rootlanguagename{##1}}%
+% \end{macrocode}
+% now input babel.sty, using the primitive \cs{input}
+% \begin{macrocode}
+ \@@input babel.sty
+ \endgroup}%
+ }{%
+% \end{macrocode}
+% \isty{babel} hasn't been loaded, so check if \isty{ngerman} has
+% been loaded
+% \begin{macrocode}
+ \@ifpackageloaded{ngerman}{%
+ \def\findrootlanguage{%
+ \def\rootlanguagename{german}}%
+ }{%
+% \end{macrocode}
+% Neither \sty{babel} nor \sty{ngerman} have been loaded, so
+% assume the root language is English
+% \begin{macrocode}
+ \def\findrootlanguage{%
+ \def\rootlanguagename{english}}%
+ }%
+ }%
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\rootlanguagename}
+% Set default root language to English.
+% \begin{macrocode}
+\def\rootlanguagename{english}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylanguage}
+% The \appname{xindy} language setting is required by
+% \appname{makeglossaries}, so provide a command for
+% \appname{makeglossaries} to pick up the information
+% from the auxiliary file. This command is not needed by the
+% \sty{glossaries} package, so define it to ignore its arguments.
+% \begin{macrocode}
+\def\@xdylanguage#1#2{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetXdyLanguage}
+% Define a command that allows the user to set the language
+% for a given glossary type. The first argument indicates the
+% glossary type. If omitted the main glossary is assumed.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{%
+ \ifglossaryexists{#1}{%
+ \expandafter\def\csname @xdy@#1@language\endcsname{#2}%
+ }{%
+ \PackageError{glossaries}{Can't set language type for
+ glossary type `#1' --- no such glossary}{%
+ You have specified a glossary type that doesn't exist}}}
+\else
+ \newcommand*\GlsSetXdyLanguage[2][]{%
+ \glsnoxindywarning\GlsSetXdyLanguage}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@codepage}
+% The \appname{xindy} codepage setting is required by
+% \appname{makeglossaries}, so provide a command for
+% \appname{makeglossaries} to pick up the information
+% from the auxiliary file. This command is not needed by the
+% \sty{glossaries} package, so define it to ignore its arguments.
+% \begin{macrocode}
+\def\@gls@codepage#1#2{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetXdyCodePage}
+% Define command to set the code page.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \renewcommand*{\gls@codepage}{#1}%
+ }
+\else
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \glsnoxindywarning\GlsSetXdyCodePage}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylettergroups}
+% Store letter group definitions.
+% \begin{macrocode}
+\ifglsxindy
+ \ifgls@xindy@glsnumbers
+ \def\@xdylettergroups{(define-letter-group
+ \string"glsnumbers\string"^^J\space\space\space
+ :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")^^J\space\space\space
+ :before \string"\@glsfirstletter\string")}
+ \else
+ \def\@xdylettergroups{}
+ \fi
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddLetterGroup}
+% Add a new letter group. The first argument is the name
+% of the letter group. The second argument is the \appname{xindy}
+% code specifying prefixes and ordering.
+% \begin{macrocode}
+ \newcommand*\GlsAddLetterGroup[2]{%
+ \expandafter\toks@\expandafter{\@xdylettergroups}%
+ \protected@edef\@xdylettergroups{\the\toks@^^J%
+ (define-letter-group \string"#1\string"^^J\space\space\space#2)}%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
%\subsection{Loops and conditionals}
% To iterate through all glossaries (or comma-separated list of
% glossary names given in optional argument) use:\\[10pt]
@@ -3516,10 +5808,14 @@ exists}%
\@ifnextchar[{\@gls@setcounter{#2}}{\@gls@setcounter{#2}[\glscounter]}}}
% \end{macrocode}
%\end{macro}
-% Only defined new glossaries in the preamble:
+% Only define new glossaries in the preamble:
% \begin{macrocode}
\@onlypreamble{\newglossary}
% \end{macrocode}
+% Only define new glossaries before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\newglossary
+% \end{macrocode}
%\cs{@newglossary} is used to specify the file extensions
% for the \appname{makeindex} input, output and transcript files.
% It is written to the auxiliary file by \ics{newglossary}.
@@ -3693,6 +5989,48 @@ called `#1'}{The counter key should have the name of a valid
counter as its value}}{%
\def\@glo@counter{#1}}}
% \end{macrocode}
+% The \gloskey{see} key specifies a list of cross-references
+% \begin{macrocode}
+\define@key{glossentry}{see}{%
+\def\@glo@see{#1}}
+% \end{macrocode}
+% The \gloskey{parent} key specifies the parent entry, if
+% required.
+% \begin{macrocode}
+\define@key{glossentry}{parent}{%
+\def\@glo@parent{#1}}
+% \end{macrocode}
+% The \gloskey{nonumberlist} key suppresses the number list
+% for the given entry.
+% \begin{macrocode}
+\define@key{glossentry}{nonumberlist}[none]{%
+\def\@glo@prefix{\glsnonextpages}}
+% \end{macrocode}
+%
+%\begin{macro}{\@glsnoname}
+% \changes{1.17}{2008 December 26}{new}
+% Define command to generate error if \gloskey{name} key is missing.
+% \begin{macrocode}
+\newcommand*{\@glsnoname}{%
+ \PackageError{glossaries}{name key required in
+ \string\newglossaryentry\space for entry `\@glo@label'}{You
+ haven't specified the entry name}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsdefaultplural}
+% Define command to set default plural.
+% \changes{1.17}{2008 December 26}{new}
+% \begin{macrocode}
+\newcommand*{\@glsdefaultplural}{\@glo@text\glspluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@level}
+% Register to increment entry levels.
+% \begin{macrocode}
+\newcount\gls@level
+% \end{macrocode}
+%\end{macro}
%
% Define \cs{newglossaryentry}%
% \marg{label} \marg{key-val list}.
@@ -3707,15 +6045,18 @@ counter as its value}}{%
% \begin{macrocode}
\glsdoifnoexists{#1}{%
% \end{macrocode}
+% Store label
+% \begin{macrocode}
+\def\@glo@label{#1}%
+% \end{macrocode}
% Set up defaults. If the \gloskey{name} or \gloskey{description}
% keys are omitted, an error will be generated.
-%\changes{1.05}{2007 Aug 10}{Changed the default value of the sort
-% key to just the value of the name key}%
+% \begin{macrocode}
+\let\@glo@name\@glsnoname
+% \end{macrocode}
%\changes{1.08}{2007 Oct 13}{Fixed error message to say ``description
%key'' rather than ``desc key''}
% \begin{macrocode}
-\def\@glo@name{\PackageError{glossaries}{name key required in
-\string\newglossaryentry}{You haven't specified the entry name}}%
\def\@glo@desc{\PackageError{glossaries}{description key required in
\string\newglossaryentry}{You haven't specified the entry description}}%
% \end{macrocode}
@@ -3733,7 +6074,9 @@ counter as its value}}{%
% \end{macrocode}
% \begin{macrocode}
\def\@glo@text{\@glo@name}%
-\def\@glo@plural{\@glo@text\glspluralsuffix}%
+% \end{macrocode}
+% \begin{macrocode}
+\let\@glo@plural\@glsdefaultplural
% \end{macrocode}
% \changes{1.13}{2008 May 10}{Changed default first value}
% Using \cs{let} instead of \cs{def} to make later comparison
@@ -3749,10 +6092,24 @@ counter as its value}}{%
% \begin{macrocode}
\let\@glo@firstplural\relax
% \end{macrocode}
+%\changes{1.05}{2007 Aug 10}{Changed the default value of the sort
+% key to just the value of the name key}%
% \begin{macrocode}
\def\@glo@sort{\@glo@name}%
\def\@glo@counter{\@gls@getcounter{\@glo@type}}%
% \end{macrocode}
+%\changes{1.17}{2008 December 26}{added see key}
+% \begin{macrocode}
+\def\@glo@see{}%
+% \end{macrocode}
+%\changes{1.17}{2008 December 26}{added parent key}
+% \begin{macrocode}
+\def\@glo@parent{}%
+% \end{macrocode}
+%\changes{1.17}{2008 December 26}{added nonumberlist key}
+% \begin{macrocode}
+\def\@glo@prefix{}%
+% \end{macrocode}
% Extract key-val information from third parameter:
% \begin{macrocode}
\setkeys{glossentry}{#2}%
@@ -3768,6 +6125,72 @@ in it}}{%
\expandafter\xdef\csname glolist@\@glo@type\endcsname{\@glolist@{#1},}%
}%
% \end{macrocode}
+% Initialise level to 0.
+% \begin{macrocode}
+\gls@level=0\relax
+% \end{macrocode}
+% Has this entry been assigned a parent?
+% \begin{macrocode}
+\ifx\@glo@parent\@empty
+% \end{macrocode}
+% Doesn't have a parent. Set \cs{glo@}\meta{label}"@parent" to
+% empty.
+% \begin{macrocode}
+ \expandafter\gdef\csname glo@#1@parent\endcsname{}%
+\else
+% \end{macrocode}
+% Has a parent. Check to ensure this entry isn't its own parent.
+% \begin{macrocode}
+ \ifthenelse{\equal{#1}{\@glo@parent}}{%
+ \PackageError{glossaries}{Entry `#1' can't be its own parent}{}%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@#1@parent\endcsname{}%
+ }{%
+% \end{macrocode}
+% Check the parent exists:
+% \begin{macrocode}
+ \ifglsentryexists{\@glo@parent}{%
+% \end{macrocode}
+% Parent exists. Set \cs{glo@}\meta{label}"@parent".
+% \begin{macrocode}
+ \expandafter\xdef\csname glo@#1@parent\endcsname{\@glo@parent}%
+% \end{macrocode}
+% Determine level.
+% \begin{macrocode}
+ \gls@level=\csname glo@\@glo@parent @level\endcsname\relax
+ \advance\gls@level by 1\relax
+% \end{macrocode}
+% If name hasn't been specified, use same as the parent name
+% \begin{macrocode}
+ \ifx\@glo@name\@glsnoname
+ \expandafter\let\expandafter\@glo@name
+ \csname glo@\@glo@parent @name\endcsname
+% \end{macrocode}
+% If name and plural haven't been specified, use same as the parent
+% \begin{macrocode}
+ \ifx\@glo@plural\@glsdefaultplural
+ \expandafter\let\expandafter\@glo@plural
+ \csname glo@\@glo@parent @plural\endcsname
+ \fi
+ \fi
+ }{%
+% \end{macrocode}
+% Parent doesn't exist, so issue an error message and change this
+% entry to have no parent
+% \begin{macrocode}
+ \PackageError{glossaries}{Invalid parent `\@glo@parent'
+ for entry `#1' - parent doesn't exist}{Parent entries
+ must be defined before their children}%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@#1@parent\endcsname{}%
+ }%
+ }%
+\fi
+% \end{macrocode}
+% Set the level for this entry
+% \begin{macrocode}
+\expandafter\xdef\csname glo@#1@level\endcsname{\number\gls@level}%
+% \end{macrocode}
% Check if \gloskey{first} and \gloskey{firstplural} have been use.
% If \gloskey{firstplural} hasn't been specified, but \gloskey{first}
% has been specified, then form \gloskey{firstplural} by appending
@@ -3835,11 +6258,139 @@ in it}}{%
\expandafter\global\expandafter
\let\csname ifglo@#1@flag\endcsname\iftrue}%
\csname glo@#1@flagfalse\endcsname
-}}
% \end{macrocode}
-%\end{macro}
+% Sort out any cross-referencing if required.
+% \begin{macrocode}
+\ifx\@glo@see\@empty
+\else
+ \protected@edef\@do@glssee{%
+ \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see
+ \noexpand\@nil
+ \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{#1}}%
+ \@do@glssee
+\fi
+}%
+% \end{macrocode}
+% Determine and store main part of the entry's index format.
+%\changes{1.17}{2008 December 26}{Stored main part of entry
+% format when entry
+% is defined}%
+% \begin{macrocode}
+ \@glo@storeentry{#1}%
+}
+% \end{macrocode}
%\changes{1.13}{2008 May 10}{Removed restriction on only using
% 'newglossaryentry in the preamble}
+%\end{macro}
+%
+%\begin{macro}{\@glo@storeentry}
+%\changes{1.17}{2008 December 26}{new}
+% Determine the format to write the entry in the glossary
+% output (\filetype{.glo}) file.
+% The argument is the entry's label.
+% The result is stored in \cs{glo@}\meta{label}"@entry", where
+% \meta{label} is the entry's label. (This doesn't include
+% any formatting or location information.)
+% \begin{macrocode}
+\newcommand{\@glo@storeentry}[1]{%
+% \end{macrocode}
+% Get the sort string and escape any special characters
+% \begin{macrocode}
+\protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}%
+\@gls@checkmkidxchars\@glo@sort
+% \end{macrocode}
+% Same again for the name string.
+% \begin{macrocode}
+\protected@edef\@@glo@name{\csname glo@#1@name\endcsname}%
+\@gls@checkmkidxchars\@@glo@name
+% \end{macrocode}
+% Add the font command. (The backslash needs to be escaped for
+% \appname{xindy}.)
+% \begin{macrocode}
+\ifglsxindy
+ \protected@edef\@glo@name{\string\\glsnamefont{\@@glo@name}}%
+\else
+ \protected@edef\@glo@name{\string\glsnamefont{\@@glo@name}}%
+\fi
+% \end{macrocode}
+% Get the description string and escape any special characters
+% \begin{macrocode}
+\protected@edef\@glo@desc{\csname glo@#1@desc\endcsname}%
+\@gls@checkmkidxchars\@glo@desc
+% \end{macrocode}
+% Same again for the symbol
+% \begin{macrocode}
+\protected@edef\@glo@symbol{\csname glo@#1@symbol\endcsname}%
+\@gls@checkmkidxchars\@glo@symbol
+% \end{macrocode}
+% Escape any special characters in the prefix
+% \begin{macrocode}
+\@gls@checkmkidxchars\@glo@prefix
+% \end{macrocode}
+% Get the parent, if one exists
+% \begin{macrocode}
+\edef\@glo@parent{\csname glo@#1@parent\endcsname}%
+% \end{macrocode}
+% Write the information to the glossary file.
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+% Store using \appname{xindy} syntax.
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+% \end{macrocode}
+% Entry doesn't have a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\string\\glossaryentryfield{#1}{\@glo@name
+ }{\@glo@desc}{\@glo@symbol}\string") %
+ }%
+ \else
+% \end{macrocode}
+% Entry has a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\string\\glossarysubentryfield%
+ {\csname glo@#1@level\endcsname}{#1}{\@glo@name
+ }{\@glo@desc}{\@glo@symbol}\string") %
+ }%
+ \fi
+\else
+% \end{macrocode}
+% Store using \appname{makeindex} syntax.
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+% \end{macrocode}
+% Sanitize \cs{@glo@prefix}
+% \begin{macrocode}
+ \@onelevel@sanitize\@glo@prefix
+% \end{macrocode}
+% Entry doesn't have a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \string\glossaryentryfield{#1}{\@glo@name}{\@glo@desc
+ }{\@glo@symbol}%
+ }%
+ \else
+% \end{macrocode}
+% Entry has a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname\@gls@levelchar
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \string\glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{#1}{\@glo@name}{\@glo@desc
+ }{\@glo@symbol}%
+ }%
+ \fi
+\fi
+}
+% \end{macrocode}
+%\end{macro}
%
%\subsection{Resetting and unsetting entry flags}
% Each glossary entry is assigned a conditional of the form
@@ -4115,32 +6666,23 @@ counter as its value}}{%
\edef\@gls@counter{\csname glo@#2@counter\endcsname}%
\KV@glslink@hypertrue
\setkeys{glslink}{#1}%
-\edef\theglsentrycounter{\expandafter\noexpand\csname the\@gls@counter\endcsname}%
+\edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
\ifKV@glslink@hyper
\@glslink{glo:#2}{\glstextformat{#3}}%
\else
\glstextformat{#3}\relax
\fi
-\protected@edef\@glo@sort{\csname glo@#2@sort\endcsname}%
-\@gls@checkmkidxchars\@glo@sort
-\protected@edef\@@glo@name{\csname glo@#2@name\endcsname}%
-\@gls@checkmkidxchars\@@glo@name
-\protected@edef\@glo@name{\string\glsnamefont{\@@glo@name}}%
-\protected@edef\@glo@desc{\csname glo@#2@desc\endcsname}%
-\@gls@checkmkidxchars\@glo@desc
-\protected@edef\@glo@symbol{\csname glo@#2@symbol\endcsname}%
-\@gls@checkmkidxchars\@glo@symbol
-\@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
-\glossary[\csname glo@#2@type\endcsname]{%
-\@glo@sort\@gls@actualchar
-\string\glossaryentryfield{#2}{\@glo@name}{\@glo@desc
-}{\@glo@symbol}\@gls@encapchar\@glo@numfmt}%
+\@do@wrglossary{#2}%
}}
% \end{macrocode}
%\end{macro}
%\changes{1.01}{2007 May 17}{Added range facility in format key}%
% Set the formatting information in the format required by
-% \appname{makeindex}:
+% \appname{makeindex}. The first argument is the format specified
+% by the user (via the format key), the second argument is the
+% name of the counter used to indicate the location and the third
+% argument is a control sequence which stores the required format.
%\begin{macro}{\@set@glo@numformat}
% \begin{macrocode}
\def\@set@glo@numformat#1#2#3{%
@@ -4178,31 +6720,57 @@ counter as its value}}{%
\fi
\fi}
% \end{macrocode}
-% Catch \appname{makeindex} special characters\mkidxspch:
+%
+%\begin{macro}{\@gls@escbsdq}
+% Escape backslashes and double quote marks. The argument must be
+% a control sequence.
+% \begin{macrocode}
+\newcommand*{\@gls@escbsdq}[1]{%
+ \def\@gls@checkedmkidx{}%
+ \let\gls@xdystring=#1\relax
+ \@onelevel@sanitize\gls@xdystring
+ \edef\do@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null}%
+ \do@gls@xdycheckbackslash
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \let#1=\gls@xdystring
+}
+% \end{macrocode}
+%\end{macro}
+% Catch special characters\mkidxspch (argument must be a
+% control sequence):
%\begin{macro}{\@gls@checkmkidxchars}
% \begin{macrocode}
\newcommand{\@gls@checkmkidxchars}[1]{%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkquote#1\@nil""\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkescquote#1\@nil\"\"\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkescactual#1\@nil\?\?\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkactual#1\@nil??\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkbar#1\@nil||\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checkescbar#1\@nil\|\|\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
-\def\@gls@checkedmkidx{}%
-\expandafter\@gls@checklevel#1\@nil!!\null%
-\expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+\ifglsxindy
+ \@gls@escbsdq{#1}%
+\else
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkquote#1\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescquote#1\@nil\"\"\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescactual#1\@nil\?\?\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkactual#1\@nil??\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkbar#1\@nil||\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescbar#1\@nil\|\|\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checklevel#1\@nil!!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+\fi
}
% \end{macrocode}
%\end{macro}
@@ -4226,7 +6794,7 @@ counter as its value}}{%
\def\@gls@checkquote#1"#2"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkquote{\relax}%
@@ -4253,7 +6821,7 @@ counter as its value}}{%
\def\@gls@checkescquote#1\"#2\"#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkescquote{\relax}%
@@ -4282,7 +6850,7 @@ counter as its value}}{%
\def\@gls@checkescactual#1\?#2\?#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkescactual{\relax}%
@@ -4310,7 +6878,7 @@ counter as its value}}{%
\def\@gls@checkescbar#1\|#2\|#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkescbar{\relax}%
@@ -4338,7 +6906,7 @@ counter as its value}}{%
\def\@gls@checkesclevel#1\!#2\!#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkesclevel{\relax}%
@@ -4366,7 +6934,7 @@ counter as its value}}{%
\def\@gls@checkbar#1|#2|#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkbar{\relax}%
@@ -4393,7 +6961,7 @@ counter as its value}}{%
\def\@gls@checklevel#1!#2!#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checklevel{\relax}%
@@ -4420,7 +6988,7 @@ counter as its value}}{%
\def\@gls@checkactual#1?#2?#3\null{%
\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
\toks@={#1}%
-\ifx\null#2\null%
+\ifx\null#2\null
\ifx\null#3\null
\edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
\def\@@gls@checkactual{\relax}%
@@ -4442,6 +7010,81 @@ counter as its value}}{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@gls@xdycheckquote}
+% As before but for use with \appname{xindy}
+% \begin{macrocode}
+\def\@gls@xdycheckquote#1"#2"#3\null{%
+\@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+\toks@={#1}%
+\ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@xdycheckquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"\string\"}%
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}%
+ \fi
+\else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"}%
+ \ifx\null#3\null
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}%
+ \else
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}%
+ \fi
+\fi
+\@@gls@xdycheckquote
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdycheckbackslash}
+% Need to escape all backslashes for \appname{xindy}.
+% Define command that will define \cs{@gls@xdycheckbackslash}
+% \begin{macrocode}
+\edef\def@gls@xdycheckbackslash{%
+ \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar
+ ##2\@backslashchar##3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter
+ {\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={##1}%
+ \noexpand\ifx\noexpand\null##2\noexpand\null
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar}%
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ \@backslashchar\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ ##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@xdycheckbackslash
+ }%
+}
+% \end{macrocode}
+% Now go ahead and define \cs{@gls@xdycheckbackslash}
+% \begin{macrocode}
+\def@gls@xdycheckbackslash
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@glslink}
% If \ics{hyperlink} is not defined \cs{@glslink}
% ignores its first argument and just does the second argument,
@@ -6081,6 +8724,21 @@ counter as its value}}{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\glshyperlink}
+% Provide a hyperlink to a glossary entry without adding information
+% to the glossary file. The entry needs to be added using a
+% command like \ics{glslink} or \ics{glsadd} to ensure that
+% the target is defined. The first (optional) argument specifies
+% the link text. The entry name is used by default. The second
+% argument is the entry label.
+%\changes{1.17}{2008 December 26}{new}
+% \begin{macrocode}
+\newcommand*{\glshyperlink}[2][\glsentryname{\@glo@label}]{%
+\def\@glo@label{#2}%
+\@glslink{glo:#2}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
%\subsection{Adding an entry to the glossary without generating
% text}
% The following keys are provided for \cs{glsadd} and
@@ -6105,24 +8763,12 @@ counter as its value}}{%
% \begin{macrocode}
\newcommand*{\glsadd}[2][]{%
\glsdoifexists{#2}{%
-\def\@glo@format{glsnumberformat}%
-\edef\@glo@counter{\csname glo@#2@counter\endcsname}%
+\def\@glsnumberformat{glsnumberformat}%
+\edef\@gls@counter{\csname glo@#2@counter\endcsname}%
\setkeys{glossadd}{#1}%
-\edef\theglsentrycounter{\expandafter\noexpand\csname the\@glo@counter\endcsname}%
-\protected@edef\@glo@sort{\csname glo@#2@sort\endcsname}%
-\@gls@checkmkidxchars\@glo@sort
-\protected@edef\@@glo@name{\csname glo@#2@name\endcsname}%
-\@gls@checkmkidxchars\@@glo@name
-\protected@edef\@glo@name{\string\glsnamefont{\@@glo@name}}%
-\protected@edef\@glo@desc{\csname glo@#2@desc\endcsname}%
-\@gls@checkmkidxchars\@glo@desc
-\protected@edef\@glo@symbol{\csname glo@#2@symbol\endcsname}%
-\@gls@checkmkidxchars\@glo@symbol
-\@set@glo@numformat\@glo@numfmt\@glo@counter\@glo@format
-\glossary[\csname glo@#2@type\endcsname]{%
-\@glo@sort\@gls@actualchar\string\glossaryentryfield
-{#2}{\@glo@name}{\@glo@desc}{\@glo@symbol}\@gls@encapchar
-\@glo@numfmt}%
+\edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+\@do@wrglossary{#2}%
}}
% \end{macrocode}
%\end{macro}
@@ -6134,7 +8780,7 @@ counter as its value}}{%
%\begin{macro}{\glsaddall}
% \begin{macrocode}
\newcommand*{\glsaddall}[1][]{%
-\def\@glo@type{\@glo@types}%
+\edef\@glo@type{\@glo@types}%
\setkeys{glossadd}{#1}%
\forallglsentries[\@glo@type]{\@glo@entry}{%
\glsadd[#1]{\@glo@entry}}%
@@ -6169,50 +8815,385 @@ counter as its value}}{%
% any problem characters in \ics{glssymbolsgroupname}
% and \ics{glsnumbersgroupname} from breaking hyperlinks.
%
-% Some of these lines are too long to fit on the page, but as I
-% have temporarily disabled the comment character, I can't split
-% the lines. If you want to see the code in full, have a look at
-% \texttt{glossaries.sty}.
-%\changes{1.01}{2007 May 17}{Added spaces after 'delimN and 'delimR in ist file}%
+%\begin{macro}{\glsopenbrace}
+% Define \cs{glsopenbrace} to make it easier to write an opening
+% brace to a file.
+% \begin{macrocode}
+\edef\glsopenbrace{\expandafter\@gobble\string\{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsclosebrace}
+% Define \cs{glsclosebrace} to make it easier to write an opening
+% brace to a file.
+% \begin{macrocode}
+\edef\glsclosebrace{\expandafter\@gobble\string\}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsquote}
+% Define command that makes it easier to write quote marks to
+% a file in the event that the double quote character has been
+% made active.
+% \begin{macrocode}
+\edef\glsquote#1{\string"#1\string"}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsfirstletter}
+% Define the first letter to come after the digits 0,\ldots,9.
+% Only required for \appname{xindy}.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@glsfirstletter}{A}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyFirstLetterAfterDigits}
+% Sets the first letter to come after the digits 0,\ldots,9.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}}
+\else
+ \newcommand*{\GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsminrange}
+% Define the minimum number of successive location references
+% to merge into a range.
+% \begin{macrocode}
+\newcommand*{\@glsminrange}{2}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyMinRangeLength}
+% Set the minimum range length. The value must either be "none"
+% or a positive integer. The \sty{glossaries} package doesn't
+% check if the argument is valid, that is left to \appname{xindy}.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \renewcommand*{\@glsminrange}{#1}}
+\else
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \glsnoxindywarning\GlsSetXdyMinRangeLength}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\writeist}
+%\changes{1.17}{2008 December 26}{added xindy support}
+%\changes{1.01}{2007 May 17}{Added spaces after 'delimN and 'delimR in ist file}%
% \begin{macrocode}
\newwrite\istfile
-\bgroup
-\catcode`\%12\relax
-\catcode`\"12\relax
-\catcode`\|12\relax
-\catcode`\!12\relax
-\catcode`\?12\relax
-\gdef\@gls@actualchar{?}
-\gdef\@gls@encapchar{|}
-\gdef\@gls@levelchar{!}
-\gdef\@gls@quotechar{"}
-\gdef\writeist{\relax
-\protected@write\@auxout{}{\string\@istfilename{\istfilename}}
-\openout\istfile=\istfilename
-\write\istfile{% makeindex style file created by the glossaries package}
-\write\istfile{% for document '\jobname' on \the\year-\the\month-\the\day}
-\write\istfile{actual '\@gls@actualchar'}
-\write\istfile{encap '\@gls@encapchar'}
-\write\istfile{level '\@gls@levelchar'}
-\write\istfile{quote '\@gls@quotechar'}
-\write\istfile{keyword "\string\\glossaryentry"}
-\write\istfile{preamble "\string\\glossarysection[\string\\glossarytoctitle]{\string\\glossarytitle}\string\\glossarypreamble\string\n\string\\begin{theglossary}\string\\glossaryheader\string\n"}
-\write\istfile{postamble "\string\n\string\\end{theglossary}\string\n\string\\glossarypostamble\string\n"}
-\write\istfile{group_skip "\string\\glsgroupskip\string\n"}
-\write\istfile{item_0 "\string\n"}
-\write\istfile{delim_0 "\{\string\\glossaryentrynumbers\{\string\\relax "}
-\write\istfile{delim_t "\}\}"}
-\write\istfile{delim_n "\string\\delimN "}
-\write\istfile{delim_r "\string\\delimR "}
-\write\istfile{headings_flag 1}
-\write\istfile{heading_prefix "\string\\glsgroupheading\{"}
-\write\istfile{heading_suffix "\}"}
-\write\istfile{symhead_positive "glssymbols"}
-\write\istfile{numhead_positive "glsnumbers"}
-\write\istfile{page_compositor "\glscompositor"}
-\noist}
-\egroup
+\ifglsxindy
+% \end{macrocode}
+% Code to use if \appname{xindy} is required.
+% \begin{macrocode}
+ \def\writeist{%
+% \end{macrocode}
+% Open the style file
+% \begin{macrocode}
+ \openout\istfile=\istfilename
+% \end{macrocode}
+% Write header comment at the start of the file
+% \begin{macrocode}
+ \write\istfile{;; xindy style file created by the glossaries
+ package}%
+ \write\istfile{;; for document '\jobname' on
+ \the\year-\the\month-\the\day}%
+% \end{macrocode}
+% Specify the required styles
+% \begin{macrocode}
+ \write\istfile{^^J; required styles^^J}
+ \@for\@xdystyle:=\@xdyrequiredstyles\do{%
+ \ifx\@xdystyle\@empty
+ \else
+ \protected@write\istfile{}{(require
+ \string"\@xdystyle.xdy\string")}%
+ \fi
+ }%
+% \end{macrocode}
+% List the allowed attributes (possible values used by the
+% \gloskey{format} key)
+% \begin{macrocode}
+ \write\istfile{^^J%
+ ; list of allowed attributes (number formats)^^J}%
+ \write\istfile{(define-attributes ((\@xdyattributes)))}%
+% \end{macrocode}
+% Define any additional alphabets
+% \begin{macrocode}
+ \write\istfile{^^J; user defined alphabets^^J}%
+ \write\istfile{\@xdyuseralphabets}%
+% \end{macrocode}
+% Define location classes.
+% \begin{macrocode}
+ \write\istfile{^^J; location class definitions^^J}%
+% \end{macrocode}
+% Lower case Roman numerals (i, ii, \ldots). In the event that
+% \ics{roman} has been redefined to produce a fancy form of
+% roman numerals, attempt to work out how it will be written
+% to the output file.
+% \begin{macrocode}
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@tmp\@gls@roman
+ \write\istfile{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-lowercase\string")
+ :min-range-length \@glsminrange)}%
+ \else
+ \write\istfile{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (:sep "\@gls@roman")
+ :min-range-length \@glsminrange)}%
+ \fi
+% \end{macrocode}
+% Upper case Roman numerals (I, II, \ldots)
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-uppercase\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% Arabic numbers (1, 2, \ldots)
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% Lower case alphabetical locations (a, b, \ldots)
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ (\string"alpha\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% Upper case alphabetical locations (A, B, \ldots)
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% Appendix style locations (e.g.\ A-1, A-2, \ldots, B-1, B-2,
+% \ldots). The separator is given by \ics{@glsAlphacompositor}.
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"Appendix-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% Section number style locations (e.g.\ 1.1, 1.2, \ldots). The
+% compositor is given by \ics{glscompositor}.
+% \begin{macrocode}
+ \write\istfile{(define-location-class
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+% \end{macrocode}
+% User defined location classes.
+% \begin{macrocode}
+ \write\istfile{^^J; user defined location classes}%
+ \write\istfile{\@xdyuserlocationdefs}%
+% \end{macrocode}
+% Cross-reference class. (The unverified option is used as the
+% cross-references are supplied using the list of labels along with
+% the optional argument for \ics{glsseeformat} which
+% \appname{xindy} won't recognise.)
+% \begin{macrocode}
+ \write\istfile{^^J; define cross-reference class^^J}%
+ \write\istfile{(define-crossref-class \string"see\string"
+ :unverified )}%
+% \end{macrocode}
+% Define how cross-references should be displayed. This adds an
+% empty set of braces after the cross-referencing information
+% allowing for the final argument of \cs{glsseeformat} which
+% gets ignored. (When using \appname{makeindex} this final argument
+% contains the location information which is not required.)
+% \begin{macrocode}
+ \write\istfile{(markup-crossref-list
+ :class \string"see\string"^^J\space\space\space
+ :open \string"\string\glsseeformat\string"
+ :close \string"{}\string")}%
+% \end{macrocode}
+% List the order to sort the classes.
+% \begin{macrocode}
+ \write\istfile{^^J; define the order of the location classes}%
+ \write\istfile{(define-location-class-order
+ (\@xdylocationclassorder))}%
+% \end{macrocode}
+% Specify what to write to the start and end of the glossary file.
+% \begin{macrocode}
+ \write\istfile{^^J; define the glossary markup^^J}%
+ \write\istfile{(markup-index^^J\space\space\space
+ :open \string"\string
+ \glossarysection[\string\glossarytoctitle]{\string
+ \glossarytitle}\string\glossarypreamble\string~n\string\begin
+ {theglossary}\string\glossaryheader\string~n\string" ^^J\space
+ \space\space:close \string"\expandafter\@gobble
+ \string\%\string~n\string
+ \end{theglossary}\string\glossarypostamble
+ \string~n\string" ^^J\space\space\space
+ :tree)}%
+% \end{macrocode}
+% Specify what to put between letter groups
+% \begin{macrocode}
+ \write\istfile{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+% \end{macrocode}
+% Specify what to put between entries
+% \begin{macrocode}
+ \write\istfile{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \string~n\string")}%
+% \end{macrocode}
+% Specify how to format entries
+% \begin{macrocode}
+ \write\istfile{(markup-locclass-list :open
+ \string"\glsopenbrace\string\glossaryentrynumbers
+ \glsopenbrace\string\relax\space \string"^^J\space\space\space
+ :sep \string", \string"
+ :close \string"\glsclosebrace\glsclosebrace\string")}%
+% \end{macrocode}
+% Specify how to separate location numbers
+% \begin{macrocode}
+ \write\istfile{(markup-locref-list
+ :sep \string"\string\delimN\space\string")}%
+% \end{macrocode}
+% Specify how to indicate location ranges
+% \begin{macrocode}
+ \write\istfile{(markup-range
+ :sep \string"\string\delimR\space\string")}%
+% \end{macrocode}
+% Specify 2-page and 3-page suffixes, if defined.
+% First, the values must be sanitized to write them explicity.
+% \begin{macrocode}
+ \@onelevel@sanitize\gls@suffixF
+ \@onelevel@sanitize\gls@suffixFF
+% \end{macrocode}
+% \begin{macrocode}
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\istfile{(markup-range
+ :close "\gls@suffixF" :length 1 :ignore-end)}%
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\istfile{(markup-range
+ :close "\gls@suffixFF" :length 2 :ignore-end)}%
+ \fi
+% \end{macrocode}
+% Specify how to format locations.
+% \begin{macrocode}
+ \write\istfile{^^J; define format to use for locations^^J}%
+ \write\istfile{\@xdylocref}%
+% \end{macrocode}
+% Specify how to separate letter groups.
+% \begin{macrocode}
+ \write\istfile{^^J; define letter group list format^^J}%
+ \write\istfile{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+% \end{macrocode}
+% Define letter group headings.
+% \begin{macrocode}
+ \write\istfile{^^J; letter group headings^^J}%
+ \write\istfile{(markup-letter-group
+ :open-head \string"\string\glsgroupheading
+ \glsopenbrace\string"^^J\space\space\space
+ :close-head \string"\glsclosebrace\string")}%
+% \end{macrocode}
+% Define additional letter groups.
+% \begin{macrocode}
+ \write\istfile{^^J; additional letter groups^^J}%
+ \write\istfile{\@xdylettergroups}%
+% \end{macrocode}
+% Define additional sort rules
+% \begin{macrocode}
+ \write\istfile{^^J; additional sort rules^^J}
+ \write\istfile{\@xdysortrules}%
+ \noist}
+\else
+% \end{macrocode}
+% Code to use if \appname{makeindex} is required.
+% \begin{macrocode}
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}
+ \def\writeist{\relax
+ \openout\istfile=\istfilename
+ \write\istfile{\expandafter\@gobble\string\% makeindex style file
+ created by the glossaries package}
+ \write\istfile{\expandafter\@gobble\string\% for document
+ '\jobname' on \the\year-\the\month-\the\day}
+ \write\istfile{actual '\@gls@actualchar'}
+ \write\istfile{encap '\@gls@encapchar'}
+ \write\istfile{level '\@gls@levelchar'}
+ \write\istfile{quote '\@gls@quotechar'}
+ \write\istfile{keyword \string"\string\\glossaryentry\string"}
+ \write\istfile{preamble \string"\string\\glossarysection[\string
+ \\glossarytoctitle]{\string\\glossarytitle}\string
+ \\glossarypreamble\string\n\string\\begin{theglossary}\string
+ \\glossaryheader\string\n\string"}
+ \write\istfile{postamble \string"\string\%\string\n\string
+ \\end{theglossary}\string\\glossarypostamble\string\n
+ \string"}
+ \write\istfile{group_skip \string"\string\\glsgroupskip\string\n
+ \string"}
+ \write\istfile{item_0 \string"\string\%\string\n\string"}
+ \write\istfile{item_1 \string"\string\%\string\n\string"}
+ \write\istfile{item_2 \string"\string\%\string\n\string"}
+ \write\istfile{item_01 \string"\string\%\string\n\string"}
+ \write\istfile{item_x1
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\istfile{item_02 \string"\string\%\string\n\string"}
+ \write\istfile{item_12 \string"\string\%\string\n\string"}
+ \write\istfile{item_x2
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\istfile{delim_0 \string"\{\string
+ \\glossaryentrynumbers\{\string\\relax \string"}
+ \write\istfile{delim_1 \string"\{\string
+ \\glossaryentrynumbers\{\string\\relax \string"}
+ \write\istfile{delim_2 \string"\{\string
+ \\glossaryentrynumbers\{\string\\relax \string"}
+ \write\istfile{delim_t \string"\}\}\string"}
+ \write\istfile{delim_n \string"\string\\delimN \string"}
+ \write\istfile{delim_r \string"\string\\delimR \string"}
+ \write\istfile{headings_flag 1}
+ \write\istfile{heading_prefix
+ \string"\string\\glsgroupheading\{\string"}
+ \write\istfile{heading_suffix
+ \string"\}\string\\relax
+ \string\\glsresetentrylist \string"}
+ \write\istfile{symhead_positive \string"glssymbols\string"}
+ \write\istfile{numhead_positive \string"glsnumbers\string"}
+ \write\istfile{page_compositor \string"\glscompositor\string"}
+ \@gls@escbsdq\gls@suffixF
+ \@gls@escbsdq\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\istfile{suffix_2p \string"\gls@suffixF\string"}
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\istfile{suffix_3p \string"\gls@suffixFF\string"}
+ \fi
+ \noist
+ }
+\fi
% \end{macrocode}
%\end{macro}
%
@@ -6268,16 +9249,38 @@ using \string\makeglossary}}}
%\begin{macro}{\makeglossaries}
% \begin{macrocode}
\newcommand*{\makeglossaries}{%
-\@for\@glo@type:=\@glo@types\do{%
-\ifthenelse{\equal{\@glo@type}{}}{}{%
-\@makeglossary{\@glo@type}}}%
-\renewcommand*\newglossary[4][]{%
-\PackageError{glossaries}{New glossaries
-must be created before \string\makeglossaries}{You need
-to move \string\makeglossaries\space after all your
-\string\newglossary\space commands}}%
-\let\@makeglossary\empty
-\let\makeglossary\empty}
+% Write the name of the style file to the aux file
+% (needed by \appname{makeglossaries})
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+% \end{macrocode}
+% Iterate through each glossary type and activate it.
+% \begin{macrocode}
+ \@for\@glo@type:=\@glo@types\do{%
+ \ifthenelse{\equal{\@glo@type}{}}{}{%
+ \@makeglossary{\@glo@type}}%
+ }%
+% \end{macrocode}
+% New glossaries must be created before \cs{makeglossaries}
+% so disable \ics{newglossary}.
+% \begin{macrocode}
+ \renewcommand*\newglossary[4][]{%
+ \PackageError{glossaries}{New glossaries
+ must be created before \string\makeglossaries}{You need
+ to move \string\makeglossaries\space after all your
+ \string\newglossary\space commands}}%
+% \end{macrocode}
+% Any subsequence instances of this command should have no effect
+% \begin{macrocode}
+ \let\@makeglossary\relax
+ \let\makeglossary\relax
+ \let\makeglossaries\relax
+% \end{macrocode}
+% Disable all commands that have no effect after \cs{makeglossaries}
+% \begin{macrocode}
+ \@disable@onlypremakeg
+}
% \end{macrocode}
%\end{macro}
%
@@ -6292,6 +9295,19 @@ to move \string\makeglossaries\space after all your
% \end{macrocode}
%\end{macro}
%
+% If \ics{makeglossaries} hasn't been used, issue a warning.
+% Also issue a warning if neither \ics{printglossaries} nor
+% \ics{printglossary} have been used.
+% \begin{macrocode}
+\AtEndDocument{\ifx\makeglossaries\relax
+\else
+ \PackageWarningNoLine{glossaries}{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+\fi
+\warn@noprintglossary
+}
+% \end{macrocode}
+%
%\subsection{Writing information to associated files}
% The \cs{glossary} command is redefined so that it takes an
% optional argument \meta{type} to specify the glossary type (use
@@ -6308,10 +9324,13 @@ to move \string\makeglossaries\space after all your
%\end{macro}
%
% Define internal \cs{@glossary} to ignore its argument.
-% This gets redefined in \cs{@makeglossary}.
+% This gets redefined in \cs{@makeglossary}. This is
+% defined to just \cs{index} as \icls{memoir} changes the definition of
+% \cs{@index}. (Thanks to Dan Luecking for pointing this out.)
%\begin{macro}{\@glossary}
+%\changes{1.17}{2008 December 26}{changed definition to use 'index instead of '@index}
% \begin{macrocode}
-\def\@glossary[#1]{\@bsphack\begingroup\@sanitize\@index}
+\def\@glossary[#1]{\index}
% \end{macrocode}
%\end{macro}
% This is a convenience command to set \cs{@glossary}.
@@ -6330,10 +9349,187 @@ to move \string\makeglossaries\space after all your
% the second argument is the glossary entry
% (the format of which is set in \cs{glslink}).
%\begin{macro}{\@wrglossary}
+%\changes{1.17}{2008 December 26}{modified to allow for xindy support}
% \begin{macrocode}
\renewcommand*{\@wrglossary}[2]{%
-\expandafter\protected@write\csname glo@#1@file\endcsname{}{%
-\string\glossaryentry{#2}{\theglsentrycounter}}\endgroup\@esphack}
+ \expandafter\protected@write\csname glo@#1@file\endcsname{}{#2}%
+ \endgroup\@esphack
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@do@wrglossary}
+%\changes{1.17}{2008 December 26}{new}
+% Write the glossary entry in the appropriate format.
+% (Need to set \@glsnumberformat and \@gls@counter prior to use.)
+% The argument is the entry's label.
+% \begin{macrocode}
+\newcommand{\@do@wrglossary}[1]{%
+% \end{macrocode}
+% Determine whether to use \appname{xindy} or \appname{makeindex}
+% syntax
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+% Need to determine if the formatting information starts with
+% a ( or ) indicating a range.
+% \begin{macrocode}
+ \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
+ \def\@glo@range{}%
+ \expandafter\if\@glo@prefix(\relax
+ \def\@glo@range{:open-range}%
+ \else
+ \expandafter\if\@glo@prefix)\relax
+ \def\@glo@range{:close-range}%
+ \fi
+ \fi
+% \end{macrocode}
+% Get the location and escape any special characters
+% \begin{macrocode}
+\protected@edef\@glslocref{\theglsentrycounter}%
+\@gls@checkmkidxchars\@glslocref
+% \end{macrocode}
+% Write to the glossary file using \appname{xindy} syntax.
+% \begin{macrocode}
+ \glossary[\csname glo@#1@type\endcsname]{%
+ (indexentry :tkey (\csname glo@#1@index\endcsname)
+ :locref \string"\@glslocref\string" %
+ :attr \string"\@glo@suffix\string" \@glo@range
+ )
+ }%
+\else
+% \end{macrocode}
+% Convert the format information into the format required for
+% \appname{makeindex}
+% \begin{macrocode}
+ \@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
+% \end{macrocode}
+% Write to the glossary file using \appname{makeindex} syntax.
+% \begin{macrocode}
+ \glossary[\csname glo@#1@type\endcsname]{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
+\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Glossary Entry Cross-References}
+%\begin{macro}{\@do@seeglossary}
+%\changes{1.17}{2008 December 26}{new}
+% Write the glossary entry with a cross reference.
+% The first argument is the entry's label, the second must be in
+% the form \oarg{tag}\marg{list}, where \meta{tag} is a tag
+% such as ``see'' and \meta{list} is a list of labels.
+% \begin{macrocode}
+\newcommand{\@do@seeglossary}[2]{%
+\ifglsxindy
+ \glossary[\csname glo@#1@type\endcsname]{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"#2\string")
+ :attr \string"see\string"
+ )
+ }%
+\else
+ \glossary[\csname glo@#1@type\endcsname]{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar glsseeformat#2}{Z}}%
+\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@fixbraces}
+% If no optional argument is specified, list needs to be enclosed
+% in a set of braces.
+% \begin{macrocode}
+\def\@gls@fixbraces#1#2#3\@nil{%
+ \ifx#2[\relax
+ \def#1{#2#3}%
+ \else
+ \def#1{{#2#3}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glssee}
+%\cs{glssee}\marg{label}\marg{cross-ref list}
+%\changes{1.17}{2008 December 26}{new}
+% \begin{macrocode}
+\newcommand*{\glssee}[3][\seename]{%
+ \@do@seeglossary{#2}{[#1]{#3}}}
+\newcommand*{\@glssee}[3][\seename]{%
+ \glssee[#1]{#3}{#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsseeformat}
+%\changes{1.17}{2008 December 26}{new}
+% The first argument specifies what tag to use (e.g.\ ``see''),
+% the second argument is a comma-separated list of labels.
+% The final argument (the location) is ignored.
+% \begin{macrocode}
+\newcommand*{\glsseeformat}[3][\seename]{\emph{#1} \glsseelist{#2}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseelist}
+%\cs{glsseelist}\marg{list} formats list of entry labels.
+% \begin{macrocode}
+\newcommand*{\glsseelist}[1]{%
+% \end{macrocode}
+% If there is only one item in the list, set the last separator
+% to do nothing.
+% \begin{macrocode}
+ \let\@gls@dolast\relax
+% \end{macrocode}
+% Don't display separator on the first iteration of the loop
+% \begin{macrocode}
+ \let\@gls@donext\relax
+% \end{macrocode}
+% Iterate through the labels
+% \begin{macrocode}
+ \@for\@gls@thislabel:=#1\do{%
+% \end{macrocode}
+% Check if on last iteration of loop
+% \begin{macrocode}
+ \ifx\@xfor@nextelement\@nnil
+ \@gls@dolast
+ \else
+ \@gls@donext
+ \fi
+% \end{macrocode}
+% display the entry for this label
+% \begin{macrocode}
+ \glsseeitem{\@gls@thislabel}%
+% \end{macrocode}
+% Update separators
+% \begin{macrocode}
+ \let\@gls@dolast\glsseelastsep
+ \let\@gls@donext\glsseesep
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsseelastsep}
+% Separator to use between penultimate and ultimate entries in a
+% cross-referencing list.
+% \begin{macrocode}
+\newcommand*{\glsseelastsep}{\space\andname\space}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseesep}
+% Separator to use between entires in a cross-referencing list.
+% \begin{macrocode}
+\newcommand*{\glsseesep}{, }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseeitem}
+%\cs{glsseeitem}\marg{label} formats individual entry in a
+% cross-referencing list.
+% \begin{macrocode}
+\newcommand*{\glsseeitem}[1]{\glshyperlink{#1}}
% \end{macrocode}
%\end{macro}
%
@@ -6345,24 +9541,117 @@ to move \string\makeglossaries\space after all your
% glossary, and can also be used to set the style, title and
% entry in the table of contents. Available keys are defined below.
%
+%\begin{macro}{\warn@noprintglossary}
+% Warn the user if they have forgotten \ics{printglossaries}
+% or \ics{printglossary}. (Will be suppressed if there is at
+% least one occurance of \ics{printglossary}. There is no check
+% to ensure that there is a \ics{printglossary} for each defined
+% glossary.)
+% \begin{macrocode}
+\def\warn@noprintglossary{\PackageWarningNoLine{glossaries}{No
+\string\printglossary\space or \string\printglossaries\space
+found.^^JThis document will not have a glossary.}}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\printglossary}
+%\changes{1.17}{2008 December 26}{added print language to aux file}
%\changes{1.15}{2008 August 15}{changed the way the TOC title is set}
+%\changes{1.17}{2008 December 26}{added check to determine if 'printglossary is already
+% defined}
% The TOC title needs to be processed in a different manner
% to the main title in case the \sty{translator} and \sty{hyperref} packages
% are both being used.
% \begin{macrocode}
+\@ifundefined{printglossary}{}{%
+% \end{macrocode}
+% If \cs{printglossary} is already defined, issue a warning
+% and undefine it.
+% \begin{macrocode}
+\PackageWarning{glossaries}{Overriding \string\printglossary}%
+\let\printglossary\undefined}
+% \end{macrocode}
+% \cs{printglossary} has an optional argument. The default
+% value is to set the glossary type to the main glossary.
+% \begin{macrocode}
\newcommand*{\printglossary}[1][type=\glsdefaulttype]{%
-\def\@glo@type{\glsdefaulttype}%
-\def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
-\def\@glossarystyle{}%
-\def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
-\bgroup
-\setkeys{printgloss}{#1}%
-\gls@dotoctitle
-\@glossarystyle
-\makeatletter
-\@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
-\egroup
+% \end{macrocode}
+% If \appname{xindy} is being used, need to find the root language
+% for \appname{makeglossaries} to pass to \appname{xindy}.
+% \begin{macrocode}
+ \ifglsxindy\findrootlanguage\fi
+% \end{macrocode}
+% Set up defaults.
+% \begin{macrocode}
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
+ \def\@glossarystyle{}%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+% \end{macrocode}
+% Store current value of \ics{glossaryentrynumbers}. (This may
+% be changed via the optional argument)
+% \begin{macrocode}
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+% \end{macrocode}
+% Localise the effects of the optional argument
+% \begin{macrocode}
+ \bgroup
+% \end{macrocode}
+% Determine settings specified in the optional argument.
+% \begin{macrocode}
+ \setkeys{printgloss}{#1}%
+% \end{macrocode}
+%Enable individual number lists to be suppressed.
+% \begin{macrocode}
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+% \end{macrocode}
+% Enable suppression of description terminators.
+% \begin{macrocode}
+ \let\nopostdesc\@nopostdesc
+% \end{macrocode}
+% Set up the entry for the TOC
+% \begin{macrocode}
+ \gls@dotoctitle
+% \end{macrocode}
+% Set the glossary style
+% \begin{macrocode}
+ \@glossarystyle
+% \end{macrocode}
+% Some macros may end up being expanded into internals in the
+% glossary, so need to make @ a letter.
+% \begin{macrocode}
+ \makeatletter
+% \end{macrocode}
+% Input the glossary file, if it exists.
+% \begin{macrocode}
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+% \end{macrocode}
+% If \appname{xindy} is being used, need to write the language
+% dependent information to the \filetype{.aux} file for
+% \appname{makeglossaries}.
+% \begin{macrocode}
+ \ifglsxindy
+ \@ifundefined{@xdy@\@glo@type @language}{%
+ \protected@write\@auxout{}{%
+ \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
+ }{%
+ \protected@write\@auxout{}{%
+ \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
+ @language\endcsname}}%
+ }%
+ \protected@write\@auxout{}{%
+ \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
+ \fi
+ \egroup
+% \end{macrocode}
+% Reset \ics{glossaryentrynumbers}
+% \begin{macrocode}
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+% \end{macrocode}
+% Suppress warning about no \ics{printglossary}
+% \begin{macrocode}
+\let\warn@noprintglossary\relax
}
% \end{macrocode}
%\end{macro}
@@ -6439,6 +9728,37 @@ false,nolabel,autolabel}[nolabel]{%
\fi}
% \end{macrocode}
%
+%\begin{macro}{\@glsnonextpages}
+%\changes{1.17}{2008 December 26}{new}%
+% Suppresses the next number list only. Global assignments required
+% as it may not occur in the same level of grouping as the
+% next numberlist. (For example, if \cs{glsnonextpages} is place
+% in the entry's description and 3 column tabular style glossary
+% is used.) \cs{org@glossaryentrynumbers} needs to be set at
+% the start of each glossary, in the event that
+% \ics{glossaryentrynumber} is redefined.
+% \begin{macrocode}
+\newcommand*{\@glsnonextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ \glsresetentrylist}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsresetentrylist}
+% Resets \cs{glossaryentrynumbers}
+% \begin{macrocode}
+\newcommand*{\glsresetentrylist}{%
+ \global\let\glossaryentrynumbers\org@glossaryentrynumbers}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glsnonextpages}
+% Outside of \cs{printglossary} this does nothing.
+% \begin{macrocode}
+\newcommand*{\glsnonextpages}{}
+% \end{macrocode}
+%\end{macro}
+%
%\DescribeEnv{theglossary}
% If the \envname{theglossary} environment has
% already been defined, a warning will be issued.
@@ -6463,16 +9783,28 @@ false,nolabel,autolabel}[nolabel]{%
% \end{macrocode}
%\end{macro}
%\vskip5pt
+%\begin{macro}{\glossaryentryfield}
% \cs{glossaryentryfield}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}\\[10pt]
% This command governs how each entry row should be formatted
% in the glossary. Glossary styles need to redefine this command.
% Most of the predefined styles ignore \meta{symbol}.
-%\begin{macro}{\glossaryentryfield}
% \begin{macrocode}
\newcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:#1}{#2} #4 #3. #5\par}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\glossaryentryfield}
+% \cs{glossarysubentryfield}\marg{level}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}\\[10pt]
+% This command governs how each subentry should be formatted
+% in the glossary. Glossary styles need to redefine this command.
+% Most of the predefined styles ignore \meta{symbol}. The first
+% argument is a number indicating the level. (The level should
+% be greater than or equal to 1.)
+% \begin{macrocode}
+\newcommand*{\glossarysubentryfield}[6]{%
+\@glstarget{glo:#2}{}#4. #6\par}
+% \end{macrocode}
+%\end{macro}
%
% Within each glossary, the entries form 28 distinct groups
% which are determined by the first character of the \gloskey{sort}
@@ -6568,6 +9900,7 @@ style `#1' undefined}{}}{%
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\newglossarystyle}
% New glossary styles can be defined using:\\[10pt]
% \cs{newglossarystyle}\marg{name}\marg{definition}\\[10pt]
% The \meta{definition} argument should redefine
@@ -6579,9 +9912,9 @@ style `#1' undefined}{}}{%
% \ics{glossarypostamble}, as
% the user should be able to switch between styles without affecting
% the pre- and postambles.
-%\begin{macro}{\newglossarystyle}
+%\changes{1.17}{2008 December 26}{made 'newglossarystyle long}
% \begin{macrocode}
-\newcommand*{\newglossarystyle}[2]{%
+\newcommand{\newglossarystyle}[2]{%
\@ifundefined{@glsstyle@#1}{%
\expandafter\def\csname @glsstyle@#1\endcsname{#2}}{%
\PackageError{glossaries}{Glossary style `#1' is already defined}{}}}
@@ -6622,11 +9955,35 @@ style `#1' undefined}{}}{%
% to be more general. So I have adapted the code used in the
% \isty{hyperref} package.
%\begin{macro}{\glshypernumber}
+%\changes{1.17}{2008 December 26}{modified to allow material
+% to be attached to location}
% \begin{macrocode}
\@ifundefined{hyperlink}{%
\def\glshypernumber#1{#1}}{%
\def\glshypernumber#1{%
-\@delimR#1\delimR\delimR\\}}
+ \@glshypernumber#1\nohyperpage{}\@nil}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glshypernumber}
+% This code was provided by Heiko~Oberdiek to allow material
+% to be attached to the location.
+%\changes{1.17}{2008 December 26}{new}
+% \begin{macrocode}
+\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
+ \ifx\\#1\\%
+ \else
+ \@delimR#1\delimR\delimR\\%
+ \fi
+ \ifx\\#2\\%
+ \else
+ #2%
+ \fi
+ \ifx\\#3\\%
+ \else
+ \@glshypernumber#3\@nil
+ \fi
+}
% \end{macrocode}
%\end{macro}
% \cs{@delimR} displays a range of numbers for the counter
@@ -6787,9 +10144,10 @@ first={#4 (#3)},plural={#3\acrpluralsuffix},%
firstplural={\@glo@descplural\space (\@glo@plural)},%
#1}}
% \end{macrocode}
-%\end{macro}
%\changes{1.13}{2008 May 10}{Removed restriction on only using
% 'newacronym in the preamble}
+%\end{macro}
+%
% Set up some convenient short cuts. These need to be changed if
% \cs{newacronym} is changed (or if the \gloskey{description} key
% is changed).
@@ -6998,13 +10356,23 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\acrnameformat}
+% The styles that allow an additional description use
+% \cs{acrnameformat}\marg{short}\marg{long} to determine what
+% information is displayed in the name.
+% \begin{macrocode}
+\newcommand*{\acrnameformat}[2]{\acronymfont{#1}}
+% \end{macrocode}
+%\end{macro}
% \begin{macrocode}
\ifglsacrdescription
% \end{macrocode}
%
% If a description and footnote are both required, store the long form
% in the \gloskey{symbol} key. Store the short form in \gloskey{text}
-% key.
+% key. Note that since the long form is stored in the symbol key,
+% if you want the long form to appear in the list of acronyms, you
+% need to use a glossary style that displays the symbol key.
% \begin{macrocode}
\ifglsacrfootnote
\renewcommand{\newacronym}[4][]{%
@@ -7103,6 +10471,9 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\else
% \end{macrocode}
% Footnote not required. Should the acronym always be expanded?
+% Note that the short form is stored in the \gloskey{symbol} key,
+% so if the short form needs to be displayed in the glossary,
+% use a style the displays the symbol.
% \begin{macrocode}
\ifglsacrdua
\ifglsacrsmallcaps
@@ -7116,7 +10487,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\fi
\renewcommand{\newacronym}[4][]{%
\newglossaryentry{#2}{type=\acronymtype,%
- name={\acronymfont#4},%
+ name={#4},%
sort={#4},
text={#4},%
plural={#4\acrpluralsuffix},%
@@ -7183,13 +10554,17 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\defglsdisplay[\acronymtype]{#1#4}
\else
% \end{macrocode}
-% (dua is not set.)
+% Option \pkgopt{description} is used, but not \pkgopt{dua}
+% or \pkgopt{footnote}.
% Store long form in \gloskey{first} key
% and short form in \gloskey{text} and \gloskey{symbol} key.
+% The name is stored using \ics{acrnameformat} to allow the
+% user to override the way the name is displayed in the
+% list of acronyms.
% \begin{macrocode}
\renewcommand{\newacronym}[4][]{%
\newglossaryentry{#2}{type=\acronymtype,%
- name={\acronymfont{#3}},%
+ name={\acrnameformat{#3}{#4}},%
sort={#3},%
first={#4},%
firstplural={#4\acrpluralsuffix},%
@@ -7661,6 +11036,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\RequirePackage{glossary-list}
\RequirePackage{glossary-long}
\RequirePackage{glossary-super}
+\RequirePackage{glossary-tree}
% \end{macrocode}
% The default glossary style is set according to the \pkgopt{style} package
% option, but can be overridden by \ics{glossarystyle}.
@@ -7681,7 +11057,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%\label{sec:code:mfirstuc}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{mfirstuc}[2008/06/18 v1.02 (NLCT)]
+\ProvidesPackage{mfirstuc}[2008/12/22 v1.03 (NLCT)]
% \end{macrocode}
%\begin{macro}{\makefirstuc}
% Syntax:\\
@@ -7700,7 +11076,10 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\def\gls@argi{#1}%
\ifx\gls@argi\@empty
\else
- \protected@edef\@gls@tmp{\ #1}%
+% \end{macrocode}
+%\changes{1.03}{2008/12/22}{changed 'protected@edef to 'def}
+% \begin{macrocode}
+ \def\@gls@tmp{\ #1}%
\@onelevel@sanitize\@gls@tmp
\expandafter\@gls@checkcs\@gls@tmp\relax\relax
\if@glscs
@@ -7790,12 +11169,11 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% by \meta{type}.
%\begin{macro}{\glsnavhyperlink}
%\changes{1.14}{2008 June 17}{changed 'edef to 'protected@edef}
+%\changes{1.17}{2008 December 26}{replaced 'hyperlink to '@glslink}
% \begin{macrocode}
-\@ifundefined{hyperlink}{%
-\newcommand*{\glsnavhyperlink}[3][]{#3}}{%
\newcommand*{\glsnavhyperlink}[3][\@glo@type]{%
-\edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
-\hyperlink{glsn:#1@#2}{#3}}}
+ \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ \@glslink{glsn:#1@#2}{#3}}
% \end{macrocode}
%\end{macro}
%\vskip5pt
@@ -7806,42 +11184,46 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%\begin{macro}{\glsnavhypertarget}
%\changes{1.14}{2008 June 17}{added write to aux file}
%\changes{1.15}{2008 August 15}{added check if rerun required}
+%\changes{1.17}{2008 December 26}{replaced 'hypertarget to '@glstarget}
% \begin{macrocode}
-\@ifundefined{hypertarget}{%
-\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
-\protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
-#3%
-\expandafter
-\let\expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
-\@for\@gls@elem:=\@gls@list\do{%
-\ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
-\if@endfor
-\else
- \PackageWarningNoLine{glossaries}{Navigation panel
- for glossary type `#1'^^Jmissing group `#2'}%
- \gdef\gls@hypergrouprerun{%
- \PackageWarningNoLine{glossaries}{Navigation panel
- has changed. Rerun LaTeX}}%
-\fi}}{%
\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
-\protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
-\hypertarget{glsn:#1@#2}{#3}%
-\expandafter
-\let\expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
-\@for\@gls@elem:=\@gls@list\do{%
-\ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
-\if@endfor
-\else
- \PackageWarningNoLine{glossaries}{Navigation panel
- for glossary type `#1'^^Jmissing group `#2'}%
- \gdef\gls@hypergrouprerun{%
+% \end{macrocode}
+% Add this group to the aux file for re-run check.
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
+% \end{macrocode}
+% Add the target.
+% \begin{macrocode}
+ \@glstarget{glsn:#1@#2}{#3}%
+% \end{macrocode}
+% Check list of know groups to determine if a re-run is required.
+% \begin{macrocode}
+ \expandafter\let
+ \expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
+% \end{macrocode}
+% Iterate through list and terminate loop if this group is found.
+% \begin{macrocode}
+ \@for\@gls@elem:=\@gls@list\do{%
+ \ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
+% \end{macrocode}
+% Check if list terminated prematurely.
+% \begin{macrocode}
+ \if@endfor
+ \else
+% \end{macrocode}
+% This group was not included in the list, so issue a warning.
+% \begin{macrocode}
\PackageWarningNoLine{glossaries}{Navigation panel
- has changed. Rerun LaTeX}}%
-\fi}}
+ for glossary type `#1'^^Jmissing group `#2'}%
+ \gdef\gls@hypergrouprerun{%
+ \PackageWarningNoLine{glossaries}{Navigation panel
+ has changed. Rerun LaTeX}}%
+ \fi
+}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\gls@hypergrouprerun}
-% Give a warning at the end if rerun required
+% Give a warning at the end if re-run required
%\changes{1.15}{2008 August 15}{new}
% \begin{macrocode}
\let\gls@hypergrouprerun\relax
@@ -7910,8 +11292,10 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%\begin{macro}{\glssymbolnav}
% \begin{macrocode}
\newcommand*{\glssymbolnav}{%
-\glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}} \textbar\
-\glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}} \textbar\
+\glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}}%
+\glshypernavsep
+\glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}}%
+\glshypernavsep
}
% \end{macrocode}
%\end{macro}
@@ -7925,20 +11309,23 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%<*glossary-list.sty>
% \end{macrocode}
%\fi
-% \subsection{List Style (glossary-list package)}
-% The \isty{glossary-list} package defines glossary styles
+% \subsection{List Style (glossary-list.sty)}
+% The \isty{glossary-list} style file defines glossary styles
% that use the \envname{description} environment. Note that since
% the entry name is placed in the optional argument to the
% \ics{item} command, it will appear in a bold font by
% default.
% \begin{macrocode}
-\ProvidesPackage{glossary-list}[2008/02/16 v1.03 (NLCT)]
+\ProvidesPackage{glossary-list}[2008/12/11 v1.04 (NLCT)]
% \end{macrocode}
+%\begin{macro}{list}
% The \glostyle{list} glossary style
% uses the \envname{description} environment. The group separator
% \ics{glsgroupskip} is redefined as \cs{indexspace}
% which produces a gap between groups. The glossary heading
-% and the group headings do nothing. This is used as the default
+% and the group headings do nothing. Sub-entries immediately
+% follow the main entry without the sub-entry name. This style
+% does not use the entry's symbol. This is used as the default
% style for the \sty{glossaries} package.
% \begin{macrocode}
\newglossarystyle{list}{%
@@ -7947,8 +11334,13 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\@glstarget{glo:##1}{##2}] ##3\glspostdescription\space ##5}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+\@glstarget{glo:##2}{\strut}##4\glspostdescription\space ##6.}%
\renewcommand*{\glsgroupskip}{\indexspace}}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{listgroup}
% The \glostyle{listgroup} style is like the \glostyle{list}
% style, but the glossary groups have headings.
%\changes{1.08}{2007 Oct 13}{changed listgroup style to use \cs{glsgetgrouptitle}}
@@ -7957,6 +11349,9 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\glossarystyle{list}%
\renewcommand*{\glsgroupheading}[1]{\item[\glsgetgrouptitle{##1}]}}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{listhypergroup}
% The \glostyle{listhypergroup} style is like the \glostyle{listgroup}
% style, but has a set of links to the groups at the
% start of the glossary.
@@ -7968,15 +11363,24 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{%
\item[\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}]}}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{altlist}
% The \glostyle{altlist} glossary style is like the \glostyle{list}
-% style, but places the description on a new line.
+% style, but places the description on a new line. Sub-entries
+% follow in separate paragraphs without the sub-entry name. This
+% style does not use the entry's symbol.
% \begin{macrocode}
\newglossarystyle{altlist}{%
\glossarystyle{list}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\@glstarget{glo:##1}{##2}]\mbox{}\newline ##3\glspostdescription\space ##5}%
+\renewcommand{\glossarysubentryfield}[6]{%
+\par\@glstarget{glo:##2}{\strut}##4\glspostdescription\space ##6}%
}
% \end{macrocode}
+%\end{macro}
+%\begin{macro}{altlistgroup}
% The \glostyle{altlistgroup} glossary style is like the
% \glostyle{altlist} style, but the glossary groups have headings.
%\changes{1.08}{2007 Oct 13}{changed altlistgroup style to use \cs{glsgetgrouptitle}}
@@ -7985,6 +11389,9 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\glossarystyle{altlist}%
\renewcommand*{\glsgroupheading}[1]{\item[\glsgetgrouptitle{##1}]}}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{altlisthypergroup}
% The \glostyle{altlisthypergroup} glossary style is like the
% \glostyle{altlistgroup} style, but has a
% set of links to the groups at the start of the glossary.
@@ -7996,25 +11403,35 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{%
\item[\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}]}}
% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{listdotted}
% The \glostyle{listdotted} glossary style was supplied by
% Axel~Menzel. I've modified it slightly so that the distance from
-% the start of the name to the end of the dotted line is specified by
-% \cs{glslistdottedwidth}.
-%\begin{macro}{\glslistdottedwidth}
-% \begin{macrocode}
-\newlength\glslistdottedwidth
-\setlength{\glslistdottedwidth}{.5\linewidth}
-% \end{macrocode}
-%\end{macro}
+% the start of the name to the end of the dotted line is specified
+% by \cs{glslistdottedwidth}.
% Note that this style ignores the page numbers as well as the
-% symbol.
+% symbol. Sub-entries are displayed in the same way as top-level
+% entries.
% \begin{macrocode}
\newglossarystyle{listdotted}{%
\glossarystyle{list}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[]\makebox[\glslistdottedwidth][l]{\@glstarget{glo:##1}{##2}%
-\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}}
+\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+\item[]\makebox[\glslistdottedwidth][l]{\@glstarget{glo:##2}{##3}%
+\unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistdottedwidth}
+% \begin{macrocode}
+\newlength\glslistdottedwidth
+\setlength{\glslistdottedwidth}{.5\linewidth}
% \end{macrocode}
+%\end{macro}
+%
%\iffalse
% \begin{macrocode}
%</glossary-list.sty>
@@ -8030,7 +11447,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% The glossary styles defined in the \isty{glossary-long} package
% used the \envname{longtable} environment in the glossary.
% \begin{macrocode}
-\ProvidesPackage{glossary-long}[2007/07/04 v1.01 (NLCT)]
+\ProvidesPackage{glossary-long}[2008/12/11 v1.02 (NLCT)]
% \end{macrocode}
% Requires the \isty{longtable} package:
% \begin{macrocode}
@@ -8064,6 +11481,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4\glspostdescription\space ##6\\}%
\renewcommand*{\glsgroupskip}{ & \\}}
% \end{macrocode}
% The \glostyle{longborder} style is like the above, but with horizontal and
@@ -8104,6 +11523,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3 & ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4 & ##6\\}%
\renewcommand*{\glsgroupskip}{ & &\\}}
% \end{macrocode}
% The \glostyle{long3colborder} style is like the
@@ -8147,6 +11568,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3 & ##4 & ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4 & ##5 & ##6\\}%
\renewcommand*{\glsgroupskip}{ & & &\\}}
% \end{macrocode}
% The \glostyle{long4colheader} style is like \glostyle{long4col} but with a header row.
@@ -8236,7 +11659,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% The glossary styles defined in the \isty{glossary-super} package
% use the \envname{supertabular} environment.
% \begin{macrocode}
-\ProvidesPackage{glossary-super}[2007/07/04 v1.01 (NLCT)]
+\ProvidesPackage{glossary-super}[2008/12/11 v1.02 (NLCT)]
% \end{macrocode}
% Requires the \isty{supertabular} package:
% \begin{macrocode}
@@ -8255,6 +11678,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4\glspostdescription\space ##6\\}%
\renewcommand*{\glsgroupskip}{ & \\}}
% \end{macrocode}
% The \glostyle{superborder} style is like the above, but with horizontal and
@@ -8300,6 +11725,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3 & ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4 & ##6\\}%
\renewcommand*{\glsgroupskip}{ & &\\}}
% \end{macrocode}
% The \glostyle{super3colborder} style is like the
@@ -8353,6 +11780,8 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3 & ##4 & ##5\\}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ & \@glstarget{glo:##2}{\strut}##4 & ##5 & ##6\\}%
\renewcommand*{\glsgroupskip}{ & & &\\}}
% \end{macrocode}
% The \glostyle{super4colheader} style is like
@@ -8447,6 +11876,422 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%\fi
%\iffalse
% \begin{macrocode}
+%<*glossary-tree.sty>
+% \end{macrocode}
+%\fi
+%\subsection{Tree Styles (glossary-tree.sty)}
+% The \isty{glossary-tree} style file defines glossary styles
+% that have a tree-like structure. These are designed for
+% hierarchical glossaries.
+% \begin{macrocode}
+\ProvidesPackage{glossary-tree}[2008/12/11 v1.0 (NLCT)]
+% \end{macrocode}
+%
+%\begin{macro}{index}
+% The \glostyle{index} glossary style
+% is similar in style to the way indices are usually typeset
+% using \cs{item}, \cs{subitem} and \cs{subsubitem}.
+% The entry name is
+% set in bold. If an entry has a symbol, it is placed in
+% brackets after the name. Then the description is displayed,
+% followed by the number list. This style allows up to three
+% levels.
+% \begin{macrocode}
+\newglossarystyle{index}{%
+\renewenvironment{theglossary}{%
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt plus 0.3pt}%
+\let\item\@idxitem}{}%
+\renewcommand*{\glossaryheader}{}%
+\renewcommand*{\glsgroupheading}[1]{}%
+\renewcommand*{\glossaryentryfield}[5]{%
+\item\textbf{\@glstarget{glo:##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5}%
+\renewcommand*{\glossarysubentryfield}[6]{%
+ \ifcase##1\relax
+ \item
+ \or
+ \subitem
+ \else
+ \subsubitem
+ \fi
+ \textbf{\@glstarget{glo:##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6}%
+\renewcommand*{\glsgroupskip}{\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{indexgroup}
+% The \glostyle{indexgroup} style is like the \glostyle{index}
+% style but has headings.
+% \begin{macrocode}
+\newglossarystyle{indexgroup}{%
+\glossarystyle{index}%
+\renewcommand*{\glsgroupheading}[1]{%
+ \item\textbf{\glsgetgrouptitle{##1}}\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{indexhypergroup}
+% The \glostyle{indexhypergroup} style is like the
+% \glostyle{indexgroup} style but has hyper navigation.
+% \begin{macrocode}
+\newglossarystyle{indexhypergroup}{%
+\glossarystyle{index}%
+\renewcommand*{\glossaryheader}{%
+\item\textbf{\glsnavigation}\indexspace}%
+\renewcommand*{\glsgroupheading}[1]{%
+\item\textbf{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{tree}
+% The \glostyle{tree} glossary style
+% is similar in style to the \glostyle{index} style, but
+% can have arbitrary levels.
+% \begin{macrocode}
+\newglossarystyle{tree}{%
+\renewenvironment{theglossary}{%
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt plus 0.3pt}%
+}{}%
+\renewcommand*{\glossaryheader}{}%
+\renewcommand*{\glsgroupheading}[1]{}%
+\renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \textbf{\@glstarget{glo:##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+\renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \textbf{\@glstarget{glo:##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6\par}%
+\renewcommand*{\glsgroupskip}{\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{treegroup}
+% Like the \glostyle{tree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{treegroup}{%
+\glossarystyle{tree}%
+\renewcommand{\glsgroupheading}[1]{\par
+\noindent\textbf{\glsgetgrouptitle{##1}}\par\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{treehypergroup}
+% The \glostyle{treehypergroup} style is like the \glostyle{treegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{treehypergroup}{%
+\glossarystyle{tree}%
+\renewcommand*{\glossaryheader}{%
+\par\noindent\textbf{\glsnavigation}\par\indexspace}%
+\renewcommand*{\glsgroupheading}[1]{%
+\par\noindent
+\textbf{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreeindent}
+% Length governing left indent for each level of the \glostyle{tree}
+% style.
+% \begin{macrocode}
+\newlength\glstreeindent
+\setlength{\glstreeindent}{10pt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{treenoname}
+% The \glostyle{treenoname} glossary style
+% is like the \glostyle{tree} style, but
+% doesn't print the name or symbol for sub-levels.
+% \begin{macrocode}
+\newglossarystyle{treenoname}{%
+\renewenvironment{theglossary}{%
+\setlength{\parindent}{0pt}%
+\setlength{\parskip}{0pt plus 0.3pt}%
+}{}%
+\renewcommand*{\glossaryheader}{}%
+\renewcommand*{\glsgroupheading}[1]{}%
+\renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \textbf{\@glstarget{glo:##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+\renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \textbf{\@glstarget{glo:##2}{\strut}}%
+ ##4\glspostdescription\space ##6\par}%
+\renewcommand*{\glsgroupskip}{\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{treenonamegroup}
+% Like the \glostyle{treenoname} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{treenonamegroup}{%
+\glossarystyle{treenoname}%
+\renewcommand{\glsgroupheading}[1]{\par
+\noindent\textbf{\glsgetgrouptitle{##1}}\par\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{treenonamehypergroup}
+% The \glostyle{treenonamehypergroup} style is like the \glostyle{treenonamegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{treenonamehypergroup}{%
+\glossarystyle{treenoname}%
+\renewcommand*{\glossaryheader}{%
+\par\noindent\textbf{\glsnavigation}\par\indexspace}%
+\renewcommand*{\glsgroupheading}[1]{%
+\par\noindent
+\textbf{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetwidest}
+% \cs{glssetwidest}\oarg{level}\marg{text} sets the widest
+% text for the given level. It is used by the
+% \glostyle{alttree} glossary styles to determine the
+% indentation of each level.
+% \begin{macrocode}
+\newcommand*{\glssetwidest}[2][0]{%
+ \expandafter\def\csname @glswidestname\romannumeral#1\endcsname{%
+ #2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glswidestname}
+% Initialise \cs{@glswidestname}.
+% \begin{macrocode}
+\newcommand*{\@glswidestname}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{alttree}
+% The \glostyle{alttree} glossary style
+% is similar in style to the \glostyle{tree} style, but
+% the indentation is obtained from the width of
+% \cs{@glswidestname} which is set using \cs{glssetwidest}.
+% \begin{macrocode}
+\newglossarystyle{alttree}{%
+% \end{macrocode}
+% Redefine \envname{theglossary} environment.
+% \begin{macrocode}
+\renewenvironment{theglossary}{%
+\def\@gls@prevlevel{-1}%
+\mbox{}\par}{\par}%
+% \end{macrocode}
+% Set the header and group headers to nothing.
+% \begin{macrocode}
+\renewcommand*{\glossaryheader}{}%
+\renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Redefine the way that the level~0 entries are displayed.
+% \begin{macrocode}
+\renewcommand{\glossaryentryfield}[5]{%
+% \end{macrocode}
+% If the level hasn't changed, keep the same settings, otherwise
+% change \cs{glstreeindent} accordingly.
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+% \end{macrocode}
+% Find out how big the indentation should be by measuring the
+% widest entry.
+% \begin{macrocode}
+ \settowidth{\glstreeindent}{\textbf{\@glswidestname\space}}%
+% \end{macrocode}
+% Set the hangindent and paragraph indent.
+% \begin{macrocode}
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \fi
+% \end{macrocode}
+% Put the name to the left of the paragraph block.
+% \begin{macrocode}
+ \makebox[0pt][r]{\makebox[\glstreeindent][l]{%
+ \textbf{\@glstarget{glo:##1}{##2}}}}%
+% \end{macrocode}
+% If the symbol is missing, ignore it, otherwise put it in
+% brackets.
+% \begin{macrocode}
+ \ifx\relax##4\relax
+ \else
+ (##4)\space
+ \fi
+% \end{macrocode}
+% Do the description followed by the description terminator and
+% location list.
+% \begin{macrocode}
+ ##3\glspostdescription \space ##5\par
+% \end{macrocode}
+% Set the previous level to 0.
+% \begin{macrocode}
+ \def\@gls@prevlevel{0}%
+}%
+% \end{macrocode}
+% Redefine the way sub-entries are displayed.
+% \begin{macrocode}
+\renewcommand{\glossarysubentryfield}[6]{%
+% \end{macrocode}
+% If the level hasn't changed, keep the same settings, otherwise
+% adjust \cs{glstreeindent} accordingly.
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+% \end{macrocode}
+% Compute the widest entry for this level, or for level~0 if not
+% defined for this level. Store in \cs{gls@tmplen}
+% \begin{macrocode}
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\textbf{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\textbf{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+% \end{macrocode}
+% Determine if going up or down a level
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel<##1\relax
+% \end{macrocode}
+% Depth has increased, so add the width of the widest entry to
+% \cs{glstreeindent}.
+% \begin{macrocode}
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+% \end{macrocode}
+% Depth has decreased, so subtract width of the widest entry
+% from the previous level to \cs{glstreeindent}. First
+% determine the width of the widest entry for the previous level
+% and store in \cs{glstreeindent}.
+% \begin{macrocode}
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+% \end{macrocode}
+% Subtract this length from the previous level's paragraph indent
+% and set to \cs{glstreeindent}.
+% \begin{macrocode}
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+% \end{macrocode}
+% Set the hanging indentation.
+% \begin{macrocode}
+ \hangindent\glstreeindent
+% \end{macrocode}
+% Put the name to the left of the paragraph block
+% \begin{macrocode}
+ \makebox[0pt][r]{\makebox[\gls@tmplen][l]{%
+ \textbf{\@glstarget{glo:##2}{##3}}}}%
+% \end{macrocode}
+% If the symbol is missing, ignore it, otherwise put it in
+% brackets.
+% \begin{macrocode}
+ \ifx##5\relax\relax
+ \else
+ (##5)\space
+ \fi
+% \end{macrocode}
+% Do the description followed by the description terminator and
+% location list.
+% \begin{macrocode}
+ ##4\glspostdescription\space ##6\par
+% \end{macrocode}
+% Set the previous level macro to the current level.
+% \begin{macrocode}
+ \def\@gls@prevlevel{##1}}%
+\renewcommand*{\glsgroupskip}{\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{alttreegroup}
+% Like the \glostyle{alttree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{alttreegroup}{%
+\glossarystyle{alttree}%
+\renewcommand{\glsgroupheading}[1]{\par
+\def\@gls@prevlevel{-1}%
+\hangindent0pt\relax
+\parindent0pt\relax
+\textbf{\glsgetgrouptitle{##1}}\par\indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{alttreehypergroup}
+% The \glostyle{alttreehypergroup} style is like the
+% \glostyle{alttreegroup} style, but has a set of links to the
+% groups at the start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{alttreehypergroup}{%
+\glossarystyle{alttree}%
+% \end{macrocode}
+% Put the navigation links in the header
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \textbf{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Put a hypertarget at the start of each group
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \textbf{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</glossary-tree.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*glossaries-babel.sty>
% \end{macrocode}
%\fi
@@ -8458,151 +12303,306 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% support is required, but the \isty{translator} package is not loaded.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{glossaries-babel}[2008/02/22 v1.0 (NLCT)]
+\ProvidesPackage{glossaries-babel}[2008/12/11 v1.01 (NLCT)]
% \end{macrocode}
% English:
% \begin{macrocode}
-\addto\captionsenglish{%
-\renewcommand*{\glossaryname}{Glossary}%
-\renewcommand*{\acronymname}{Acronyms}%
-\renewcommand*{\entryname}{Notation}%
-\renewcommand*{\descriptionname}{Description}%
-\renewcommand*{\symbolname}{Symbol}%
-\renewcommand*{\pagelistname}{Page List}%
-\renewcommand*{\glssymbolsgroupname}{Symbols}%
-\renewcommand*{\glsnumbersgroupname}{Numbers}%
+\@ifundefined{captionsenglish}{}{%
+ \addto\captionsenglish{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
+\@ifundefined{captionsamerican}{}{%
+ \addto\captionsamerican{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
+\@ifundefined{captionsaustralian}{}{%
+ \addto\captionsaustralian{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
}%
+}
+\@ifundefined{captionsbritish}{}{%
+ \addto\captionsbritish{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+\@ifundefined{captionscanadian}{}{%
+ \addto\captionscanadian{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
+\@ifundefined{captionsnewzealand}{}{%
+ \addto\captionsnewzealand{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
+\@ifundefined{captionsUKenglish}{}{%
+ \addto\captionsUKenglish{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
+\@ifundefined{captionsUSenglish}{}{%
+ \addto\captionsUSenglish{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+}%
+}
% \end{macrocode}
% German (quite a few variations were suggested for German;
% I settled on the following):
% \begin{macrocode}
-\addto\captionsgerman{%
-\renewcommand*{\glossaryname}{Glossar}%
-\renewcommand*{\acronymname}{Akronyme}%
-\renewcommand*{\entryname}{Bezeichnung}%
-\renewcommand*{\descriptionname}{Beschreibung}%
-\renewcommand*{\symbolname}{Symbol}%
-\renewcommand*{\pagelistname}{Seiten}%
-\renewcommand*{\glssymbolsgroupname}{Symbole}%
-\renewcommand*{\glsnumbersgroupname}{Zahlen}}
+\@ifundefined{captionsgerman}{}{%
+ \addto\captionsgerman{%
+ \renewcommand*{\glossaryname}{Glossar}%
+ \renewcommand*{\acronymname}{Akronyme}%
+ \renewcommand*{\entryname}{Bezeichnung}%
+ \renewcommand*{\descriptionname}{Beschreibung}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Seiten}%
+ \renewcommand*{\glssymbolsgroupname}{Symbole}%
+ \renewcommand*{\glsnumbersgroupname}{Zahlen}}
+}
% \end{macrocode}
% ngerman is identical to German:
% \begin{macrocode}
-\addto\captionsngerman{%
-\renewcommand*{\glossaryname}{Glossar}%
-\renewcommand*{\acronymname}{Akronyme}%
-\renewcommand*{\entryname}{Bezeichnung}%
-\renewcommand*{\descriptionname}{Beschreibung}%
-\renewcommand*{\symbolname}{Symbol}%
-\renewcommand*{\pagelistname}{Seiten}%
-\renewcommand*{\glssymbolsgroupname}{Symbole}%
-\renewcommand*{\glsnumbersgroupname}{Zahlen}}
+\@ifundefined{captionsgerman}{}{%
+ \addto\captionsngerman{%
+ \renewcommand*{\glossaryname}{Glossar}%
+ \renewcommand*{\acronymname}{Akronyme}%
+ \renewcommand*{\entryname}{Bezeichnung}%
+ \renewcommand*{\descriptionname}{Beschreibung}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Seiten}%
+ \renewcommand*{\glssymbolsgroupname}{Symbole}%
+ \renewcommand*{\glsnumbersgroupname}{Zahlen}}
+}
% \end{macrocode}
% Italian:
% \begin{macrocode}
-\addto\captionsitalian{%
-\renewcommand*{\glossaryname}{Glossario}%
-\renewcommand*{\acronymname}{Acronimi}%
-\renewcommand*{\entryname}{Nomenclatura}%
-\renewcommand*{\descriptionname}{Descrizione}%
-\renewcommand*{\symbolname}{Simbolo}%
-\renewcommand*{\pagelistname}{Elenco delle pagine}%
-\renewcommand*{\glssymbolsgroupname}{Simboli}%
-\renewcommand*{\glsnumbersgroupname}{Numeri}}
+\@ifundefined{captionsitalian}{}{%
+ \addto\captionsitalian{%
+ \renewcommand*{\glossaryname}{Glossario}%
+ \renewcommand*{\acronymname}{Acronimi}%
+ \renewcommand*{\entryname}{Nomenclatura}%
+ \renewcommand*{\descriptionname}{Descrizione}%
+ \renewcommand*{\symbolname}{Simbolo}%
+ \renewcommand*{\pagelistname}{Elenco delle pagine}%
+ \renewcommand*{\glssymbolsgroupname}{Simboli}%
+ \renewcommand*{\glsnumbersgroupname}{Numeri}}
+}
% \end{macrocode}
% Dutch:
% \begin{macrocode}
-\addto\captionsdutch{%
-\renewcommand*{\glossaryname}{Woordenlijst}%
-\renewcommand*{\acronymname}{Acroniemen}%
-\renewcommand*{\entryname}{Benaming}%
-\renewcommand*{\descriptionname}{Beschrijving}%
-\renewcommand*{\symbolname}{Symbool}%
-\renewcommand*{\pagelistname}{Pagina's}%
-\renewcommand*{\glssymbolsgroupname}{Symbolen}%
-\renewcommand*{\glsnumbersgroupname}{Cijfers}}
+\@ifundefined{captionsdutch}{}{%
+ \addto\captionsdutch{%
+ \renewcommand*{\glossaryname}{Woordenlijst}%
+ \renewcommand*{\acronymname}{Acroniemen}%
+ \renewcommand*{\entryname}{Benaming}%
+ \renewcommand*{\descriptionname}{Beschrijving}%
+ \renewcommand*{\symbolname}{Symbool}%
+ \renewcommand*{\pagelistname}{Pagina's}%
+ \renewcommand*{\glssymbolsgroupname}{Symbolen}%
+ \renewcommand*{\glsnumbersgroupname}{Cijfers}}
+}
% \end{macrocode}
% Spanish:
% \begin{macrocode}
-\addto\captionsspanish{%
-\renewcommand*{\glossaryname}{Glosario}%
-\renewcommand*{\acronymname}{Siglas}%
-\renewcommand*{\entryname}{Entrada}%
-\renewcommand*{\descriptionname}{Descripci\'on}%
-\renewcommand*{\symbolname}{S\'{\i}mbolo}%
-\renewcommand*{\pagelistname}{Lista de p\'aginas}%
-\renewcommand*{\glssymbolsgroupname}{S\'{\i}mbolos}%
-\renewcommand*{\glsnumbersgroupname}{N\'umeros}}
+\@ifundefined{captionsspanish}{}{%
+ \addto\captionsspanish{%
+ \renewcommand*{\glossaryname}{Glosario}%
+ \renewcommand*{\acronymname}{Siglas}%
+ \renewcommand*{\entryname}{Entrada}%
+ \renewcommand*{\descriptionname}{Descripci\'on}%
+ \renewcommand*{\symbolname}{S\'{\i}mbolo}%
+ \renewcommand*{\pagelistname}{Lista de p\'aginas}%
+ \renewcommand*{\glssymbolsgroupname}{S\'{\i}mbolos}%
+ \renewcommand*{\glsnumbersgroupname}{N\'umeros}}
+}
% \end{macrocode}
% French:
% \begin{macrocode}
-\addto\captionsfrench{%
-\renewcommand*{\glossaryname}{Glossaire}%
-\renewcommand*{\acronymname}{Acronymes}%
-\renewcommand*{\entryname}{Terme}%
-\renewcommand*{\descriptionname}{Description}%
-\renewcommand*{\symbolname}{Symbole}%
-\renewcommand*{\pagelistname}{Pages}%
-\renewcommand*{\glssymbolsgroupname}{Symboles}%
-\renewcommand*{\glsnumbersgroupname}{Nombres}}
+\@ifundefined{captionsfrench}{}{%
+ \addto\captionsfrench{%
+ \renewcommand*{\glossaryname}{Glossaire}%
+ \renewcommand*{\acronymname}{Acronymes}%
+ \renewcommand*{\entryname}{Terme}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbole}%
+ \renewcommand*{\pagelistname}{Pages}%
+ \renewcommand*{\glssymbolsgroupname}{Symboles}%
+ \renewcommand*{\glsnumbersgroupname}{Nombres}}
+}
+\@ifundefined{captionsfrenchb}{}{%
+ \addto\captionsfrenchb{%
+ \renewcommand*{\glossaryname}{Glossaire}%
+ \renewcommand*{\acronymname}{Acronymes}%
+ \renewcommand*{\entryname}{Terme}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbole}%
+ \renewcommand*{\pagelistname}{Pages}%
+ \renewcommand*{\glssymbolsgroupname}{Symboles}%
+ \renewcommand*{\glsnumbersgroupname}{Nombres}}
+}
+\@ifundefined{captionsfrancais}{}{%
+ \addto\captionsfrancais{%
+ \renewcommand*{\glossaryname}{Glossaire}%
+ \renewcommand*{\acronymname}{Acronymes}%
+ \renewcommand*{\entryname}{Terme}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbole}%
+ \renewcommand*{\pagelistname}{Pages}%
+ \renewcommand*{\glssymbolsgroupname}{Symboles}%
+ \renewcommand*{\glsnumbersgroupname}{Nombres}}
+}
% \end{macrocode}
% Danish:
% \begin{macrocode}
-\addto\captionsdanish{%
-\renewcommand*{\glossaryname}{Ordliste}%
-\renewcommand*{\acronymname}{Akronymer}%
-\renewcommand*{\entryname}{Symbolforklaring}%
-\renewcommand*{\descriptionname}{Beskrivelse}%
-\renewcommand*{\symbolname}{Symbol}%
-\renewcommand*{\pagelistname}{Side}%
-\renewcommand*{\glssymbolsgroupname}{Symboler}%
-\renewcommand*{\glsnumbersgroupname}{Tal}}
+\@ifundefined{captionsdanish}{}{%
+ \addto\captionsdanish{%
+ \renewcommand*{\glossaryname}{Ordliste}%
+ \renewcommand*{\acronymname}{Akronymer}%
+ \renewcommand*{\entryname}{Symbolforklaring}%
+ \renewcommand*{\descriptionname}{Beskrivelse}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Side}%
+ \renewcommand*{\glssymbolsgroupname}{Symboler}%
+ \renewcommand*{\glsnumbersgroupname}{Tal}}
+}
% \end{macrocode}
% Irish:
% \begin{macrocode}
-\addto\captionsirish{%
-\renewcommand*{\glossaryname}{Gluais}%
-\renewcommand*{\acronymname}{Acrainmneacha}%
+\@ifundefined{captionsirish}{}{%
+ \addto\captionsirish{%
+ \renewcommand*{\glossaryname}{Gluais}%
+ \renewcommand*{\acronymname}{Acrainmneacha}%
% \end{macrocode}
% wasn't sure whether to go for N\'ota (Note), Ciall (`Meaning',
% `sense') or Br\'{\i} (`Meaning'). In the end I chose Ciall.
% \begin{macrocode}
-\renewcommand*{\entryname}{Ciall}%
-\renewcommand*{\descriptionname}{Tuairisc}%
+ \renewcommand*{\entryname}{Ciall}%
+ \renewcommand*{\descriptionname}{Tuairisc}%
% \end{macrocode}
% Again, not sure whether to use Comhartha/Comhartha\'{\i} or
% Siombail/Siombaile, so have chosen the former.
% \begin{macrocode}
-\renewcommand*{\symbolname}{Comhartha}%
-\renewcommand*{\glssymbolsgroupname}{Comhartha\'{\i}}%
-\renewcommand*{\pagelistname}{Leathanaigh}%
-\renewcommand*{\glsnumbersgroupname}{Uimhreacha}}
+ \renewcommand*{\symbolname}{Comhartha}%
+ \renewcommand*{\glssymbolsgroupname}{Comhartha\'{\i}}%
+ \renewcommand*{\pagelistname}{Leathanaigh}%
+ \renewcommand*{\glsnumbersgroupname}{Uimhreacha}}
+}
% \end{macrocode}
% Hungarian:
% \begin{macrocode}
-\addto\captionsmagyar{%
-\renewcommand*{\glossaryname}{Sz\'ojegyz\'ek}%
-\renewcommand*{\acronymname}{Bet\H uszavak}%
-\renewcommand*{\entryname}{Kifejez\'es}%
-\renewcommand*{\descriptionname}{Magyar\'azat}%
-\renewcommand*{\symbolname}{Jel\"ol\'es}%
-\renewcommand*{\pagelistname}{Oldalsz\'am}%
-\renewcommand*{\glssymbolsgroupname}{Jelek}%
-\renewcommand*{\glsnumbersgroupname}{Sz\'amjegyek}%
+\@ifundefined{captionsmagyar}{}{%
+ \addto\captionsmagyar{%
+ \renewcommand*{\glossaryname}{Sz\'ojegyz\'ek}%
+ \renewcommand*{\acronymname}{Bet\H uszavak}%
+ \renewcommand*{\entryname}{Kifejez\'es}%
+ \renewcommand*{\descriptionname}{Magyar\'azat}%
+ \renewcommand*{\symbolname}{Jel\"ol\'es}%
+ \renewcommand*{\pagelistname}{Oldalsz\'am}%
+ \renewcommand*{\glssymbolsgroupname}{Jelek}%
+ \renewcommand*{\glsnumbersgroupname}{Sz\'amjegyek}%
+ }
+}
+\@ifundefined{captionshungarian}{}{%
+ \addto\captionshungarian{%
+ \renewcommand*{\glossaryname}{Sz\'ojegyz\'ek}%
+ \renewcommand*{\acronymname}{Bet\H uszavak}%
+ \renewcommand*{\entryname}{Kifejez\'es}%
+ \renewcommand*{\descriptionname}{Magyar\'azat}%
+ \renewcommand*{\symbolname}{Jel\"ol\'es}%
+ \renewcommand*{\pagelistname}{Oldalsz\'am}%
+ \renewcommand*{\glssymbolsgroupname}{Jelek}%
+ \renewcommand*{\glsnumbersgroupname}{Sz\'amjegyek}%
+ }
}
% \end{macrocode}
% Polish
% \changes{1.13}{2008 May 10}{Add Polish support}
% \begin{macrocode}
-\addto\captionspolish{%
-\renewcommand*{\glossaryname}{S{\l}ownik termin\'ow}%
-\renewcommand*{\acronymname}{Skr\'ot}%
-\renewcommand*{\entryname}{Termin}%
-\renewcommand*{\descriptionname}{Opis}%
-\renewcommand*{\symbolname}{Symbol}%
-\renewcommand*{\pagelistname}{Strony}%
-\renewcommand*{\glssymbolsgroupname}{Symbole}%
-\renewcommand*{\glsnumbersgroupname}{Liczby}}
+\@ifundefined{captionspolish}{}{%
+ \addto\captionspolish{%
+ \renewcommand*{\glossaryname}{S{\l}ownik termin\'ow}%
+ \renewcommand*{\acronymname}{Skr\'ot}%
+ \renewcommand*{\entryname}{Termin}%
+ \renewcommand*{\descriptionname}{Opis}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Strony}%
+ \renewcommand*{\glssymbolsgroupname}{Symbole}%
+ \renewcommand*{\glsnumbersgroupname}{Liczby}}
+}
+% \end{macrocode}
+% Brazilian
+%\changes{1.17}{2008 December 11}{Added Brazilian support}
+% \begin{macrocode}
+\@ifundefined{captionsbrazil}{}{%
+ \addto\captionsbrazil{%
+ \renewcommand*{\glossaryname}{Gloss\'ario}%
+ \renewcommand*{\acronymname}{Siglas}%
+ \renewcommand*{\entryname}{Nota\c c\~ao}%
+ \renewcommand*{\descriptionname}{Descri\c c\~ao}%
+ \renewcommand*{\symbolname}{S\'imbolo}%
+ \renewcommand*{\pagelistname}{Lista de P\'aginas}%
+ \renewcommand*{\glssymbolsgroupname}{S\'imbolos}%
+ \renewcommand*{\glsnumbersgroupname}{N\'umeros}%
+ }%
+}
% \end{macrocode}
%\iffalse
% \begin{macrocode}
@@ -8611,11 +12611,39 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
%\fi
%\iffalse
% \begin{macrocode}
+%<*glossaries-dictionary-Brazil.dict>
+% \end{macrocode}
+%\fi
+%\subsection{Brazilian Dictionary}
+% This is a dictionary file provided by Thiago de~Melo for
+% use with the \isty{translator} package.
+%\changes{1.17}{2008 November 17}{added Brazilian dictionary}
+% \begin{macrocode}
+\ProvidesDictionary{glossaries-dictionary}{Brazil}
+% \end{macrocode}
+% Provide Brazilian translations:
+% \begin{macrocode}
+\providetranslation{Glossary}{Gloss\'ario}
+\providetranslation{Acronyms}{Siglas}
+\providetranslation{Notation (glossaries)}{Nota\c c\~ao}
+\providetranslation{Description (glossaries)}{Descri\c c\~ao}
+\providetranslation{Symbol (glossaries)}{S\'imbolo}
+\providetranslation{Page List (glossaries)}{Lista de P\'aginas}
+\providetranslation{Symbols (glossaries)}{S\'imbolos}
+\providetranslation{Numbers (glossaries)}{N\'umeros}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-dictionary-Brazil.dict>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*glossaries-dictionary-Danish.dict>
% \end{macrocode}
%\fi
%\subsection{Danish Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Danish}
@@ -8642,7 +12670,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Dutch Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Dutch}
@@ -8669,7 +12697,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{English Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{English}
@@ -8696,7 +12724,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{French Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{French}
@@ -8723,7 +12751,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{German Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{German}
@@ -8751,7 +12779,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Irish Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Irish}
@@ -8778,7 +12806,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Italian Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Italian}
@@ -8805,7 +12833,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Magyar Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Magyar}
@@ -8832,7 +12860,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Polish Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Polish}
@@ -8859,7 +12887,7 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
% \end{macrocode}
%\fi
%\subsection{Spanish Dictionary}
-% This is a dictonary file provided for use with the \isty{translator}
+% This is a dictionary file provided for use with the \isty{translator}
% package.
% \begin{macrocode}
\ProvidesDictionary{glossaries-dictionary}{Spanish}
@@ -8912,9 +12940,9 @@ firstplural={\@glo@descplural\space (\@glo@plural)},%
\documentclass{article}
\listfiles
-\usepackage{hyperref}
- %\usepackage{glossaries} % acronym will go in main glossary
- \usepackage[acronym,footnote]{glossaries} % make a separate list of acronyms
+\usepackage[colorlinks]{hyperref}
+ \usepackage{glossaries} % acronym will go in main glossary
+ %\usepackage[acronym]{glossaries} % make a separate list of acronyms
\makeglossaries
@@ -8951,15 +12979,24 @@ First use: \glspl{aca}. Second use: \glspl{aca}.
\documentclass[a4paper]{report}
\usepackage[plainpages=false,colorlinks]{hyperref}
-\usepackage[style=altlist]{glossaries}
+\usepackage[toc,style=treenoname,order=word]{glossaries}
\makeglossaries
\newglossaryentry{glossary}{name=glossary,
-description={1) list of technical words, 2) collection of
-glosses},
+description={\nopostdesc},
plural={glossaries}}
+\newglossaryentry{glossarylist}{
+description={1) list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{glossarycol}{
+description={2) collection of glosses},
+sort={2},
+parent={glossary}}
+
\newglossaryentry{Perl}{name=\texttt{Perl},
sort=Perl, % need a sort key because name contains a command
description=A scripting language}
@@ -8975,10 +13012,41 @@ description={rectangular array of quantities},
% plural is not simply obtained by appending an s, so specify
plural=matrices}
-\newcommand{\pardescription}{distinct section of piece of
-writing.\par Beginning on new, usually indented, line}
+ % entry with a paragraph break in the description
+
\newglossaryentry{par}{name=paragraph,
-description=\pardescription}
+description={distinct section of piece of
+writing.\glspar Beginning on new, usually indented, line}}
+
+ % entry with two types of plural. Set the plural form to the
+ % form most likely to be used. If you want to use a different
+ % plural, you will need to explicity specify it in \glslink
+\newglossaryentry{cow}{name=cow,
+ % this isn't necessary, as this form (appending an s) is
+ % the default
+plural=cows,
+ % description:
+description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
+female of any bovine animal}}
+
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravo1}{description={1) cry of approval (pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravo2}{description={2) hired ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+
+\newglossaryentry{seal}{name=seal,description={sea mammal with
+flippers that eats fish}}
+
+\newglossaryentry{sealion}{name={sea lion},
+description={large seal}}
\begin{document}
@@ -8993,11 +13061,11 @@ description=\pardescription}
\chapter{Introduction}
\pagenumbering{arabic}
-A \gls{glossary} is a very useful addition to any
-technical document, although a \gls{glossary} can
+A \gls{glossarylist} is a very useful addition to any
+technical document, although a \gls{glossarycol} can
also simply be a collection of glosses, which is
another thing entirely. Some documents have
-multiple \glspl{glossary}.
+multiple \glspl{glossarylist}.
Once you have run your document through \LaTeX, you
will then need to run the \texttt{.glo} file through
@@ -9014,11 +13082,29 @@ wrapper.
If a comma appears within the name or description, grouping
must be used, e.g.\ in the description of \gls{pagelist}.
-Plurals are assumed to have the letter s appended, but if
-this is not the case, as in \glspl{mtrx}, then you need
-to specify the plural when you define the entry.
+\chapter{Plurals and Paragraphs}
-\Glspl{par} can cause a problem in commands.
+Plurals are assumed to have the letter s appended, but if this is
+not the case, as in \glspl{mtrx}, then you need to specify the
+plural when you define the entry. If a term may have multiple
+plurals (for example \glspl{cow}/\glslink{cow}{kine}) then
+define the entry with the plural form most likely to be used and
+explicitly specify the alternative form using \verb|\glslink|.
+\Glspl{seal} and \glspl{sealion} have regular plural forms.
+
+\Gls{bravo} is a homograph, but the plural forms are spelt
+differently. The plural of \gls{bravo1}, a cry of approval,
+is \glspl{bravo1}, whereas the plural of \gls{bravo2}, a hired
+ruffian or killer, is \glspl{bravo2}.
+
+\Glspl{par} can cause a problem in commands, so care is needed
+when having a paragraph break in a \gls{glossarylist} entry.
+
+\chapter{Ordering}
+
+There are two types of ordering: word ordering (which places
+``\gls{sealion}'' before ``\gls{seal}'') and letter ordering
+(which places ``\gls{seal}'' before ``\gls{sealion}'').
\printglossaries
@@ -9154,7 +13240,7 @@ name={Support vector machine (svm)}% change the default way of displaying the en
]{svm}{svm}{support vector machine}
\newacronym[description={Statistical pattern recognition technique
-using the ``kernel trick'' (see also SVM)},% acronym's description
+using the ``kernel trick'' (see also \glshyperlink[SVM]{svm})},% acronym's description
name={Kernel support vector machine (ksvm)}% change the default way of displaying the entry name in the list of acronyms
]{ksvm}{ksvm}{kernel
support vector machine}
@@ -9178,7 +13264,8 @@ This is the entry in uppercase: \GLS{svm}.
\chapter{Kernel Support Vector Machines}
The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
-the so called ``kernel trick''.
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
\glsresetall
Possessive: \gls{ksvm}['s].
@@ -9325,10 +13412,15 @@ one \gls[format=hyperbf]{svm}.
\usepackage[colorlinks]{hyperref}
\usepackage[style=long3colheader,counter=equation]{glossaries}
+\makeglossaries
+
\newcommand{\erf}{\operatorname{erf}}
\newcommand{\erfc}{\operatorname{erfc}}
-\makeglossaries
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+\renewcommand*\theHequation{\thechapter.\arabic{equation}}
% Change the glossary headings
@@ -9564,6 +13656,20 @@ Bessel functions $Z_\nu$ are solutions of
%\fi
%\iffalse
% \begin{macrocode}
+ % To ensure that the page numbers are up-to-date:
+ %
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ %
+ % The extra makeglossaries run is required because adding the
+ % glossary in the second LaTeX run shifts the page numbers on
+ % which means that the glossary needs to be updated again.
+ % (Note that this problem is avoided if the page numbering is
+ % reset after the glossary. For example, if the glossary has
+ % roman numbering and the subsequent pages have arabic numbering)
\documentclass[a4paper,12pt]{report}
\usepackage{amsmath}
@@ -9574,6 +13680,11 @@ Bessel functions $Z_\nu$ are solutions of
\newcommand{\erf}{\operatorname{erf}}
\newcommand{\erfc}{\operatorname{erfc}}
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+\renewcommand*\theHequation{\thechapter.\arabic{equation}}
+
\renewcommand{\glossaryname}{Index of Special Functions and Notations}
\renewcommand{\glossarypreamble}{Numbers in italic indicate the equation number,
@@ -9907,9 +14018,6 @@ doesn't have associated numbers.
\tableofcontents
\printglossaries
- %\printglossary
- %\setglossarysection{section}
- %\printglossary[type=notation]
\chapter{Introduction}
\pagenumbering{arabic}
@@ -10011,6 +14119,997 @@ Another \gls{ident} entry.
%\fi
%\iffalse
% \begin{macrocode}
+%<*sampletree.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=alttreehypergroup]{glossaries}
+
+ % The alttree type of glossary styles need to know the
+ % widest entry name for each level
+\glssetwidest{Roman letters} % level 0 widest name
+\glssetwidest[1]{Sigma} % level 1 widest name
+
+\makeglossaries
+
+\newglossaryentry{greekletter}{name={Greek letters},
+text={Greek letter},
+description={\nopostdesc}}
+
+\newglossaryentry{sigma}{name={Sigma},
+text={\ensuremath{\Sigma}},
+first={\ensuremath{\Sigma} (uppercase sigma)},
+symbol={\ensuremath{\Sigma}},
+description={Used to indicate summation},
+parent=greekletter}
+
+\newglossaryentry{pi}{name={pi},
+text={\ensuremath{\pi}},
+first={\ensuremath{\pi} (lowercase pi)},
+symbol={\ensuremath{\pi}},
+description={Transcendental number},
+parent=greekletter}
+
+\newglossaryentry{romanletter}{name={Roman letters},
+text={Roman letter},
+description={\nopostdesc}}
+
+\newglossaryentry{e}{name={e},
+description={Unique real number such that the derivative of
+the function $e^x$ is the function itself},
+parent=romanletter}
+
+\newglossaryentry{C}{name={C},
+description={Euler's constant},
+parent=romanletter}
+
+\begin{document}
+This is a sample document illustrating hierarchical glossary
+entries.
+
+\chapter{Greek Letters Used in Mathematics}
+
+Some information about \glspl{greekletter}.
+The letter \gls{pi} is used to represent the ratio of a circle's
+circumference to its diameter.
+The letter \gls{sigma} is used to represent summation.
+
+\chapter{Roman Letters Used in Mathematics}
+
+Some information about \glspl{romanletter}.
+The letter \gls{e} is the unique real number such that
+the derivative of the function $e^x$ is the function itself.
+The letter \gls{C} represents Euler's constant.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampletree.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleutf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[xindy,nonumberlist,style=listgroup]{glossaries}
+
+\makeglossaries
+
+% Note that because the é is the first letter of the
+% name, it needs to be grouped or it will cause a
+% problem for \makefirstuc due to expansion issues.
+\newglossaryentry{elite}{name={{é}lite},
+description={select group or class}}
+
+\newglossaryentry{elephant}{name=elephant,
+description={large animal with trunk and tusks}}
+
+\newglossaryentry{elk}{name=elk,
+description=large deer}
+
+\newglossaryentry{mannerly}{name=mannerly,
+description=polite}
+
+% The œ is not the first letter, so it doesn't need to
+% be grouped.
+\newglossaryentry{manoeuvre}{name={manœuvre},
+description=planned and controlled movement}
+
+\newglossaryentry{manor}{name=manor,
+description=large landed estate or its house}
+
+\newglossaryentry{odometer}{name=odometer,
+description=instrument for measuring distance travelled by
+a wheeled vehicle}
+
+\newglossaryentry{oesophagus}{name={{œ}sophagus},
+description={canal from mouth to stomach}}
+
+\newglossaryentry{ogre}{name=ogre,
+description=man-eating giant}
+
+\begin{document}
+\null % ensure that the first run produces some output
+\glsaddall
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleutf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This is a sample document illustrating how to use the
+ % glossaries package with xindy. To create the document:
+ %
+ % latex samplexdy
+ % makeglossaries samplexdy
+ % latex samplexdy
+ %
+ % If you don't have Perl installed, then use one of the
+ % following instead of makeglossaries:
+ %
+ % If you want to have a separate "Mc" letter group do:
+ %
+ % xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+ %
+ % Otherwise do:
+ %
+ % xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+ %
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{fmtcount}
+
+ % remove redefinition of \thepage below if you want to uncomment
+ % the following line:
+ % \usepackage[colorlinks]{hyperref}
+
+\usepackage[xindy,style=altlistgroup]{glossaries}
+
+ % Define a new command to do bold italic (it uses \hyperbf
+ % rather than \textbf in case I later introduce hyperlinks
+ % - although I would have to remove the fancy page numbering
+ % if I wanted to do that):
+
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+
+ % Need to add this to the list of attributes in order
+ % to use it with xindy:
+ % (This command will have no effect if \noist is used)
+
+\GlsAddXdyAttribute{hyperbfit}
+
+ % Redefine the page numbers so that they appear as a word:
+
+ \renewcommand*{\thepage}{\Numberstring{page}}
+
+ % Need to add this to the list of location styles.
+ % \Numberstring{page} gets expanded to
+ % \protect \Numberstringnum {<n>} (where <n> is the page number)
+ % so need to define the location in that format:
+ % (This command will have no effect if \noist is used)
+
+\GlsAddXdyLocation{Numberstring}{:sep "\string\protect\space
+ \string\Numberstringnum\space\glsopenbrace"
+ "arabic-numbers" :sep "\glsclosebrace"}
+
+ % To have Mc as a separate group uncomment the following three
+ % lines:
+
+ %\setStyleFile{samplexdy-mc} % note no extension
+ %\noist
+ %\GlsSetXdyLanguage{}
+
+ % The above three lines specify to use samplexdy-mc.xdy (supplied
+ % with this file) and don't overwrite it. The language is
+ % unset using \GlsSetXdyLanguage{} as all the language
+ % dependent information is contained in samplexdy-mc.xdy
+ % Note that using \noist means that commands like
+ % \GlsAddXdyAttribute and \GlsAddXdyLocation will no longer have
+ % an effect.
+
+ % Write the style file (if \noist isn't used)
+ % and activate glossary entries
+
+\makeglossaries
+
+ % Define glossary entries
+ % \glshyperlink is used instead of \gls to prevent the glossary
+ % page numbers also appear in the locations, however I need
+ % to ensure that the referenced entries are added to the
+ % glossary via commands that use \glslink, \glsadd or \glssee
+
+\newglossaryentry{mcadam}{name={McAdam, John Loudon},
+first={John Loudon McAdam},text={McAdam},
+description={Scottish engineer}}
+
+\newglossaryentry{maclaurin}{name={Maclaurin, Colin},
+first={Colin Maclaurin},text={Maclaurin},
+description={Scottish mathematician best known for the
+\gls{maclaurinseries}}}
+
+\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylorstheorem}{name={Taylor's theorem},
+description={Theorem expressing a function $f(x)$ as the sum of
+a polynomial and a remainder:
+\[f(x) = f(a)+f'(a)(x-a)+f''(a)(x-a^2)/2!+\cdots+R_n\]
+If $n\to\infty$ the expansion is a \glshyperlink{taylorseries}
+and if $a=0$, the series is called a
+\gls{maclaurinseries}}}
+
+\newglossaryentry{taylorseries}{name={Taylor series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylor}{name={Taylor, Brook},
+first={Brook Taylor},text={Taylor},
+description={English mathematician}}
+
+\newglossaryentry{mcnemar}{name={McNemar, Quinn},
+first={Quinn McNemar},text={McNemar},
+description={Mathematician who introduced
+\gls{mcnemarstest}. This entry has the number list
+suppressed},nonumberlist}
+
+\newglossaryentry{mcnemarstest}{name={McNemar's test},
+description={A nonparametric test introduced by
+\gls{mcnemar} in 1947}}
+
+\newglossaryentry{mach}{name={Mach, Ernst},
+first={Ernst Mach},text={Mach},
+ % if using samplexdy-mc.xdy, the following line is needed
+ % to prevent this entry being put in the "Mc" group
+sort={mach, Ernst},
+description={Czech/Austrian physicist and philosopher}}
+
+\newglossaryentry{machnumber}{name={Mach number},
+ % if using samplexdy-mc.xdy, the following line is needed
+ % to prevent this entry being put in the "Mc" group
+sort={mach number},
+description={Ratio of the speed of a body in a fluid to the
+speed of sound in that fluid named after \gls{mach}}}
+
+\newglossaryentry{malthus}{name={Malthus, Thomas Robert},
+first={Thomas Robert Malthus},text={Malthus},
+description={English mathematician, sociologist and classicist}}
+
+\newglossaryentry{ampereandre}{name={Ampère, André-Marie},
+first={André-Marie Ampère},text={Ampère},
+description={French mathematician and physicist}}
+
+\newglossaryentry{ampere}{name={ampere},
+description={SI unit of electric current named after
+\gls{ampereandre}}}
+
+\newglossaryentry{archimedes}{name={Archimedes of Syracuse},
+first={Archimedes of Syracuse},text={Archimedes},
+description={Greek mathematician}}
+
+\newglossaryentry{archimedesprinciple}{name={Archemedes' principle},
+description={Principle that if a body is submerged in a fluid
+it experiences upthrust equal to the weight of the displaced
+fluid. Named after \gls{archimedes}}}
+
+\newglossaryentry{galton}{name={Galton, Sir Francis},
+first={Sir Francis Galton},text={Galton},
+description={English anthropologist}}
+
+\newglossaryentry{gauss}{name={Gauss, Karl Friedrich},
+first={Karl Friedrich Gauss},text={Gauss},
+description={German mathematician}}
+
+\newglossaryentry{gaussianint}{name={Gaussian integer},
+description={Complex number where both real and imaginary
+parts are integers}}
+
+\newglossaryentry{peano}{name={Peano, Giuseppe},
+first={Giuseppe Peano},text={Peano},
+description={Italian mathematician}}
+
+\newglossaryentry{peanoscurve}{name={Peano's curve},
+description={A space-filling curve discovered by
+\gls{peano}}}
+
+\newglossaryentry{pearson}{name={Pearson, Karl},
+first={Karl Pearson},text={Pearson},
+description={English mathematician}}
+
+\newglossaryentry{pearspmcc}{name={Pearson's product moment
+correlation coefficient},description={Product moment correlation
+coefficient named after \gls{pearson}}}
+
+\begin{document}
+\title{Sample Document Using the Glossaries Package With Xindy}
+\author{Nicola Talbot}
+\maketitle
+
+\section{\glsentryfirst{gauss}}
+
+This is a section on \gls[format=(]{gauss}. This section spans
+several pages.
+
+\newpage
+
+This page talks about \glspl[format=hyperbfit]{gaussianint}. Since
+it's the principle definition, the user-defined hyperbfit format is
+used.
+
+\newpage
+
+The section on \gls[format=)]{gauss} ends here.
+
+\section{Series Expansions}
+
+This section is about series expansions. It mentions
+\gls{maclaurin} and \gls{taylor}. It also discusses
+\gls{taylorstheorem} which is related to the \gls{taylorseries}.
+The \gls{maclaurinseries} is a special case of the
+\gls{taylorseries}.
+
+\section{\glsentryname{archimedesprinciple}}
+
+This section discusses \gls{archimedesprinciple} which was
+introduced by \gls{archimedes}.
+
+\section{Another section}
+
+This section covers \gls{mach} who introduced the \gls{machnumber}.
+It also mentions \gls{ampereandre} after whom the
+SI unit \gls{ampere} is named. It then discusses \gls{galton}
+and \gls{malthus}. Finally it mentions \gls{mcadam}.
+
+\newpage
+This page discusses \gls{mcnemar} who introduced
+\gls{mcnemarstest} and \gls{peano} who discovered \gls{peanoscurve}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy-mc.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+;; xindy style file for samplexdy.tex that has Mc letter group
+
+(define-letter-group "A" :prefixes ("€"))
+(define-letter-group "B" :after "A" :prefixes ("„"))
+(define-letter-group "C" :after "B" :prefixes ("†"))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes ("—"))
+(define-letter-group "F" :after "E" :prefixes ("œ"))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes ("¤"))
+(define-letter-group "I" :after "H" :prefixes ("¨"))
+(define-letter-group "J" :after "I" :prefixes ("¬"))
+(define-letter-group "K" :after "J" :prefixes ("®"))
+(define-letter-group "L" :after "K" :prefixes ("´"))
+(define-letter-group "Mc" :after "L" :prefixes ("Ƞ"))
+(define-letter-group "M" :after "Mc" :prefixes ("»"))
+(define-letter-group "N" :after "M" :prefixes ("¼"))
+(define-letter-group "O" :after "N" :prefixes ("Ã"))
+(define-letter-group "P" :after "O" :prefixes ("È"))
+(define-letter-group "Q" :after "P" :prefixes ("Ê"))
+(define-letter-group "R" :after "Q" :prefixes ("Ë"))
+(define-letter-group "S" :after "R" :prefixes ("Ð"))
+(define-letter-group "T" :after "S" :prefixes ("Ú"))
+(define-letter-group "U" :after "T" :prefixes ("à"))
+(define-letter-group "V" :after "U" :prefixes ("å"))
+(define-letter-group "W" :after "V" :prefixes ("æ"))
+(define-letter-group "X" :after "W" :prefixes ("ë"))
+(define-letter-group "Y" :after "X" :prefixes ("í"))
+(define-letter-group "Ȝ" :after "Y" :prefixes ("ï"))
+(define-letter-group "Z" :after "Ȝ" :prefixes ("ð"))
+(define-letter-group "Þ" :after "Z" :prefixes ("ö"))
+(define-letter-group "Æ¿" :after "Þ" :prefixes ("÷"))
+
+(define-rule-set "en-alphabetize"
+
+ :rules (("à" "€" :string)
+ ("À" "€" :string)
+ ("Æ" "€—" :string)
+ ("æ" "€—" :string)
+ ("Ç" "†" :string)
+ ("ç" "†" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("É" "—" :string)
+ ("Ê" "—" :string)
+ ("È" "—" :string)
+ ("Ë" "—" :string)
+ ("è" "—" :string)
+ ("ë" "—" :string)
+ ("ê" "—" :string)
+ ("é" "—" :string)
+ ("Ï" "¨" :string)
+ ("ï" "¨" :string)
+ ("Ñ" "¼" :string)
+ ("ñ" "¼" :string)
+ ("Ö" "Ã" :string)
+ ("Ô" "Ã" :string)
+ ("ô" "Ã" :string)
+ ("ö" "Ã" :string)
+ ("œ" "×" :string)
+ ("Œ" "×" :string)
+ ("ȝ" "ï" :string)
+ ("Ȝ" "ï" :string)
+ ("þ" "ö" :string)
+ ("Þ" "ö" :string)
+ ("Ç·" "÷" :string)
+ ("Æ¿" "÷" :string)
+ ("a" "€" :string)
+ ("A" "€" :string)
+ ("b" "„" :string)
+ ("B" "„" :string)
+ ("C" "†" :string)
+ ("c" "†" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("E" "—" :string)
+ ("e" "—" :string)
+ ("F" "œ" :string)
+ ("f" "œ" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "¤" :string)
+ ("h" "¤" :string)
+ ("I" "¨" :string)
+ ("i" "¨" :string)
+ ("J" "¬" :string)
+ ("j" "¬" :string)
+ ("K" "®" :string)
+ ("k" "®" :string)
+ ("L" "´" :string)
+ ("l" "´" :string)
+ ("Mc" "Ƞ" :string)
+ ("Mac" "Ƞ" :string)
+ ("M" "»" :string)
+ ("m" "»" :string)
+ ("N" "¼" :string)
+ ("n" "¼" :string)
+ ("O" "Ã" :string)
+ ("o" "Ã" :string)
+ ("P" "È" :string)
+ ("p" "È" :string)
+ ("q" "Ê" :string)
+ ("Q" "Ê" :string)
+ ("r" "Ë" :string)
+ ("R" "Ë" :string)
+ ("S" "Ð" :string)
+ ("s" "Ð" :string)
+ ("T" "Ú" :string)
+ ("t" "Ú" :string)
+ ("u" "à" :string)
+ ("U" "à" :string)
+ ("v" "å" :string)
+ ("V" "å" :string)
+ ("w" "æ" :string)
+ ("W" "æ" :string)
+ ("X" "ë" :string)
+ ("x" "ë" :string)
+ ("Y" "í" :string)
+ ("y" "í" :string)
+ ("z" "ð" :string)
+ ("Z" "ð" :string)
+ ))
+
+(define-rule-set "en-resolve-diacritics"
+
+ :rules (("ȝ" "¢" :string)
+ ("þ" "¢" :string)
+ ("Ç·" "¢" :string)
+ ("Þ" "¢" :string)
+ ("Ȝ" "¢" :string)
+ ("Æ¿" "¢" :string)
+ ("Ö" "£" :string)
+ ("Ñ" "£" :string)
+ ("ð" "£" :string)
+ ("Ç" "£" :string)
+ ("É" "£" :string)
+ ("Ï" "£" :string)
+ ("ï" "£" :string)
+ ("ö" "£" :string)
+ ("ñ" "£" :string)
+ ("ç" "£" :string)
+ ("à" "£" :string)
+ ("À" "£" :string)
+ ("é" "£" :string)
+ ("Ð" "£" :string)
+ ("Ô" "¤" :string)
+ ("ô" "¤" :string)
+ ("È" "¤" :string)
+ ("è" "¤" :string)
+ ("Ë" "¥" :string)
+ ("ë" "¥" :string)
+ ("Ê" "¦" :string)
+ ("ê" "¦" :string)
+ ("œ" "ÿ" :string)
+ ("Æ" "ÿ" :string)
+ ("Œ" "ÿ" :string)
+ ("æ" "ÿ" :string)
+ ("S" "¢" :string)
+ ("K" "¢" :string)
+ ("d" "¢" :string)
+ ("Y" "¢" :string)
+ ("E" "¢" :string)
+ ("y" "¢" :string)
+ ("g" "¢" :string)
+ ("e" "¢" :string)
+ ("J" "¢" :string)
+ ("q" "¢" :string)
+ ("D" "¢" :string)
+ ("b" "¢" :string)
+ ("z" "¢" :string)
+ ("w" "¢" :string)
+ ("Q" "¢" :string)
+ ("M" "¢" :string)
+ ("C" "¢" :string)
+ ("L" "¢" :string)
+ ("X" "¢" :string)
+ ("P" "¢" :string)
+ ("T" "¢" :string)
+ ("a" "¢" :string)
+ ("N" "¢" :string)
+ ("j" "¢" :string)
+ ("Z" "¢" :string)
+ ("u" "¢" :string)
+ ("k" "¢" :string)
+ ("t" "¢" :string)
+ ("W" "¢" :string)
+ ("v" "¢" :string)
+ ("s" "¢" :string)
+ ("B" "¢" :string)
+ ("H" "¢" :string)
+ ("c" "¢" :string)
+ ("I" "¢" :string)
+ ("G" "¢" :string)
+ ("U" "¢" :string)
+ ("F" "¢" :string)
+ ("r" "¢" :string)
+ ("x" "¢" :string)
+ ("V" "¢" :string)
+ ("h" "¢" :string)
+ ("f" "¢" :string)
+ ("i" "¢" :string)
+ ("A" "¢" :string)
+ ("O" "¢" :string)
+ ("n" "¢" :string)
+ ("m" "¢" :string)
+ ("l" "¢" :string)
+ ("p" "¢" :string)
+ ("R" "¢" :string)
+ ("o" "¢" :string)
+ ))
+
+(define-rule-set "en-resolve-case"
+
+ :rules (("Ö" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ô" "8" :string)
+ ("Ç" "8" :string)
+ ("É" "8" :string)
+ ("Ï" "8" :string)
+ ("Ê" "8" :string)
+ ("È" "8" :string)
+ ("Ë" "8" :string)
+ ("Ç·" "8" :string)
+ ("À" "8" :string)
+ ("Þ" "8" :string)
+ ("Ȝ" "8" :string)
+ ("Ð" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ð" "9" :string)
+ ("ô" "9" :string)
+ ("ȝ" "9" :string)
+ ("ï" "9" :string)
+ ("ö" "9" :string)
+ ("ñ" "9" :string)
+ ("ç" "9" :string)
+ ("à" "9" :string)
+ ("þ" "9" :string)
+ ("è" "9" :string)
+ ("ë" "9" :string)
+ ("ê" "9" :string)
+ ("é" "9" :string)
+ ("Æ¿" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("Y" "8" :string)
+ ("E" "8" :string)
+ ("J" "8" :string)
+ ("D" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("P" "8" :string)
+ ("T" "8" :string)
+ ("N" "8" :string)
+ ("Z" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("G" "8" :string)
+ ("U" "8" :string)
+ ("F" "8" :string)
+ ("V" "8" :string)
+ ("A" "8" :string)
+ ("O" "8" :string)
+ ("R" "8" :string)
+ ("d" "9" :string)
+ ("y" "9" :string)
+ ("g" "9" :string)
+ ("e" "9" :string)
+ ("q" "9" :string)
+ ("b" "9" :string)
+ ("z" "9" :string)
+ ("w" "9" :string)
+ ("a" "9" :string)
+ ("j" "9" :string)
+ ("u" "9" :string)
+ ("k" "9" :string)
+ ("t" "9" :string)
+ ("v" "9" :string)
+ ("s" "9" :string)
+ ("c" "9" :string)
+ ("r" "9" :string)
+ ("x" "9" :string)
+ ("h" "9" :string)
+ ("f" "9" :string)
+ ("i" "9" :string)
+ ("n" "9" :string)
+ ("m" "9" :string)
+ ("l" "9" :string)
+ ("p" "9" :string)
+ ("o" "9" :string)
+ ))
+
+(define-rule-set "en-ignore-special"
+
+ :rules (("-" "" :string)
+ ("!" "" :string)
+ ("{" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ("." "" :string)
+ ))
+
+(define-rule-set "en-resolve-special"
+
+ :rules (("Ö" "¤" :string)
+ ("Ñ" "¤" :string)
+ ("ð" "¤" :string)
+ ("Ô" "¤" :string)
+ ("Ç" "¤" :string)
+ ("É" "¤" :string)
+ ("ô" "¤" :string)
+ ("Ï" "¤" :string)
+ ("ȝ" "¤" :string)
+ ("ï" "¤" :string)
+ ("Ê" "¤" :string)
+ ("ö" "¤" :string)
+ ("ñ" "¤" :string)
+ ("È" "¤" :string)
+ ("ç" "¤" :string)
+ ("Ë" "¤" :string)
+ ("à" "¤" :string)
+ ("þ" "¤" :string)
+ ("Ç·" "¤" :string)
+ ("è" "¤" :string)
+ ("À" "¤" :string)
+ ("ë" "¤" :string)
+ ("Þ" "¤" :string)
+ ("ê" "¤" :string)
+ ("é" "¤" :string)
+ ("Ȝ" "¤" :string)
+ ("Æ¿" "¤" :string)
+ ("Ð" "¤" :string)
+ ("œ" "¤¤" :string)
+ ("Æ" "¤¤" :string)
+ ("Œ" "¤¤" :string)
+ ("æ" "¤¤" :string)
+ ("?" "¡" :string)
+ ("!" "¢" :string)
+ ("." "£" :string)
+ ("S" "¤" :string)
+ ("K" "¤" :string)
+ ("d" "¤" :string)
+ ("Y" "¤" :string)
+ ("E" "¤" :string)
+ ("y" "¤" :string)
+ ("g" "¤" :string)
+ ("e" "¤" :string)
+ ("J" "¤" :string)
+ ("q" "¤" :string)
+ ("D" "¤" :string)
+ ("b" "¤" :string)
+ ("z" "¤" :string)
+ ("w" "¤" :string)
+ ("Q" "¤" :string)
+ ("M" "¤" :string)
+ ("C" "¤" :string)
+ ("L" "¤" :string)
+ ("X" "¤" :string)
+ ("P" "¤" :string)
+ ("T" "¤" :string)
+ ("a" "¤" :string)
+ ("N" "¤" :string)
+ ("j" "¤" :string)
+ ("Z" "¤" :string)
+ ("u" "¤" :string)
+ ("k" "¤" :string)
+ ("t" "¤" :string)
+ ("W" "¤" :string)
+ ("v" "¤" :string)
+ ("s" "¤" :string)
+ ("B" "¤" :string)
+ ("H" "¤" :string)
+ ("c" "¤" :string)
+ ("I" "¤" :string)
+ ("G" "¤" :string)
+ ("U" "¤" :string)
+ ("F" "¤" :string)
+ ("r" "¤" :string)
+ ("x" "¤" :string)
+ ("V" "¤" :string)
+ ("h" "¤" :string)
+ ("f" "¤" :string)
+ ("i" "¤" :string)
+ ("A" "¤" :string)
+ ("O" "¤" :string)
+ ("n" "¤" :string)
+ ("m" "¤" :string)
+ ("l" "¤" :string)
+ ("p" "¤" :string)
+ ("R" "¤" :string)
+ ("o" "¤" :string)
+ ("-" "¥" :string)
+ ("'" "¦" :string)
+ ("{" "§" :string)
+ ("}" "¨" :string)
+ ))
+
+; The following section is customised for samplexdy.tex
+; (copied from samplexdy.xdy automatically generated by
+; samplexdy.tex)
+
+; required styles
+
+(require "tex.xdy")
+
+; list of allowed attributes (number formats)
+
+(define-attributes (("default"
+ "glsnumberformat"
+ "textrm"
+ "textsf"
+ "texttt"
+ "textbf"
+ "textmd"
+ "textit"
+ "textup"
+ "textsl"
+ "textsc"
+ "emph"
+ "glshypernumber"
+ "hyperrm"
+ "hypersf"
+ "hypertt"
+ "hyperbf"
+ "hypermd"
+ "hyperit"
+ "hyperup"
+ "hypersl"
+ "hypersc"
+ "hyperemph"
+ "hyperbfit")))
+
+; user defined alphabets
+
+
+
+; location class definitions
+
+(define-location-class "roman-page-numbers"
+ ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers"
+ ("roman-numbers-uppercase"))
+(define-location-class "arabic-page-numbers"
+ ("arabic-numbers"))
+(define-location-class "alpha-page-numbers"
+ ("alpha"))
+(define-location-class "Alpha-page-numbers"
+ ("ALPHA"))
+(define-location-class "Appendix-page-numbers"
+ ("ALPHA" :sep "." "arabic-numbers"))
+(define-location-class "arabic-section-numbers"
+ ("arabic-numbers" :sep "." "arabic-numbers"))
+
+; user defined location classes
+
+(define-location-class "Numberstring"
+ (:sep "\protect \Numberstringnum {" "arabic-numbers" :sep "}"))
+
+; define cross-reference class
+
+(define-crossref-class "see" :unverified )
+(markup-crossref-list :class "see"
+ :open "\glsseeformat" :close "{}")
+
+; define the order of the location classes
+(define-location-class-order (
+ "roman-page-numbers"
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see" ))
+
+; define the glossary markup
+
+(markup-index
+ :open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble~n\begin{theglossary}\glossaryheader~n"
+ :close "~n\end{theglossary}~n\glossarypostamble~n"
+ :tree)
+(markup-letter-group-list :sep "\glsgroupskip~n")
+(markup-indexentry :open "~n" :depth 0)
+(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
+ :sep ", " :close "}}")
+(markup-locref-list :sep "\delimN ")
+(markup-range :sep "\delimR ")
+
+; define format to use for locations
+
+
+(markup-locref :open "~n\setentrycounter{page}\glsnumberformat{"
+ :close "}"
+ :attr "glsnumberformat")
+(markup-locref :open "~n\setentrycounter{page}\textrm{"
+ :close "}"
+ :attr "textrm")
+(markup-locref :open "~n\setentrycounter{page}\textsf{"
+ :close "}"
+ :attr "textsf")
+(markup-locref :open "~n\setentrycounter{page}\texttt{"
+ :close "}"
+ :attr "texttt")
+(markup-locref :open "~n\setentrycounter{page}\textbf{"
+ :close "}"
+ :attr "textbf")
+(markup-locref :open "~n\setentrycounter{page}\textmd{"
+ :close "}"
+ :attr "textmd")
+(markup-locref :open "~n\setentrycounter{page}\textit{"
+ :close "}"
+ :attr "textit")
+(markup-locref :open "~n\setentrycounter{page}\textup{"
+ :close "}"
+ :attr "textup")
+(markup-locref :open "~n\setentrycounter{page}\textsl{"
+ :close "}"
+ :attr "textsl")
+(markup-locref :open "~n\setentrycounter{page}\textsc{"
+ :close "}"
+ :attr "textsc")
+(markup-locref :open "~n\setentrycounter{page}\emph{"
+ :close "}"
+ :attr "emph")
+(markup-locref :open "~n\setentrycounter{page}\glshypernumber{"
+ :close "}"
+ :attr "glshypernumber")
+(markup-locref :open "~n\setentrycounter{page}\hyperrm{"
+ :close "}"
+ :attr "hyperrm")
+(markup-locref :open "~n\setentrycounter{page}\hypersf{"
+ :close "}"
+ :attr "hypersf")
+(markup-locref :open "~n\setentrycounter{page}\hypertt{"
+ :close "}"
+ :attr "hypertt")
+(markup-locref :open "~n\setentrycounter{page}\hyperbf{"
+ :close "}"
+ :attr "hyperbf")
+(markup-locref :open "~n\setentrycounter{page}\hypermd{"
+ :close "}"
+ :attr "hypermd")
+(markup-locref :open "~n\setentrycounter{page}\hyperit{"
+ :close "}"
+ :attr "hyperit")
+(markup-locref :open "~n\setentrycounter{page}\hyperup{"
+ :close "}"
+ :attr "hyperup")
+(markup-locref :open "~n\setentrycounter{page}\hypersl{"
+ :close "}"
+ :attr "hypersl")
+(markup-locref :open "~n\setentrycounter{page}\hypersc{"
+ :close "}"
+ :attr "hypersc")
+(markup-locref :open "~n\setentrycounter{page}\hyperemph{"
+ :close "}"
+ :attr "hyperemph")
+(markup-locref :open "~n\setentrycounter{page}\hyperbfit{"
+ :close "}"
+ :attr "hyperbfit")
+
+; define letter group list format
+
+(markup-letter-group-list :sep "\glsgroupskip~n")
+
+; letter group headings
+
+(markup-letter-group :open-head "\glsgroupheading{"
+ :close-head "}")
+
+(define-letter-group "glsnumbers"
+ :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ :before "A")
+
+; The following is copied from xindy/lang/english/utf8-lang.xdy
+
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("en-alphabetize" "en-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("en-resolve-diacritics" "en-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("en-resolve-case" "en-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("en-resolve-special"))
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy-mc.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
%<*database1.tex>
% \end{macrocode}
%\fi
diff --git a/Master/texmf-dist/source/latex/glossaries/glossaries.ins b/Master/texmf-dist/source/latex/glossaries/glossaries.ins
index 1fad698c1d4..681c7730697 100644
--- a/Master/texmf-dist/source/latex/glossaries/glossaries.ins
+++ b/Master/texmf-dist/source/latex/glossaries/glossaries.ins
@@ -1,4 +1,4 @@
-% glossaries.ins generated using makedtx version 0.94b 2008/8/27 12:55
+% glossaries.ins generated using makedtx version 0.94b 2008/12/26 16:49
\input docstrip
\preamble
@@ -18,7 +18,7 @@
The Current Maintainer of this work is Nicola Talbot.
- This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, mfirstuc.sty, glossary-hypernav.sty, glossary-list.sty, glossary-long.sty, glossary-super.sty, glossaries-babel.sty, glossaries-dictionary-Danish.dict, glossaries-dictionary-Dutch.dict, glossaries-dictionary-English.dict, glossaries-dictionary-French.dict, glossaries-dictionary-German.dict, glossaries-dictionary-Irish.dict, glossaries-dictionary-Italian.dict, glossaries-dictionary-Magyar.dict, glossaries-dictionary-Polish.dict, glossaries-dictionary-Spanish.dict, minimalgls.tex, sample.tex, sample4col.tex, sampleAcr.tex, sampleAcrDesc.tex, sampleDB.tex, sampleDesc.tex, sampleEq.tex, sampleEqPg.tex, sampleNtn.tex, sampleSec.tex, database1.tex, database2.tex, glossaries.perl.
+ This work consists of the files glossaries.dtx and glossaries.ins and the derived files glossaries.sty, mfirstuc.sty, glossary-hypernav.sty, glossary-list.sty, glossary-long.sty, glossary-super.sty, glossary-tree.sty, glossaries-babel.sty, glossaries-dictionary-Brazil.dict, glossaries-dictionary-Danish.dict, glossaries-dictionary-Dutch.dict, glossaries-dictionary-English.dict, glossaries-dictionary-French.dict, glossaries-dictionary-German.dict, glossaries-dictionary-Irish.dict, glossaries-dictionary-Italian.dict, glossaries-dictionary-Magyar.dict, glossaries-dictionary-Polish.dict, glossaries-dictionary-Spanish.dict, minimalgls.tex, sample.tex, sample4col.tex, sampleAcr.tex, sampleAcrDesc.tex, sampleDB.tex, sampleDesc.tex, sampleEq.tex, sampleEqPg.tex, sampleNtn.tex, sampleSec.tex, sampletree.tex, sampleutf8.tex, samplexdy.tex, samplexdy-mc.xdy, database1.tex, database2.tex, glossaries.perl.
\endpreamble
@@ -36,8 +36,12 @@
\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-long.sty,package}}
\file{glossary-super.sty}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-super.sty,package}}
+\file{glossary-tree.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-tree.sty,package}}
\file{glossaries-babel.sty}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-babel.sty,package}}
+\file{glossaries-dictionary-Brazil.dict}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-dictionary-Brazil.dict,package}}
\file{glossaries-dictionary-Danish.dict}{\usepreamble\defaultpreamble
\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-dictionary-Danish.dict,package}}
\file{glossaries-dictionary-Dutch.dict}{\usepreamble\defaultpreamble
@@ -69,6 +73,10 @@
\file{sampleEqPg.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleEqPg.tex}}
\file{sampleNtn.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleNtn.tex}}
\file{sampleSec.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleSec.tex}}
+\file{sampletree.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampletree.tex}}
+\file{sampleutf8.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleutf8.tex}}
+\file{samplexdy.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy.tex}}
+\file{samplexdy-mc.xdy}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy-mc.xdy}}
\file{database1.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{database1.tex}}
\file{database2.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{database2.tex}}
\file{glossaries.perl}{\nopreamble\nopostamble\from{glossaries.dtx}{glossaries.perl}}