diff options
author | Karl Berry <karl@freefriends.org> | 2016-06-10 21:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-06-10 21:46:03 +0000 |
commit | 2a62139c9c5e9ae2cf691e316bf2176114e0a3c5 (patch) | |
tree | 5451333974a56fe572dbe0ebf7287b1b7c905a81 /Master/texmf-dist/scripts | |
parent | 9bb046ed6f507a2cfcfe59984674922afe5d2ed9 (diff) |
glossaries (10jun16)
git-svn-id: svn://tug.org/texlive/trunk@41343 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts')
3 files changed, 108 insertions, 25 deletions
diff --git a/Master/texmf-dist/scripts/glossaries/makeglossaries b/Master/texmf-dist/scripts/glossaries/makeglossaries index b0f1bf0d084..3ec5dd02ed6 100755 --- a/Master/texmf-dist/scripts/glossaries/makeglossaries +++ b/Master/texmf-dist/scripts/glossaries/makeglossaries @@ -2,7 +2,7 @@ # File : makeglossaries # Author : Nicola Talbot -# Version : 2.18 +# Version : 2.19 # Description: simple Perl script that calls makeindex or xindy. # Intended for use with "glossaries.sty" (saves having to remember # all the various switches) @@ -27,9 +27,11 @@ # glossary-super.sty, glossaries.perl. # Also makeglossaries and makeglossaries. -my $version="2.18 (2016-01-24)"; +my $version="2.19 (2016-05-27)"; # History: +# v2.19 (2016/05/27) +# * Improved check in &parse_for_xindy_nosort # v2.18 (2016/01/24) # * Added &parse_for_xindy_nosort to help diagnose xindy's empty # index key warning/error. @@ -184,7 +186,8 @@ if ($opt_d) } # v2.02: added: -my $xdynotist = 1; +# v2.19: changed value +my $xdynotist = 2; # v2.13: removed #my $needcompatibilitymode=2; @@ -198,19 +201,19 @@ my %makeindex_error_text = . "Remember to use \\setStyleFile to specify the name\n" . "of the style file rather than redefining \\istfilename\n" . "explicitly.", - $istnotfound => "Style file not found." + $istnotfound => "Style file not found. (Have you used \\noist by mistake?)" ); my %xindy_error_text = ( - 'nosort' => "Sort key required for entries only containing command names", + 'nosort' => "Sort key required for entries only containing command names.", 'istnotxdy' => "Style name has xdy extension, but may be in makeindex format.\n" . "Remember to use \\setStyleFile to specify the name\n" . "of the style file rather than redefining \\istfilename\n" . "explicitly.", 'missingendquote' => - "You may have missed a \" character in a command such as \\GlsAddXdyLocation", + "You may have missed a \" character in a command such as \\GlsAddXdyLocation.", 'nolanguage' => "No language detected.\nHave you remembered to use \\printglossary\n". "or \\printglossaries in your document?", @@ -221,7 +224,8 @@ my %xindy_error_text = "You may have forgotten to add a location \n" . "class with \\GlsAddLocation or you may have \n" . "the format incorrect.\n", - 'comp207' => "You may need to add 'compatible-2.07' package option.\n", + 'comp207' => "You may need to add 'compatible-2.07' package option.", + 'noxdyfile' => "Style file not found. (Have you used \\noist by mistake?)" ); # define known extensions @@ -298,6 +302,9 @@ my $istfile = ""; my $letterordering = defined($opt_l); +# v2.19 added: +my $extramkidxopts = ''; + # check aux file for other glossary types # and for ist file name @@ -378,6 +385,11 @@ if ($opt_p) $mkidxopts .= " -p $opt_p"; } +if ($extramkidxopts) +{ + $mkidxopts .= " $extramkidxopts"; +} + # v2.01 replaced 'unless ($opt_s eq "")' with 'if ($opt_s)' if ($opt_s) { @@ -699,6 +711,12 @@ sub scan_aux{ $codepage{$1} = $2; } + # v2.19 added + if (m/\\\@gls\@extramakeindexopts\{(.*)\}/) + { + $extramkidxopts .= $1; + } + # v1.5 added # Allow -l switch to override specification in aux file unless (defined($opt_l)) @@ -857,7 +875,8 @@ sub run_app{ } if ($log=~/\(0 entries accepted,/ - or ( ($log=~/(\d+) warnings?/ and $1 gt 0))) + or ( ($log=~/(\d+) warnings?/ and $1 gt 0)) + or $log=~/not found/) { # Attempt to diagnose what's gone wrong @@ -868,10 +887,12 @@ sub run_app{ if (/Index style file .* not found/) { $errno = $istnotfound; + last; } elsif (/Unknown specifier ;/) { $errno = $xdynotist; + last; } elsif (/## Warning \(.*\):\s*$/) { @@ -910,7 +931,13 @@ sub makeindex{ } else { - $diagnostic = "Can't find diagnostic message for error number $errno"; + $diagnostic = "Can't find diagnostic message for error code $errno"; + } + + if (open LOGFILE, ">>$trans") + { + print LOGFILE "\nmakeglossaries diagnostic messages:\n$diagnostic\n"; + close LOGFILE; } die "\n***Call to makeindex failed***\n", @@ -1183,9 +1210,15 @@ sub xindy{ $diagnostic .= &parse_for_xindy_nosort($in); } - elsif ($status=~/variable % has no value/m) + elsif ($status=~/variable .+ has no value/m) { - $diagnostic = $xindy_error_text{istnotxindy}; + # v2.19 fixed misspelt key + $diagnostic = $xindy_error_text{istnotxdy}; + } + elsif ($status=~/Could not find file /m) + { + # v2.19 added + $diagnostic = $xindy_error_text{noxdyfile}; } elsif ($status=~/Possible read-error due to ill-formed string " :sep/m) { @@ -1211,6 +1244,13 @@ sub xindy{ } } + # v2.19 added: + if ($diagnostic and open LOGFILE, ">>$trans") + { + print LOGFILE "\nmakeglossaries diagnostic messages:\n\n$diagnostic\n"; + close LOGFILE; + } + die "\n***Call to xindy failed***\n", ($diagnostic ? "\nPossible cause of problem:\n\n". $diagnostic . "\n\n": @@ -1274,7 +1314,7 @@ sub parse_for_xindy_nosort{ my ($in) = @_; my $msg = join("\n", "", - "Attempting to determine which entries have problem sort keys", + "Attempting to determine which entries have problem sort keys.", "Parsing '$in'"); my %entries = (); @@ -1283,11 +1323,43 @@ sub parse_for_xindy_nosort{ { while (<FD>) { - if (/:tkey \(\("(\\\\[a-zA-Z@]+ *)" "\\\\glossentry\{(.*)\}"\) \)/) +# v2.19 extra conditions added + if (/:tkey \(\("((?:\\\\[a-zA-Z@]+ *)+)" "\\\\glossentry\{(.*)\}"\) \)/) { - unless ($entries{$2}) + my $label = $2; + + unless ($entries{$label}) { - $entries{$2} = $1; + $entries{$label}->{sort} = $label; + $entries{$label}->{suggestion} = $label; + $entries{$label}->{suggestion}=~s/([\\\s]+)//g; + + } + } + elsif (/:tkey \(\("(\\\\[a-zA-Z@]+ *{(?:\\\\[a-zA-Z@]+ *)+})+" "\\\\glossentry\{(.*)\}"\) \)/) + { +# name in the form \cs{\cs} + my $label = $2; + + unless ($entries{$label}) + { + $entries{$label}->{sort} = $1; + $entries{$label}->{suggestion} = $label; + $entries{$label}->{suggestion}=~s/^[a-zA-Z]+[:\-\.]//; + $entries{$label}->{suggestion}=~s/([^\w]+)//g; + } + } + elsif (/:tkey \(\("(\$\s*(?:\{?\\\\[a-zA-Z@]+ *\}?)+\$)" "\\\\glossentry\{(.*)\}"\) \)/) + { +# name in the form $\cs$ + my $label = $2; + + unless ($entries{$label}) + { + $entries{$label}->{sort} = $1; + $entries{$label}->{suggestion} = $label; + $entries{$label}->{suggestion}=~s/^[a-zA-Z]+[:\-\.]//; + $entries{$label}->{suggestion}=~s/([^\w]+)//g; } } } @@ -1309,12 +1381,10 @@ sub parse_for_xindy_nosort{ foreach my $label (@labels) { - my $sort = $entries{$label}; - - $sort=~s/^\\\\([a-zA-Z@]+) *$/$1/; + my $thisentry = $entries{$label}; - $msg .= "\nLabel: '$label'. Sort value : '$entries{$label}'"; - $msg .= "\n(Try adding sort={$sort} to the definition.)"; + $msg .= "\nLabel: '$label'. Sort value : '$thisentry->{sort}'"; + $msg .= "\n(Try adding sort={$thisentry->{suggestion}} to the definition.)"; } } } diff --git a/Master/texmf-dist/scripts/glossaries/makeglossaries-lite.lua b/Master/texmf-dist/scripts/glossaries/makeglossaries-lite.lua index aa6375b64e4..0aa91654241 100755 --- a/Master/texmf-dist/scripts/glossaries/makeglossaries-lite.lua +++ b/Master/texmf-dist/scripts/glossaries/makeglossaries-lite.lua @@ -26,10 +26,14 @@ This work has the LPPL maintenance status `maintained'. History: - * 1.1 changed first line from lua to texlua + * 1.2 + - added check for \@gls@extramakeindexopts + - added check for nil codepage + * 1.1 + - changed first line from lua to texlua --]] -thisversion = "1.1 2015-07-17" +thisversion = "1.2 2016-05-27" quiet = false dryrun = false @@ -49,6 +53,7 @@ makeindex_g = false letterorder = false makeindex_r = false makeindex_p = nil +makeindex_extra = nil makeindex_m = "makeindex" function version() @@ -151,6 +156,8 @@ function domakeindex(name, glg, gls, glo) if letterorder then cmd = cmd .. " -l" end + if makeindex_extra then cmd = cmd .. " " .. makeindex_extra end + if quiet then cmd = cmd .. " -q" end if glg ~= nil then cmd = string.format('%s -t "%s"', cmd, glg) end @@ -348,6 +355,8 @@ then end end +makeindex_extra = string.match(aux, "\\@gls@extramakeindexopts{([^}]*%.?%a*)}") + if dryrun then print("Dry run mode. No commands will be executed.") end onlyname = nil @@ -467,5 +476,9 @@ else end + if codepage == nil then + codepage = 'utf8'; + end + dorun(onlyname, glg, gls, glo, language, codepage) end diff --git a/Master/texmf-dist/scripts/glossaries/makeglossaries.bat b/Master/texmf-dist/scripts/glossaries/makeglossaries.bat index 64a6a20750c..d91f67bd3e9 100755 --- a/Master/texmf-dist/scripts/glossaries/makeglossaries.bat +++ b/Master/texmf-dist/scripts/glossaries/makeglossaries.bat @@ -1,3 +1,3 @@ -@rem = '-*- Perl -*-
-@echo off
-perl -S "%~dp0makeglossaries" %*
+@rem = '-*- Perl -*- +@echo off +perl -S "%~dp0makeglossaries" %* |