summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/glossaries/makeglossaries
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-03-07 19:18:57 +0000
committerKarl Berry <karl@freefriends.org>2008-03-07 19:18:57 +0000
commit65df837d29600b7980f1e49aa2bcee6da454bae0 (patch)
treedbd621ac42ed498c32fc49fb0bbe77753f1c32c1 /Master/texmf-dist/scripts/glossaries/makeglossaries
parentb253317283f1d4cbf2a8c292bf3814b714e43ab3 (diff)
glossaries update, including makeglossaries.bat in bin/win32 (4mar08)
git-svn-id: svn://tug.org/texlive/trunk@6879 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/glossaries/makeglossaries')
-rwxr-xr-xMaster/texmf-dist/scripts/glossaries/makeglossaries284
1 files changed, 284 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/glossaries/makeglossaries b/Master/texmf-dist/scripts/glossaries/makeglossaries
new file mode 100755
index 00000000000..20a4b236fff
--- /dev/null
+++ b/Master/texmf-dist/scripts/glossaries/makeglossaries
@@ -0,0 +1,284 @@
+#!/usr/bin/perl -w
+
+# File : makeglossaries
+# Author : Nicola Talbot
+# Version : 1.2 (2008/03/02)
+# Description: simple Perl script that calls makeindex.
+# Intended for use with "glossaries.sty" (saves having to remember
+# all the various switches)
+
+# This file is distributed as part of the glossaries LaTeX package.
+# Copyright 2007 Nicola L.C. Talbot
+# This work may be distributed and/or modified under the
+# conditions of the LaTeX Project Public License, either version 1.3
+# of this license of (at your option) any later version.
+# The latest version of this license is in
+# http://www.latex-project.org/lppl.txt
+# and version 1.3 or later is part of all distributions of LaTeX
+# version 2005/12/01 or later.
+#
+# This work has the LPPL maintenance status `maintained'.
+#
+# The Current Maintainer of this work is Nicola Talbot.
+
+# This work consists of the files glossaries.dtx and glossaries.ins
+# and the derived files glossaries.sty, glossary-hypernav.sty,
+# glossary-list.sty, glossary-long.sty, glossary-super.sty,
+# glossaries.perl. Also makeglossaries and makeglossaries.
+#
+# History:
+# v1.2 (2008-03-02) :
+# * added support for --help and --version
+# * improved error handling
+# v1.1 (2008-02-13) :
+# * added -w and strict
+# * added check to ensure .tex file not passed to makeglossaries
+#
+# v1.0 (2007-05-10) : Initial release.
+
+use Getopt::Std;
+use strict;
+
+$Getopt::Std::STANDARD_HELP_VERSION = 1;
+
+my $version="1.2 (2008-03-02)";
+
+my($opt_q, $opt_t, $opt_o, $opt_s, $opt_p, $opt_g, $opt_c, $opt_r,
+ $opt_l, $opt_i)=("","","","","","","","","","");
+
+getopts('s:o:t:p:ilqrcg');
+
+unless ($#ARGV == 0)
+{
+ die "makeglossaries: Need exactly one file argument.\nUse `makeglossaries --help' for help.\n";
+}
+
+# define known extensions
+
+my %exttype = (
+ main => {in=>'glo', out=>'gls', 'log'=>'glg'},
+ );
+
+my $ext = '';
+my $name = $ARGV[0];
+
+# modified this to make sure users don't try passing the
+# tex file:
+if (length($ARGV[0]) > 3 and substr($ARGV[0],-4,1) eq ".")
+{
+ $name = substr($ARGV[0],0,length($ARGV[0])-4);
+
+ $ext = substr($ARGV[0],-3,3);
+
+ if (lc($ext) eq 'tex')
+ {
+ die("Don't pass the tex file to makeglossaries:\n"
+ ."either omit the extension to make all the glossaries, "
+ ."or specify one of the glossary files, e.g. $name.glo, to "
+ ."make just that glossary.\n")
+ }
+}
+
+my $istfile = "$name.ist";
+
+# check aux file for other glossary types
+# and for ist file name
+
+if (open AUXFILE, "$name.aux")
+{
+ while (<AUXFILE>)
+ {
+ if (m/\\\@newglossary\s*\{(.*)\}{(.*)}{(.*)}{(.*)}/
+ and ($1 ne 'main'))
+ {
+ $exttype{$1}{'log'} = $2;
+ $exttype{$1}{'out'} = $3;
+ $exttype{$1}{'in'} = $4;
+
+ if (!$opt_q)
+ {
+ print "added glossary type '$1' ($2,$3,$4)\n";
+ }
+ }
+
+ if (m/\\\@istfilename\s*{([^}]*)}/)
+ {
+ $istfile = $1;
+ }
+ }
+
+ close AUXFILE;
+}
+else
+{
+ print STDERR "Unable to open $name.aux: $!\n";
+}
+
+# save all the general makeindex switches
+
+my $mkidxopts = '';
+
+if ($opt_i)
+{
+ $mkidxopts .= " -i";
+}
+
+if ($opt_l)
+{
+ $mkidxopts .= " -l";
+}
+
+if ($opt_q)
+{
+ $mkidxopts .= " -q";
+}
+
+if ($opt_r)
+{
+ $mkidxopts .= " -r";
+}
+
+if ($opt_c)
+{
+ $mkidxopts .= " -c";
+}
+
+if ($opt_g)
+{
+ $mkidxopts .= " -g";
+}
+
+unless ($opt_p eq "")
+{
+ $mkidxopts .= " -p $opt_p";
+}
+
+unless ($opt_s eq "")
+{
+ $istfile = $opt_s;
+}
+
+if ($ext ne '')
+{
+ my %thistype = %{$exttype{'main'}}; #default
+
+ foreach my $type (keys %exttype)
+ {
+ if ($exttype{$type}{'in'} eq $ext)
+ {
+ %thistype = %{$exttype{$type}};
+
+ last;
+ }
+ }
+
+ my $outfile;
+
+ if ($opt_o eq "")
+ {
+ $outfile = "$name.$thistype{out}";
+ }
+ else
+ {
+ $outfile = $opt_o;
+ }
+
+ my $transcript;
+
+ if ($opt_t eq "")
+ {
+ $transcript = "$name.$thistype{'log'}";
+ }
+ else
+ {
+ $transcript = $opt_t;
+ }
+
+ &makeindex("$name.$ext",$outfile,$transcript,$istfile,
+ $mkidxopts,$opt_q);
+}
+else
+{
+ foreach my $type (keys %exttype)
+ {
+ my %thistype = %{$exttype{$type}};
+
+ my $inputfile = "$name.$thistype{in}";
+
+ if (-r $inputfile)
+ {
+ my $outfile;
+
+ if ($opt_o eq "")
+ {
+ $outfile = "$name.$thistype{out}";
+ }
+ else
+ {
+ $outfile = $opt_o;
+ }
+
+ my $transcript;
+
+ if ($opt_t eq "")
+ {
+ $transcript = "$name.$thistype{'log'}";
+ }
+ else
+ {
+ $transcript = $opt_t;
+ }
+
+ &makeindex($inputfile,$outfile,$transcript,
+ $istfile,$mkidxopts,$opt_q);
+ }
+ else
+ {
+ print STDERR "No read access for '$inputfile': $!\n";
+ }
+ }
+}
+
+sub makeindex{
+ my($in,$out,$trans,$ist,$rest,$quiet) = @_;
+ my($name,$cmdstr,$buffer,$n,$i,$j);
+ my(@stuff,@item);
+
+ $cmdstr = "$rest -s $ist -t $trans -o $out $in";
+
+ unless ($quiet)
+ {
+ print "makeindex $cmdstr\n";
+ }
+
+ `makeindex $cmdstr`;
+}
+
+sub HELP_MESSAGE{
+ print "\nSyntax : makeglossaries [options] <filename>\n\n";
+ print "For use with the glossaries package to pass relevant\n";
+ print "files to makeindex\n\n";
+ print "<filename>\tBase name of glossary file(s). This should\n";
+ print "\t\tbe the name of your main LaTeX document without any\n";
+ print "\t\textension.\n";
+ print "\nOptions:\n";
+ print "-c\t\tCompress intermediate blanks\n";
+ print "-g\t\tEmploy German word ordering\n";
+ print "-l\t\tLetter ordering\n";
+ print "-o <gls>\tUse <gls> as the output file.\n";
+ print "-p <num>\tSet the starting page number to be <num>\n";
+ print "-q\t\tQuiet mode\n";
+ print "-r\t\tDisable implicit page range formation\n";
+ print "-s <sty>\tEmploy <sty> as the style file\n";
+ print "-t <log>\tEmploy <log> as the transcript file\n";
+ print "\nSee makeindex documentation for further details on these ";
+ print "options\n";
+}
+
+sub VERSION_MESSAGE{
+ print "Makeglossaries Version $version\n";
+ print "Copyright (C) 2007 Nicola L C Talbot\n";
+ print "This material is subject to the LaTeX Project Public License.\n";
+}
+
+1;