From 3aed69f900ce6a1011d17c3886e1d65c66822612 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 16 Aug 2007 00:36:59 +0000 Subject: glossaries 1.04 (15aug07) git-svn-id: svn://tug.org/texlive/trunk@4740 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/glossaries/CHANGES | 6 + Master/texmf-dist/doc/latex/glossaries/README | 84 +- Master/texmf-dist/doc/latex/glossaries/doc/CHANGES | 11 - Master/texmf-dist/doc/latex/glossaries/doc/README | 42 - .../doc/latex/glossaries/doc/glossaries.pdf | Bin 453752 -> 472066 bytes .../texmf-dist/doc/latex/glossaries/doc/sample.tex | 5 + .../doc/latex/glossaries/doc/sampleAcr.tex | 2 + .../latex/glossaries/latex2html/glossaries.perl | 1689 ------------------- .../glossaries/latex2html/styles/glossaries.perl | 1693 ++++++++++++++++++++ .../source/latex/glossaries/glossaries.dtx | 1027 +++++++----- .../source/latex/glossaries/glossaries.ins | 2 +- .../texmf-dist/tex/latex/glossaries/glossaries.sty | 16 +- .../tex/latex/glossaries/glossary-hypernav.sty | 2 +- .../tex/latex/glossaries/glossary-list.sty | 6 +- .../tex/latex/glossaries/glossary-long.sty | 4 +- .../tex/latex/glossaries/glossary-super.sty | 4 +- 16 files changed, 2413 insertions(+), 2180 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/glossaries/doc/CHANGES delete mode 100644 Master/texmf-dist/doc/latex/glossaries/doc/README delete mode 100644 Master/texmf-dist/doc/latex/glossaries/latex2html/glossaries.perl create mode 100644 Master/texmf-dist/doc/latex/glossaries/latex2html/styles/glossaries.perl diff --git a/Master/texmf-dist/doc/latex/glossaries/CHANGES b/Master/texmf-dist/doc/latex/glossaries/CHANGES index 427b1ce1b03..485ca845623 100644 --- a/Master/texmf-dist/doc/latex/glossaries/CHANGES +++ b/Master/texmf-dist/doc/latex/glossaries/CHANGES @@ -1,5 +1,11 @@ glossaries change log: +v1.04 (3 Aug 2007): + * Added \glstextformat + +v1.03 (4 July 2007): + * Added \glspostdescription + v1.02 (25 May 2007): * Added overview section in the documentation diff --git a/Master/texmf-dist/doc/latex/glossaries/README b/Master/texmf-dist/doc/latex/glossaries/README index c80f663bf1a..843f528baca 100644 --- a/Master/texmf-dist/doc/latex/glossaries/README +++ b/Master/texmf-dist/doc/latex/glossaries/README @@ -1,42 +1,42 @@ -LaTeX Package : glossaries v 1.02 - -Last Modified : 25 May 2007 - -Author : Nicola Talbot - -This package is provided to assist generating glossaries. -The package supports acronyms and multiple glossaries. -New entries are defined to have a name and description (and -optionally an associated symbol.) Plural forms can also be -specified. New glossary styles can be defined, and preambles -and postambles can be specified. There is provision for loading -a database of terms, only terms used in the text will be added -to the relevant glossary. - -*This package replaces the glossary package which is now obsolete.* - -The package is supplied using the TeX Directory Structure (TDS). -Files in texmf directory should go in the corresponding -$LOCALTEXMF directories. The scripts directory contains the Perl -script makeglossaries and the batch file makeglossaries.bat -which should go somewhere on your operating system's PATH. (Both -files are required for Windows, only the Perl script is -required for other operating systems.) - -*Remember to refresh TeX's database* - -This package comes with a LaTeX2HTML style file glossaries.perl. -This is located in latex2html/styles and should be placed in -the relevant LaTeX2HTML styles directory, but note that -glossaries.perl only supplies a sub-set of the commands provided -by glossary.sty, so some commands may not be implemented, or -may be implemented in a different way. - -The package and documentation source code is also supplied as a -dtx and ins file located in texmf/source. - -This material is subject to the LaTeX Project Public License. -See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. - -http://theoval.cmp.uea.ac.uk/~nlct/ - +LaTeX Package : glossaries v 1.04 + +Last Modified : 3 August 2007 + +Author : Nicola Talbot + +This package is provided to assist generating glossaries. +The package supports acronyms and multiple glossaries. +New entries are defined to have a name and description (and +optionally an associated symbol.) Plural forms can also be +specified. New glossary styles can be defined, and preambles +and postambles can be specified. There is provision for loading +a database of terms, only terms used in the text will be added +to the relevant glossary. + +*This package replaces the glossary package which is now obsolete.* + +The package is supplied using the TeX Directory Structure (TDS). +Files in texmf directory should go in the corresponding +$LOCALTEXMF directories. The scripts directory contains the Perl +script makeglossaries and the batch file makeglossaries.bat +which should go somewhere on your operating system's PATH. (Both +files are required for Windows, only the Perl script is +required for other operating systems.) + +*Remember to refresh TeX's database* + +This package comes with a LaTeX2HTML style file glossaries.perl. +This is located in latex2html/styles and should be placed in +the relevant LaTeX2HTML styles directory, but note that +glossaries.perl only supplies a sub-set of the commands provided +by glossary.sty, so some commands may not be implemented, or +may be implemented in a different way. + +The package and documentation source code is also supplied as a +dtx and ins file located in texmf/source. + +This material is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. + +http://theoval.cmp.uea.ac.uk/~nlct/ + diff --git a/Master/texmf-dist/doc/latex/glossaries/doc/CHANGES b/Master/texmf-dist/doc/latex/glossaries/doc/CHANGES deleted file mode 100644 index 427b1ce1b03..00000000000 --- a/Master/texmf-dist/doc/latex/glossaries/doc/CHANGES +++ /dev/null @@ -1,11 +0,0 @@ -glossaries change log: - -v1.02 (25 May 2007): - * Added overview section in the documentation - -v1.01 (17 May 2007): - * Added number range facility (equivalent to makeindex's |( and |) - formatting commands.) - * Added a space after \delimN and \delimR in the ist file. - -v1.0 (16 May 2007): Initial release diff --git a/Master/texmf-dist/doc/latex/glossaries/doc/README b/Master/texmf-dist/doc/latex/glossaries/doc/README deleted file mode 100644 index c80f663bf1a..00000000000 --- a/Master/texmf-dist/doc/latex/glossaries/doc/README +++ /dev/null @@ -1,42 +0,0 @@ -LaTeX Package : glossaries v 1.02 - -Last Modified : 25 May 2007 - -Author : Nicola Talbot - -This package is provided to assist generating glossaries. -The package supports acronyms and multiple glossaries. -New entries are defined to have a name and description (and -optionally an associated symbol.) Plural forms can also be -specified. New glossary styles can be defined, and preambles -and postambles can be specified. There is provision for loading -a database of terms, only terms used in the text will be added -to the relevant glossary. - -*This package replaces the glossary package which is now obsolete.* - -The package is supplied using the TeX Directory Structure (TDS). -Files in texmf directory should go in the corresponding -$LOCALTEXMF directories. The scripts directory contains the Perl -script makeglossaries and the batch file makeglossaries.bat -which should go somewhere on your operating system's PATH. (Both -files are required for Windows, only the Perl script is -required for other operating systems.) - -*Remember to refresh TeX's database* - -This package comes with a LaTeX2HTML style file glossaries.perl. -This is located in latex2html/styles and should be placed in -the relevant LaTeX2HTML styles directory, but note that -glossaries.perl only supplies a sub-set of the commands provided -by glossary.sty, so some commands may not be implemented, or -may be implemented in a different way. - -The package and documentation source code is also supplied as a -dtx and ins file located in texmf/source. - -This material is subject to the LaTeX Project Public License. -See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. - -http://theoval.cmp.uea.ac.uk/~nlct/ - diff --git a/Master/texmf-dist/doc/latex/glossaries/doc/glossaries.pdf b/Master/texmf-dist/doc/latex/glossaries/doc/glossaries.pdf index b5d381ed5d7..0404aa4144f 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries/doc/glossaries.pdf and b/Master/texmf-dist/doc/latex/glossaries/doc/glossaries.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries/doc/sample.tex b/Master/texmf-dist/doc/latex/glossaries/doc/sample.tex index 516cb248421..3110d9b8d17 100644 --- a/Master/texmf-dist/doc/latex/glossaries/doc/sample.tex +++ b/Master/texmf-dist/doc/latex/glossaries/doc/sample.tex @@ -25,6 +25,11 @@ 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} +\newglossaryentry{par}{name=paragraph, +description=\pardescription} + \begin{document} \title{Sample Document Using glossary Package} diff --git a/Master/texmf-dist/doc/latex/glossaries/doc/sampleAcr.tex b/Master/texmf-dist/doc/latex/glossaries/doc/sampleAcr.tex index 02531ff49a0..2b26e982be0 100644 --- a/Master/texmf-dist/doc/latex/glossaries/doc/sampleAcr.tex +++ b/Master/texmf-dist/doc/latex/glossaries/doc/sampleAcr.tex @@ -5,6 +5,8 @@ \makeglossaries +\renewcommand*{\glstextformat}[1]{\textsf{#1}} + \newacronym{svm}% label {svm}% abbreviation {support vector machine}% long form diff --git a/Master/texmf-dist/doc/latex/glossaries/latex2html/glossaries.perl b/Master/texmf-dist/doc/latex/glossaries/latex2html/glossaries.perl deleted file mode 100644 index 67f04090aa1..00000000000 --- a/Master/texmf-dist/doc/latex/glossaries/latex2html/glossaries.perl +++ /dev/null @@ -1,1689 +0,0 @@ -# File : glossaries.perl -# Author : Nicola Talbot -# Date : 16 May 2007 -# Version : 1.0 -# Description : LaTeX2HTML (limited!) implementation of glossaries -# package. Note that not all the glossaries.sty -# macros have been implemented. - -package main; - -# These are the only package options implemented. - -sub do_glossaries_style_altlist{ -} - -sub do_glossaries_toc{ -} - -sub do_glossaries_toc_true{ -} - -$GLSCURRENTFORMAT="textrm"; - -sub do_cmd_glossaryname{ - "Glossary$_[0]" -} - -$gls_mark{'main'} = ""; -$gls_file_mark{'main'} = ""; -$gls_title{'main'} = "\\glossaryname"; -$delimN{'main'} = ", "; -$glsnumformat{'main'} = $GLSCURRENTFORMAT; -@{$gls_entries{'main'}} = (); -$gls_displayfirst{'main'} = "glsdisplayfirst"; -$gls_display{'main'} = "glsdisplay"; - -%glsentry = (); - -$acronymtype = 'main'; - -sub do_glossaries_acronym{ - &do_glossaries_acronym_true -} - -sub do_glossaries_acronym_true{ - &make_newglossarytype("acronym", "\\acronymname"); - $acronymtype = 'acronym'; -} - -sub do_glossary_acronym_false{ - $acronymtype = 'main'; -} - -sub do_cmd_acronymname{ - join('', 'Acronyms', $_[0]); -} - -sub do_cmd_acronymtype{ - join('', $acronymtype, $_[0]); -} - -# modify set_depth_levels so that glossary is added - -sub replace_glossary_markers{ - foreach $type (keys %gls_mark) - { - if (defined &add_gls_hook) - {&add_gls_hook if (/$gls_mark{$type}/);} - else - {&add_gls($type) if (/$gls_mark{$type}/);} - - s/$gls_file_mark{$type}/$glsfile{$type}/g; - } -} - -# there must be a better way of doing this -# other than copying the orginal code and adding to it. -sub replace_general_markers { - if (defined &replace_infopage_hook) {&replace_infopage_hook if (/$info_page_mark/);} - else { &replace_infopage if (/$info_page_mark/); } - if (defined &add_idx_hook) {&add_idx_hook if (/$idx_mark/);} - else {&add_idx if (/$idx_mark/);} - &replace_glossary_markers; - - if ($segment_figure_captions) { -s/$lof_mark/$segment_figure_captions/o - } else { s/$lof_mark/$figure_captions/o } - if ($segment_table_captions) { -s/$lot_mark/$segment_table_captions/o - } else { s/$lot_mark/$table_captions/o } - &replace_morelinks(); - if (defined &replace_citations_hook) {&replace_citations_hook if /$bbl_mark/;} - else {&replace_bbl_marks if /$bbl_mark/;} - if (defined &add_toc_hook) {&add_toc_hook if (/$toc_mark/);} - else {&add_toc if (/$toc_mark/);} - if (defined &add_childs_hook) {&add_childs_hook if (/$childlinks_on_mark/);} - else {&add_childlinks if (/$childlinks_on_mark/);} - &remove_child_marks; - - if (defined &replace_cross_references_hook) {&replace_cross_references_hook;} - else {&replace_cross_ref_marks if /$cross_ref_mark||$cross_ref_visible_mark/;} - if (defined &replace_external_references_hook) {&replace_external_references_hook;} - else {&replace_external_ref_marks if /$external_ref_mark/;} - if (defined &replace_cite_references_hook) {&replace_cite_references_hook;} - else { &replace_cite_marks if /$cite_mark/; } - if (defined &replace_user_references) { - &replace_user_references if /$user_ref_mark/; } - -} - -sub add_gls{ - local($sidx_style, $eidx_style) =('',''); - if ($INDEX_STYLES) { -if ($INDEX_STYLES =~/,/) { -local(@styles) = split(/\s*,\s*/,$INDEX_STYLES); - $sidx_style = join('','<', join('><',@styles) ,'>'); - $eidx_style = join('',''); -} else { - $sidx_style = join('','<', $INDEX_STYLES,'>'); - $eidx_style = join('',''); -} - } - &add_real_gls -} - -sub gloskeysort{ - local($x, $y) = ($a, $b); - $x=~s/^(.*)###(\d+)$/\l\1/; - local($x_id) = $2; - $y=~s/^(.*)###(\d+)$/\l\1/; - local($y_id) = $2; - - local($n) = ($x cmp $y); - - if ($n == 0) - { - $n = ($x_id <=> $y_id); - } - - $n; -} - -sub add_real_gls{ - local($type) = @_; - print "\nDoing glossary '$type' ..."; - local($key, $str, @keys, $glossary, $level, $count, - @previous, @current, $id, $linktext, $delimN); - - @keys = keys %{$glossary{$type}}; - - @keys = sort gloskeysort @keys; - - $level = 0; - - $delimN = $delimN{$type}; - - foreach $key (@keys) - { - $current = $key; - $str = $current; - $str =~ s/\#\#\#\d+$//o; # Remove the unique id's - #$linktext = $cross_ref_visible_mark; - $id = ++$global{'max_id'}; - $linktext = "\\$glossary_format{$type}{$key}${OP}$id${CP}$glossary_linktext{$type}{$key}${OP}$id${CP}"; - $linktext = &translate_commands($linktext); - - local($entry) = $glossary_entry{$type}{$key}; - - $id = ++$global{'max_id'}; - local($name) = &translate_commands( - "\\glsnamefont $OP$id$CP$glsentry{$entry}{name}$OP$id$CP"); - - local($symbol) = ($glsentry{$entry}{'symbol'} ? - " $glsentry{$entry}{symbol}" : ''); - - $glossary .= - # If it's the same string don't start a new line - (&index_key_eq($current, $previous) ? - $delimN - . $glossary{$type}{$key} - . $linktext - . "\n" - : "
" - . $name - . "
" - . $glsentry{$entry}{'description'} - . $symbol . '. ' - . $glossary{$type}{$key} - . $linktext. "\n"); - $previous = $current; - } - $glossary = '
'.$glossary unless ($glossary =~ /^\s*/); - - $glossary =~ s/(]*>)()/$2$1/g; - - $str = &translate_commands("\\glossarypostamble"); - s/$gls_mark{$type}/$preglossary\n
\n$glossary<\/DL>$str\n/s; -} - -sub set_depth_levels { - # Sets $outermost_level - local($level); - # scan the document body, not the preamble, for use of sectioning commands - my ($contents) = $_; - if ($contents =~ /\\begin\s*((?:$O|$OP)\d+(?:$C|$CP))document\1|\\startdocument/s) { -$contents = $'; - } - foreach $level ("part", "chapter", "section", "subsection", - "subsubsection", "paragraph") { -last if (($outermost_level) = $contents =~ /\\($level)$delimiter_rx/); -last if (($outermost_level) = $contents =~ /\\endsegment\s*\[\s*($level)\s*\]/s); -if ($contents =~ /\\segment\s*($O\d+$C)[^<]+\1\s*($O\d+$C)\s*($level)\s*\2/s) -{ $outermost_level = $3; last }; - } - $level = ($outermost_level ? $section_commands{$outermost_level} : - do {$outermost_level = 'section'; 3;}); - - if ($REL_DEPTH && $MAX_SPLIT_DEPTH) { -$MAX_SPLIT_DEPTH = $level + $MAX_SPLIT_DEPTH; - } elsif (!($MAX_SPLIT_DEPTH)) { $MAX_SPLIT_DEPTH = 1 }; - - %unnumbered_section_commands = ( - 'tableofcontents', $level -, 'listoffigures', $level -, 'listoftables', $level -, 'bibliography', $level -, 'textohtmlindex', $level -, 'textohtmlglossary', $level -, 'textohtmlglossaries', $level - , %unnumbered_section_commands - ); - - %section_commands = ( - %unnumbered_section_commands - , %section_commands - ); -} - -sub add_bbl_and_idx_dummy_commands { - local($id) = $global{'max_id'}; - - s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; - ## if ($bbl_cnt == 1) { -s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo; - #} - $global{'max_id'} = $id; - s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o; - s/[\\]printindex/\\textohtmlindex /o; - &add_gls_dummy_commands; - &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands); -} - -sub add_gls_dummy_commands{ - s/[\\]printglossary/\\textohtmlglossary/sg; - s/[\\]printglossaries/\\textohtmlglossaries/sg; -} - -sub get_firstkeyval{ - local($key,$_) = @_; - local($value); - - s/\b$key\s*=$OP(\d+)$CP(.*)$OP\1$CP\s*(,|$)/$value=$2;','/es; - undef($value) if $`=~/\b$key\s*=/; - - unless (defined($value)) - { - s/(^|,)\s*$key\s*=\s*([^,]*)\s*(,|$)/,/s; - $value=$2; - } - - ($value,$_); -} - -# need to get the value of the last key of a given name -# in the event of multiple occurences. -sub get_keyval{ - local($key,$_) = @_; - local($value); - - while (/\b$key\s*=/) - { - ($value,$_) = &get_firstkeyval($key, $_); - } - - ($value,$_); -} - -# This is modified from do_cmd_textohtmlindex - -sub do_cmd_textohtmlglossary{ - local($_) = @_; - - local($keyval,$pat) = &get_next_optional_argument; - - local($type,$title,$toctitle,$style); - - ($type,$keyval) = &get_keyval('type', $keyval); - ($title,$keyval) = &get_keyval('title', $keyval); - ($toctitle,$keyval) = &get_keyval('toctitle', $keyval); - ($style,$keyval) = &get_keyval('style', $keyval); - - &make_textohtmlglossary($type,$toctitle,$title,$style).$_; -} - -sub make_textohtmlglossary{ - local($type,$toctitle,$title,$style) = @_; - - unless (defined($type)) {$type = 'main';} - - unless (defined $gls_mark{$type}) - { - &write_warnings("glossary type '$type' not implemented"); - } - - unless (defined($title) and $title) {$title = $gls_title{$type};} - unless (defined($toctitle) and $toctitle) {$toctitle = $title;} - - $toc_sec_title = $toctitle; - $glsfile{$type} = $CURRENT_FILE; - - $TITLE=&translate_commands($toctitle); - - if (%glossary_labels) { &make_glossary_labels(); } - - if (($SHORT_INDEX) && (%glossary_segment)) - { - &make_preglossary(); - } - else - { - $preglossary = &translate_commands("\\glossarypreamble"); - } - - local $idx_head = $section_headings{'textohtmlindex'}; - local($heading) = join('' - , &make_section_heading($title, $idx_head) - , $gls_mark{$type} ); - local($pre,$post) = &minimize_open_tags($heading); - join('',"
\n" , $pre); -} - -sub do_cmd_textohtmlglossaries{ - local($_) = @_; - - foreach $type (keys %gls_mark) - { - $id = ++$global{'max_id'}; - $_ = &make_textohtmlglossary($type,$gls_title{'main'}).$_; - } - - $_; -} - -sub make_glossary_labels { - local($key, @keys); - @keys = keys %glossary_labels; - foreach $key (@keys) { - if (($ref_files{$key}) && !($ref_files{$key} eq "$glsfile{'main'}")) { - local($tmp) = $ref_files{$key}; - &write_warnings("\nmultiple label $key , target in $glsfile{'main'} masks $tmp "); - } - $ref_files{$key} .= $glsfile{'main'}; - } -} - -sub make_preglossary{ &make_real_preglossary } -sub make_real_preglossary{ - local($key, @keys, $head, $body); - $head = "
\n

Legend:

\n
"; - @keys = keys %glossary_segment; - foreach $key (@keys) { - local($tmp) = "segment$key"; - $tmp = $ref_files{$tmp}; - $body .= "\n
$key
".&make_named_href('',$tmp,$glossary_segment{$key}); - } - $preglossary = join('', $head, $body, "\n
") if ($body); -} - -sub do_cmd_glossary { &do_real_glossary(@_) } -sub do_real_glossary { - local($_) = @_; - local($type) = "main"; - local($anchor,$entry); - - local($type,$pat) = &get_next_optional_argument; - - $entry = &missing_braces unless - (s/$next_pair_pr_rx//o&&($entry=$2)); - - $anchor = &make_glossary_entry($entry,$anchor_invisible_mark,$type); - - join('', $anchor, $_); -} - -sub make_glossary_entry { &make_real_glossary_entry(@_) } -sub make_real_glossary_entry { - local($entry,$text,$type) = @_; - local($this_file) = $CURRENT_FILE; - $TITLE = $saved_title if (($saved_title)&&(!($TITLE)||($TITLE eq $default_title))); - - local($sort) = $glsentry{$entry}{'sort'}; - - # Save the reference - local($str) = "$sort###" . ++$global{'max_id'}; # Make unique - # concatenate multiple spaces into a single space - # otherwise keys won't sort properly - $str=~s/\s+/ /gs; - local($br_id) = ++$global{'max_id'}; - $glossary{$type}{$str} .= &make_half_href($this_file."#$br_id"); - $glossary_format{$type}{$str} = $GLSCURRENTFORMAT; - $glossary_entry{$type}{$str} = $entry; - $glossary_linktext{$type}{$str} = $TITLE; - "
$text<\/A>"; -} - -sub do_cmd_newglossary{ - local($_) = @_; - local($type,$out,$in,$opt,$pat,$title); - - ($opt,$pat) = &get_next_optional_argument; - - $type = &missing_braces unless - (s/$next_pair_pr_rx//o&&($type=$2)); - $in = &missing_braces unless - (s/$next_pair_pr_rx//o&&($in=$2)); - $out = &missing_braces unless - (s/$next_pair_pr_rx//o&&($out=$2)); - $title = &missing_braces unless - (s/$next_pair_pr_rx//o&&($title=$2)); - - ($opt,$pat) = &get_next_optional_argument; - - &make_newglossarytype($type, $title); - - $_; -} - -sub make_newglossarytype{ - local($type, $title) = @_; - - $gls_mark{$type} = ""; - $gls_file_mark{$type} = ""; - $gls_title{$type} = $title; - $delimN{$type} = ", "; - $glsnumformat{$type} = $GLSCURRENTFORMAT; - @{$gls_entries{$type}} = (); - $gls_displayfirst{$type} = "glsdisplayfirst"; - $gls_display{$type} = "glsdisplay"; -} - -sub do_cmd_glsdisplay{ - local($_) = @_; - local($text,$description,$symbol,$insert); - - $text = &missing_braces unless - (s/$next_pair_pr_rx/$text=$2;''/eo); - - $description = &missing_braces unless - (s/$next_pair_pr_rx/$description=$2;''/eo); - - $symbol = &missing_braces unless - (s/$next_pair_pr_rx/$symbol=$2;''/eo); - - $insert = &missing_braces unless - (s/$next_pair_pr_rx/$insert=$2;''/eo); - - "$text$insert" . $_; -} - -sub do_cmd_glsdisplayfirst{ - local($_) = @_; - local($text,$description,$symbol,$insert); - - $text = &missing_braces unless - (s/$next_pair_pr_rx/$text=$2;''/eo); - - $description = &missing_braces unless - (s/$next_pair_pr_rx/$description=$2;''/eo); - - $symbol = &missing_braces unless - (s/$next_pair_pr_rx/$symbol=$2;''/eo); - - $insert = &missing_braces unless - (s/$next_pair_pr_rx/$insert=$2;''/eo); - - "$text$insert" . $_; -} - -sub gls_get_displayfirst{ - local($type) = @_; - local($display)= $gls_displayfirst{$type}; - - if (not defined($display)) - { - &write_warnings("Glossary '$type' is not defined"); - $display=''; - } - elsif ($display eq '') - { - &write_warnings("glsdisplayfirst not set for glossary '$type'"); - } - else - { - $display = "\\$display "; - } - - $display; -} - -sub gls_get_display{ - local($type) = @_; - local($display)= $gls_display{$type}; - - if (not defined($display)) - { - &write_warnings("Glossary '$type' is not defined"); - $display = ''; - } - elsif ($display eq '') - { - &write_warnings("glsdisplay not set for glossary '$type'"); - } - else - { - $display = "\\$display "; - } - - $display; -} - -sub do_cmd_glsnamefont{ - local($_) = @_; - local($text); - - $text = &missing_braces unless - (s/$next_pair_pr_rx/$text=$2;''/eo); - - "$text$_"; -} - -sub do_cmd_newacronym{ - local($_) = @_; - local($label,$abbrev,$long,$opt); - - ($opt,$pat) = &get_next_optional_argument; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - $abbrv = &missing_braces unless - (s/$next_pair_pr_rx/$abbrv=$2;''/eo); - $long = &missing_braces unless - (s/$next_pair_pr_rx/$long=$2;''/eo); - - local($cmd) = "\\newglossaryentry"; - local($id); - $id = ++$global{'max_id'}; - $cmd .= "$OP$id$CP$label$OP$id$CP"; - $id = ++$global{'max_id'}; - local($entry) = "type=$OP$id$CP\\acronymtype$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "name=$OP$id$CP$abbrv$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "description=$OP$id$CP$long$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "text=$OP$id$CP$abbrv$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "first=$OP$id$CP$long ($abbrv)$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "plural=$OP$id$CP${abbrv}s$OP$id$CP,"; - $id = ++$global{'max_id'}; - $entry .= "firstplural=$OP$id$CP${long}s (${abbrv}s)$OP$id$CP"; - - $id = ++$global{'max_id'}; - $cmd .= "$OP$id$CP$entry,$opt$OP$id$CP"; - - &translate_commands($cmd).$_; -} - -sub gls_entry_init{ - local($label, $type, $name, $desc) = @_; - - %{$glsentry{$label}} = - ( type => $type, - name => $name, - 'sort' => $name, - description => $description, - text => $name, - first => $name, - plural => "${name}s", - firstplural => "${name}s", - symbol => '', - flag => 0 - ); -} - -sub gls_get_type{ - local($label) = @_; - local($type) = ''; - - if (&gls_entry_defined($label)) - { - $type = $glsentry{$label}{'type'}; - } - else - { - &write_warnings("gls_get_type: glossary entry '$label' has not been defined"); - } - - $type; -} - -sub gls_set_type{ - local($label, $type) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'type'} = $type; - } - else - { - &write_warnings("gls_set_type: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_name{ - local($label) = @_; - local($name) = ''; - - if (&gls_entry_defined($label)) - { - $name = $glsentry{$label}{'name'}; - } - else - { - &write_warnings("gls_get_name: glossary entry '$label' has not been defined"); - } - - $name; -} - -sub gls_set_name{ - local($label, $name) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'name'} = $name; - } - else - { - &write_warnings("gls_set_name: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_description{ - local($label) = @_; - local($description) = ''; - - if (&gls_entry_defined($label)) - { - $description = $glsentry{$label}{'description'}; - } - else - { - &write_warnings("gls_get_description: glossary entry '$label' has not been defined"); - } - - $description; -} - -sub gls_set_description{ - local($label, $description) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'description'} = $description; - } - else - { - &write_warnings("gls_set_description: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_symbol{ - local($label) = @_; - local($symbol) = ''; - - if (&gls_entry_defined($label)) - { - $symbol = $glsentry{$label}{'symbol'}; - } - else - { - &write_warnings("gls_get_symbol: glossary entry '$label' has not been defined"); - } - - $symbol; -} - -sub gls_set_symbol{ - local($label, $symbol) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'symbol'} = $symbol; - } - else - { - &write_warnings("gls_set_symbol: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_sort{ - local($label) = @_; - local($sort) = ''; - - if (&gls_entry_defined($label)) - { - $sort = $glsentry{$label}{'sort'}; - } - else - { - &write_warnings("gls_get_sort: glossary entry '$label' has not been defined"); - } - - $sort; -} - -sub gls_set_sort{ - local($label, $sort) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'sort'} = $sort; - } - else - { - &write_warnings("gls_set_sort: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_text{ - local($label) = @_; - local($text) = ''; - - if (&gls_entry_defined($label)) - { - $text = $glsentry{$label}{'text'}; - } - else - { - &write_warnings("gls_get_text: glossary entry '$label' has not been defined"); - } - - $text; -} - -sub gls_set_text{ - local($label, $text) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'text'} = $text; - } - else - { - &write_warnings("gls_set_text: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_plural{ - local($label) = @_; - local($plural) = ''; - - if (&gls_entry_defined($label)) - { - $plural = $glsentry{$label}{'plural'}; - } - else - { - &write_warnings("gls_get_plural: glossary entry '$label' has not been defined"); - } - - $plural; -} - -sub gls_set_plural{ - local($label, $plural) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'plural'} = $plural; - } - else - { - &write_warnings("gls_set_plural: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_firstplural{ - local($label) = @_; - local($firstplural) = ''; - - if (&gls_entry_defined($label)) - { - $firstplural = $glsentry{$label}{'firstplural'}; - } - else - { - &write_warnings("gls_get_firstplural: glossary entry '$label' has not been defined"); - } - - $firstplural; -} - -sub gls_set_firstplural{ - local($label, $firstplural) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'firstplural'} = $firstplural; - } - else - { - &write_warnings("gls_set_firstplural: glossary entry '$label' has not been defined"); - } -} - -sub gls_get_first{ - local($label) = @_; - local($first) = ''; - - if (&gls_entry_defined($label)) - { - $first = $glsentry{$label}{'first'}; - } - else - { - &write_warnings("gls_get_first: glossary entry '$label' has not been defined"); - } - - $first; -} - -sub gls_set_first{ - local($label, $first) = @_; - - if (&gls_entry_defined($label)) - { - $glsentry{$label}{'first'} = $first; - } - else - { - &write_warnings("gls_set_first: glossary entry '$label' has not been defined"); - } -} - -sub gls_used{ - local($label) = @_; - local($flag) = 0; - - if (&gls_entry_defined($label)) - { - $flag = $glsentry{$label}{'flag'}; - } - else - { - &write_warnings("gls_used: glossary entry '$label' has not been defined"); - } - - $flag; -} - -sub gls_entry_defined{ - local($label) = @_; - - defined(%{$glsentry{$label}}); -} - -sub do_cmd_newglossaryentry{ - local($_) = @_; - local($label,$name,$description,$symbol,$sort,$text,$first, - $plural,$firstplural,$type,$keyval); - - $label = &missing_braces unless - s/$next_pair_pr_rx/$label=$2;''/eo; - - $keyval = &missing_braces unless - s/$next_pair_pr_rx/$keyval=$2;''/eo; - - ($name,$keyval) = &get_keyval('name', $keyval); - ($description,$keyval) = &get_keyval('description', $keyval); - ($symbol,$keyval) = &get_keyval('symbol', $keyval); - ($sort,$keyval) = &get_keyval('sort', $keyval); - ($text,$keyval) = &get_keyval('text', $keyval); - ($first,$keyval) = &get_keyval('first', $keyval); - ($firstplural,$keyval) = &get_keyval('firstplural', $keyval); - ($plural,$keyval) = &get_keyval('plural', $keyval); - ($type,$keyval) = &get_keyval('type', $keyval); - - if (defined($type)) - { - $type = &translate_commands($type); - } - else - { - $type = 'main'; - } - - &gls_entry_init($label, $type, $name, $description); - - &gls_set_symbol($label, defined($symbol)?$symbol:''); - - $sort = "$name $description" unless (defined($sort) and $sort); - - &gls_set_sort($label, $sort); - - $text = $name unless (defined($text) and $text); - - &gls_set_text($label, $text); - - $first = $text unless (defined($first) and $first); - - &gls_set_first($label, $first); - - $plural = "${text}s" unless (defined($plural) and $plural); - - &gls_set_plural($label, $plural); - - $firstplural = "${first}s" unless (defined($firstplural) and $firstplural); - - &gls_set_firstplural($label, $firstplural); - - push @{$gls_entries{$type}}, $label; - - $_; -} - -sub reset_entry{ - local($label) = @_; - - $glsentry{$label}{'flag'} = 0; -} - -sub unset_entry{ - local($label) = @_; - - $glsentry{$label}{'flag'} = 1; -} - -sub do_cmd_glsreset{ - local($_) = @_; - local($label); - - $label = &missing_braces unless - s/$next_pair_pr_rx/$label=$2;''/eo; - - &reset_entry($label); - - $_; -} - -sub do_cmd_glsunset{ - local($_) = @_; - local($label); - - $label = &missing_braces unless - s/$next_pair_pr_rx/$label=$2;''/eo; - - &unset_entry($label); - - $_; -} - -sub do_cmd_ifglsused{ - local($_) = @_; - local($label,$true,$false); - - $label = &missing_braces unless - s/$next_pair_pr_rx/$label=$2;''/eo; - - $true = &missing_braces unless - s/$next_pair_pr_rx/$true=$2;''/eo; - - $false = &missing_braces unless - s/$next_pair_pr_rx/$false=$2;''/eo; - - (&gls_used($label) ? $true : $false) . $_; -} - -sub do_cmd_ifglsentryexists{ - local($_) = @_; - local($label,$true,$false); - - $label = &missing_braces unless - s/$next_pair_pr_rx/$label=$2;''/eo; - - $true = &missing_braces unless - s/$next_pair_pr_rx/$true=$2;''/eo; - - $false = &missing_braces unless - s/$next_pair_pr_rx/$false=$2;''/eo; - - (&gls_entry_defined($label) ? $true : $false) . $_; -} - -sub gls_add_entry{ - local($type, $label, $format, $text) = @_; - - local($oldfmt) = $GLSCURRENTFORMAT; - - if (defined($format) and $format) - { - $GLSCURRENTFORMAT=$format; - } - - $id = ++$global{'max_id'}; - - local($str) = &make_real_glossary_entry($label,$text,$type); - $GLSCURRENTFORMAT = $oldfmt; - - $str; -} - -sub do_cmd_glsadd{ - local($_) = @_; - local($optarg,$pat,$label,$str,$id,$type,$format); - ($optarg,$pat) = &get_next_optional_argument; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - $type = &gls_get_type($label); - - if (defined $type) - { - ($format,$optarg) = &get_keyval('format', $optarg); - $format='' unless(defined($format)); - - &gls_add_entry($type,$label,$format,""); - } - else - { - &write_warnings("gls_add: glossary entry '$label' undefined"); - $str = ''; - } - - $str . $_; -} - -sub do_cmd_glsaddall{ - local($_) = @_; - local($optarg,$pat) = &get_next_optional_argument; - - local($format,$types); - - ($type,$optarg) = &get_keyval('types', $optarg); - - ($format,$optarg) = &get_keyval('format', $optarg); - $format='' unless(defined($format)); - - local(@types) = keys(%gls_mark); - - if (defined($types)) - { - @types = split /,/, $types; - } - - foreach $type (@types) - { - # strip leasing and trailing spaces - $type=~s/^\s*([^\s]+)\s*$/\1/; - - foreach $label (@{$gls_entries{$type}}) - { - &gls_add_entry($type,$label,$format,""); - } - } - - $_; -} - -sub do_cmd_glsresetall{ - local($_) = @_; - local($types,$pat) = &get_next_optional_argument; - - local(@types) = keys(%gls_mark); - - if (defined($types) and $types) - { - @types = split /,/, $types; - } - - foreach $type (@types) - { - # strip leasing and trailing spaces - $type=~s/^\s*([^\s]+)\s*$/\1/; - - foreach $label (@{$gls_entries{$type}}) - { - &reset_entry($label); - } - } - - $_; -} - -sub do_cmd_glsunsetall{ - local($_) = @_; - local($types,$pat) = &get_next_optional_argument; - - local(@types) = keys(%gls_mark); - - if (defined($types) and $types) - { - @types = split /,/, $types; - } - - foreach $type (@types) - { - # strip leasing and trailing spaces - $type=~s/^\s*([^\s]+)\s*$/\1/; - - foreach $label (@{$gls_entries{$type}}) - { - &reset_entry($label); - } - } - - $_; -} - -sub make_glslink{ - local($type,$label,$format,$text) = @_; - local($str) = ''; - - if (defined $type) - { - $str = &gls_add_entry($type,$label,$format,$text); - } - else - { - &write_warnings("glossary '$type' undefined"); - } - - $str; -} - -sub do_cmd_glslink{ - local($_) = @_; - local($optarg,$pat,$label,$text,$type,$format,$str); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - $text = &missing_braces unless - (s/$next_pair_pr_rx/$text=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - ($optarg,$pat) = &get_next_optional_argument; - - $type = &gls_get_type($label); - - &make_glslink($type, $label, $format, $text).$space . $_; -} - -sub do_cmd_glsentrydesc{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_description($label).$_; -} - -sub do_cmd_Glsentrydesc{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_description($label)).$_; -} - -sub do_cmd_glsentrytext{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_text($label).$_; -} - -sub do_cmd_Glsentrytext{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_text($label)).$_; -} - -sub do_cmd_glsentryname{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_name($label).$_; -} - -sub do_cmd_Glsentryname{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_name($label)).$_; -} - -sub do_cmd_glsentryfirst{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_first($label).$_; -} - -sub do_cmd_Glsentryfirst{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_first($label)).$_; -} - -sub do_cmd_glsentryplural{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_plural($label).$_; -} - -sub do_cmd_Glsentryplural{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_plural($label)).$_; -} - -sub do_cmd_glsentryfirstplural{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local($text)=$glsentry{$label}{'firstplural'}; - - unless (defined($text)) - { - &write_warnings("glossary entry '$label' has not been defined"); - $text = ''; - } - - "$text$_"; - &gls_get_firstplural($label).$_; -} - -sub do_cmd_Glsentryfirstplural{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_firstplural($label)).$_; -} - -sub do_cmd_glsentrysymbol{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - &gls_get_symbol($label).$_; -} - -sub do_cmd_Glsentrysymbol{ - local($_) = @_; - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - ucfirst(&gls_get_symbol($label)).$_; -} - -sub do_cmd_gls{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = &gls_get_type($label); - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_text($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_first($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, $link_text) .$space . $_; -} - -sub do_cmd_glspl{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = $glsentry{$label}{'type'}; - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_plural($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_firstplural($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, $link_text) . $space . $_; -} - -sub do_cmd_Gls{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = $glsentry{$label}{'type'}; - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_text($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_first($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, ucfirst($link_text)). $space . $_; -} - -sub do_cmd_Glspl{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = $glsentry{$label}{'type'}; - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_plural($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_firstplural($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, ucfirst($link_text)).$space . $_; -} - -sub do_cmd_GLS{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = $glsentry{$label}{'type'}; - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_text($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_first($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, uc($link_text)).$space . $_; -} - -sub do_cmd_GLSpl{ - local($_) = @_; - local($optarg,$pat,$label,$text, $format, $insert); - - ($optarg,$pat) = &get_next_optional_argument; - - ($format,$optarg) = &get_keyval('format', $optarg); - - $label = &missing_braces unless - (s/$next_pair_pr_rx/$label=$2;''/eo); - - local ($space) = ''; - if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} - - $insert = ''; - ($insert,$pat) = &get_next_optional_argument; - - local($display) = ''; - - local($type) = $glsentry{$label}{'type'}; - - if (&gls_used($label)) - { - # entry has already been used - - $text = &gls_get_plural($label); - $display = &gls_get_display($type);; - } - else - { - # entry hasn't been used - - $text = &gls_get_firstplural($label); - $display = &gls_get_displayfirst($type); - - &unset_entry($label); - } - - local($args) = ''; - - local($id) = ++$global{'max_id'}; - $args .= "$OP$id$CP$text$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; - - $id = ++$global{'max_id'}; - $args .= "$OP$id$CP$insert$OP$id$CP"; - - local($link_text) = &translate_commands("$display$args"); - - &make_glslink($type, $label, $format, uc($link_text)).$space . $_; -} - -sub do_cmd_glossarypreamble{ - local($_) = @_; - $_[0]; -} - -sub do_cmd_glossarypostamble{ - local($_) = @_; - $_[0]; -} - -sub do_cmd_glsnumformat{ - local($_) = @_; - - $_; -} - -sub do_cmd_hyperit{ - join('', "\\textit ", $_[0]); -} - -sub do_cmd_hyperrm{ - join('', "\\textrm ", $_[0]); -} - -sub do_cmd_hypertt{ - join('', "\\texttt ", $_[0]); -} - -sub do_cmd_hypersf{ - join('', "\\textsf ", $_[0]); -} - -sub do_cmd_hyperbf{ - join('', "\\textbf ", $_[0]); -} - -&ignore_commands( <<_IGNORED_CMDS_ ); -makeglossary -makeglossaries -_IGNORED_CMDS_ - -1; diff --git a/Master/texmf-dist/doc/latex/glossaries/latex2html/styles/glossaries.perl b/Master/texmf-dist/doc/latex/glossaries/latex2html/styles/glossaries.perl new file mode 100644 index 00000000000..d6f1b0fd6e8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/glossaries/latex2html/styles/glossaries.perl @@ -0,0 +1,1693 @@ +# File : glossaries.perl +# Author : Nicola Talbot +# Date : 14th June 2007 +# Version : 1.01 +# Description : LaTeX2HTML (limited!) implementation of glossaries +# package. Note that not all the glossaries.sty +# macros have been implemented. + +package main; + +# These are the only package options implemented. + +sub do_glossaries_style_altlist{ +} + +sub do_glossaries_toc{ +} + +sub do_glossaries_toc_true{ +} + +$GLSCURRENTFORMAT="textrm"; + +sub do_cmd_glossaryname{ + "Glossary$_[0]" +} + +$gls_mark{'main'} = ""; +$gls_file_mark{'main'} = ""; +$gls_title{'main'} = "\\glossaryname"; +$delimN{'main'} = ", "; +$glsnumformat{'main'} = $GLSCURRENTFORMAT; +@{$gls_entries{'main'}} = (); +$gls_displayfirst{'main'} = "glsdisplayfirst"; +$gls_display{'main'} = "glsdisplay"; + +%glsentry = (); + +$acronymtype = 'main'; + +sub do_glossaries_acronym{ + &do_glossaries_acronym_true +} + +sub do_glossaries_acronym_true{ + &make_newglossarytype("acronym", "\\acronymname"); + $acronymtype = 'acronym'; +} + +sub do_glossary_acronym_false{ + $acronymtype = 'main'; +} + +sub do_cmd_acronymname{ + join('', 'Acronyms', $_[0]); +} + +sub do_cmd_acronymtype{ + join('', $acronymtype, $_[0]); +} + +# modify set_depth_levels so that glossary is added + +sub replace_glossary_markers{ + foreach $type (keys %gls_mark) + { + if (defined &add_gls_hook) + {&add_gls_hook if (/$gls_mark{$type}/);} + else + {&add_gls($type) if (/$gls_mark{$type}/);} + + s/$gls_file_mark{$type}/$glsfile{$type}/g; + } +} + +# there must be a better way of doing this +# other than copying the orginal code and adding to it. +sub replace_general_markers { + if (defined &replace_infopage_hook) {&replace_infopage_hook if (/$info_page_mark/);} + else { &replace_infopage if (/$info_page_mark/); } + if (defined &add_idx_hook) {&add_idx_hook if (/$idx_mark/);} + else {&add_idx if (/$idx_mark/);} + &replace_glossary_markers; + + if ($segment_figure_captions) { +s/$lof_mark/$segment_figure_captions/o + } else { s/$lof_mark/$figure_captions/o } + if ($segment_table_captions) { +s/$lot_mark/$segment_table_captions/o + } else { s/$lot_mark/$table_captions/o } + &replace_morelinks(); + if (defined &replace_citations_hook) {&replace_citations_hook if /$bbl_mark/;} + else {&replace_bbl_marks if /$bbl_mark/;} + if (defined &add_toc_hook) {&add_toc_hook if (/$toc_mark/);} + else {&add_toc if (/$toc_mark/);} + if (defined &add_childs_hook) {&add_childs_hook if (/$childlinks_on_mark/);} + else {&add_childlinks if (/$childlinks_on_mark/);} + &remove_child_marks; + + if (defined &replace_cross_references_hook) {&replace_cross_references_hook;} + else {&replace_cross_ref_marks if /$cross_ref_mark||$cross_ref_visible_mark/;} + if (defined &replace_external_references_hook) {&replace_external_references_hook;} + else {&replace_external_ref_marks if /$external_ref_mark/;} + if (defined &replace_cite_references_hook) {&replace_cite_references_hook;} + else { &replace_cite_marks if /$cite_mark/; } + if (defined &replace_user_references) { + &replace_user_references if /$user_ref_mark/; } + +} + +sub add_gls{ + local($sidx_style, $eidx_style) =('',''); + if ($INDEX_STYLES) { +if ($INDEX_STYLES =~/,/) { +local(@styles) = split(/\s*,\s*/,$INDEX_STYLES); + $sidx_style = join('','<', join('><',@styles) ,'>'); + $eidx_style = join('',''); +} else { + $sidx_style = join('','<', $INDEX_STYLES,'>'); + $eidx_style = join('',''); +} + } + &add_real_gls +} + +sub gloskeysort{ + local($x, $y) = ($a, $b); + $x=~s/^(.*)###(\d+)$/\l\1/; + local($x_id) = $2; + $y=~s/^(.*)###(\d+)$/\l\1/; + local($y_id) = $2; + + local($n) = ($x cmp $y); + + if ($n == 0) + { + $n = ($x_id <=> $y_id); + } + + $n; +} + +sub add_real_gls{ + local($type) = @_; + print "\nDoing glossary '$type' ..."; + local($key, $str, @keys, $glossary, $level, $count, + @previous, @current, $id, $linktext, $delimN); + + @keys = keys %{$glossary{$type}}; + + @keys = sort gloskeysort @keys; + + $level = 0; + + $delimN = $delimN{$type}; + + foreach $key (@keys) + { + $current = $key; + $str = $current; + $str =~ s/\#\#\#\d+$//o; # Remove the unique id's + #$linktext = $cross_ref_visible_mark; + $id = ++$global{'max_id'}; + $linktext = "\\$glossary_format{$type}{$key}${OP}$id${CP}$glossary_linktext{$type}{$key}${OP}$id${CP}"; + $linktext = &translate_commands($linktext); + + local($entry) = $glossary_entry{$type}{$key}; + + $id = ++$global{'max_id'}; + local($name) = &translate_commands( + "\\glsnamefont $OP$id$CP$glsentry{$entry}{name}$OP$id$CP"); + + local($symbol) = ($glsentry{$entry}{'symbol'} ? + " $glsentry{$entry}{symbol}" : ''); + + $glossary .= + # If it's the same string don't start a new line + (&index_key_eq($current, $previous) ? + $delimN + . $glossary{$type}{$key} + . $linktext + . "\n" + : "
" + . $name + . "
" + . $glsentry{$entry}{'description'} + . $symbol . '. ' + . $glossary{$type}{$key} + . $linktext. "\n"); + $previous = $current; + } + $glossary = '
'.$glossary unless ($glossary =~ /^\s*/); + + $glossary =~ s/(]*>)()/$2$1/g; + + $str = &translate_commands("\\glossarypostamble"); + s/$gls_mark{$type}/$preglossary\n
\n$glossary<\/DL>$str\n/s; +} + +sub set_depth_levels { + # Sets $outermost_level + local($level); + # scan the document body, not the preamble, for use of sectioning commands + my ($contents) = $_; + if ($contents =~ /\\begin\s*((?:$O|$OP)\d+(?:$C|$CP))document\1|\\startdocument/s) { +$contents = $'; + } + foreach $level ("part", "chapter", "section", "subsection", + "subsubsection", "paragraph") { +last if (($outermost_level) = $contents =~ /\\($level)$delimiter_rx/); +last if (($outermost_level) = $contents =~ /\\endsegment\s*\[\s*($level)\s*\]/s); +if ($contents =~ /\\segment\s*($O\d+$C)[^<]+\1\s*($O\d+$C)\s*($level)\s*\2/s) +{ $outermost_level = $3; last }; + } + $level = ($outermost_level ? $section_commands{$outermost_level} : + do {$outermost_level = 'section'; 3;}); + + if ($REL_DEPTH && $MAX_SPLIT_DEPTH) { +$MAX_SPLIT_DEPTH = $level + $MAX_SPLIT_DEPTH; + } elsif (!($MAX_SPLIT_DEPTH)) { $MAX_SPLIT_DEPTH = 1 }; + + %unnumbered_section_commands = ( + 'tableofcontents', $level +, 'listoffigures', $level +, 'listoftables', $level +, 'bibliography', $level +, 'textohtmlindex', $level +, 'textohtmlglossary', $level +, 'textohtmlglossaries', $level + , %unnumbered_section_commands + ); + + %section_commands = ( + %unnumbered_section_commands + , %section_commands + ); +} + +sub add_bbl_and_idx_dummy_commands { + local($id) = $global{'max_id'}; + + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; + ## if ($bbl_cnt == 1) { +s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo; + #} + $global{'max_id'} = $id; + s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o; + s/[\\]printindex/\\textohtmlindex /o; + &add_gls_dummy_commands; + &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands); +} + +sub add_gls_dummy_commands{ + s/[\\]printglossary/\\textohtmlglossary/sg; + s/[\\]printglossaries/\\textohtmlglossaries/sg; +} + +sub get_firstkeyval{ + local($key,$_) = @_; + local($value); + + s/\b$key\s*=$OP(\d+)$CP(.*)$OP\1$CP\s*(,|$)/$value=$2;','/es; + undef($value) if $`=~/\b$key\s*=/; + + unless (defined($value)) + { + s/(^|,)\s*$key\s*=\s*([^,]*)\s*(,|$)/,/s; + $value=$2; + } + + ($value,$_); +} + +# need to get the value of the last key of a given name +# in the event of multiple occurences. +sub get_keyval{ + local($key,$_) = @_; + local($value); + + while (/\b$key\s*=/) + { + ($value,$_) = &get_firstkeyval($key, $_); + last unless defined($value); + } + + ($value,$_); +} + +# This is modified from do_cmd_textohtmlindex + +sub do_cmd_textohtmlglossary{ + local($_) = @_; + + local($keyval,$pat) = &get_next_optional_argument; + + local($type,$title,$toctitle,$style); + + ($type,$keyval) = &get_keyval('type', $keyval); + ($title,$keyval) = &get_keyval('title', $keyval); + ($toctitle,$keyval) = &get_keyval('toctitle', $keyval); + ($style,$keyval) = &get_keyval('style', $keyval); + + &make_textohtmlglossary($type,$toctitle,$title,$style).$_; +} + +sub make_textohtmlglossary{ + local($type,$toctitle,$title,$style) = @_; + + unless (defined($type)) {$type = 'main';} + + unless (defined $gls_mark{$type}) + { + &write_warnings("glossary type '$type' not implemented"); + } + + unless (defined($title) and $title) {$title = $gls_title{$type};} + unless (defined($toctitle) and $toctitle) {$toctitle = $title;} + + $toc_sec_title = $toctitle; + $glsfile{$type} = $CURRENT_FILE; + + $TITLE=&translate_commands($toctitle); + + if (%glossary_labels) { &make_glossary_labels(); } + + if (($SHORT_INDEX) && (%glossary_segment)) + { + &make_preglossary(); + } + else + { + $preglossary = &translate_commands("\\glossarypreamble"); + } + + local $idx_head = $section_headings{'textohtmlindex'}; + local($heading) = join('' + , &make_section_heading($title, $idx_head) + , $gls_mark{$type} ); + local($pre,$post) = &minimize_open_tags($heading); + join('',"
\n" , $pre); +} + +sub do_cmd_textohtmlglossaries{ + local($_) = @_; + + foreach $type (keys %gls_mark) + { + $id = ++$global{'max_id'}; + $_ = &make_textohtmlglossary($type,$gls_title{'main'}).$_; + } + + $_; +} + +sub make_glossary_labels { + local($key, @keys); + @keys = keys %glossary_labels; + foreach $key (@keys) { + if (($ref_files{$key}) && !($ref_files{$key} eq "$glsfile{'main'}")) { + local($tmp) = $ref_files{$key}; + &write_warnings("\nmultiple label $key , target in $glsfile{'main'} masks $tmp "); + } + $ref_files{$key} .= $glsfile{'main'}; + } +} + +sub make_preglossary{ &make_real_preglossary } +sub make_real_preglossary{ + local($key, @keys, $head, $body); + $head = "
\n

Legend:

\n
"; + @keys = keys %glossary_segment; + foreach $key (@keys) { + local($tmp) = "segment$key"; + $tmp = $ref_files{$tmp}; + $body .= "\n
$key
".&make_named_href('',$tmp,$glossary_segment{$key}); + } + $preglossary = join('', $head, $body, "\n
") if ($body); +} + +sub do_cmd_glossary { &do_real_glossary(@_) } +sub do_real_glossary { + local($_) = @_; + local($type) = "main"; + local($anchor,$entry); + + local($type,$pat) = &get_next_optional_argument; + + $entry = &missing_braces unless + (s/$next_pair_pr_rx//o&&($entry=$2)); + + $anchor = &make_glossary_entry($entry,$anchor_invisible_mark,$type); + + join('', $anchor, $_); +} + +sub make_glossary_entry { &make_real_glossary_entry(@_) } +sub make_real_glossary_entry { + local($entry,$text,$type) = @_; + local($this_file) = $CURRENT_FILE; + $TITLE = $saved_title if (($saved_title)&&(!($TITLE)||($TITLE eq $default_title))); + + local($sort) = $glsentry{$entry}{'sort'}; + + # Save the reference + local($str) = "$sort###" . ++$global{'max_id'}; # Make unique + # concatenate multiple spaces into a single space + # otherwise keys won't sort properly + $str=~s/\s+/ /gs; + local($br_id) = ++$global{'max_id'}; + $glossary{$type}{$str} .= &make_half_href($this_file."#$br_id"); + $glossary_format{$type}{$str} = $GLSCURRENTFORMAT; + $glossary_entry{$type}{$str} = $entry; + $glossary_linktext{$type}{$str} = $TITLE; + "
$text<\/A>"; +} + +sub do_cmd_newglossary{ + local($_) = @_; + local($type,$out,$in,$opt,$pat,$title); + + ($opt,$pat) = &get_next_optional_argument; + + $type = &missing_braces unless + (s/$next_pair_pr_rx//o&&($type=$2)); + $in = &missing_braces unless + (s/$next_pair_pr_rx//o&&($in=$2)); + $out = &missing_braces unless + (s/$next_pair_pr_rx//o&&($out=$2)); + $title = &missing_braces unless + (s/$next_pair_pr_rx//o&&($title=$2)); + + ($opt,$pat) = &get_next_optional_argument; + + &make_newglossarytype($type, $title); + + $_; +} + +sub make_newglossarytype{ + local($type, $title) = @_; + + $gls_mark{$type} = ""; + $gls_file_mark{$type} = ""; + $gls_title{$type} = $title; + $delimN{$type} = ", "; + $glsnumformat{$type} = $GLSCURRENTFORMAT; + @{$gls_entries{$type}} = (); + $gls_displayfirst{$type} = "glsdisplayfirst"; + $gls_display{$type} = "glsdisplay"; +} + +sub do_cmd_glsdisplay{ + local($_) = @_; + local($text,$description,$symbol,$insert); + + $text = &missing_braces unless + (s/$next_pair_pr_rx/$text=$2;''/eo); + + $description = &missing_braces unless + (s/$next_pair_pr_rx/$description=$2;''/eo); + + $symbol = &missing_braces unless + (s/$next_pair_pr_rx/$symbol=$2;''/eo); + + $insert = &missing_braces unless + (s/$next_pair_pr_rx/$insert=$2;''/eo); + + "$text$insert" . $_; +} + +sub do_cmd_glsdisplayfirst{ + local($_) = @_; + local($text,$description,$symbol,$insert); + + $text = &missing_braces unless + (s/$next_pair_pr_rx/$text=$2;''/eo); + + $description = &missing_braces unless + (s/$next_pair_pr_rx/$description=$2;''/eo); + + $symbol = &missing_braces unless + (s/$next_pair_pr_rx/$symbol=$2;''/eo); + + $insert = &missing_braces unless + (s/$next_pair_pr_rx/$insert=$2;''/eo); + + "$text$insert" . $_; +} + +sub gls_get_displayfirst{ + local($type) = @_; + local($display)= $gls_displayfirst{$type}; + + if (not defined($display)) + { + &write_warnings("Glossary '$type' is not defined"); + $display=''; + } + elsif ($display eq '') + { + &write_warnings("glsdisplayfirst not set for glossary '$type'"); + } + else + { + $display = "\\$display "; + } + + $display; +} + +sub gls_get_display{ + local($type) = @_; + local($display)= $gls_display{$type}; + + if (not defined($display)) + { + &write_warnings("Glossary '$type' is not defined"); + $display = ''; + } + elsif ($display eq '') + { + &write_warnings("glsdisplay not set for glossary '$type'"); + } + else + { + $display = "\\$display "; + } + + $display; +} + +sub do_cmd_glsnamefont{ + local($_) = @_; + local($text); + + $text = &missing_braces unless + (s/$next_pair_pr_rx/$text=$2;''/eo); + + "$text$_"; +} + +sub do_cmd_newacronym{ + local($_) = @_; + local($label,$abbrev,$long,$opt); + + ($opt,$pat) = &get_next_optional_argument; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + $abbrv = &missing_braces unless + (s/$next_pair_pr_rx/$abbrv=$2;''/eo); + $long = &missing_braces unless + (s/$next_pair_pr_rx/$long=$2;''/eo); + + local($cmd) = "\\newglossaryentry"; + local($id); + $id = ++$global{'max_id'}; + $cmd .= "$OP$id$CP$label$OP$id$CP"; + $id = ++$global{'max_id'}; + local($entry) = "type=$OP$id$CP\\acronymtype$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "name=$OP$id$CP$abbrv$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "description=$OP$id$CP$long$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "text=$OP$id$CP$abbrv$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "first=$OP$id$CP$long ($abbrv)$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "plural=$OP$id$CP${abbrv}s$OP$id$CP,"; + $id = ++$global{'max_id'}; + $entry .= "firstplural=$OP$id$CP${long}s (${abbrv}s)$OP$id$CP"; + + $id = ++$global{'max_id'}; + $cmd .= "$OP$id$CP$entry,$opt$OP$id$CP"; + + &translate_commands($cmd).$_; +} + +sub gls_entry_init{ + local($label, $type, $name, $desc) = @_; + + %{$glsentry{$label}} = + ( type => $type, + name => $name, + 'sort' => $name, + description => $description, + text => $name, + first => $name, + plural => "${name}s", + firstplural => "${name}s", + symbol => '', + flag => 0 + ); +} + +sub gls_get_type{ + local($label) = @_; + local($type) = ''; + + if (&gls_entry_defined($label)) + { + $type = $glsentry{$label}{'type'}; + } + else + { + &write_warnings("gls_get_type: glossary entry '$label' has not been defined"); + } + + $type; +} + +sub gls_set_type{ + local($label, $type) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'type'} = $type; + } + else + { + &write_warnings("gls_set_type: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_name{ + local($label) = @_; + local($name) = ''; + + if (&gls_entry_defined($label)) + { + $name = $glsentry{$label}{'name'}; + } + else + { + &write_warnings("gls_get_name: glossary entry '$label' has not been defined"); + } + + $name; +} + +sub gls_set_name{ + local($label, $name) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'name'} = $name; + } + else + { + &write_warnings("gls_set_name: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_description{ + local($label) = @_; + local($description) = ''; + + if (&gls_entry_defined($label)) + { + $description = $glsentry{$label}{'description'}; + } + else + { + &write_warnings("gls_get_description: glossary entry '$label' has not been defined"); + } + + $description; +} + +sub gls_set_description{ + local($label, $description) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'description'} = $description; + } + else + { + &write_warnings("gls_set_description: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_symbol{ + local($label) = @_; + local($symbol) = ''; + + if (&gls_entry_defined($label)) + { + $symbol = $glsentry{$label}{'symbol'}; + } + else + { + &write_warnings("gls_get_symbol: glossary entry '$label' has not been defined"); + } + + $symbol; +} + +sub gls_set_symbol{ + local($label, $symbol) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'symbol'} = $symbol; + } + else + { + &write_warnings("gls_set_symbol: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_sort{ + local($label) = @_; + local($sort) = ''; + + if (&gls_entry_defined($label)) + { + $sort = $glsentry{$label}{'sort'}; + } + else + { + &write_warnings("gls_get_sort: glossary entry '$label' has not been defined"); + } + + $sort; +} + +sub gls_set_sort{ + local($label, $sort) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'sort'} = $sort; + } + else + { + &write_warnings("gls_set_sort: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_text{ + local($label) = @_; + local($text) = ''; + + if (&gls_entry_defined($label)) + { + $text = $glsentry{$label}{'text'}; + } + else + { + &write_warnings("gls_get_text: glossary entry '$label' has not been defined"); + } + + $text; +} + +sub gls_set_text{ + local($label, $text) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'text'} = $text; + } + else + { + &write_warnings("gls_set_text: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_plural{ + local($label) = @_; + local($plural) = ''; + + if (&gls_entry_defined($label)) + { + $plural = $glsentry{$label}{'plural'}; + } + else + { + &write_warnings("gls_get_plural: glossary entry '$label' has not been defined"); + } + + $plural; +} + +sub gls_set_plural{ + local($label, $plural) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'plural'} = $plural; + } + else + { + &write_warnings("gls_set_plural: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_firstplural{ + local($label) = @_; + local($firstplural) = ''; + + if (&gls_entry_defined($label)) + { + $firstplural = $glsentry{$label}{'firstplural'}; + } + else + { + &write_warnings("gls_get_firstplural: glossary entry '$label' has not been defined"); + } + + $firstplural; +} + +sub gls_set_firstplural{ + local($label, $firstplural) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'firstplural'} = $firstplural; + } + else + { + &write_warnings("gls_set_firstplural: glossary entry '$label' has not been defined"); + } +} + +sub gls_get_first{ + local($label) = @_; + local($first) = ''; + + if (&gls_entry_defined($label)) + { + $first = $glsentry{$label}{'first'}; + } + else + { + &write_warnings("gls_get_first: glossary entry '$label' has not been defined"); + } + + $first; +} + +sub gls_set_first{ + local($label, $first) = @_; + + if (&gls_entry_defined($label)) + { + $glsentry{$label}{'first'} = $first; + } + else + { + &write_warnings("gls_set_first: glossary entry '$label' has not been defined"); + } +} + +sub gls_used{ + local($label) = @_; + local($flag) = 0; + + if (&gls_entry_defined($label)) + { + $flag = $glsentry{$label}{'flag'}; + } + else + { + &write_warnings("gls_used: glossary entry '$label' has not been defined"); + } + + $flag; +} + +sub gls_entry_defined{ + local($label) = @_; + + defined(%{$glsentry{$label}}); +} + +sub do_cmd_newglossaryentry{ + local($_) = @_; + local($label,$name,$description,$symbol,$sort,$text,$first, + $plural,$firstplural,$type,$keyval); + + $label = &missing_braces unless + s/$next_pair_pr_rx/$label=$2;''/eo; + + $keyval = &missing_braces unless + s/$next_pair_pr_rx/$keyval=$2;''/eo; + + ($name,$keyval) = &get_keyval('name', $keyval); + ($description,$keyval) = &get_keyval('description', $keyval); + ($symbol,$keyval) = &get_keyval('symbol', $keyval); + ($sort,$keyval) = &get_keyval('sort', $keyval); + ($text,$keyval) = &get_keyval('text', $keyval); + ($first,$keyval) = &get_keyval('first', $keyval); + ($firstplural,$keyval) = &get_keyval('firstplural', $keyval); + ($plural,$keyval) = &get_keyval('plural', $keyval); + ($type,$keyval) = &get_keyval('type', $keyval); + + if (defined($type)) + { + $type = &translate_commands($type); + } + else + { + $type = 'main'; + } + + &gls_entry_init($label, $type, $name, $description); + + &gls_set_symbol($label, defined($symbol)?$symbol:''); + + $sort = "$name $description" unless (defined($sort) and $sort); + + &gls_set_sort($label, $sort); + + $text = $name unless (defined($text) and $text); + + &gls_set_text($label, $text); + + $first = $text unless (defined($first) and $first); + + &gls_set_first($label, $first); + + $plural = "${text}s" unless (defined($plural) and $plural); + + &gls_set_plural($label, $plural); + + $firstplural = "${first}s" unless (defined($firstplural) and $firstplural); + + &gls_set_firstplural($label, $firstplural); + + push @{$gls_entries{$type}}, $label; + + $_; +} + +sub reset_entry{ + local($label) = @_; + + $glsentry{$label}{'flag'} = 0; +} + +sub unset_entry{ + local($label) = @_; + + $glsentry{$label}{'flag'} = 1; +} + +sub do_cmd_glsreset{ + local($_) = @_; + local($label); + + $label = &missing_braces unless + s/$next_pair_pr_rx/$label=$2;''/eo; + + &reset_entry($label); + + $_; +} + +sub do_cmd_glsunset{ + local($_) = @_; + local($label); + + $label = &missing_braces unless + s/$next_pair_pr_rx/$label=$2;''/eo; + + &unset_entry($label); + + $_; +} + +sub do_cmd_ifglsused{ + local($_) = @_; + local($label,$true,$false); + + $label = &missing_braces unless + s/$next_pair_pr_rx/$label=$2;''/eo; + + $true = &missing_braces unless + s/$next_pair_pr_rx/$true=$2;''/eo; + + $false = &missing_braces unless + s/$next_pair_pr_rx/$false=$2;''/eo; + + (&gls_used($label) ? $true : $false) . $_; +} + +sub do_cmd_ifglsentryexists{ + local($_) = @_; + local($label,$true,$false); + + $label = &missing_braces unless + s/$next_pair_pr_rx/$label=$2;''/eo; + + $true = &missing_braces unless + s/$next_pair_pr_rx/$true=$2;''/eo; + + $false = &missing_braces unless + s/$next_pair_pr_rx/$false=$2;''/eo; + + (&gls_entry_defined($label) ? $true : $false) . $_; +} + +sub gls_add_entry{ + local($type, $label, $format, $text) = @_; + + local($oldfmt) = $GLSCURRENTFORMAT; + + if (defined($format) and $format) + { + $GLSCURRENTFORMAT=$format; + } + + $id = ++$global{'max_id'}; + + local($str) = &make_real_glossary_entry($label,$text,$type); + $GLSCURRENTFORMAT = $oldfmt; + + $str; +} + +sub do_cmd_glsadd{ + local($_) = @_; + local($optarg,$pat,$label,$str,$id,$type,$format); + ($optarg,$pat) = &get_next_optional_argument; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + $type = &gls_get_type($label); + + if (defined $type) + { + ($format,$optarg) = &get_keyval('format', $optarg); + $format='' unless(defined($format)); + + &gls_add_entry($type,$label,$format,""); + } + else + { + &write_warnings("gls_add: glossary entry '$label' undefined"); + $str = ''; + } + + $str . $_; +} + +sub do_cmd_glsaddall{ + local($_) = @_; + local($optarg,$pat) = &get_next_optional_argument; + + local($format,$types); + + ($type,$optarg) = &get_keyval('types', $optarg); + + ($format,$optarg) = &get_keyval('format', $optarg); + $format='' unless(defined($format)); + + local(@types) = keys(%gls_mark); + + if (defined($types)) + { + @types = split /,/, $types; + } + + foreach $type (@types) + { + # strip leasing and trailing spaces + $type=~s/^\s*([^\s]+)\s*$/\1/; + + foreach $label (@{$gls_entries{$type}}) + { + &gls_add_entry($type,$label,$format,""); + } + } + + $_; +} + +sub do_cmd_glsresetall{ + local($_) = @_; + local($types,$pat) = &get_next_optional_argument; + + local(@types) = keys(%gls_mark); + + if (defined($types) and $types) + { + @types = split /,/, $types; + } + + foreach $type (@types) + { + # strip leasing and trailing spaces + $type=~s/^\s*([^\s]+)\s*$/\1/; + + foreach $label (@{$gls_entries{$type}}) + { + &reset_entry($label); + } + } + + $_; +} + +sub do_cmd_glsunsetall{ + local($_) = @_; + local($types,$pat) = &get_next_optional_argument; + + local(@types) = keys(%gls_mark); + + if (defined($types) and $types) + { + @types = split /,/, $types; + } + + foreach $type (@types) + { + # strip leasing and trailing spaces + $type=~s/^\s*([^\s]+)\s*$/\1/; + + foreach $label (@{$gls_entries{$type}}) + { + &reset_entry($label); + } + } + + $_; +} + +sub make_glslink{ + local($type,$label,$format,$text) = @_; + local($str) = ''; + + if (defined $type) + { + $str = &gls_add_entry($type,$label,$format,$text); + } + else + { + &write_warnings("glossary '$type' undefined"); + } + + $str; +} + +sub do_cmd_glslink{ + local($_) = @_; + local($optarg,$pat,$label,$text,$type,$format,$str); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + $text = &missing_braces unless + (s/$next_pair_pr_rx/$text=$2;''/eo); + + # v1.01 removed following lines (\glslink doesn't have + # a final optional argument! + #local ($space) = ''; + #if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + #($optarg,$pat) = &get_next_optional_argument; + + $type = &gls_get_type($label); + + #&make_glslink($type, $label, $format, $text).$space . $_; + &make_glslink($type, $label, $format, $text) . $_; +} + +sub do_cmd_glsentrydesc{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_description($label).$_; +} + +sub do_cmd_Glsentrydesc{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_description($label)).$_; +} + +sub do_cmd_glsentrytext{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_text($label).$_; +} + +sub do_cmd_Glsentrytext{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_text($label)).$_; +} + +sub do_cmd_glsentryname{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_name($label).$_; +} + +sub do_cmd_Glsentryname{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_name($label)).$_; +} + +sub do_cmd_glsentryfirst{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_first($label).$_; +} + +sub do_cmd_Glsentryfirst{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_first($label)).$_; +} + +sub do_cmd_glsentryplural{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_plural($label).$_; +} + +sub do_cmd_Glsentryplural{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_plural($label)).$_; +} + +sub do_cmd_glsentryfirstplural{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local($text)=$glsentry{$label}{'firstplural'}; + + unless (defined($text)) + { + &write_warnings("glossary entry '$label' has not been defined"); + $text = ''; + } + + "$text$_"; + &gls_get_firstplural($label).$_; +} + +sub do_cmd_Glsentryfirstplural{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_firstplural($label)).$_; +} + +sub do_cmd_glsentrysymbol{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + &gls_get_symbol($label).$_; +} + +sub do_cmd_Glsentrysymbol{ + local($_) = @_; + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + ucfirst(&gls_get_symbol($label)).$_; +} + +sub do_cmd_gls{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = &gls_get_type($label); + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_text($label); + $display = &gls_get_display($type); + } + else + { + # entry hasn't been used + + $text = &gls_get_first($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, $link_text) .$space . $_; +} + +sub do_cmd_glspl{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = $glsentry{$label}{'type'}; + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_plural($label); + $display = &gls_get_display($type);; + } + else + { + # entry hasn't been used + + $text = &gls_get_firstplural($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, $link_text) . $space . $_; +} + +sub do_cmd_Gls{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = $glsentry{$label}{'type'}; + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_text($label); + $display = &gls_get_display($type);; + } + else + { + # entry hasn't been used + + $text = &gls_get_first($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, ucfirst($link_text)). $space . $_; +} + +sub do_cmd_Glspl{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = $glsentry{$label}{'type'}; + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_plural($label); + $display = &gls_get_display($type);; + } + else + { + # entry hasn't been used + + $text = &gls_get_firstplural($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, ucfirst($link_text)).$space . $_; +} + +sub do_cmd_GLS{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = $glsentry{$label}{'type'}; + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_text($label); + $display = &gls_get_display($type);; + } + else + { + # entry hasn't been used + + $text = &gls_get_first($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, uc($link_text)).$space . $_; +} + +sub do_cmd_GLSpl{ + local($_) = @_; + local($optarg,$pat,$label,$text, $format, $insert); + + ($optarg,$pat) = &get_next_optional_argument; + + ($format,$optarg) = &get_keyval('format', $optarg); + + $label = &missing_braces unless + (s/$next_pair_pr_rx/$label=$2;''/eo); + + local ($space) = ''; + if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';} + + $insert = ''; + ($insert,$pat) = &get_next_optional_argument; + + local($display) = ''; + + local($type) = $glsentry{$label}{'type'}; + + if (&gls_used($label)) + { + # entry has already been used + + $text = &gls_get_plural($label); + $display = &gls_get_display($type);; + } + else + { + # entry hasn't been used + + $text = &gls_get_firstplural($label); + $display = &gls_get_displayfirst($type); + + &unset_entry($label); + } + + local($args) = ''; + + local($id) = ++$global{'max_id'}; + $args .= "$OP$id$CP$text$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP"; + + $id = ++$global{'max_id'}; + $args .= "$OP$id$CP$insert$OP$id$CP"; + + local($link_text) = &translate_commands("$display$args"); + + &make_glslink($type, $label, $format, uc($link_text)).$space . $_; +} + +sub do_cmd_glossarypreamble{ + local($_) = @_; + $_[0]; +} + +sub do_cmd_glossarypostamble{ + local($_) = @_; + $_[0]; +} + +sub do_cmd_glsnumformat{ + local($_) = @_; + + $_; +} + +sub do_cmd_hyperit{ + join('', "\\textit ", $_[0]); +} + +sub do_cmd_hyperrm{ + join('', "\\textrm ", $_[0]); +} + +sub do_cmd_hypertt{ + join('', "\\texttt ", $_[0]); +} + +sub do_cmd_hypersf{ + join('', "\\textsf ", $_[0]); +} + +sub do_cmd_hyperbf{ + join('', "\\textbf ", $_[0]); +} + +&ignore_commands( <<_IGNORED_CMDS_ ); +makeglossary +makeglossaries +_IGNORED_CMDS_ + +1; diff --git a/Master/texmf-dist/source/latex/glossaries/glossaries.dtx b/Master/texmf-dist/source/latex/glossaries/glossaries.dtx index 641f6653224..1b3e061e121 100644 --- a/Master/texmf-dist/source/latex/glossaries/glossaries.dtx +++ b/Master/texmf-dist/source/latex/glossaries/glossaries.dtx @@ -1,13 +1,14 @@ %\iffalse -% glossaries.dtx generated using makedtx version 0.91b (c) Nicola Talbot +% glossaries.dtx generated using makedtx version 0.93b (c) Nicola Talbot % Command line args: % -src "glossaries.sty=>glossaries.sty" % -src "(glossary-.+)\.(sty)\Z=>\1.\2" % -doc "manual.tex" % -author "Nicola Talbot" +% -codetitle "Documented Code" % -dir "source" % glossaries -% Created on 2007/5/25 16:12 +% Created on 2007/8/3 17:26 %\fi %\iffalse %<*package> @@ -58,17 +59,19 @@ \makeatother \RecordChanges \PageIndex -\CheckSum{2807} +\CheckSum{2821} \CodelineNumbered +\newcommand*{\termdef}[1]{\emph{#1}\iterm{#1}} +\newcommand*{\term}[1]{#1\iterm{#1}} +\newcommand*{\iterm}[1]{\index{#1|main}} -\newcommand{\cmdname}[1]{\texttt{\char`\\#1}} \newcommand*{\istkey}[1]{\texttt{#1}\index{makeindex=\texttt{makeindex}>#1=\texttt{#1}|hyperpage}} \newcommand*{\icmdname}[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=\cmdname{#1} options>#2=\textsf{#2}|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*{\pkgopt}[2][]{% \ifthenelse{\equal{#1}{}}{% @@ -89,7 +92,7 @@ %\MakeShortVerb{"} %\DeleteShortVerb{\|} % -% \title{glossaries.sty v 1.02: \LaTeXe\ Package to Assist Generating Glossaries} +% \title{glossaries.sty v 1.04: \LaTeXe\ Package to Assist Generating Glossaries} % \author{Nicola L.C. Talbot\\[10pt] %School of Computing Sciences\\ %University of East Anglia\\ @@ -97,7 +100,7 @@ %NR4 7TJ. United Kingdom.\\ %\url{http://theoval.cmp.uea.ac.uk/~nlct/}} % -% \date{25th May 2007} +% \date{3rd August 2007} % \maketitle %\tableofcontents % @@ -213,7 +216,7 @@ %will be Notation. % %\item Any new glossaries must be defined before -%\cmdname{makeglossaries} +%\cs{makeglossaries} %\begin{verbatim} %\documentclass{article} %\usepackage{glossaries} @@ -365,9 +368,9 @@ % %\item Other variations: %\begin{itemize} -%\item \icmdname{Gls}\marg{label} : like \cmdname{gls}, +%\item \icmdname{Gls}\marg{label} : like \cs{gls}, %but with first letter in upper case -%\item \icmdname{GLS}\marg{label} : like \cmdname{gls}, +%\item \icmdname{GLS}\marg{label} : like \cs{gls}, %but all upper case. %\item \icmdname{glspl}\marg{label} : use plural %\item \icmdname{Glspl}\marg{label} : use plural with @@ -398,14 +401,14 @@ %The primary definition of \glspl[format=textbf]{singmtx}. %\end{verbatim} %In this example the relevant glossary entry will have the -%page number in bold (since it uses \cmdname{textbf}) but +%page number in bold (since it uses \cs{textbf}) but %it will no longer have a hyperlink (if hyperlinks are enabled.) % %\item The \styname{glossaries} package provides commands to %change the font whilst ensuring that the number remains a -%hyperlink. These are of the form \cmdname{hyper}\meta{xx} and +%hyperlink. These are of the form \cs{hyper}\meta{xx} and %are equivalent to the standard font changing commands of the -%form \cmdname{text}\meta{xx}, as well as \icmdname{hyperemph} +%form \cs{text}\meta{xx}, as well as \icmdname{hyperemph} %(which uses \icmdname{emph}.) For example: %\begin{verbatim} %The primary definition of \glspl[format=hyperbf]{singmtx}. @@ -548,29 +551,54 @@ %\begin{verbatim} %\usepackage[section=section]{glossaries} %\end{verbatim} +%Note that the starred form of the sectioning command is always used +%since glossaries tend to be placed in unnumbered sections or chapters. +%If you want the glossaries to appeared in a numbered section, you +%will need to set \DescribeMacro{\glossarysection}\cs{glossarysection} +%to the relevant sectioning command. For example, to make the +%glossaries appear in numbered chapters, do: +%\begin{verbatim} +%\let\glossarysection\chapter +%\end{verbatim} % %\item[\pkgopt{style}] This is a key=value option. Its value should %be the name of the glossary style to use. % %\item[\pkgopt{nonumberlist}] This option will suppress the -%associated number lists in the glossaries (see also +%associated number lists\iterm{number list} in the glossaries (see also %\autoref{sec:numberlists}.) % %\item[\pkgopt{acronym}] Make a separate glossary for acronyms. % %\item[\pkgopt{counter}] This is a key=value option. The value should -%be the name of the default counter to use in the number lists. -% -%\item[\pkgopt{sanitize}] This is a key=value option whose value -%is a key=value list. By default, the \styname{glossaries} package -%sanitizes the values of the \gloskey{name}, \gloskey{description} -%and \gloskey{symbol} keys used when defining a new glossary -%entry. This means that you don't need to worry about using fragile -%commands when defining new glossary entries, but this may lead -%to unexpected results if you try to display these values within -%the document text. This sanitization can be switched off using -%the \pkgopt{sanitize} package option. (See \autoref{sec:pkgopt} -%and \autoref{sec:newentry} for further details.) +%be the name of the default counter to use in the +%number lists\iterm{number list}. +% +%\hypertarget{sanitize}{}\relax +%\item[\pkgopt{sanitize}] This is a key=value option whose value is a +%key=value list. By default, the \styname{glossaries} package +%sanitizes the values of the \gloskey{name}, \gloskey{description} and +%\gloskey{symbol} keys used when defining a new glossary entry. This +%may lead to unexpected results if you try to +%display these values within the document text. This sanitization can +%be switched off using the \pkgopt{sanitize} package option. (See +%\autoref{sec:pkgopt} and \autoref{sec:newentry} for further details.) +%For example, to switch off the sanitization for the +%\gloskey{description} and \gloskey{name} keys, but not for +%the \gloskey{symbol} key, do: +%\begin{verbatim} +%\usepackage[sanitize={name=false,description=false,% +%symbol=true}]{glossaries} +%\end{verbatim} +% +%\textbf{Note}: this sanitization only applies to the \gloskey{name}, +%\gloskey{description} and \gloskey{symbol} keys. It doesn't apply +%to any of the other keys (except the \gloskey{sort} key which is +%always sanitized) so fragile commands contained in the value of +%the other keys must always be protected using \cs{protect}. +%Since the value of the \gloskey{text} key is obtained from the +%\gloskey{name} key, you will still need to protect fragile commands +%in the \gloskey{name} key if you don't use the \gloskey{text} key. % %\end{description} % @@ -589,14 +617,14 @@ %defined in the document. % %\DescribeMacro{\makeglossaries} -%The command \cmdname{makeglossaries} must be placed in the preamble, +%The command \cs{makeglossaries} must be placed in the preamble, %in order to create the customised \appname{makeindex} style file, %and to ensure that glossary entries are written to the appropriate %output file. % %\DescribeMacro{\newglossaryentry} %New glossary entries are defined using the command:\\[10pt] -%\cmdname{newglossaryentry}\marg{label}\marg{key-val list}\\[10pt] +%\cs{newglossaryentry}\marg{label}\marg{key-val list}\\[10pt] %The first argument, \meta{label}, must be a unique label with which to %identify this entry. The second argument, \meta{key-val list}, %is a key=value list that supplies the relevant information about this @@ -627,7 +655,7 @@ %field. %\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 \cmdname{relax}. +%this value. If omitted, the value is set to \cs{relax}. %\item[{\gloskey{sort}}] This value indicates how \appname{makeindex} should %sort this entry. If omitted, the value of the \gloskey{name} field %is used. This value is equivalent to \appname{makeindex}'s ``actual'' @@ -639,9 +667,9 @@ %\DescribeMacro{\loadglsentries} %You can store all your glossary entry definitions in another %file, and use:\\[10pt] -%\cmdname{loadglsentries}\oarg{type}\marg{filename}\\[10pt] +%\cs{loadglsentries}\oarg{type}\marg{filename}\\[10pt] %where \meta{filename} is the name of the file containing all the -%\cmdname{newglossaryentry} commands. The optional argument +%\cs{newglossaryentry} commands. The optional argument %\meta{type} is the name of the glossary to which those entries %should belong, for those entries where the \gloskey{type} key has %been omitted. Note that only those entries that have been used @@ -650,7 +678,8 @@ %\subsection{Number lists} %\label{sec:numberlists} % -%Each entry in the glossary has an associated number list. By default, +%Each entry in the glossary has an associated \termdef{number list}. +%By default, %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 @@ -662,11 +691,22 @@ % %Once you have defined a glossary entry using %\icmdname{newglossaryentry}, you can refer to that entry in the -%document using one of the commands listed in this section. +%document using one of the commands listed in this section. The +%text which appears at that point in the document when using +%one of these commands is referred to as the +%\termdef{link text} (even if there are no hyperlinks.) +% +%The way the \term{link text} is displayed +%depends on \DescribeMacro{\glstextformat}\cs{glstextformat}\marg{text}. +%For example, to make all \term{link text} appear in a sans-serif +%font, do: +%\begin{verbatim} +%\renewcommand*{\glstextformat}[1]{\textsf{#1}} +%\end{verbatim} % %\DescribeMacro{\glslink} %The command:\\[10pt] -%\cmdname{glslink}\oarg{options}\marg{label}\marg{text}\\[10pt] +%\cs{glslink}\oarg{options}\marg{label}\marg{text}\\[10pt] %will place \meta{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} @@ -678,13 +718,27 @@ %\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 -%\cmdname{index}) the value needs to be the name of a +%\cs{index}) the value needs to be the name of a %command \emph{without} the initial backslash. As with -%\cmdname{index}, the characters "(" and ")" can also be used to +%\cs{index}, the characters "(" and ")" 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 will not 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. (Just as you would have to do with \cs{index}.) % -%The \styname{glossaries} package provides the following number -%formats: +%If you are using hyperlinks, and you want to change the font of the +%hyperlink, don't use \cs{hyperpage} (provided by the \styname{hyperref} +%package) as the numbers may not refer to a page number. +%Instead, the \styname{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 @@ -709,13 +763,13 @@ %part of the document\\ %\end{tabular} %\end{center} -%Note that if the \cmdname{hyperlink} command hasn't been defined, +%Note that if the \cs{hyperlink} command hasn't been defined, %the "hyper"\meta{xx} formats are equivalent to the -%analogous \cmdname{text}\meta{xx} font commands. If you want to +%analogous \cs{text}\meta{xx} font commands. If you want to %make a new format, you will need to define a command which takes %one argument, for example, if you want the associated number in %the glossary to be in a bold sans-serif font, you can define a -%command called, say, \cmdname{hyperbsf}: +%command called, say, \cs{hyperbsf}: %\begin{verbatim} %\newcommand{\hyperbsf}[1]{\textbf{\hypersf{#1}}} %\end{verbatim} @@ -729,28 +783,28 @@ %\item[{\gloskey[glslink]{hyper}}] This is a boolean key which can %be used to enable/disable the hyperlink to the relevant entry %in the glossary. (Note that setting "hyper=true" will have no -%effect if \cmdname{hyperlink} has not been defined.) The default +%effect if \cs{hyperlink} has not been defined.) The default %value is "hyper=true". % %\end{description} %\DescribeMacro{\glslink*} %There is also a starred version:\\[10pt] -%\cmdname{glslink*}\oarg{options}\marg{label}\marg{text}\\[10pt] -%which is equivalent to \cmdname{glslink}, except it sets +%\cs{glslink*}\oarg{options}\marg{label}\marg{text}\\[10pt] +%which is equivalent to \cs{glslink}, except it sets %"hyper=false". % %\DescribeMacro{\gls} %The command:\\[10pt] -%\cmdname{gls}\oarg{options}\marg{label}\oarg{insert}\\[10pt] -%is the same as \cmdname{glslink}, except that the link text +%\cs{gls}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%is the same as \cs{glslink}, except that the \term{link text} %is determined from the values of the \gloskey{text} and %\gloskey{first} keys supplied when the entry was defined using %\icmdname{newglossaryentry}. There are two uppercase variants:\\[10pt] %\DescribeMacro{\Gls} -%\cmdname{Gls}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%\cs{Gls}\oarg{options}\marg{label}\oarg{insert}\\[10pt] %and %\DescribeMacro{\GLS} -%\cmdname{GLS}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%\cs{GLS}\oarg{options}\marg{label}\oarg{insert}\\[10pt] %which make the first letter of the link, or all the link text, %uppercase, respectively. % @@ -762,29 +816,38 @@ % %There are also analogous plural forms:\\[10pt] %\DescribeMacro{\glspl} -%\cmdname{glspl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%\cs{glspl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] %\DescribeMacro{\Glspl} -%\cmdname{Glspl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%\cs{Glspl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] %\DescribeMacro{\GLSpl} -%\cmdname{GLSpl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] +%\cs{GLSpl}\oarg{options}\marg{label}\oarg{insert}\\[10pt] %These determine the link text from the \gloskey{plural} and %\gloskey{firstplural} keys supplied when the entry was first %defined. % +%To make the description or symbol also appear in the \term{link text}, +%you will need to redefine \cs{glsdisplayfirst} and \cs{glsdisplay} +%or use the commands \cs{defglsdisplayfirst} and \cs{defglsdisplay}. +%See \autoref{sec:code:glslink} for further details. (Note that if you +%want either the description or symbol to appear in the +%\term{link text}, you will have to disable the +%\hyperlink{sanitize}{sanitization} of these +%keys, and protect fragile commands.) +% %\subsection{Adding an entry to the glossary without generating text} %\label{sec:glsadd} % %\DescribeMacro{\glsadd} %It is also possible to add a line in the glossary file without %generating any text at that point in the document.\\[10pt] -%\cmdname{glsadd}\oarg{options}\marg{label}\\[10pt] +%\cs{glsadd}\oarg{options}\marg{label}\\[10pt] %This is similar to \icmdname{glslink}, only it doesn't produce %any text (so therefore, there is no \gloskey[glslink]{hyper} key %available in \meta{options}.) % %\DescribeMacro{\glsaddall} %To add a line for all entries that have been defined, use:\\[10pt] -%\cmdname{glsaddall}\oarg{glossary list}\\[10pt] +%\cs{glsaddall}\oarg{glossary list}\\[10pt] %If there are multiple glossaries, you can specify to add only %those entries which belong to the glossaries listed in %\meta{glossary list} (which must be a comma separated list of @@ -793,7 +856,7 @@ %\subsection{Displaying a glossary} % %\DescribeMacro{\printglossaries} -%The command \cmdname{printglossaries} will display all the +%The command \cs{printglossaries} will display all the %defined glossaries. Note that no glossaries will appear until %you have either used the Perl script \appname{makeglossaries} %or have directly used \appname{makeindex}. If the glossary still @@ -802,7 +865,7 @@ % %\DescribeMacro{\printglossary} %An individual glossary is displayed using:\\[10pt] -%\cmdname{printglossary}\oarg{options}\\[10pt] +%\cs{printglossary}\oarg{options}\\[10pt] %where \meta{options} is a key-val list of options. The following %keys are available: %\begin{description} @@ -826,7 +889,7 @@ % %\DescribeMacro{\newglossary} %A new glossary can be defined using:\\[10pt] -%\cmdname{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}\marg{title}\oarg{counter}\\[10pt] +%\cs{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}\marg{title}\oarg{counter}\\[10pt] %where \meta{name} is label to assign to this glossary. (Note that %the default glossary is labelled "main" and if you use the %\pkgopt{acronym} package option, there will also be a glossary @@ -834,7 +897,8 @@ %specify the extensions to give to the input and output files %for that glossary, \meta{title} is the default title for this %new glossary and the final optional argument \meta{counter} specifies -%which counter to use for the associated number lists (see also +%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 @@ -848,10 +912,10 @@ %the term is first used in the document, this provides a useful %means to define acronyms. The \styname{glossaries} package defines %the command:\\[10pt] -%\cmdname{newacronym}\oarg{key-val list}\marg{label}\marg{abbrv}\marg{long}\\[10pt] +%\cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrv}\marg{long}\\[10pt] %This is equivalent to:\vskip5pt %\begin{ttfamily}\obeylines -%\cmdname{newglossaryentry}\textrm{\marg{label}}\{type=\cmdname{acronymtype}, +%\cs{newglossaryentry}\textrm{\marg{label}}\{type=\cs{acronymtype}, %name=\textrm{\marg{abbrv}}, %description=\textrm{\marg{long}}, %text=\textrm{\marg{abbrv}}, @@ -861,7 +925,7 @@ %\textrm{\meta{key-val list}}\} %\end{ttfamily} %\vskip5pt -%The command \cmdname{acronymtype} is the name of the glossary +%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 "acronym", otherwise %it will be "main". The acronyms can then be used in exactly @@ -873,7 +937,7 @@ %\begin{description} %\item[list] The \glostyle{list} style uses the \envname{description} %environment. The entry name is placed in the optional argument -%of the \cmdname{item} command (so it will appear in bold by +%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. % @@ -897,7 +961,7 @@ %\item[long] The \glostyle{long} style uses the \envname{longtable} %environment. It has two columns, the first column contains the %entry's name, the second column contains the description followed -%by the number list. +%by the \term{number list}. % %\item[longborder] The \glostyle{longborder} style is like %\glostyle{long}, but has horizontal and vertical lines around it. @@ -912,7 +976,7 @@ %\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 number list. +%and the third column contains the \term{number list}. % %\item[long3colborder] The \glostyle{long3colborder} style is like %the \glostyle{long3col} style but has horizontal and vertical @@ -943,7 +1007,7 @@ %\item[super] The \glostyle{super} style uses the \envname{supertabular} %environment. It has two columns, the first column contains the %entry's name, the second column contains the description followed -%by the number list. +%by the \term{number list}. % %\item[superborder] The \glostyle{superborder} style is like %\glostyle{super}, but has horizontal and vertical lines around it. @@ -958,7 +1022,7 @@ %\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 number list. +%and the third column contains the \iterm{number list}. % %\item[super3colborder] The \glostyle{super3colborder} style is like %the \glostyle{super3col} style but has horizontal and vertical @@ -991,16 +1055,24 @@ %The glossary style can be set using the \pkgopt{style} package option, %or using the \gloskey[printglossary]{style} key in the optional %argument to \icmdname{printglossary}, or using the command:\\[10pt] -%\cmdname{glossarystyle}\marg{style-name}\\[10pt] +%\cs{glossarystyle}\marg{style-name}\\[10pt] %For further details on creating or modifying glossary styles see %\autoref{sec:printglos} and \autoref{sec:styles}. % +% \changes{1.03}{2007 July 4}{'glspostdescription added} +%All the styles except for the three and four column styles use the +%command \DescribeMacro{\glspostdescription}\cs{glspostdescription} +%after the 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. +% % \StopEventually{\phantomsection\addcontentsline{toc}{section}{Index}\PrintIndex} % % % % -%\section{The Code} +%\section{Documented Code} %\iffalse % \begin{macrocode} %<*glossaries.sty> @@ -1008,9 +1080,10 @@ %\fi %\label{sec:code} % \subsection{Package Definition} +% This package requires \LaTeXe. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries}[2007/05/25 v1.02 (NLCT)] +\ProvidesPackage{glossaries}[2007/08/03 v1.04 (NLCT)] % \end{macrocode} % Required packages: % \begin{macrocode} @@ -1027,15 +1100,16 @@ \define@boolkey{glossaries.sty}[gls]{toc}[true]{} % \end{macrocode} % -%\DescribeMacro{\@@glossarysec} % The sectional unit used to start the glossary is stored in -% \cmdname{@@glossarysec}. If chapters are defined, this +% \cs{@@glossarysec}. If chapters are defined, this % is initialised to \texttt{chapter}, otherwise it is % initialised to \texttt{section}. +%\begin{macro}{\@@glossarysec} % \begin{macrocode} \@ifundefined{chapter}{\newcommand*{\@@glossarysec}{section}}{% \newcommand*{\@@glossarysec}{chapter}} % \end{macrocode} +%\end{macro} % 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. @@ -1048,15 +1122,16 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% \renewcommand*{\@@glossarysec}{#1}} % \end{macrocode} % -%\DescribeMacro{\@glossary@default@style} % The default glossary style is stored in -% \cmdname{@glossary@default@style}. This is initialised to +% \cs{@glossary@default@style}. This is initialised to % \texttt{list}. (The \glostyle{list} style is % defined in the accompanying \styname{glossary-list} package % described in \autoref{sec:styles}.) +%\begin{macro}{\@glossary@default@style} % \begin{macrocode} \newcommand*{\@glossary@default@style}{list} % \end{macrocode} +%\end{macro} % 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 @@ -1074,22 +1149,22 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% % which that entry has been used, but it can also refer to any counter % used in the document (such as the section or equation counters). % The default number list format displays the number list ``as is'': -%\DescribeMacro{\glossaryentrynumbers} +%\begin{macro}{\glossaryentrynumbers} % \begin{macrocode} \newcommand*{\glossaryentrynumbers}[1]{#1} % \end{macrocode} +%\end{macro} % Note that the entire number list for a given entry will be -% passed to \cmdname{glossaryentrynumbers} so any font changes +% passed to \cs{glossaryentrynumbers} so any font changes % will also be applied to the delimiters. % The \pkgopt{nonumberlist} package option suppresses the % number lists (this simply redefines -% \cmdname{glossaryentrynumbers} to ignores its argument.) +% \cs{glossaryentrynumbers} to ignores its argument.) % \begin{macrocode} \DeclareOptionX{nonumberlist}{% \renewcommand*{\glossaryentrynumbers}[1]{}} % \end{macrocode} % -%\DescribeMacro{\glsdefaulttype} % Keep track of the default glossary. This is initialised to % the main glossary, but can be changed if for some reason % you want to make a secondary glossary the main glossary. This @@ -1098,18 +1173,21 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% % \gloskey{type}\igloskey[printglossary]{type} key in %a key-value list.) This was mainly done so that % \icmdname{loadglsentries} can temporarily change -% \cmdname{glsdefaulttype} while it loads a file containing +% \cs{glsdefaulttype} while it loads a file containing % new glossary entries (see \autoref{sec:load}). +%\begin{macro}{\glsdefaulttype} % \begin{macrocode} \newcommand{\glsdefaulttype}{main} % \end{macrocode} -%\DescribeMacro{\acronymtype} +%\end{macro} % Keep track of which glossary the acronyms are in. This is -% initialised to \cmdname{glsdefaulttype}, but is changed by +% initialised to \cs{glsdefaulttype}, but is changed by % the \pkgopt{acronym} package option. +%\begin{macro}{\acronymtype} % \begin{macrocode} \newcommand{\acronymtype}{\glsdefaulttype} % \end{macrocode} +%\end{macro} % 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. @@ -1117,18 +1195,19 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% \define@boolkey{glossaries.sty}[gls]{acronym}[true]{} % \end{macrocode} % -%\DescribeMacro{\glscounter} % The default counter associated with the numbers in the glossary -% is stored in \cmdname{glscounter}. This is initialised to the +% is stored in \cs{glscounter}. This is initialised to the % page counter. This is used as the default counter when a % new glossary is defined, unless a different counter is specified % in the optional argument to \icmdname{newglossary} (see % \autoref{sec:newglos}). +%\begin{macro}{\glscounter} % \begin{macrocode} \newcommand{\glscounter}{page} % \end{macrocode} +%\end{macro} % The \pkgopt{counter} option changes the default counter. (This -% just redefines \cmdname{glscounter}.) +% just redefines \cs{glscounter}.) % \begin{macrocode} \define@key{glossaries.sty}{counter}{% \renewcommand*{\glscounter}{#1}} @@ -1161,11 +1240,21 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% % for the symbol. % % The default values are defined as: +%\begin{macro}{\@gls@sanitizedesc} % \begin{macrocode} \newcommand*{\@gls@sanitizedesc}{\@onelevel@sanitize\@glo@desc} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@gls@sanitizename} +% \begin{macrocode} \newcommand*{\@gls@sanitizename}{\@onelevel@sanitize\@glo@name} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@gls@sanitizesymbol} +% \begin{macrocode} \newcommand*{\@gls@sanitizesymbol}{\@onelevel@sanitize\@glo@symbol} % \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.) @@ -1176,8 +1265,8 @@ subsection,subsubsection,paragraph,subparagraph}[section]{% % \texttt{true}. % % Firstly the \gloskey{description}. If set, it will redefine -% \cmdname{@gls@sanitizedesc} to use \cmdname{@onelevel@sanitize}, -% otherwise \cmdname{@gls@sanitizedesc} will do nothing. +% \cs{@gls@sanitizedesc} to use \cs{@onelevel@sanitize}, +% otherwise \cs{@gls@sanitizedesc} will do nothing. % \begin{macrocode} \define@boolkey[gls]{sanitize}{description}[true]{% \ifgls@sanitize@description @@ -1226,7 +1315,7 @@ name=true]{% % \end{macrocode} % % If chapters are defined and the user has requested the -% section counter as a package option, \cmdname{@chapter} will +% section counter as a package option, \cs{@chapter} will % be modified so % that it adds a \texttt{section.}\meta{n}\texttt{.0} target, % otherwise entries placed before the first section of a chapter @@ -1234,7 +1323,7 @@ name=true]{% % % The same problem will also occur if a lower sectional unit is % used, but this is less likely to happen. If it does, or if -% you change \cmdname{glscounter} to "section" later, you +% you change \cs{glscounter} to "section" later, you % will have to specify a different counter for the entries % that give rise to a \texttt{name}"{"\meta{section-level}"."\meta{n}".0}" % non-existent warning (e.g. "\gls[counter=chapter]{label}"). @@ -1249,125 +1338,156 @@ name=true]{% %\subsection{Default values} % This section sets up default values that are used by this % package. Some of the names may already be defined (e.g.\ by -% \styname{babel}) so \cmdname{providecommand} is used. +% \styname{babel}) so \cs{providecommand} is used. % % Main glossary title: -%\DescribeMacro{\glossaryname} +%\begin{macro}{\glossaryname} % \begin{macrocode} \providecommand*{\glossaryname}{Glossary} % \end{macrocode} -%\DescribeMacro{\acronymname} +%\end{macro} % The title for the "acronym" glossary type (which is defined if % \pkgopt{acronym} package option is used) is given by -% \cmdname{acronymname}. If the \pkgopt{acronym} -% package option is not used, \cmdname{acronymname} won't be used. +% \cs{acronymname}. If the \pkgopt{acronym} +% package option is not used, \cs{acronymname} won't be used. +%\begin{macro}{\acronymname} % \begin{macrocode} \providecommand*{\acronymname}{Acronyms} % \end{macrocode} +%\end{macro} % % The following commands provide text for the headers used by % some of the tabular-like glossary % styles. Whether or not they get used in the glossary depends on % the glossary style. -%\DescribeMacro{\entryname} -%\DescribeMacro{\descriptionname} -%\DescribeMacro{\symbolname} -%\DescribeMacro{\pagelistname} +%\begin{macro}{\entryname} % \begin{macrocode} \providecommand*{\entryname}{Notation} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\descriptionname} +% \begin{macrocode} \providecommand*{\descriptionname}{Description} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\symbolname} +% \begin{macrocode} \providecommand*{\symbolname}{Symbol} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\pagelistname} +% \begin{macrocode} \providecommand*{\pagelistname}{Page List} % \end{macrocode} +%\end{macro} % Labels for \appname{makeindex}'s symbol and number groups: -%\DescribeMacro{\glssymbolsgroupname}\DescribeMacro{\glsnumbersgroupname} +%\begin{macro}{\glssymbolsgroupname} % \begin{macrocode} \providecommand*{\glssymbolsgroupname}{Symbols} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsnumbersgroupname} +% \begin{macrocode} \providecommand*{\glsnumbersgroupname}{Numbers} % \end{macrocode} +%\end{macro} +% 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} % -%\DescribeMacro{\istfilename} % The name of the \appname{makeindex} style file is given by -% \cmdname{istfilename}. This file is +% \cs{istfilename}. This file is % created by \icmdname{writeist} (which is used by % \icmdname{makeglossaries}) so % redefining this command will only have an effect if it is % done \emph{before} the \filetype{ist} file is created. +%\begin{macro}{\istfilename} % \begin{macrocode} \providecommand*{\istfilename}{\jobname.ist} % \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 -% \LaTeX, \cmdname{@istfilename} ignores its argument. -%\DescribeMacro{\@istfilename} +% \LaTeX, \cs{@istfilename} ignores its argument. +%\begin{macro}{\@istfilename} % \begin{macrocode} \newcommand*{\@istfilename}[1]{} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glscompositor} % This command is the value of the \istkey{page\_compositor} % \appname{makeindex} key. Again, any redefinition of this command -% must take place \emph{before} \cmdname{writeist} otherwise it +% must take place \emph{before} \cs{writeist} otherwise it % will have no effect. +%\begin{macro}{\glscompositor} % \begin{macrocode} \newcommand{\glscompositor}{.} % \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.) % -%\DescribeMacro{\glsnumberformat} -% The command \cmdname{glsnumberformat} indicates the default +% The command \cs{glsnumberformat} indicates the default % format for the page numbers in the glossary. (Note that this % is not the same as \icmdname{glossaryentrynumbers}, but applies % to individual numbers or groups of numbers within an entry's % associated number list.) If hyperlinks are defined, it will use % \icmdname{glshypernumber}, otherwise it will simply display its % argument ``as is''. +%\begin{macro}{\glsnumberformat} % \begin{macrocode} \@ifundefined{hyperlink}{% \newcommand*{\glsnumberformat}[1]{#1}}{% \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\delimN} +%\end{macro} % Individual numbers in an entry's associated number list are -% delimited using \cmdname{delimN} (which corresponds to the +% delimited using \cs{delimN} (which corresponds to the % \istkey{delim\_n} \appname{makeindex} keyword.) The default value % is a comma followed by a space. +%\begin{macro}{\delimN} % \begin{macrocode} \newcommand{\delimN}{, } % \end{macrocode} -%\DescribeMacro{\delimR} +%\end{macro} % A range of numbers within an entry's associated number list is -% delimited using \cmdname{delimR} (which corresponds to the +% delimited using \cs{delimR} (which corresponds to the % \istkey{delim\_r} \appname{makeindex} keyword.) The default is % an en-dash. +%\begin{macro}{\delimR} % \begin{macrocode} \newcommand{\delimR}{--} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glossarypreamble} -% The glossary preamble is given by \cmdname{glossarypreamble}. This +% The glossary preamble is given by \cs{glossarypreamble}. This % will appear after the glossary sectioning command, and before the % \envname{theglossary} environment. It is designed to allow the % user to add information pertaining to the glossary (e.g.\ ``page % numbers in italic indicate the primary definition'') therefore -% \cmdname{glossarypremable} shouldn't be affected by the glossary +% \cs{glossarypremable} shouldn't be affected by the glossary % style. (So if you define your own glossary style, don't have it -% change \cmdname{glossarypreamble}.) The preamble is empty by +% change \cs{glossarypreamble}.) The preamble is empty by % default. If you have multiple glossaries, and you want a % different preamble for each glossary, you will need to use % \icmdname{printglossary} for each glossary type, instead of -% \icmdname{printglossaries}, and redefine \cmdname{glossarypreamble} +% \icmdname{printglossaries}, and redefine \cs{glossarypreamble} % before each \icmdname{printglossary}. +%\begin{macro}{\glossarypreamble} % \begin{macrocode} \newcommand*{\glossarypreamble}{} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glossarypostamble} -% The glossary postamble is given by \cmdname{glossarypostamble}. +% The glossary postamble is given by \cs{glossarypostamble}. % This is provided to allow the user to % add something after the end of the \envname{theglossary} % environment (again, this shouldn't be affected by the @@ -1379,17 +1499,19 @@ name=true]{% %\renewcommand{\glossarypostamble}{For a complete list of terms %see \cite{blah}\gdef\glossarypreamble{}} %\end{verbatim} +%\begin{macro}{\glossarypostamble} % \begin{macrocode} \newcommand*{\glossarypostamble}{} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glossarysection} % The sectioning command that starts a glossary is given by -% \cmdname{glossarysection}. (This does not form part of the +% \cs{glossarysection}. (This does not form part of the % glossary style, and so should not be changed by a glossary % style.) If \icmdname{phantomsection} -% is defined, it uses \cmdname{\@p@glossarysection}, otherwise it -% uses \cmdname{@glossarysection}. +% is defined, it uses \cs{\@p@glossarysection}, otherwise it +% uses \cs{@glossarysection}. +%\begin{macro}{\glossarysection} % \begin{macrocode} \newcommand*{\glossarysection}[2][\@gls@title]{% \def\@gls@title{#2}% @@ -1397,162 +1519,175 @@ name=true]{% \@glossarysection{#1}{#2}}{\@p@glossarysection{#1}{#2}}% } % \end{macrocode} +%\end{macro} % -% The required sectional unit is given by \cmdname{@@glossarysec} +% The required sectional unit is given by \cs{@@glossarysec} % which was defined by the \pkgopt{section} package option. The % starred form of the command is chosen. If you want a numbered % section for the glossary or if you don't want any sectional -% command, you will need to redefine \cmdname{glossarysection}. +% command, you will need to redefine \cs{glossarysection}. % -%\DescribeMacro{\@glossarysection} -%The command \cmdname{@glossarysection} indicates how to start +%The command \cs{@glossarysection} indicates how to start % the glossary section if \icmdname{phantomsection} is not defined. +%\begin{macro}{\@glossarysection} % \begin{macrocode} \newcommand*{\@glossarysection}[2]{% \csname\@@glossarysec\endcsname*{#2} \@gls@toc{#1}{\@@glossarysec}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\@p@glossarysection} -% As \cmdname{@glossarysection}, but put in -% \icmdname{phantomsection}, and swap where \cmdname{@gls@toc} goes. -% If using chapters do a \cmdname{clearpage}. This ensures that +% As \cs{@glossarysection}, but put in +% \icmdname{phantomsection}, and swap where \cs{@gls@toc} goes. +% If using chapters do a \cs{clearpage}. This ensures that % the hyper link from the table of contents leads to the line above % the heading, rather than the line below it. +%\begin{macro}{\@p@glossarysection} % \begin{macrocode} \newcommand*{\@p@glossarysection}[2]{% \gls@doclearpage \phantomsection\@gls@toc{#1}{\@@glossarysec}% \csname\@@glossarysec\endcsname*{#2}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\gls@doclearpage} -%The \cmdname{gls@doclearpage} command is used to issue a -% \cmdname{clearpage} (or \cmdname{cleardoublepage}) depending +%The \cs{gls@doclearpage} command is used to issue a +% \cs{clearpage} (or \cs{cleardoublepage}) depending % on whether the glossary sectional unit is a chapter. If the % sectional unit is something else, do nothing. +%\begin{macro}{\gls@doclearpage} % \begin{macrocode} \newcommand{\gls@doclearpage}{% \ifthenelse{\equal{\@@glossarysec}{chapter}}{% \@ifundefined{cleardoublepage}{\clearpage}{\cleardoublepage}}{}% } % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\@gls@toc} % The glossary is added to the table of contents if glstoc flag set. -% If it is set, \cmdname{@gls@toc} will add a line to the +% If it is set, \cs{@gls@toc} will add a line to the % \filetype{toc} file, otherwise it will do nothing. -% (The first argument to \cmdname{@gls@toc} is the title for the +% (The first argument to \cs{@gls@toc} is the title for the % table of contents, the second argument is the sectioning type.) +%\begin{macro}{\@gls@toc} % \begin{macrocode} \newcommand*{\@gls@toc}[2]{% \ifglstoc \addcontentsline{toc}{#2}{#1}\fi} % \end{macrocode} +%\end{macro} % %\subsection{Loops and conditionals} -%\DescribeMacro{\forallglossaries} % To iterate through all glossaries (or comma-separated list of % glossary names given in optional argument) use:\\[10pt] -% \cmdname{forallglossaries}\oarg{glossary list}\marg{cmd}\marg{code}\\[10pt] +% \cs{forallglossaries}\oarg{glossary list}\marg{cmd}\marg{code}\\[10pt] % where \meta{cmd} is % a control sequence which will be set to the name of the % glossary in the current iteration. +%\begin{macro}{\forallglossaries} % \begin{macrocode} \newcommand*{\forallglossaries}[3][\@glo@types]{% \@for#2:=#1\do{\ifthenelse{\equal{#2}{}}{}{#3}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\forglsentries} % To iterate through all entries in a given glossary use:\\[10pt] -%\cmdname{forglsentries}\oarg{type}\marg{cmd}\marg{code}\\[10pt] +%\cs{forglsentries}\oarg{type}\marg{cmd}\marg{code}\\[10pt] %where \meta{type} is the glossary label and \meta{cmd} is a % control sequence which will be set to the entry label in the % current iteration. +%\begin{macro}{\forglsentries} % \begin{macrocode} \newcommand*{\forglsentries}[3][\glsdefaulttype]{% \edef\@@glo@list{\csname glolist@#1\endcsname}% \@for#2:=\@@glo@list\do{% \ifthenelse{\equal{#2}{}}{}{#3}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\forallglsentries} % To iterate through all glossary entries over all glossaries listed % in the optional argument (the default is all glossaries) use:\\[10pt] -% \cmdname{forallglsentries}\oarg{glossary list}\marg{cmd}\marg{code}\\[10pt] -% Within \cmdname{forallglsentries}, the current glossary type -% is given by \cmdname{@@this@glo@}. +% \cs{forallglsentries}\oarg{glossary list}\marg{cmd}\marg{code}\\[10pt] +% Within \cs{forallglsentries}, the current glossary type +% is given by \cs{@@this@glo@}. +%\begin{macro}{\forallglsentries} % \begin{macrocode} \newcommand*{\forallglsentries}[3][\@glo@types]{% \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}{% \forglsentries[\@@this@glo@]{#2}{#3}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\ifglossaryexists} % To check to see if a glossary exists use:\\[10pt] -%\cmdname{ifglossaryexists}\marg{type}\marg{true-text}\marg{false-text}\\[10pt] +%\cs{ifglossaryexists}\marg{type}\marg{true-text}\marg{false-text}\\[10pt] %where \meta{type} is the glossary's label. +%\begin{macro}{\ifglossaryexists} % \begin{macrocode} \newcommand{\ifglossaryexists}[3]{% \@ifundefined{@glotype@#1@out}{#3}{#2}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\ifglsentryexists} % To check to see if a glossary entry has been defined use:\\[10pt] -% \cmdname{ifglsentryexists}\marg{label}\marg{true text}\marg{false text}\\[10pt] +% \cs{ifglsentryexists}\marg{label}\marg{true text}\marg{false text}\\[10pt] %where \meta{label} is the entry's label. +%\begin{macro}{\ifglsentryexists} % \begin{macrocode} \newcommand{\ifglsentryexists}[3]{% \@ifundefined{glo@#1@name}{#3}{#2}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\ifglsused} % To determine if given glossary entry has been % used in the document text yet use:\\[10pt] -% \cmdname{ifglsused}\marg{label}\marg{true text}\marg{false text}\\[10pt] +% \cs{ifglsused}\marg{label}\marg{true text}\marg{false text}\\[10pt] % where \meta{label} is the entry's label. % If true it will do \meta{true text} % otherwise it will do \meta{false text}. +%\begin{macro}{\ifglsused} % \begin{macrocode} \newcommand*{\ifglsused}[3]{\ifthenelse{\boolean{glo@#1@flag}}{#2}{#3}} % \end{macrocode} +%\end{macro} %The following two commands will cause an error if the given % condition fails: % -%\DescribeMacro{\glsdoifexists} -%\cmdname{glsdoifexists}\marg{label}\marg{code}\par +%\cs{glsdoifexists}\marg{label}\marg{code}\par % Generate an error if entry specified by \meta{label} doesn't % exists, otherwise do \meta{code}. +%\begin{macro}{\glsdoifexists} % \begin{macrocode} \newcommand{\glsdoifexists}[2]{\ifglsentryexists{#1}{#2}{% \PackageError{glossaries}{Glossary entry `#1' has not been defined.}{You need to define a glossary entry before you can use it.}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsdoifnoexists} -%\cmdname{glsdoifnoexists}\marg{label}\marg{code}\par +%\cs{glsdoifnoexists}\marg{label}\marg{code}\par % The opposite: only do second argument if the entry doesn't % exists. Generate an error message if it exists. +%\begin{macro}{\glsdoifnoexists} % \begin{macrocode} \newcommand{\glsdoifnoexists}[2]{\ifglsentryexists{#1}{% \PackageError{glossaries}{Glossary entry `#1' has already been defined.}{}}{#2}} % \end{macrocode} +%\end{macro} % %\subsection{Defining new glossaries}\label{sec:newglos} -%\DescribeMacro{\@glo@types} % A comma-separated list of glossary names is stored -% in \cmdname{@glo@types}. When a new glossary type +% in \cs{@glo@types}. When a new glossary type % is created, its identifying name is added to this list. % This is used by commands that iterate through all glossaries % (such as \icmdname{makeglossaries} and \icmdname{printglossaries}.) +%\begin{macro}{\@glo@types} % \begin{macrocode} \newcommand*{\@glo@types}{,} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\newglossary} -% A new glossary type is defined using \cmdname{newglossary}. -% Syntax:\\[10pt]\cmdname{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}% +% A new glossary type is defined using \cs{newglossary}. +% Syntax:\\[10pt]\cs{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}% %\marg{title}\oarg{counter}\\[10pt]% % where \meta{log-ext} is the extension of the \appname{makeindex} % transcript file, \meta{in-ext} is the extension of the glossary @@ -1567,6 +1702,7 @@ been defined.}{}}{#2}} % script reads in the relevant extensions from the auxiliary file, % and passes the appropriate file names and switches to % \appname{makeindex}.) +%\begin{macro}{\newglossary} % \begin{macrocode} \newcommand*{\newglossary}[5][glg]{% \ifglossaryexists{#2}{% @@ -1594,7 +1730,7 @@ exists}% \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}% % \end{macrocode} % How to display this entry in the document text (uses -% \cmdname{glsdisplay} and \cmdname{glsdisplayfirst} by +% \cs{glsdisplay} and \cs{glsdisplayfirst} by % default). These can be redefined by the user later if required % (see \icmdname{defglsdisplay} and \icmdname{defglsdisplayfirst}) % \begin{macrocode} @@ -1609,35 +1745,39 @@ exists}% % \begin{macrocode} \@ifnextchar[{\@gls@setcounter{#2}}{\@gls@setcounter{#2}[\glscounter]}}} % \end{macrocode} +%\end{macro} % Only defined new glossaries in the preamble: % \begin{macrocode} \@onlypreamble{\newglossary} % \end{macrocode} -%\DescribeMacro{\@newglossary} -%\cmdname{@newglossary} is used to specify the file extensions +%\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 \icmdname{newglossary}. -% Since it is not used by \LaTeX, \cmdname{@newglossary} simply +% Since it is not used by \LaTeX, \cs{@newglossary} simply % ignores its arguments. +%\begin{macro}{\@newglossary} % \begin{macrocode} \newcommand*{\@newglossary}[4]{} % \end{macrocode} -%\DescribeMacro{\@gls@setcounter} +%\end{macro} % Store counter to be used for given glossary type (the first % argument is the glossary label, the second argument is the name % of the counter): +%\begin{macro}{\@gls@setcounter} % \begin{macrocode} \def\@gls@setcounter#1[#2]{% \expandafter\def\csname @glotype@#1@counter\endcsname{#2}% } % \end{macrocode} -%\DescribeMacro{\@gls@getcounter} +%\end{macro} % Get counter associated with given glossary (the argument is % the glossary label): +%\begin{macro}{\@gls@getcounter} % \begin{macrocode} \newcommand*{\@gls@getcounter}[1]{% \csname @glotype@#1@counter\endcsname} % \end{macrocode} +%\end{macro} % % Define the main glossary. This will be the first glossary to % be displayed when using \icmdname{printglossaries}. @@ -1646,7 +1786,7 @@ exists}% % \end{macrocode} % %\subsection{Defining new entries}\label{sec:newentry} -% New glossary entries are defined using \cmdname{newglossaryentry}. +% New glossary entries are defined using \cs{newglossaryentry}. % This command requires a label and a key-value list that defines % the relevant information for that entry. The definition for these % keys follows. Note that the \gloskey{name}, @@ -1676,7 +1816,7 @@ exists}% % commands.) The \gloskey{description} key is required when % defining a new glossary entry. (Be careful not to make the % description too long, because \appname{makeindex} has a limited -% buffer. \cmdname{@glo@desc} is defined to be a short command +% buffer. \cs{@glo@desc} is defined to be a short command % to discourage lengthy descriptions % for this reason. If you do have a very long description, or if % you require paragraph breaks, define a separate command that @@ -1738,7 +1878,7 @@ exists}% % \end{macrocode} % % The \gloskey{symbol} key is ignored by most of the predefined -% glossary styles, and defaults to \cmdname{relax} if omitted. +% glossary styles, and defaults to \cs{relax} if omitted. % It is provided for glossary styles that require an associated % symbol, as well as a name and description. To make this value % appear in the glossary, you need to redefine @@ -1771,12 +1911,12 @@ counter as its value}}{% \def\@glo@counter{#1}}} % \end{macrocode} % -%\DescribeMacro{\newglossaryentry} -% Define \cmdname{newglossaryentry}% +% Define \cs{newglossaryentry}% % \marg{label} \marg{key-val list}. % There are two required fields in \meta{key-val list}: % \gloskey{name} and % \gloskey{description}. (See above.) +%\begin{macro}{\newglossaryentry} % \begin{macrocode} \DeclareRobustCommand{\newglossaryentry}[2]{% % \end{macrocode} @@ -1836,13 +1976,14 @@ in it}}{% % \begin{macrocode} \expandafter\gdef\csname glo@#1@flagfalse\endcsname{% \expandafter\global\expandafter -\let\csname ifglo@#1@flag\endcsname\iffalse} +\let\csname ifglo@#1@flag\endcsname\iffalse}% \expandafter\gdef\csname glo@#1@flagtrue\endcsname{% \expandafter\global\expandafter -\let\csname ifglo@#1@flag\endcsname\iftrue} +\let\csname ifglo@#1@flag\endcsname\iftrue}% \csname glo@#1@flagfalse\endcsname }} % \end{macrocode} +%\end{macro} % Only defined new glossary entries in the preamble: % \begin{macrocode} \@onlypreamble{\newglossaryentry} @@ -1850,75 +1991,83 @@ in it}}{% % %\subsection{Resetting and unsetting entry flags} % Each glossary entry is assigned a conditional of the form -%\cmdname{ifglo@}\meta{label}\texttt{@flag} which determines +%\cs{ifglo@}\meta{label}\texttt{@flag} which determines % whether or not the entry has been used (see also % \icmdname{ifglsused} defined below.) These flags can % be set and unset using the following macros: % -%\DescribeMacro{\glsreset} -% The command \cmdname{glsreset}\marg{label} can be used +% The command \cs{glsreset}\marg{label} can be used % to set the entry flag to indicate that it hasn't been used yet. The % required argument is the entry label. +%\begin{macro}{\glsreset} % \begin{macrocode} \newcommand*{\glsreset}[1]{% \glsdoifexists{#1}{% \expandafter\global\csname glo@#1@flagfalse\endcsname}} % \end{macrocode} -%\DescribeMacro{\glslocalreset} +%\end{macro} % As above, but with only a local effect: +%\begin{macro}{\glslocalreset} % \begin{macrocode} \newcommand*{\glslocalreset}[1]{% \glsdoifexists{#1}{% \expandafter\let\csname ifglo@#1@flag\endcsname\iffalse}} % \end{macrocode} -%\DescribeMacro{\glsunset} -% The command \cmdname{glsunset}\marg{label} can be used to +%\end{macro} +% The command \cs{glsunset}\marg{label} can be used to % set the entry flag to indicate that it has been used. The required % argument is the entry label. +%\begin{macro}{\glsunset} % \begin{macrocode} \newcommand*{\glsunset}[1]{% \glsdoifexists{#1}{% \expandafter\global\csname glo@#1@flagtrue\endcsname}} % \end{macrocode} -%\DescribeMacro{\glslocalunset} +%\end{macro} % As above, but with only a local effect: +%\begin{macro}{\glslocalunset} % \begin{macrocode} \newcommand*{\glslocalunset}[1]{% \glsdoifexists{#1}{% \expandafter\let\csname ifglo@#1@flag\endcsname\iftrue}} % \end{macrocode} -%\DescribeMacro{\glsresetall} +%\end{macro} % Reset all entries for the named glossaries (supplied in a % comma-separated list). -% Syntax: \cmdname{glsresetall}\oarg{glossary-list} +% Syntax: \cs{glsresetall}\oarg{glossary-list} +%\begin{macro}{\glsresetall} % \begin{macrocode} \newcommand*{\glsresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glsreset{\@glsentry}}} % \end{macrocode} -%\DescribeMacro{\glslocalresetall} +%\end{macro} % As above, but with only a local effect: +%\begin{macro}{\glslocalresetall} % \begin{macrocode} \newcommand*{\glslocalresetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glslocalreset{\@glsentry}}} % \end{macrocode} -%\DescribeMacro{\glsunsetall} +%\end{macro} % Unset all entries for the named glossaries (supplied in a % comma-separated list). -% Syntax: \cmdname{glsunsetall}\oarg{glossary-list} +% Syntax: \cs{glsunsetall}\oarg{glossary-list} +%\begin{macro}{\glsunsetall} % \begin{macrocode} \newcommand*{\glsunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glsunset{\@glsentry}}} % \end{macrocode} -%\DescribeMacro{\glslocalunsetall} +%\end{macro} % As above, but with only a local effect: +%\begin{macro}{\glslocalunsetall} % \begin{macrocode} \newcommand*{\glslocalunsetall}[1][\@glo@types]{% \forallglsentries[#1]{\@glsentry}{% \glslocalunset{\@glsentry}}} % \end{macrocode} +%\end{macro} % % \subsection{Loading files containing glossary entries} %\label{sec:load} @@ -1926,9 +2075,8 @@ in it}}{% % These external files can contain \icmdname{newglossaryentry} % and \icmdname{newacronym} commands.\footnote{and any other valid %\LaTeX\ code that can be used in the preamble.}\\[10pt] -%\DescribeMacro{\loadglsentries} -% \cmdname{loadglsentries}\oarg{type}\marg{filename}\\[10pt] -% This command will input the file using \cmdname{input}. +% \cs{loadglsentries}\oarg{type}\marg{filename}\\[10pt] +% This command will input the file using \cs{input}. % The optional argument specifies to which glossary the % entries should be assigned if they haven't used the \gloskey{type} % key. If the optional argument is not specified, the default @@ -1937,18 +2085,21 @@ in it}}{% % variants or \icmdname{glsadd} and \icmdname{glsaddall} % will appear in the glossary.) The mandatory argument is % the filename (with or without .tex extension.) +%\begin{macro}{\loadglsentries} % \begin{macrocode} \newcommand*{\loadglsentries}[2][\@gls@default]{% \let\@gls@default\glsdefaulttype \def\glsdefaulttype{#1}\input{#2}% \let\glsdefaulttype\@gls@default} % \end{macrocode} -% \cmdname{loadglsentries} can only be used in the preamble: +%\end{macro} +% \cs{loadglsentries} can only be used in the preamble: % \begin{macrocode} \@onlypreamble{\loadglsentries} % \end{macrocode} % %\subsection{Using glossary entries in the text} +%\label{sec:code:glslink} % % Any term that has been defined using \icmdname{newglossaryentry} % (or \icmdname{newacronym}) can be displayed in the text @@ -1957,11 +2108,18 @@ in it}}{% % \icmdname{glslink}, the way the term appears in the text is % determined by \icmdname{glsdisplayfirst} (if it is the first % time the term has been used) or \icmdname{glsdisplay} (for -% subsequent use.) +% subsequent use.) Any formatting commands (such as \cs{textbf} +% is governed by \icmdname{glstextformat}. By default this just +% displays the \term{link text} ``as is''. +%\changes{1.04}{2007 Aug 3}{Added 'glstextformat}% +%\begin{macro}{\glstextformat} +% \begin{macrocode} +\newcommand*{\glstextformat}[1]{#1} +% \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsdisplayfirst} % The first time an entry is used, the way in which it is -% displayed is governed by \cmdname{glsdisplayfirst}. This +% displayed is governed by \cs{glsdisplayfirst}. This % takes four parameters: \verb|#1| will be the value % of the entry's \gloskey{first} or \gloskey{firstplural} key, % \verb|#2| will be the value of the entry's \gloskey{description} @@ -1970,58 +2128,63 @@ in it}}{% % argument to commands like \icmdname{gls} and \icmdname{glspl}. % The default is to display the first parameter followed by the % additional text. +%\begin{macro}{\glsdisplayfirst} % \begin{macrocode} \newcommand*{\glsdisplayfirst}[4]{#1#4} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsdisplay} % After the first use, the entry is displayed according to -% the format of \cmdname{glsdisplay}. Again, it takes four +% the format of \cs{glsdisplay}. Again, it takes four % parameters: \verb|#1| will be the value of the % entry's \gloskey{text} or \gloskey{plural} key, % \verb|#2| will be the value of the entry's \gloskey{description} % key, \verb|#3| will be the value of the entry's \gloskey{symbol} % key and \verb|#4| is additional text supplied by the final optional % argument to commands like \icmdname{gls} and \icmdname{glspl}. +%\begin{macro}{\glsdisplay} % \begin{macrocode} \newcommand*{\glsdisplay}[4]{#1#4} % \end{macrocode} +%\end{macro} % -% When a new glossary is created it uses \cmdname{glsdisplayfirst} -% and \cmdname{glsdisplay} as the default way of displaying its +% When a new glossary is created it uses \cs{glsdisplayfirst} +% and \cs{glsdisplay} as the default way of displaying its % entry in the text. This can be changed for the entries belonging % to an individual glossary using % \icmdname{defglsdisplay} and \icmdname{defglsdisplayfirst}. %\\[10pt] -%\DescribeMacro{\defglsdisplay} -% \cmdname{defglsdisplay}\oarg{type}\marg{definition}\\[10pt]% +% \cs{defglsdisplay}\oarg{type}\marg{definition}\\[10pt]% % The glossary type is given by \meta{type} (the default glossary % if omitted) and % \meta{definition} should have at most \verb|#1|, \verb|#2|, % \verb|#3| and \verb|#4|. These represent the same arguments % as those described for \icmdname{glsdisplay}. +%\begin{macro}{\defglsdisplay} % \begin{macrocode} \newcommand*{\defglsdisplay}[2][\glsdefaulttype]{% \expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}} % \end{macrocode} +%\end{macro} %\vskip5pt -%\DescribeMacro{\defglsdisplayfirst} -% \cmdname{defglsdisplayfirst}\oarg{type}\marg{definition}\\[10pt]% +% \cs{defglsdisplayfirst}\oarg{type}\marg{definition}\\[10pt]% % The glossary type is given by \meta{type} (the default glossary % if omitted) and % \meta{definition} should have at most \verb|#1|, \verb|#2|, % \verb|#3| and \verb|#4|. These represent the same arguments % as those described for \icmdname{glsdisplayfirst}. +%\begin{macro}{\defglsdisplayfirst} % \begin{macrocode} \newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{% \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}} % \end{macrocode} +%\end{macro} % %\subsubsection{Links to glossary entries} % The links to glossary entries all have a first optional % argument that can be used to change the format and counter -% of the associated entry number. Except for \cmdname{glslink}, -% the commands like \cmdname{gls} have a final optional +% of the associated entry number. Except for \cs{glslink}, +% the commands like \cs{gls} have a final optional % argument that can be used to insert additional text in the % link (this will usually be appended, but can be redefined using % \icmdname{defglsdisplay} and \icmdname{defglsdisplayfirst}). @@ -2061,30 +2224,34 @@ counter as its value}}{% \define@boolkey{glslink}{hyper}[true]{} % \end{macrocode} % -%\DescribeMacro{\glslink} %Syntax:\\[10pt] -% \cmdname{glslink}\oarg{options}\marg{label}\marg{text} +% \cs{glslink}\oarg{options}\marg{label}\marg{text} %\\[10pt] % Display \meta{text} in the document, and add the entry information % for \meta{label} into the relevant glossary. The optional % argument should be a key value list using the \texttt{glslink} % keys defined above. % -% There is also a starred version:\DescribeMacro{\glslink*}\\[10pt] -% \cmdname{glslink*}\oarg{options}\marg{label}\marg{text}\\[10pt] +% There is also a starred version:\\[10pt] +% \cs{glslink*}\oarg{options}\marg{label}\marg{text}\\[10pt] % which is equivalent to -% \cmdname{glslink}"[hyper=false,"\meta{options}"]"\marg{label}\marg{text} +% \cs{glslink}"[hyper=false,"\meta{options}"]"\marg{label}\marg{text} % % First determine whether or not we are using the starred version: +%\begin{macro}{\glslink} % \begin{macrocode} \newcommand{\glslink}{% \@ifstar\@sgls@link\@gls@link} % \end{macrocode} +%\end{macro} % Define the starred version: +%\begin{macro}{\@sgls@link} % \begin{macrocode} \newcommand*{\@sgls@link}[1][]{\@gls@link[hyper=false,#1]} % \end{macrocode} +%\end{macro} % Define the un-starred version: +%\begin{macro}{\@gls@link} % \begin{macrocode} \newcommand*{\@gls@link}[3][]{% \glsdoifexists{#2}{% @@ -2094,9 +2261,9 @@ counter as its value}}{% \setkeys{glslink}{#1}% \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}% \ifKV@glslink@hyper -\@glslink{glo:#2}{#3}% +\@glslink{glo:#2}{\glstextformat{#3}}% \else -#3\relax +\glstextformat{#3}\relax \fi \protected@edef\@glo@sort{\csname glo@#2@sort\endcsname}% \@gls@checkmkidxchars\@glo@sort @@ -2114,9 +2281,11 @@ counter as its value}}{% }{\@glo@symbol}\@gls@encapchar\@glo@numfmt}% }} % \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}: +%\begin{macro}{\@set@glo@numformat} % \begin{macrocode} \def\@set@glo@numformat#1#2#3{% \expandafter\@glo@check@mkidxrangechar#3\@nil @@ -2124,12 +2293,14 @@ counter as its value}}{% \expandafter\string\csname\@glo@suffix\endcsname}% \@gls@checkmkidxchars#1} % \end{macrocode} +%\end{macro} % Check to see if the given string starts with a ( or ). If it -% does set \cmdname{@glo@prefix} to the starting character, -% and \cmdname{@glo@suffix} to the rest (or "glsnumberformat" +% does set \cs{@glo@prefix} to the starting character, +% and \cs{@glo@suffix} to the rest (or "glsnumberformat" % if there is nothing else), -% otherwise set \cmdname{@glo@prefix} to nothing and -% \cmdname{@glo@suffix} to all of it. +% otherwise set \cs{@glo@prefix} to nothing and +% \cs{@glo@suffix} to all of it. +%\begin{macro}{\@glo@check@mkidxrangechar} % \begin{macrocode} \def\@glo@check@mkidxrangechar#1#2\@nil{% \if#1(\relax @@ -2152,7 +2323,9 @@ counter as its value}}{% \fi \fi} % \end{macrocode} +%\end{macro} % Catch \appname{makeindex} special characters\mkidxspch: +%\begin{macro}{\@gls@checkmkidxchars} % \begin{macrocode} \newcommand{\@gls@checkmkidxchars}[1]{% \def\@gls@checkedmkidx{}% @@ -2178,10 +2351,13 @@ counter as its value}}{% \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}% } % \end{macrocode} -% Update the control sequence and strip trailing \cmdname{@nil}: +%\end{macro} +% Update the control sequence and strip trailing \cs{@nil}: +%\begin{macro}{\@gls@updatechecked} % \begin{macrocode} \def\@gls@updatechecked#1\@nil#2{\def#2{#1}} % \end{macrocode} +%\end{macro} % Replace \verb|"| with \verb|""| since \verb|"| is a makeindex % special character\mkidxspch. % \begin{macrocode} @@ -2390,9 +2566,8 @@ counter as its value}}{% \@@gls@checkactual} % \end{macrocode} % -%\DescribeMacro{\@glslink}\DescribeMacro{\@glstarget} % If \icmdname{hyperlink} -% is not defined, \cmdname{@glslink} and \cmdname{@glstarget} +% is not defined, \cs{@glslink} and \cs{@glstarget} % ignore their first argument, and just do the second argument, % otherwise they are equivalent to \icmdname{hyperlink} and %\icmdname{hypertarget}. @@ -2403,26 +2578,27 @@ counter as its value}}{% \gdef\@glstarget#1#2{\hypertarget{#1}{#2}}} % \end{macrocode} % -%\DescribeMacro{\glsdisablehyper} -% Glossary hyperlinks can be disabled using \cmdname{glsdisablehyper} +% Glossary hyperlinks can be disabled using \cs{glsdisablehyper} % (effect can be localised): +%\begin{macro}{\glsdisablehyper} % \begin{macrocode} \newcommand{\glsdisablehyper}{% \renewcommand*\@glslink[2]{##2}% \renewcommand*\@glstarget[2]{##2}} % \end{macrocode} -%\DescribeMacro{\glsenablehyper} -% Glossary hyperlinks can be enabled using \cmdname{glsenablehyper} +%\end{macro} +% Glossary hyperlinks can be enabled using \cs{glsenablehyper} % (effect can be localised): +%\begin{macro}{\glsenablehyper} % \begin{macrocode} \newcommand{\glsenablehyper}{% \renewcommand*\@glslink[2]{\hyperlink{##1}{##2}}% \renewcommand*\@glstarget[2]{\hypertarget{##1}{##2}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\gls} %Syntax:\\[10pt] -% \cmdname{gls}\oarg{options}\marg{label}\oarg{insert text}\\[10pt] +% \cs{gls}\oarg{options}\marg{label}\oarg{insert text}\\[10pt] % Link to glossary entry using singular form. The link text % is taken from the value of the \gloskey{text} or \gloskey{first} % keys used when the entry was defined. @@ -2433,33 +2609,39 @@ counter as its value}}{% % After the mandatory argument, there is another optional argument % to insert extra text in the link text (the location of the inserted % text is governed by \icmdname{glsdisplay} and -% \icmdname{glsdisplayfirst}). As with \cmdname{glslink} +% \icmdname{glsdisplayfirst}). As with \cs{glslink} % there is a starred version which is the same as the unstarred % version but with the \gloskey[glslink]{hyper} key set to \texttt{false}. % (Additional options can also be specified % in the first optional argument.) % % First determine if we are using the starred form: +%\begin{macro}{\gls} % \begin{macrocode} \newcommand*{\gls}{\@ifstar\@sgls\@gls} % \end{macrocode} +%\end{macro} % Define the starred form: +%\begin{macro}{\@sgls} % \begin{macrocode} \newcommand*{\@sgls}[1][]{\@gls[hyper=false,#1]} % \end{macrocode} +%\end{macro} % Defined the un-starred form. Need to determine if there is % a final optional argument +%\begin{macro}{\@gls} % \begin{macrocode} \newcommand*{\@gls}[2][]{% \@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}} % \end{macrocode} +%\end{macro} % Read in the final optional argument: % \begin{macrocode} \def\@gls@#1#2[#3]{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2468,7 +2650,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\@glo@text}% % \end{macrocode} @@ -2479,15 +2661,16 @@ counter as its value}}{% \xspace} % \end{macrocode} % -%\DescribeMacro{\Gls} -% \cmdname{Gls} behaves like \cmdname{gls}, but the first letter +% \cs{Gls} behaves like \cs{gls}, but the first letter % of the link text is converted to uppercase (note that if the % first letter has an accent, the accented letter will need to % be grouped when you define the entry.) It is mainly intended % for terms that start a sentence: +%\begin{macro}{\Gls} % \begin{macrocode} \newcommand*{\Gls}{\@ifstar\@sGls\@Gls} % \end{macrocode} +%\end{macro} % Define the starred form: % \begin{macrocode} \newcommand*{\@sGls}[1][]{\@Gls[hyper=false,#1]} @@ -2504,7 +2687,7 @@ counter as its value}}{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2513,7 +2696,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\expandafter\MakeUppercase\@glo@text}% % \end{macrocode} @@ -2524,12 +2707,13 @@ counter as its value}}{% \xspace} % \end{macrocode} % -%\DescribeMacro{\GLS} -% \cmdname{GLS} behaves like \icmdname{gls}, but the link +% \cs{GLS} behaves like \icmdname{gls}, but the link % text is converted to uppercase: +%\begin{macro}{\GLS} % \begin{macrocode} \newcommand*{\GLS}{\@ifstar\@sGLS\@GLS} % \end{macrocode} +%\end{macro} % Define the starred form: % \begin{macrocode} \newcommand*{\@sGLS}[1][]{\@GLS[hyper=false,#1]} @@ -2546,7 +2730,7 @@ counter as its value}}{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2555,7 +2739,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirst{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% % \end{macrocode} @@ -2566,12 +2750,13 @@ counter as its value}}{% \xspace} % \end{macrocode} % -%\DescribeMacro{\glspl} -% \cmdname{glspl} behaves in the same way as \icmdname{gls} except +% \cs{glspl} behaves in the same way as \icmdname{gls} except % it uses the plural form. +%\begin{macro}{\glspl} % \begin{macrocode} \newcommand*{\glspl}{\@ifstar\@sglspl\@glspl} % \end{macrocode} +%\end{macro} % Define the starred form: % \begin{macrocode} \newcommand*{\@sglspl}[1][]{\@glspl[hyper=false,#1]} @@ -2588,7 +2773,7 @@ counter as its value}}{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2597,7 +2782,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\@glo@text}% % \end{macrocode} @@ -2608,14 +2793,15 @@ counter as its value}}{% \xspace} % \end{macrocode} % -%\DescribeMacro{\Glspl} -% \cmdname{Glspl} behaves in the same way as \icmdname{glspl}, except +% \cs{Glspl} behaves in the same way as \icmdname{glspl}, except % that the first letter of the link text is converted to uppercase % (as with \icmdname{Gls}, if the first letter has an accent, it % will need to be grouped.) +%\begin{macro}{\Glspl} % \begin{macrocode} \newcommand*{\Glspl}{\@ifstar\@sGlspl\@Glspl} % \end{macrocode} +%\end{macro} % Define the starred form: % \begin{macrocode} \newcommand*{\@sGlspl}[1][]{\@Glspl[hyper=false,#1]} @@ -2632,7 +2818,7 @@ counter as its value}}{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2641,7 +2827,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\expandafter\MakeUppercase\@glo@text}% % \end{macrocode} @@ -2652,12 +2838,13 @@ counter as its value}}{% \xspace} % \end{macrocode} % -%\DescribeMacro{\GLSpl} -% \cmdname{GLSpl} behaves like \icmdname{glspl} except that all the +% \cs{GLSpl} behaves like \icmdname{glspl} except that all the % link text is converted to uppercase. +%\begin{macro}{\GLSpl} % \begin{macrocode} \newcommand*{\GLSpl}{\@ifstar\@sGLSpl\@GLSpl} % \end{macrocode} +%\end{macro} % Define the starred form: % \begin{macrocode} \newcommand*{\@sGLSpl}[1][]{\@GLSpl[hyper=false,#1]} @@ -2674,7 +2861,7 @@ counter as its value}}{% \glsdoifexists{#2}{\edef\@glo@type{\glsentrytype{#2}}% % \end{macrocode} % Determine what the link text should be (this is stored in -% \cmdname{@glo@text}) +% \cs{@glo@text}) % \begin{macrocode} \ifglsused{#2}{\protected@edef\@glo@text{% \csname gls@\@glo@type @display\endcsname @@ -2683,7 +2870,7 @@ counter as its value}}{% \csname gls@\@glo@type @displayfirst\endcsname {\glsentryfirstplural{#2}}{\glsentrydesc{#2}}{\glsentrysymbol{#2}}{#3}}}% % \end{macrocode} -% Call \cmdname{@gls@link} +% Call \cs{@gls@link} % \begin{macrocode} \@gls@link[#1]{#2}{\MakeUppercase{\@glo@text}}% % \end{macrocode} @@ -2700,118 +2887,155 @@ counter as its value}}{% % These commands merely display entry information without adding % entries in the associated file or having hyperlinks. % -%\DescribeMacro{\glsentryname}\DescribeMacro{\Glsentryname} % Get the entry name (as specified by the \gloskey{name} key % when the entry was defined.) The argument % is the label associated with the entry. Note that unless you % used \texttt{name=false} in the \pkgopt{sanitize} package option % you may get unexpected results if the \gloskey{name} key contained % any commands. +%\begin{macro}{\glsentryname} % \begin{macrocode} \newcommand*{\glsentryname}[1]{\csname glo@#1@name\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentryname} +% \begin{macrocode} \newcommand*{\Glsentryname}[1]{\expandafter \MakeUppercase\csname glo@#1@name\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentrydesc}\DescribeMacro{\Glsentrydesc} % Get the entry description (as specified by the % \gloskey{description} when the entry was defined.) The argument % is the label associated with the entry. Note that unless you % used \texttt{description=false} in the \pkgopt{sanitize} package % option you may get unexpected results if the \gloskey{description} % key contained any commands. +%\begin{macro}{\glsentrydesc} % \begin{macrocode} \newcommand*{\glsentrydesc}[1]{\csname glo@#1@desc\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentrydesc} +% \begin{macrocode} \newcommand*{\Glsentrydesc}[1]{\expandafter \MakeUppercase\csname glo@#1@desc\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentrytext}\DescribeMacro{\Glsentrytext} % Get the entry text, as specified by the \gloskey{text} key when % the entry was defined. The argument % is the label associated with the entry: +%\begin{macro}{\glsentrytext} % \begin{macrocode} \newcommand*{\glsentrytext}[1]{\csname glo@#1@text\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentrytext} +% \begin{macrocode} \newcommand*{\Glsentrytext}[1]{\expandafter \MakeUppercase\csname glo@#1@text\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentryplural}\DescribeMacro{\Glsentryplural} % Get the plural form: +%\begin{macro}{\glsentryplural} % \begin{macrocode} \newcommand*{\glsentryplural}[1]{\csname glo@#1@plural\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentryplural} +% \begin{macrocode} \newcommand*{\Glsentryplural}[1]{\expandafter \MakeUppercase\csname glo@#1@plural\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentrysymbol}\DescribeMacro{\Glsentrysymbol} % Get the symbol associated with this entry. The argument % is the label associated with the entry. Note that unless you % used \texttt{symbol=false} in the \pkgopt{sanitize} package % option you may get unexpected results if the \gloskey{symbol} % key contained any commands. +%\begin{macro}{\glsentrysymbol} % \begin{macrocode} \newcommand*{\glsentrysymbol}[1]{\csname glo@#1@symbol\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentrysymbol} +% \begin{macrocode} \newcommand*{\Glsentrysymbol}[1]{\expandafter \MakeUppercase\csname glo@#1@symbol\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentryfirst}\DescribeMacro{\Glsentryfirst} % Get the entry text to be used when the entry is first used in % the document (as specified by the \gloskey{first} key when % the entry was defined.) +%\begin{macro}{\glsentryfirst} % \begin{macrocode} \newcommand*{\glsentryfirst}[1]{\csname glo@#1@first\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentryfirst} +% \begin{macrocode} \newcommand*{\Glsentryfirst}[1]{\expandafter \MakeUppercase\csname glo@#1@first\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentryfirstplural}\DescribeMacro{\Glsentryfirstplural} % Get the plural form (as specified by the \gloskey{firstplural} % key when the entry was defined.) +%\begin{macro}{\glsentryfirstplural} % \begin{macrocode} \newcommand*{\glsentryfirstplural}[1]{% \csname glo@#1@firstpl\endcsname} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\Glsentryfirstplural} +% \begin{macrocode} \newcommand*{\Glsentryfirstplural}[1]{% \expandafter\MakeUppercase\csname glo@#1@firstpl\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentrytype} % Display the glossary type with which this entry is associated % (as specified by the \gloskey{type} key used when the entry was % defined) +%\begin{macro}{\glsentrytype} % \begin{macrocode} \newcommand*{\glsentrytype}[1]{\csname glo@#1@type\endcsname} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsentrysort} % Display the sort text used for this entry. Note that the % \gloskey{sort} key is sanitize, so unexpected results may % occur if the \gloskey{sort} key contained commands. +%\begin{macro}{\glsentrysort} % \begin{macrocode} \newcommand*{\glsentrysort}[1]{\csname glo@#1@sort\endcsname} % \end{macrocode} +%\end{macro} % %\subsection{Adding an entry to the glossary without generating % text} -% The following keys are provided for \cmdname{glsadd} and -% \cmdname{glsaddall}: +% The following keys are provided for \cs{glsadd} and +% \cs{glsaddall}: % \begin{macrocode} \define@key{glossadd}{counter}{\def\@glo@counter{#1}} \define@key{glossadd}{format}{\def\@glo@format{#1}} % \end{macrocode} -% This key is only used by \cmdname{glsaddall}: +% This key is only used by \cs{glsaddall}: % \begin{macrocode} \define@key{glossadd}{types}{\def\@glo@type{#1}} % \end{macrocode} %\vskip5pt -%\DescribeMacro{\glsadd} -%\cmdname{glsadd}\oarg{options}\marg{label}\\[10pt] +%\cs{glsadd}\oarg{options}\marg{label}\\[10pt] % Add a term to the glossary without generating any link text. % The optional argument indicates which counter to use, % and how to format it (using a key-value list) % the second argument is the entry label. Note that \meta{options} % only has two keys: \gloskey[glsadd]{counter} and \gloskey[glsadd]{format} (the \gloskey[glsaddall]{types} key will be ignored). +%\begin{macro}{\glsadd} % \begin{macrocode} \newcommand*{\glsadd}[2][]{% \glsdoifexists{#2}{% @@ -2835,12 +3059,13 @@ counter as its value}}{% \@glo@numfmt}% }} % \end{macrocode} +%\end{macro} %\vskip5pt -%\DescribeMacro{\glsaddall} -%\cmdname{glsaddall}\oarg{glossary list}\\[10pt] +%\cs{glsaddall}\oarg{glossary list}\\[10pt] % Add all terms defined for the listed glossaries (without displaying % any text.) If \gloskey[glsaddall]{types} key is omitted, apply to all % glossary types. +%\begin{macro}{\glsaddall} % \begin{macrocode} \newcommand*{\glsaddall}[1][]{% \def\@glo@type{\@glo@types}% @@ -2849,10 +3074,10 @@ counter as its value}}{% \glsadd[#1]{\@glo@entry}}% } % \end{macrocode} +%\end{macro} % %\subsection{Creating associated files} -%\DescribeMacro{\writeist} -% The \cmdname{writeist} command creates the associated +% The \cs{writeist} command creates the associated % customized \filetype{ist} \appname{makeindex} style file. % While defining this command, some characters have their % catcodes temporarily changed to ensure they get written to @@ -2860,9 +3085,9 @@ counter as its value}}{% % actual character (usually "@") is redefined to be a "?", to allow % internal commands to be written to the glossary file output file. % -% The special characters\mkidxspch\ are stored in \cmdname{@gls@actualchar}, -% \cmdname{@gls@encapchar}, \cmdname{@glsl@levelchar} and -% \cmdname{@gls@quotechar} to make them easier to use later, +% The special characters\mkidxspch\ are stored in \cs{@gls@actualchar}, +% \cs{@gls@encapchar}, \cs{@glsl@levelchar} and +% \cs{@gls@quotechar} to make them easier to use later, % but don't change these values, because the characters are % encoded in the command definitions that are used to escape % the special characters (which means that the user no longer @@ -2883,6 +3108,7 @@ counter as its value}}{% % 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}{\writeist} % \begin{macrocode} \newwrite\istfile \bgroup @@ -2922,20 +3148,21 @@ counter as its value}}{% \noist} \egroup % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\noist} -%The command \cmdname{noist} will suppress the creation of +%The command \cs{noist} will suppress the creation of % the \filetype{ist} file (it simply redefines -% \cmdname{writeist} to do nothing.) Obviously you need to use this -% command before \cmdname{writeist} to have any effect. Since -% the \filetype{ist} file should only be created once, \cmdname{noist} -% is called at the end of \cmdname{writeist}. +% \cs{writeist} to do nothing.) Obviously you need to use this +% command before \cs{writeist} to have any effect. Since +% the \filetype{ist} file should only be created once, \cs{noist} +% is called at the end of \cs{writeist}. +%\begin{macro}{\noist} % \begin{macrocode} \newcommand{\noist}{\let\writeist\relax} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\@makeglossary} -% \cmdname{@makeglossary} is an internal command that takes an +% \cs{@makeglossary} is an internal command that takes an % argument indicating the glossary type. This command will % create the glossary file required by \appname{makeindex} for the % given glossary type, using the extension supplied by the @@ -2944,12 +3171,13 @@ counter as its value}}{% % and create the customized \filetype{ist} \appname{makeindex} % style file.) % -% Note that you can't use \cmdname{@makeglossary} for only some of the -% defined glossaries. You either need to have a \cmdname{makeglossary} +% Note that you can't use \cs{@makeglossary} for only some of the +% defined glossaries. You either need to have a \cs{makeglossary} % for all glossaries or none (otherwise you will end up with a % situation where \TeX\ is trying to write to a non-existant % file.) The relevant glossary must be -% defined prior to using \cmdname{@makeglossary}. +% defined prior to using \cs{@makeglossary}. +%\begin{macro}{\@makeglossary} % \begin{macrocode} \newcommand*{\@makeglossary}[1]{% \ifglossaryexists{#1}{% @@ -2964,13 +3192,14 @@ counter as its value}}{% Glossary type `#1' not defined}{New glossaries must be defined before using \string\makeglossary}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\makeglossaries} -% \cmdname{makeglossaries} will use \cmdname{@makeglossary} +% \cs{makeglossaries} will use \cs{@makeglossary} % for each glossary type that has been defined. New glossaries -% need to be defined before using \cmdname{makeglossary}, so -% have \cmdname{makeglossaries} redefine \cmdname{newglossary} +% need to be defined before using \cs{makeglossary}, so +% have \cs{makeglossaries} redefine \cs{newglossary} % to prevent it being used afterwards. +%\begin{macro}{\makeglossaries} % \begin{macrocode} \newcommand*{\makeglossaries}{% \@for\@glo@type:=\@glo@types\do{% @@ -2984,66 +3213,72 @@ to move \string\makeglossaries\space after all your \let\@makeglossary\empty \let\makeglossary\empty} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\makeglossary} -% The \cmdname{makeglossary} command is redefined to be -% identical to \cmdname{makeglossaries}. (This is done to +% The \cs{makeglossary} command is redefined to be +% identical to \cs{makeglossaries}. (This is done to % reinforce the message that you must either use -% \cmdname{@makeglossary} for all the glossaries or for none +% \cs{@makeglossary} for all the glossaries or for none % of them.) +%\begin{macro}{\makeglossary} % \begin{macrocode} \let\makeglossary\makeglossaries % \end{macrocode} +%\end{macro} % %\subsection{Writing information to associated files} -%\DescribeMacro{\glossary} -% The \cmdname{glossary} command is redefined so that it takes an +% The \cs{glossary} command is redefined so that it takes an % optional argument \meta{type} to specify the glossary type (use -% \cmdname{glsdefaulttype} glossary by default). +% \cs{glsdefaulttype} glossary by default). % This shouldn't be used at user level -% as \cmdname{glslink} sets the correct format. The associated -% number should be stored in \cmdname{theglsentrycounter} -% before using \cmdname{glossary}. +% as \cs{glslink} sets the correct format. The associated +% number should be stored in \cs{theglsentrycounter} +% before using \cs{glossary}. +%\begin{macro}{\glossary} % \begin{macrocode} \renewcommand*{\glossary}[1][\glsdefaulttype]{% \@glossary[#1]} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\@glossary} -% Define internal \cmdname{@glossary} to ignore its argument. -% This gets redefined in \cmdname{@makeglossary}. +% Define internal \cs{@glossary} to ignore its argument. +% This gets redefined in \cs{@makeglossary}. +%\begin{macro}{\@glossary} % \begin{macrocode} \def\@glossary[#1]{\@bsphack\begingroup\@sanitize\@index} % \end{macrocode} -%\DescribeMacro{@gls@renewglossary} -% This is a convenience command to set \cmdname{@glossary}. -% It is used by \cmdname{@makeglossary} and then redefined to +%\end{macro} +% This is a convenience command to set \cs{@glossary}. +% It is used by \cs{@makeglossary} and then redefined to % do nothing, as it only needs to be done once. +%\begin{macro}{@gls@renewglossary} % \begin{macrocode} \newcommand{\@gls@renewglossary}{% \gdef\@glossary[##1]{\@bsphack\begingroup\@wrglossary{##1}}% \let\@gls@renewglossary\@empty } % \end{macrocode} -%\DescribeMacro{\@wrglossary} -% The \cmdname{@wrglossary} command is redefined to have +%\end{macro} +% The \cs{@wrglossary} command is redefined to have % two arguments. The first argument is the glossary type, % the second argument is the glossary entry -% (the format of which is set in \cmdname{glslink}.) +% (the format of which is set in \cs{glslink}.) +%\begin{macro}{\@wrglossary} % \begin{macrocode} \renewcommand*{\@wrglossary}[2]{% \expandafter\protected@write\csname glo@#1@file\endcsname{}{% \string\glossaryentry{#2}{\theglsentrycounter}}\endgroup\@esphack} % \end{macrocode} +%\end{macro} % % \subsection{Displaying the glossary}\label{sec:printglos} -%\DescribeMacro{\printglossary} % An individual glossary is displayed in the text using -% \cmdname{printglossary}\oarg{key-val list}. If the +% \cs{printglossary}\oarg{key-val list}. If the % \gloskey[printglossary]{type} key is omitted, the default glossary is displayed. % The optional argument can be used to specify an alternative % 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}{\printglossary} % \begin{macrocode} \newcommand*{\printglossary}[1][type=\glsdefaulttype]{% \def\@glo@type{\glsdefaulttype}% @@ -3058,23 +3293,25 @@ to move \string\makeglossaries\space after all your \egroup } % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\printglossaries} -% This command will do \cmdname{printglossary} +% The \cs{printglossaries} command will do \cs{printglossary} % for each glossary type that has been defined. It is better -% to use \cmdname{printglossaries} rather than individual -% \cmdname{printglossary} commands to ensure that you don't forget +% to use \cs{printglossaries} rather than individual +% \cs{printglossary} commands to ensure that you don't forget % any new glossaries you may have created. It also makes it easier to % chop and change the value of the \pkgopt{acronym} package option. % However, if you want to list the glossaries in a different order, % or if you want to set the title or table of contents entry, or % if you want to use different glossary styles for each glossary, you -% will need to use \cmdname{printglossary} explicitly for each +% will need to use \cs{printglossary} explicitly for each % glossary type. +%\begin{macro}{\printglossaries} % \begin{macrocode} \newcommand*{\printglossaries}{% \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}} % \end{macrocode} +%\end{macro} % The keys that can be used in the optional argument to % \icmdname{printglossary} are as follows: % The \gloskey[printglossary]{type} key sets the glossary type. @@ -3111,55 +3348,59 @@ style `#1' undefined}{}}{% \renewenvironment{theglossary}{}{}} % \end{macrocode} % -%\DescribeMacro{\glossaryheader} -% The glossary header is given by \cmdname{glossaryheader}. +% The glossary header is given by \cs{glossaryheader}. % This forms part of the glossary style, and % must indicate what should appear immediately after the start of the % \envname{theglossary} environment. (For example, if the glossary % uses a tabular-like environment, it may be used to set the % header row.) Note that if you don't want a header row, the glossary -% style must redefine \cmdname{glossaryheader} to do nothing. +% style must redefine \cs{glossaryheader} to do nothing. +%\begin{macro}{\glossaryheader} % \begin{macrocode} \newcommand*{\glossaryheader}{} % \end{macrocode} +%\end{macro} %\vskip5pt -%\DescribeMacro{\glossaryentryfield} -% \cmdname{glossaryentryfield}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}\\[10pt] +% \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} % -%\DescribeMacro{\glsgroupskip} % Within each glossary, the entries form 28 distinct groups % which are determined by the first character of the \gloskey{sort} % key. There will be a maximum of 28 groups: symbols, numbers, % and the 26 alphabetical groups A, \ldots, Z\@. -% The command \cmdname{glsgroupskip} +% The command \cs{glsgroupskip} % specifies what to do between glossary groups. Glossary styles -% must redefine this command. (Note that \cmdname{glsgroupskip} +% must redefine this command. (Note that \cs{glsgroupskip} % only occurs between groups, not at the start or end of the % glossary.) +%\begin{macro}{\glsgroupskip} % \begin{macrocode} \newcommand*{\glsgroupskip}{} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsgroupheading} % Each of the 28 glossary groups described above is preceded by a % group heading. -% This is formatted by the command \cmdname{glsgroupheading} +% This is formatted by the command \cs{glsgroupheading} % which takes one argument which is the \emph{label} assigned to that % group (not the title). The corresponding labels are: \texttt{glssymbols}, % \texttt{glsnumbers}, \texttt{A}, \ldots, \texttt{Z}. % Glossary styles must redefined this command. (In between groups, -% \cmdname{glsgroupheading} comes immediately after \cmdname{glsgroupskip}.) +% \cs{glsgroupheading} comes immediately after \cs{glsgroupskip}.) +%\begin{macro}{\glsgroupheading} % \begin{macrocode} \newcommand*{\glsgroupheading}[1]{} % \end{macrocode} -% It is therefore possible to ``trick'' \appname{makeindex} into +%\end{macro} +% It is possible to ``trick'' \appname{makeindex} into % treating entries as though they belong to the same group, % even if the terms don't start with the same letter, by % modifying the \gloskey{sort} key. For example, all entries @@ -3168,12 +3409,11 @@ style `#1' undefined}{}}{% % "a", while entries belonging to another group could be defined % so that the \gloskey{sort} key starts with a "b", and so on. If % you want each group to have a heading, you would then need to -% modify the translation control sequences \cmdname{glsgetgrouptitle} -% and \cmdname{glsgetgrouplabel} so that the label is translated +% modify the translation control sequences \cs{glsgetgrouptitle} +% and \cs{glsgetgrouplabel} so that the label is translated % into the required title (and vice-versa.) %\\[10pt] -%\DescribeMacro{\glsgetgrouptitle} -%\cmdname{glsgetgrouptitle}\marg{label}\\[10pt] +%\cs{glsgetgrouptitle}\marg{label}\\[10pt] % This command produces the title for the glossary group % whose label is given by \meta{label}. By default, the group % labelled \texttt{glssymbols} produces @@ -3183,47 +3423,51 @@ style `#1' undefined}{}}{% % As mentioned above, the group labels are: \texttt{glssymbols}, \texttt{glsnumbers}, % \texttt{A}, \ldots, \texttt{Z}\@. If you want to redefine % the group titles, you will need to redefine this command. +%\begin{macro}{\glsgetgrouptitle} % \begin{macrocode} \newcommand*{\glsgetgrouptitle}[1]{% \@ifundefined{#1groupname}{#1}{\csname #1groupname\endcsname}} % \end{macrocode} +%\end{macro} %\vskip5pt -%\DescribeMacro{\glsgetgrouplabel} -%\cmdname{glsgetgrouplabel}\marg{title}\\[10pt] +%\cs{glsgetgrouplabel}\marg{title}\\[10pt] %This command does the reverse to the previous command. The % argument is the group title, and it produces the group label. -% Note that if you redefine \cmdname{glsgetgrouptitle}, you -% will also need to redefine \cmdname{glsgetgrouplabel}. +% Note that if you redefine \cs{glsgetgrouptitle}, you +% will also need to redefine \cs{glsgetgrouplabel}. +%\begin{macro}{\glsgetgrouplabel} % \begin{macrocode} \newcommand*{\glsgetgrouplabel}[1]{% \ifthenelse{\equals{#1}{\glssymbolsgroupname}}{glssymbols}{% \ifthenelse{\equals{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\setentrycounter} -% The command \cmdname{setentrycounter} sets the entry's +% The command \cs{setentrycounter} sets the entry's % associated counter (required by -% \cmdname{glshypernumber} etc.) \icmdname{glslink} and +% \cs{glshypernumber} etc.) \icmdname{glslink} and % \icmdname{glsadd} encode the % \icmdname{glossary} argument so that the relevant counter is % set prior to the formatting command. +%\begin{macro}{\setentrycounter} % \begin{macrocode} \newcommand*{\setentrycounter}[1]{\def\glsentrycounter{#1}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glossarystyle} % The current glossary style can be set using -% \cmdname{glossarystyle}\marg{style}. +% \cs{glossarystyle}\marg{style}. +%\begin{macro}{\glossarystyle} % \begin{macrocode} \newcommand*{\glossarystyle}[1]{% \@ifundefined{@glsstyle@#1}{\PackageError{glossaries}{Glossary style `#1' undefined}{}}{% \csname @glsstyle@#1\endcsname}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\newglossarystyle} % New glossary styles can be defined using:\\[10pt] -% \cmdname{newglossarystyle}\marg{name}\marg{definition}\\[10pt] +% \cs{newglossarystyle}\marg{name}\marg{definition}\\[10pt] % The \meta{definition} argument should redefine % \envname{theglossary}, \icmdname{glossaryheader}, % \icmdname{glsgroupheading}, \icmdname{glossaryentryfield} and @@ -3233,32 +3477,34 @@ style `#1' undefined}{}}{% % \icmdname{glossarypostamble}, as % the user should be able to switch between styles without affecting % the pre- and postambles. +%\begin{macro}{\newglossarystyle} % \begin{macrocode} \newcommand*{\newglossarystyle}[2]{% \@ifundefined{@glsstyle@#1}{% \expandafter\def\csname @glsstyle@#1\endcsname{#2}}{% \PackageError{glossaries}{Glossary style `#1' is already defined}{}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsnamefont} % Glossary entries are encoded so that the second argument % to \icmdname{glossaryentryfield} is always specified as -% \cmdname{glsnamefont}\marg{name}. This allows the +% \cs{glsnamefont}\marg{name}. This allows the % user to change the font used to display the name term % without having to redefine \icmdname{glossaryentryfield}. % The default uses the surrounding font, so in the list type % styles (which place the name in the optional argument to % \icmdname{item}) the name will appear in bold. +%\begin{macro}{\glsnamefont} % \begin{macrocode} \newcommand*{\glsnamefont}[1]{#1} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glshypernumber} % Each glossary entry has an associated number list (usually page % numbers) that indicate where in the document the entry has been % used. The format for these number lists can be changed using the % \gloskey[glslink]{format}\igloskey[glsadd]{format} key in commands like \icmdname{glslink}. -% The default format is given by \cmdname{glshypernumber}. This takes +% The default format is given by \cs{glshypernumber}. This takes % a single argument which may be a single number, a number range % or a number list. The number ranges are delimited with % \icmdname{delimR}, the number lists are delimited with @@ -3273,17 +3519,19 @@ style `#1' undefined}{}}{% % dash delimiters and only for the page counter, but this code needs % to be more general. So I have adapted the code used in the % \styname{hyperref} package. +%\begin{macro}{\glshypernumber} % \begin{macrocode} \@ifundefined{hyperlink}{% \def\glshypernumber#1{#1}}{% \def\glshypernumber#1{% \@delimR#1\delimR\delimR\\}} % \end{macrocode} -%\DescribeMacro{@delimR} -% \cmdname{@delimR} displays a range of numbers for the counter +%\end{macro} +% \cs{@delimR} displays a range of numbers for the counter % whose name is given by -% \cmdname{@gls@counter} (which must be set prior to using -% \cmdname{glshypernumber}.) +% \cs{@gls@counter} (which must be set prior to using +% \cs{glshypernumber}.) +%\begin{macro}{\@delimR} % \begin{macrocode} \def\@delimR#1\delimR #2\delimR #3\\{% \ifx\\#2\\% @@ -3292,9 +3540,10 @@ style `#1' undefined}{}}{% \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}% \fi} % \end{macrocode} -%\DescribeMacro{\@delimN} -% \cmdname{@delimN} displays a list of individual numbers, +%\end{macro} +% \cs{@delimN} displays a list of individual numbers, % instead of a range: +%\begin{macro}{\@delimN} % \begin{macrocode} \def\@delimN#1{\@@delimN#1\delimN \delimN\\} \def\@@delimN#1\delimN #2\delimN#3\\{% @@ -3305,10 +3554,11 @@ style `#1' undefined}{}}{% \fi } % \end{macrocode} +%\end{macro} % The following code is modified from hyperref's -% \cmdname{HyInd@pagelink} where +% \cs{HyInd@pagelink} where % the name of the counter being used is given by -% \cmdname{@gls@counter}. +% \cs{@gls@counter}. % \begin{macrocode} \def\@gls@numberlink#1{% \begingroup @@ -3338,46 +3588,56 @@ style `#1' undefined}{}}{% % appropriate font, and create a hyperlink, if hyperlinks are % supported. If hyperlinks are not supported, they will just % display their argument in the appropriate font. -%\DescribeMacro{\hyperrm} +%\begin{macro}{\hyperrm} % \begin{macrocode} \newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hypersf} +%\end{macro} +%\begin{macro}{\hypersf} % \begin{macrocode} \newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hypertt} +%\end{macro} +%\begin{macro}{\hypertt} % \begin{macrocode} \newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hyperbf} +%\end{macro} +%\begin{macro}{\hyperbf} % \begin{macrocode} \newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hypermd} +%\end{macro} +%\begin{macro}{\hypermd} % \begin{macrocode} \newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hyperit} +%\end{macro} +%\begin{macro}{\hyperit} % \begin{macrocode} \newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hypersl} +%\end{macro} +%\begin{macro}{\hypersl} % \begin{macrocode} \newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hyperup} +%\end{macro} +%\begin{macro}{\hyperup} % \begin{macrocode} \newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hypersc} +%\end{macro} +%\begin{macro}{\hypersc} % \begin{macrocode} \newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}} % \end{macrocode} -%\DescribeMacro{\hyperemph} +%\end{macro} +%\begin{macro}{\hyperemph} % \begin{macrocode} \newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}} % \end{macrocode} +%\end{macro} % %\subsection{Acronyms}\label{sec:acronym} %If the \pkgopt{acronym} package option is used, a @@ -3401,26 +3661,27 @@ style `#1' undefined}{}}{% \fi % \end{macrocode} %\vskip5pt -%\DescribeMacro{\newacronym} -% \cmdname{newacronym}\oarg{key-val list}\marg{label}\marg{abbrev}\marg{long}\\[10pt] +% \cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrev}\marg{long}\\[10pt] % This is a quick way of defining acronyms, all it does % is call \icmdname{newglossaryentry} with the appropriate % values. It sets the % glossary type to \icmdname{acronymtype} which will be % "acronym" if the package option \pkgopt{acronym} has % been used, otherwise it will be the default glossary. -% Since \cmdname{newacronym} merely calls \icmdname{newglossaryentry}, +% Since \cs{newacronym} merely calls \icmdname{newglossaryentry}, % the acronym is treated like any other glossary entry. % % If you prefer a different format, you -% can redefine \cmdname{newacronym} as required. The optional +% can redefine \cs{newacronym} as required. The optional % argument can be used to override any of the settings. +%\begin{macro}{\newacronym} % \begin{macrocode} \newcommand{\newacronym}[4][]{% -\newglossaryentry{#2}{type=\acronymtype, -name={#3},description={#4},text={#3}, +\newglossaryentry{#2}{type=\acronymtype,% +name={#3},description={#4},text={#3},% first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % \end{macrocode} +%\end{macro} % New acronyms can only be defined in the preamble: % \begin{macrocode} \@onlypreamble{\newacronym} @@ -3453,22 +3714,22 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % \subsubsection{Glossary hyper-navigation definitions (glossary-hypernav package)} % Package Definition: % \begin{macrocode} -\ProvidesPackage{glossary-hypernav}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-hypernav}[2007/07/04 v1.01 (NLCT)] % \end{macrocode} % % The commands defined in this package are provided to % help navigate around the groups within a glossary % (see \autoref{sec:printglos}.) % \icmdname{printglossary} (and \icmdname{printglossaries}) -% set \cmdname{@glo@type} to the label of the current +% set \cs{@glo@type} to the label of the current % glossary. This is used to create a unique hypertarget in % the event of multiple glossaries. %\\[10pt] -%\DescribeMacro{\glsnavhyperlink} -% \cmdname{glsnavhyperlink}\oarg{type}\marg{label}\marg{text}\\[10pt] +% \cs{glsnavhyperlink}\oarg{type}\marg{label}\marg{text}\\[10pt] % This command makes \meta{text} a hyperlink to the glossary group % whose label is given by \meta{label} for the glossary given % by \meta{type}. +%\begin{macro}{\glsnavhyperlink} % \begin{macrocode} \@ifundefined{hyperlink}{% \newcommand*{\glsnavhyperlink}[3][]{#3}}{% @@ -3476,21 +3737,22 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \edef\gls@grplabel{#2}\edef\@gls@grptitle{#3}% \hyperlink{glsn:#1@#2}{#3}}} % \end{macrocode} +%\end{macro} %\vskip5pt -%\DescribeMacro{\glsnavhypertarget} -% \cmdname{glsnavhypertarget}\oarg{type}\marg{label}\marg{text}\\[10pt] +% \cs{glsnavhypertarget}\oarg{type}\marg{label}\marg{text}\\[10pt] % This command makes \meta{text} a hypertarget for the glossary group % whose label is given by \meta{label} in the glossary given % by \meta{type}. +%\begin{macro}{\glsnavhypertarget} % \begin{macrocode} \@ifundefined{hypertarget}{% \newcommand*{\glsnavhypertarget}[3][]{#3}}{% \newcommand*{\glsnavhypertarget}[3][\@glo@type]{% \hypertarget{glsn:#1@#2}{#3}}} % \end{macrocode} +%\end{macro} % -%\DescribeMacro{\glsnavigation} -% The \cmdname{glsnavigation} command displays a simple glossary +% The \cs{glsnavigation} command displays a simple glossary % group navigation. % The symbol and number elements are defined separately, % so that they can be suppressed if need be. Note that this @@ -3498,6 +3760,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % may not be defined if there are groups that do not contain any % terms, in which case you will get an undefined hyperlink warning. % Now for the whole navigation bit: +%\begin{macro}{\glsnavigation} % \begin{macrocode} \newcommand*{\glsnavigation}{% \glssymbolnav @@ -3528,18 +3791,20 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \glsnavhyperlink{Y}{\glsgetgrouptitle{Y}} \textbar\ \glsnavhyperlink{Z}{\glsgetgrouptitle{Z}}} % \end{macrocode} -%\DescribeMacro{\glssymbolnav} -% The \cmdname{glssymbolnav} produces a simple navigation set of +%\end{macro} +% The \cs{glssymbolnav} produces a simple navigation set of % links for just the symbol and number groups. This is used at -% the start of \cmdname{glsnavigation}. If your glossary doesn't +% the start of \cs{glsnavigation}. If your glossary doesn't % contain any symbol or navigation groups, you can redefine this % command to do nothing. +%\begin{macro}{\glssymbolnav} % \begin{macrocode} \newcommand*{\glssymbolnav}{% \glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}} \textbar\ \glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}} \textbar\ } % \end{macrocode} +%\end{macro} %\iffalse % \begin{macrocode} % @@ -3557,11 +3822,11 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % \icmdname{item} command, it will appear in a bold font by % default. % \begin{macrocode} -\ProvidesPackage{glossary-list}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-list}[2007/07/04 v1.01 (NLCT)] % \end{macrocode} % The \glostyle{list} glossary style % uses the \envname{description} environment. The group separator -% \icmdname{glsgroupskip} is redefined as \cmdname{indexspace} +% \icmdname{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 % style for the \styname{glossaries} package. @@ -3571,7 +3836,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\item[\@glstarget{glo:##1}{##2}] ##3. ##5}% +\item[\@glstarget{glo:##1}{##2}] ##3\glspostdescription\space ##5}% \renewcommand*{\glsgroupskip}{\indexspace}} % \end{macrocode} % The \glostyle{listgroup} style is like the \glostyle{list} @@ -3598,7 +3863,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \newglossarystyle{altlist}{% \glossarystyle{list}% \renewcommand*{\glossaryentryfield}[5]{% -\item[\@glstarget{glo:##1}{##2}]\mbox{}\newline ##3. ##5}% +\item[\@glstarget{glo:##1}{##2}]\mbox{}\newline ##3\glspostdescription\space ##5}% } % \end{macrocode} % The \glostyle{altlistgroup} glossary style is like the @@ -3634,22 +3899,24 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % The glossary styles defined in the \styname{glossary-long} package % used the \envname{longtable} environment in the glossary. % \begin{macrocode} -\ProvidesPackage{glossary-long}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-long}[2007/07/04 v1.01 (NLCT)] % \end{macrocode} % Requires the \styname{longtable} package: % \begin{macrocode} \RequirePackage{longtable} % \end{macrocode} -%\DescribeMacro{\glsdescwidth} % This is a length that governs the width of the description column. +%\begin{macro}{\glsdescwidth} % \begin{macrocode} \newlength\glsdescwidth % \end{macrocode} -%\DescribeMacro{\glspagelistwidth} +%\end{macro} % This is a length that governs the width of the page list column. +%\begin{macro}{\glspagelistwidth} % \begin{macrocode} \newlength\glspagelistwidth % \end{macrocode} +%\end{macro} % Default values: % \begin{macrocode} \setlength{\glsdescwidth}{0.6\linewidth} @@ -3665,7 +3932,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\@glstarget{glo:##1}{##2} & ##3. ##5\\}% +\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}% \renewcommand*{\glsgroupskip}{ & \\}} % \end{macrocode} % The \glostyle{longborder} style is like the above, but with horizontal and @@ -3798,7 +4065,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} % The glossary styles defined in the \styname{glossary-super} package % use the \envname{supertabular} environment. % \begin{macrocode} -\ProvidesPackage{glossary-super}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-super}[2007/07/04 v1.01 (NLCT)] % \end{macrocode} % Requires the \styname{supertabular} package: % \begin{macrocode} @@ -3816,7 +4083,7 @@ first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\@glstarget{glo:##1}{##2} & ##3. ##5\\}% +\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}% \renewcommand*{\glsgroupskip}{ & \\}} % \end{macrocode} % The \glostyle{superborder} style is like the above, but with horizontal and diff --git a/Master/texmf-dist/source/latex/glossaries/glossaries.ins b/Master/texmf-dist/source/latex/glossaries/glossaries.ins index 8130433bd88..1fc606b961b 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.91b 2007/5/25 16:12 +% glossaries.ins generated using makedtx version 0.93b 2007/8/3 17:26 \input docstrip \preamble diff --git a/Master/texmf-dist/tex/latex/glossaries/glossaries.sty b/Master/texmf-dist/tex/latex/glossaries/glossaries.sty index 2f89ef952ba..60c8a8cee5c 100644 --- a/Master/texmf-dist/tex/latex/glossaries/glossaries.sty +++ b/Master/texmf-dist/tex/latex/glossaries/glossaries.sty @@ -29,7 +29,7 @@ %% lots of text omitted %% lots of text omitted \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries}[2007/05/25 v1.02 (NLCT)] +\ProvidesPackage{glossaries}[2007/08/03 v1.04 (NLCT)] \RequirePackage{ifthen} \RequirePackage{xkeyval}[2006/11/18] \RequirePackage{xspace} @@ -96,6 +96,7 @@ name=true]{% \providecommand*{\pagelistname}{Page List} \providecommand*{\glssymbolsgroupname}{Symbols} \providecommand*{\glsnumbersgroupname}{Numbers} +\newcommand*{\glspostdescription}{.} \providecommand*{\istfilename}{\jobname.ist} \newcommand*{\@istfilename}[1]{} \newcommand{\glscompositor}{.} @@ -239,10 +240,10 @@ in it}}{% \expandafter\protected@xdef\csname glo@#1@symbol\endcsname{\@glo@symbol}% \expandafter\gdef\csname glo@#1@flagfalse\endcsname{% \expandafter\global\expandafter -\let\csname ifglo@#1@flag\endcsname\iffalse} +\let\csname ifglo@#1@flag\endcsname\iffalse}% \expandafter\gdef\csname glo@#1@flagtrue\endcsname{% \expandafter\global\expandafter -\let\csname ifglo@#1@flag\endcsname\iftrue} +\let\csname ifglo@#1@flag\endcsname\iftrue}% \csname glo@#1@flagfalse\endcsname }} \@onlypreamble{\newglossaryentry} @@ -275,6 +276,7 @@ in it}}{% \def\glsdefaulttype{#1}\input{#2}% \let\glsdefaulttype\@gls@default} \@onlypreamble{\loadglsentries} +\newcommand*{\glstextformat}[1]{#1} \newcommand*{\glsdisplayfirst}[4]{#1#4} \newcommand*{\glsdisplay}[4]{#1#4} \newcommand*{\defglsdisplay}[2][\glsdefaulttype]{% @@ -300,9 +302,9 @@ counter as its value}}{% \setkeys{glslink}{#1}% \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}% \ifKV@glslink@hyper -\@glslink{glo:#2}{#3}% +\@glslink{glo:#2}{\glstextformat{#3}}% \else -#3\relax +\glstextformat{#3}\relax \fi \protected@edef\@glo@sort{\csname glo@#2@sort\endcsname}% \@gls@checkmkidxchars\@glo@sort @@ -874,8 +876,8 @@ style `#1' undefined}{}}{% \defglsdisplay[acronym]{#1#4}\defglsdisplayfirst[acronym]{#1#4} \fi \newcommand{\newacronym}[4][]{% -\newglossaryentry{#2}{type=\acronymtype, -name={#3},description={#4},text={#3}, +\newglossaryentry{#2}{type=\acronymtype,% +name={#3},description={#4},text={#3},% first={#4 (#3)},plural={#3s},firstplural={#4s (#3s)},#1}} \@onlypreamble{\newacronym} \RequirePackage{glossary-hypernav} diff --git a/Master/texmf-dist/tex/latex/glossaries/glossary-hypernav.sty b/Master/texmf-dist/tex/latex/glossaries/glossary-hypernav.sty index eb4f96f7edc..f41364cb2d7 100644 --- a/Master/texmf-dist/tex/latex/glossaries/glossary-hypernav.sty +++ b/Master/texmf-dist/tex/latex/glossaries/glossary-hypernav.sty @@ -28,7 +28,7 @@ %% Right brace \} Tilde \~} %% lots of text omitted %% lots of text omitted -\ProvidesPackage{glossary-hypernav}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-hypernav}[2007/07/04 v1.01 (NLCT)] \@ifundefined{hyperlink}{% \newcommand*{\glsnavhyperlink}[3][]{#3}}{% \newcommand*{\glsnavhyperlink}[3][\@glo@type]{% diff --git a/Master/texmf-dist/tex/latex/glossaries/glossary-list.sty b/Master/texmf-dist/tex/latex/glossaries/glossary-list.sty index 35839fb3237..eabec031330 100644 --- a/Master/texmf-dist/tex/latex/glossaries/glossary-list.sty +++ b/Master/texmf-dist/tex/latex/glossaries/glossary-list.sty @@ -28,13 +28,13 @@ %% Right brace \} Tilde \~} %% lots of text omitted %% lots of text omitted -\ProvidesPackage{glossary-list}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-list}[2007/07/04 v1.01 (NLCT)] \newglossarystyle{list}{% \renewenvironment{theglossary}{\begin{description}}{\end{description}}% \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\item[\@glstarget{glo:##1}{##2}] ##3. ##5}% +\item[\@glstarget{glo:##1}{##2}] ##3\glspostdescription\space ##5}% \renewcommand*{\glsgroupskip}{\indexspace}} \newglossarystyle{listgroup}{% \glossarystyle{list}% @@ -48,7 +48,7 @@ \newglossarystyle{altlist}{% \glossarystyle{list}% \renewcommand*{\glossaryentryfield}[5]{% -\item[\@glstarget{glo:##1}{##2}]\mbox{}\newline ##3. ##5}% +\item[\@glstarget{glo:##1}{##2}]\mbox{}\newline ##3\glspostdescription\space ##5}% } \newglossarystyle{altlistgroup}{% \glossarystyle{altlist}% diff --git a/Master/texmf-dist/tex/latex/glossaries/glossary-long.sty b/Master/texmf-dist/tex/latex/glossaries/glossary-long.sty index ba96cc2c677..9aca83bba07 100644 --- a/Master/texmf-dist/tex/latex/glossaries/glossary-long.sty +++ b/Master/texmf-dist/tex/latex/glossaries/glossary-long.sty @@ -28,7 +28,7 @@ %% Right brace \} Tilde \~} %% lots of text omitted %% lots of text omitted -\ProvidesPackage{glossary-long}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-long}[2007/07/04 v1.01 (NLCT)] \RequirePackage{longtable} \newlength\glsdescwidth \newlength\glspagelistwidth @@ -40,7 +40,7 @@ \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\@glstarget{glo:##1}{##2} & ##3. ##5\\}% +\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}% \renewcommand*{\glsgroupskip}{ & \\}} \newglossarystyle{longborder}{% \glossarystyle{long}% diff --git a/Master/texmf-dist/tex/latex/glossaries/glossary-super.sty b/Master/texmf-dist/tex/latex/glossaries/glossary-super.sty index 2feb98d910d..382502d0dec 100644 --- a/Master/texmf-dist/tex/latex/glossaries/glossary-super.sty +++ b/Master/texmf-dist/tex/latex/glossaries/glossary-super.sty @@ -28,7 +28,7 @@ %% Right brace \} Tilde \~} %% lots of text omitted %% lots of text omitted -\ProvidesPackage{glossary-super}[2007/05/16 v1.0 (NLCT)] +\ProvidesPackage{glossary-super}[2007/07/04 v1.01 (NLCT)] \RequirePackage{supertabular} \newglossarystyle{super}{% \renewenvironment{theglossary}{% @@ -38,7 +38,7 @@ \renewcommand*{\glossaryheader}{}% \renewcommand*{\glsgroupheading}[1]{}% \renewcommand*{\glossaryentryfield}[5]{% -\@glstarget{glo:##1}{##2} & ##3. ##5\\}% +\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}% \renewcommand*{\glsgroupskip}{ & \\}} \newglossarystyle{superborder}{% \glossarystyle{super}% -- cgit v1.2.3