diff options
29 files changed, 357 insertions, 55 deletions
diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am index 3c49b5811aa..276655ae738 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.am +++ b/Build/source/texk/texlive/linked_scripts/Makefile.am @@ -55,6 +55,7 @@ texmf_dist_shell_scripts = \ bibexport/bibexport.sh \ installfont/installfont-tl \ latexfileversion/latexfileversion \ + listbib/listbib \ listings-ext/listings-ext.sh \ pdfjam/pdf180 \ pdfjam/pdf270 \ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in index d2398e0e6c7..46133a614eb 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.in +++ b/Build/source/texk/texlive/linked_scripts/Makefile.in @@ -236,6 +236,7 @@ texmf_dist_shell_scripts = \ bibexport/bibexport.sh \ installfont/installfont-tl \ latexfileversion/latexfileversion \ + listbib/listbib \ listings-ext/listings-ext.sh \ pdfjam/pdf180 \ pdfjam/pdf270 \ diff --git a/Master/texmf-dist/doc/latex/listbib/listbib b/Build/source/texk/texlive/linked_scripts/listbib/listbib index d66eab74c90..d66eab74c90 100644..100755 --- a/Master/texmf-dist/doc/latex/listbib/listbib +++ b/Build/source/texk/texlive/linked_scripts/listbib/listbib diff --git a/Build/source/texk/texlive/linked_scripts/pax/pdfannotextractor.pl b/Build/source/texk/texlive/linked_scripts/pax/pdfannotextractor.pl index a26ae11c23c..085dc43c5d3 100755 --- a/Build/source/texk/texlive/linked_scripts/pax/pdfannotextractor.pl +++ b/Build/source/texk/texlive/linked_scripts/pax/pdfannotextractor.pl @@ -2,7 +2,7 @@ use strict; $^W=1; -# Copyright (C) 2008, 2011 Heiko Oberdiek +# Copyright (C) 2008, 2011, 2012 Heiko Oberdiek # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,19 +24,21 @@ $^W=1; my $name = 'PDFAnnotExtractor'; my $program = "\L$name\E"; my $file = "$program.pl"; -my $version = "0.1k"; -my $date = "2011/07/06"; +my $version = "0.1l"; +my $date = "2012/04/18"; my $author = "Heiko Oberdiek"; -my $copyright = "Copyright (c) 2008, 2011 by $author."; +my $copyright = "Copyright (c) 2008, 2011, 2012 by $author."; # History: # 2008/10/01 v0.1i: First version of the wrapper script. +# 2012/04/18 v0.1l: Option --version added. my $title = "$name $version, $date - $copyright\n"; my $usage = <<"END_OF_USAGE"; ${title}Syntax: $program [options] <PDF files[.pdf]> Options: --help print usage + --version print version number --install try installing PDFBox library --debug debug informations END_OF_USAGE @@ -44,13 +46,19 @@ END_OF_USAGE my $help = 0; my $debug = 0; my $install = 0; +my $opt_version = 0; use Getopt::Long; GetOptions( 'debug!' => \$debug, 'install!' => \$install, - 'help!' => \$help + 'help!' => \$help, + 'version!' => \$opt_version, ) or die $usage; !$help or die $usage; +if ($opt_version) { + print "$name $date v$version\n"; + exit(0); +} !$install and (@ARGV >= 1 or die $usage); print $title; diff --git a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl index 5ea1ff2deb0..e075ac8acf9 100755 --- a/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl +++ b/Build/source/texk/texlive/linked_scripts/texlive/tlmgr.pl @@ -1,13 +1,14 @@ #!/usr/bin/env perl -# $Id: tlmgr.pl 26026 2012-04-18 05:54:24Z preining $ +# $Id: tlmgr.pl 26063 2012-04-20 00:18:04Z preining $ # # Copyright 2008, 2009, 2010, 2011, 2012 Norbert Preining # This file is licensed under the GNU General Public License version 2 # or any later version. -my $svnrev = '$Revision: 26026 $'; -my $datrev = '$Date: 2012-04-18 07:54:24 +0200 (Wed, 18 Apr 2012) $'; +my $svnrev = '$Revision: 26063 $'; +my $datrev = '$Date: 2012-04-20 02:18:04 +0200 (Fri, 20 Apr 2012) $'; my $tlmgrrevision; +my $prg; if ($svnrev =~ m/: ([0-9]+) /) { $tlmgrrevision = $1; } else { @@ -87,6 +88,10 @@ TeXLive::TLUtils->import(qw(member info give_ctan_mirror win32 dirname mkdirhier copy log debug tlcmp)); use TeXLive::TLPaper; +# +# set up $prg for warning messages +$prg = TeXLive::TLUtils::basename($0); + binmode(STDOUT, ":utf8"); binmode(STDERR, ":utf8"); @@ -149,6 +154,7 @@ sub main { "gui" => { "load" => 1 }, "install" => { "no-depends" => 1, "no-depends-at-all" => 1, + "file" => 1, "reinstall" => 1, "force" => 1, "dry-run|n" => 1 }, @@ -265,7 +271,7 @@ sub main { } if ((!defined($action) || !$action) && !$opts{"help"} && !$opts{"h"}) { - die "$0: missing action; try --help if you need it.\n"; + die "$prg: missing action; try --help if you need it.\n"; } if ($opts{"help"} || $opts{"h"}) { @@ -296,12 +302,12 @@ sub main { # give a short message about usage print " tlmgr revision $tlmgrrevision -usage: tlmgr <options> <action> <arguments> -where <action> is one of:\n"; +usage: tlmgr OPTION... ACTION ARGUMENT... +where ACTION is one of:\n"; for my $k (sort keys %actionoptions) { print " $k\n"; } - print "\nUse\n tlmgr <action> --help + print "\nUse\n tlmgr ACTION --help for more details on a specific option, and tlmgr --help for the full story.\n"; @@ -557,7 +563,7 @@ sub execute_action { action_recreate_tlpdb(); finish(0); } else { - die "$0: unknown action: $action; try --help if you need it.\n"; + die "$prg: unknown action: $action; try --help if you need it.\n"; } # close the special log file @@ -2298,7 +2304,7 @@ sub action_update { if ( !$dry_run_cont && !$opts{"self"} && @critical) { critical_updates_warning(); if ($opts{"force"}) { - tlwarn("$0: Continuing due to --force.\n"); + tlwarn("$prg: Continuing due to --force.\n"); } elsif ($opts{"list"}) { # do not warn here } else { @@ -2306,7 +2312,7 @@ sub action_update { # return here and don't do any updates return; } else { - die "$0: Exiting, please read above warning.\n"; + die "$prg: Exiting, please read above warning.\n"; } } } @@ -2905,7 +2911,7 @@ sub action_update { "__BACKUP_${pkg}.r" . $tlp->revision, $tlp->relocated); if ($s <= 0) { - tlwarn("\n$0: Creation of backup container of $pkg failed.\n"); + tlwarn("\n$prg: Creation of backup container of $pkg failed.\n"); tlwarn("Continuing to update other packages, please retry...\n"); # we should try to update other packages at least next; @@ -3044,7 +3050,7 @@ sub action_update { logpackage("auto-install new: $pkg ($mediarevstr)"); $nrupdated++; } else { - tlwarn("$0: couldn't install new package $pkg\n"); + tlwarn("$prg: couldn't install new package $pkg\n"); } } } @@ -3253,6 +3259,12 @@ sub action_install { } } + # + # installation from a .tar.xz + if ($opts{"file"}) { + return $localtlpdb->install_package_files(@ARGV); + } + $opts{"no-depends"} = 1 if $opts{"no-depends-at-all"}; info("install: dry run, no changes will be made\n") if $opts{"dry-run"}; @@ -3518,13 +3530,13 @@ sub action_repository { if ($what eq "add") { my $p = shift @ARGV; if (!defined($p)) { - tlwarn("You need to give a new repository aas argument to add\n"); + tlwarn("$prg: you need to give a new repository as argument to add\n"); return; } my $t = shift @ARGV; $t = $p if (!defined($t)); if (defined($repos{$t})) { - tlwarn("This repository or its tag is already defined, no action\n"); + tlwarn("$prg: this repository or its tag is already defined, no action\n"); return; } # TODO more checks needed? @@ -3543,6 +3555,11 @@ sub action_repository { $repos{$t} = $p; $localtlpdb->option("location", array_to_repository(%repos)); $localtlpdb->save; + if ($t eq $p) { + print "$prg: added repository $p\n"; + } else { + print "$prg: added repository `$t' for `$p'\n"; + } return; } if ($what eq "remove") { @@ -3563,6 +3580,7 @@ sub action_repository { } else { $localtlpdb->option("location", array_to_repository(%repos)); $localtlpdb->save; + print "$prg: removed repository `$p'\n"; } return; } @@ -3962,7 +3980,7 @@ sub action_generate { $dest .= ".dat.lua" if $append_extension; my $localcfg = $opts{"localcfg"} || "$TEXMFLOCAL/tex/generic/config/language-local.dat.lua"; - debug("$0: writing language.dat.lua data to $dest\n"); + debug("$prg: writing language.dat.lua data to $dest\n"); TeXLive::TLUtils::create_language_lua($localtlpdb, $dest, $localcfg); if ($opts{"rebuild-sys"}) { do_cmd_and_check("fmtutil-sys --byhyphen $dest"); @@ -3977,7 +3995,7 @@ sub action_generate { $dest .= ".dat" if $append_extension; my $localcfg = $opts{"localcfg"} || "$TEXMFLOCAL/tex/generic/config/language-local.dat"; - debug ("$0: writing language.dat data to $dest\n"); + debug ("$prg: writing language.dat data to $dest\n"); TeXLive::TLUtils::create_language_dat($localtlpdb, $dest, $localcfg); if ($opts{"rebuild-sys"}) { do_cmd_and_check("fmtutil-sys --byhyphen $dest"); @@ -3992,7 +4010,7 @@ sub action_generate { $dest .= ".def" if $append_extension; my $localcfg = $opts{"localcfg"} || "$TEXMFLOCAL/tex/generic/config/language-local.def"; - debug("$0: writing language.def data to $dest\n"); + debug("$prg: writing language.def data to $dest\n"); TeXLive::TLUtils::create_language_def($localtlpdb, $dest, $localcfg); if ($opts{"rebuild-sys"}) { do_cmd_and_check("fmtutil-sys --byhyphen $dest"); @@ -4005,7 +4023,7 @@ sub action_generate { } elsif ($what =~ m/^fmtutil$/i) { my $dest = $opts{"dest"} || "$TEXMFSYSVAR/web2c/fmtutil.cnf"; my $localcfg = $opts{"localcfg"} || "$TEXMFLOCAL/web2c/fmtutil-local.cnf"; - debug("$0: writing new fmtutil.cnf to $dest\n"); + debug("$prg: writing new fmtutil.cnf to $dest\n"); TeXLive::TLUtils::create_fmtutil($localtlpdb, $dest, $localcfg); if ($opts{"rebuild-sys"}) { @@ -4018,7 +4036,7 @@ sub action_generate { } elsif ($what =~ m/^updmap$/i) { my $dest = $opts{"dest"} || "$TEXMFSYSCONFIG/web2c/updmap.cfg"; my $localcfg = $opts{"localcfg"} || "$TEXMFLOCAL/web2c/updmap-local.cfg"; - debug("$0: writing new updmap.cfg to $dest\n"); + debug("$prg: writing new updmap.cfg to $dest\n"); TeXLive::TLUtils::create_updmap($localtlpdb, $dest, $localcfg); if ($opts{"rebuild-sys"}) { @@ -4029,7 +4047,7 @@ sub action_generate { } } else { - die "$0: Unknown option for generate: $what; try --help if you need it.\n"; + die "$prg: Unknown option for generate: $what; try --help if you need it.\n"; } return; @@ -4701,7 +4719,7 @@ sub check_depends { # on a client system or overriding global settings. # # tlmgr postaction [--w32mode=user|admin] [--fileassocmode=1|2] [--all] -# [install|remove] [shortcut|fileassoc|script] [<package> <package> ...] +# [install|remove] [shortcut|fileassoc|script] [<pkg>...] sub action_postaction { my $how = shift @ARGV; @@ -4995,7 +5013,7 @@ sub init_tlmedia # check that there is a main repository if (!TeXLive::TLUtils::member('main', @tags)) { - tldie("Cannot find main repository, you have to tag one as main!\n"); + tldie("$prg: Cannot find main repository, you have to tag one as main!\n"); } # TODO TODO @@ -5166,13 +5184,15 @@ END_NO_INTERNET my $texlive_release = $remotetlpdb->config_release; my $texlive_minrelease = $remotetlpdb->config_minrelease; if (!defined($texlive_release)) { - tldie "The installation repository does not specify a release year for which it was prepared, bailing out.\n"; + tldie("$prg: The installation repository does not specify a " + . "release year for which it was prepared, goodbye.\n"); } # still here, so we have $texlive_release defined my $texlive_release_year = $texlive_release; $texlive_release_year =~ s/^(....).*$/$1/; if ($texlive_release_year !~ m/^[1-9][0-9][0-9][0-9]$/) { - tldie "The installation repository does not specify a release year: $texlive_release, bailing out.\n"; + tldie("$prg: The installation repository does not specify a " + . "valid release year, goodbye: $texlive_release\n"); } # so $texlive_release_year is numeric, good if (defined($texlive_minrelease)) { @@ -5180,13 +5200,14 @@ END_NO_INTERNET my $texlive_minrelease_year = $texlive_minrelease; $texlive_minrelease_year =~ s/^(....).*$/$1/; if ($texlive_minrelease_year !~ m/^[1-9][0-9][0-9][0-9]$/) { - tldie "The installation repository does not specify a valid minimal release year: $texlive_minrelease, bailing out.\n"; + tldie("The installation repository does not specify a " + . "valid minimal release year, goodbye: $texlive_minrelease\n"); } # ok, all numeric and fine, check for range if ($TeXLive::TLConfig::ReleaseYear < $texlive_minrelease_year || $TeXLive::TLConfig::ReleaseYear > $texlive_release_year) { tldie <<END_BADRANGE -$0: The TeX Live versions supported by the repository +$prg: The TeX Live versions supported by the repository ($texlive_minrelease_year--$texlive_release_year) do not include the version of the local installation ($TeXLive::TLConfig::ReleaseYear). Goodbye. @@ -5196,7 +5217,7 @@ END_BADRANGE # $texlive_minrelease not defined, so only one year is valid if ($texlive_release_year != $TeXLive::TLConfig::ReleaseYear) { tldie <<END_BADYEAR -$0: The TeX Live versions of the local installation +$prg: The TeX Live versions of the local installation and the repository being accessed are not compatible: local: $TeXLive::TLConfig::ReleaseYear repository: $texlive_release_year @@ -5572,9 +5593,9 @@ Report what would be updated without actually updating anything. Make your local TeX installation correspond to what is in the package repository (typically useful when updating from CTAN). -=item C<tlmgr show> I<pkgname> +=item C<tlmgr show> I<pkg> -Display detailed information about I<pkgname>, such as the installation +Display detailed information about I<pkg>, such as the installation status and description. =back @@ -6294,19 +6315,19 @@ Print the TeX Live identifier for the detected platform C<--print-arch> is a synonym. -=head2 search [I<options>] I<what> +=head2 search [I<option>...] I<what> -=head3 search [I<options>] --file I<what> +=head3 search [I<option>...] --file I<what> -=head3 search [I<options>] --taxonomy I<what> +=head3 search [I<option>...] --taxonomy I<what> -=head3 search [I<options>] --keyword I<what> +=head3 search [I<option>...] --keyword I<what> -=head3 search [I<options>] --functionality I<what> +=head3 search [I<option>...] --functionality I<what> -=head3 search [I<options>] --characterization I<what> +=head3 search [I<option>...] --characterization I<what> -=head3 search [I<options>] --all I<what> +=head3 search [I<option>...] --all I<what> By default, search the names, short descriptions, and long descriptions of all locally installed packages for the argument I<what>, interpreted @@ -6362,7 +6383,7 @@ Search for package names, descriptions, and taxonomies, but not files. =back -=head2 info [I<options>] [collections|schemes|I<pkg>...] +=head2 info [I<option>...] [collections|schemes|I<pkg>...] With no argument, lists all packages available at the package repository, prefixing those already installed with C<i>. @@ -6370,19 +6391,18 @@ repository, prefixing those already installed with C<i>. With the single word C<collections> or C<schemes> as the argument, lists the request type instead of all packages. -With anything else as arguments, -display information about I<pkg>: the name, category, short and long -description, installation status, and TeX Live revision number. -Searches in the remote installation source for the package if it is not -locally installed. +With any other arguments, display information about I<pkg>: the name, +category, short and long description, installation status, and TeX Live +revision number. If I<pkg> is not locally installed, searches in the +remote installation source. It also displays information taken from the TeX Catalogue, namely the package version, date, and license. Consider these, especially the -package version, approximations only, due to timing skew of the updates -of the difference pieces. The C<revision> value, by contrast, comes -directly from TL and is reliable. +package version, as approximations only, due to timing skew of the +updates of the different pieces. By contrast, the C<revision> value +comes directly from TL and is reliable. -The former actions B<show> and B<list> are merged into this action, +The former actions C<show> and C<list> are merged into this action, but are still supported for backward compatibility. Options: diff --git a/Master/bin/alpha-linux/listbib b/Master/bin/alpha-linux/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/alpha-linux/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/amd64-freebsd/listbib b/Master/bin/amd64-freebsd/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/amd64-freebsd/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/amd64-kfreebsd/listbib b/Master/bin/amd64-kfreebsd/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/amd64-kfreebsd/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-cygwin/listbib b/Master/bin/i386-cygwin/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-cygwin/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-freebsd/listbib b/Master/bin/i386-freebsd/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-freebsd/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-kfreebsd/listbib b/Master/bin/i386-kfreebsd/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-kfreebsd/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-linux/listbib b/Master/bin/i386-linux/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-linux/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-netbsd/listbib b/Master/bin/i386-netbsd/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-netbsd/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/i386-solaris/listbib b/Master/bin/i386-solaris/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/i386-solaris/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/mips-irix/listbib b/Master/bin/mips-irix/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/mips-irix/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/powerpc-aix/listbib b/Master/bin/powerpc-aix/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/powerpc-aix/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/listbib b/Master/bin/powerpc-linux/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/powerpc-linux/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/sparc-linux/listbib b/Master/bin/sparc-linux/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/sparc-linux/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/sparc-solaris/listbib b/Master/bin/sparc-solaris/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/sparc-solaris/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/universal-darwin/listbib b/Master/bin/universal-darwin/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/universal-darwin/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/win32/listbib.exe b/Master/bin/win32/listbib.exe Binary files differnew file mode 100755 index 00000000000..5777d90a17a --- /dev/null +++ b/Master/bin/win32/listbib.exe diff --git a/Master/bin/x86_64-darwin/listbib b/Master/bin/x86_64-darwin/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/x86_64-darwin/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/x86_64-linux/listbib b/Master/bin/x86_64-linux/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/x86_64-linux/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/bin/x86_64-solaris/listbib b/Master/bin/x86_64-solaris/listbib new file mode 120000 index 00000000000..af19d420efb --- /dev/null +++ b/Master/bin/x86_64-solaris/listbib @@ -0,0 +1 @@ +../../texmf-dist/scripts/listbib/listbib
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/listbib/listbib.doc b/Master/texmf-dist/bibtex/bst/listbib/listbib.bst index 89c9c9b5754..89c9c9b5754 100644 --- a/Master/texmf-dist/doc/latex/listbib/listbib.doc +++ b/Master/texmf-dist/bibtex/bst/listbib/listbib.bst diff --git a/Master/texmf-dist/scripts/listbib/listbib b/Master/texmf-dist/scripts/listbib/listbib new file mode 100755 index 00000000000..d66eab74c90 --- /dev/null +++ b/Master/texmf-dist/scripts/listbib/listbib @@ -0,0 +1,245 @@ +#!/bin/sh +#!/bin/sh -x +#!/bin/bash +# +# listbib +# +# List the contents of all given BibTeX files (bibliographic data bases, +# extension .bib). +# Prerequisites: +# LaTeX 2e, <1999/06/01> will work (earlier ones might) +# bibtex 0.99b +# package listbib, version 2.0 or later +# +# If we had bash, we could do some decent programming. However, listbib +# must also work with something as braindead as solaris 2.7 /bin/sh, +# so we won't... +# +# Copyright Volker Kuhlmann <v.kuhlmann@elec.canterbury.ac.nz> +# Released under the GNU General Public License (GPL) Version 2. +# +# Volker Kuhlmann +# 15, 16, 17 Mar; 12, 15 Apr; 30 Jul; 28 Aug 2000 +# + +VERSION="VK 1.2.3, 28 Aug 2000" + +# The root of the filenames generated by latex etc. +#outfile="listbib-$$" # numbers are awkward +#outfile="listbib" # not good! +outfile="listedbibs" + + +#### +#### Usage +# +usage() { + echo " +Usage: `basename $0` [OPTIONS] [BIBFILE[.bib] ..] BIBFILE_N[.bib] +Version $VERSION + +Options: + -h|--help shows help + -o|--output FILE generates FILE.dvi / FILE.ps (default $outfile) + -O|--same as -o, but generate FILE.dvi and BIBFILE_N.ps + -p|--ps|--postscript generate PostScript as well as dvi + -d|--deltemp delete all generated files but .dvi + -P|--psonly generate only PostScript (delete all generated files + but .ps) + -- stop option processing; only .bib files remain + +Examples: + List contents of mystrings.bib and mybib.bib, generating $outfile.dvi: + listbib -d mystrings.bib mybib.bib + As before, but only generate $outfile.ps: + listbib -P mystrings.bib mybib.bib + Generate mybib.ps instead: + listbib -P -O mystrings.bib mybib.bib +" + exitwith ErrUsage +} + +#### +#### Error/Exit codes +# +exitwith() { + exec 1>&2 # write stdout on stderr instead + case "$1" in + ErrUsage|ErrHelp) + # usage already displayed + exit 1;; + ErrTex) + echo "File '$2' already exists." + exit 2;; + ErrListbibtex) + echo "Refusing to create temp file 'listbib.tex'. That file already" + echo "exists, and an infinite loop would result." + exit 3;; + ErrCall) + echo "An error occured." + echo "Investigate by running $2 on '$3'," + echo "or by examining log file '$outfile$4'." + exit 4;; + ErrStop) + exit 8;; + ErrMissingParameter) + echo "A required parameter for option $2 is missing." + echo "Call with -h for help." + exit 9;; + *) + echo "Error: exitwith() was called with illegal error code '$1'." + exit 19;; + esac +} + +#### +#### Parse command line +# +checkargmm() { + test "$1" != "--" -a "$2" != "--" + #true # uncomment this to allow "--" as argument to an option +} +checkarg2() { + test $# -ge 2 && checkargmm "$2" && return + exitwith ErrMissingParameter "$1" +} +parse_cmd_line() { + unset -v ps deltmp psonly outfileps + if [ $# -eq 0 ]; then usage; fi + while [ -n "$1" ]; do + case "$1" in + -h|--help) + usage;; + -o|--output) + checkarg2 "$@"; outfile="$2"; shift;; + -O|--same) + test -z "$2" && usage + eval outfileps=\${$#} + # strip trailing ".bib": + concat_bibnames "$outfileps"; outfileps="$listbibs";; + -p|--ps|--postscript) + ps="1";; + -d|--deltemp) + deltmp="1";; + -P|--psonly) + psonly="1";; + -PO|-OP) + shift; set FILL -P -O "$@";; + -po) + shift; set FILL -p -o "$@";; + -dpo|-pdo) + shift; set FILL -d -p -o "$@";; + --) shift;; + *) break;; + esac + shift + done + #fileargs=("$@") + fileargs="$@" +} + +#### +#### Functions +# +concat_bibnames() { + listbibs= + while [ -n "$1" ]; do + #listbibs="$listbibs,$1" + if [ -n "$listbibs" ]; then listbibs="$listbibs,"; fi + listbibs="$listbibs`echo $1 | sed -e 's,\.$,,' -e 's,.bib$,,'`" + shift + done +} + +idstring="% listbib $VERSION" +check_tex_is_ours() { + # exit with error if existing .tex is not a listbib one + test -f "$outfile".tex || return + awk "/$idstring/ {exit 0}; {exit 1}" "$outfile".tex \ + || exitwith ErrTex "$outfile".tex +} + +create_latexfile() { + test "$outfile" = "listbib" && exitwith ErrListbibtex + + cat >"$outfile".tex - <<EOF + $idstring + % File automatically generated by listbib. Delete if you wish. + \\batchmode + \\def\\listbibs{$listbibs} + \\input{listbib} +EOF +} + +run_latex() { + echo "Running latex ..." + latex >/dev/null </dev/null "$outfile" + # a non-zero exit code means termination with error + # This assumes the latex program does set the exit status. Tough if not... + test $? -ne 0 && exitwith ErrCall "latex" "$outfile" .log + true +} + +run_bibtex() { + echo "Running bibtex ..." + #bibtex >/dev/null </dev/null "$outfile" + bibtex "$outfile" + test $? -ne 0 && exitwith ErrCall "bibtex" "$outfile" .blg + true +} + +#LaTeX Warning: There were undefined references. +#LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. +#LaTeX Warning: Citation `Book' undefined on input line 8. +make_dvi() { + test -r "$outfile".aux && { rm "$outfile".aux || return; } + test -r "$outfile".bbl && { rm "$outfile".bbl || return; } + run_latex + run_bibtex + run_latex + # just in case... + warn1='There were undefined references\.' + warn2='Label\(s\) may have changed\. Rerun to get cross-references right.' + warn3="Citation \`Book\' undefined on input line " + egrep >/dev/null "LaTeX Warning: ($warn1|$warn2|$warn3)" "$outfile".log \ + && { + #cp "$outfile".log debug.log + echo "Again" + run_latex + } + true +} + +run_dvips() { + [ -z "$outfileps" ] && outfileps="$outfile" + if [ -n "$ps" -o -n "$psonly" ]; then + echo "Running dvips ..." + dvips >/dev/null 2>&1 -o "$outfileps.ps" "$outfile" + fi +} + +rm_temp() { + if [ -n "$deltmp" -o -n "$psonly" ]; then + rm >/dev/null 2>&1 "$outfile".aux "$outfile".bbl "$outfile".blg \ + "$outfile".log "$outfile".tex + fi + test -n "$psonly" && rm >/dev/null 2>&1 "$outfile".dvi + test -n "$signal" && rm >/dev/null 2>&1 "$outfileps".ps + true +} + +#### +#### Main + +parse_cmd_line "$@" +concat_bibnames $fileargs +echo "listbib $VERSION" +echo "Listing bibliographies:" $listbibs +check_tex_is_ours +signal="" +trap "echo >&2 'Deleting temp files';\ + psonly=1 signal=1 rm_temp; exitwith ErrStop" HUP INT QUIT PIPE TERM +create_latexfile +make_dvi || exit $? +run_dvips || exit $? +rm_temp || exit $? diff --git a/Master/texmf-dist/doc/latex/listbib/listbib.tex b/Master/texmf-dist/tex/latex/listbib/listbib.tex index 287d016f9f4..287d016f9f4 100644 --- a/Master/texmf-dist/doc/latex/listbib/listbib.tex +++ b/Master/texmf-dist/tex/latex/listbib/listbib.tex diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index d05c03116ed..e43ae855760 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -1034,6 +1034,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'koma-script' => '&POSTrmsymlink', 'latexdiff' => '&POSTlatexdiff', 'latex2e-help-texinfo' => '&POSTlatex2ehelptexinfo', + 'listbib' => '&POSTlistbib', 'lithuanian' => '&POSTlithuanian', 'luatexja' => '&POSTluatexja', 'montex' => '&POSTmontex', @@ -1264,6 +1265,7 @@ $standardtex='\.(.bx|cfg|sty|clo|ldf|cls|def|fd|cmap|4ht)$'; 'levy', 'greekmacros.tex|' . $standardtex, 'libertine', '[^e]\.sty|\.inc', 'librarian', '(t-)?librarian.(tex|sty)', + 'listbib', 'listbib.tex|' . $standardtex, 'listings-ext','\.sty', # not .cfg 'logic', 'milstd\.tex|' . $standardtex, 'ltxkeys', '\.sty|\.clo|\.ldf|\.cls|\.def|\.fd$', # not cfg @@ -2156,6 +2158,7 @@ $standardxmt='\.xmt'; 'latexdiff' => 'latex(diff-so|diff-vc|revise)$', 'latexmk' => '\.pl$', 'latexfileversion' => 'latexfileversion$', + 'listbib' => 'listbib$', 'listings-ext' => '\.sh$', 'match_parens' => '^match_parens$', 'mathspic' => '^mathspic\.pl$', @@ -2693,16 +2696,14 @@ sub dotex { } # move the makeindex runtime files -sub domakeindex -{ +sub domakeindex { $makeindexpatt = $specialmakeindex{$package}; if ($makeindexpatt eq "") { $makeindexpatt=$standardmakeindex; } &install("$DEST/makeindex/$package",$makeindexpatt); } # BibTeX style files: -sub dobst -{ +sub dobst { $csfpatt = $specialcsf{$package}; if ($csfpatt eq "") { $csfpatt=$standardcsf; } &install("$DEST/bibtex/csf/$package",$csfpatt); @@ -4790,6 +4791,13 @@ sub POSTlatex2ehelptexinfo { &SYSTEM ("$RM -rf spanish"); } +sub POSTlistbib { + print "\t POST$package - move .doc to .bst\n"; + my $dest = "$DEST/bibtex/bst/$package"; + &xmkdir ($dest); + &SYSTEM ("pwd; $MV $package.doc $dest/$package.bst"); +} + sub POSTlithuanian { print "\t POST$package - remove old language support\n"; # these files are no longer used in TL. diff --git a/Master/tlpkg/tlpsrc/listbib.tlpsrc b/Master/tlpkg/tlpsrc/listbib.tlpsrc index e69de29bb2d..dca338c719c 100644 --- a/Master/tlpkg/tlpsrc/listbib.tlpsrc +++ b/Master/tlpkg/tlpsrc/listbib.tlpsrc @@ -0,0 +1 @@ +binpattern f bin/${ARCH}/${PKGNAME} |