diff options
author | Dr. Clea F. Rees <cfrees@imapmail.org> | 2008-12-28 23:49:33 +0000 |
---|---|---|
committer | Dr. Clea F. Rees <cfrees@imapmail.org> | 2008-12-28 23:49:33 +0000 |
commit | 7051fa90f609a783739882d5f945d4c11bf44c48 (patch) | |
tree | d51c96157c87cc798fa65f22cfec5559d7df9b3a /Master/texmf-dist/source/latex/glossaries | |
parent | b82fe98b309f7cf832c3dca6f124c2f5c48af80f (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.dtx | 6403 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/glossaries/glossaries.ins | 12 |
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}} |