texlive[65190] trunk: urlbst (4dec22)

commits+karl at tug.org commits+karl at tug.org
Sun Dec 4 22:05:53 CET 2022


Revision: 65190
          http://tug.org/svn/texlive?view=revision&revision=65190
Author:   karl
Date:     2022-12-04 22:05:53 +0100 (Sun, 04 Dec 2022)
Log Message:
-----------
urlbst (4dec22)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/urlbst/urlbst
    trunk/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst
    trunk/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst
    trunk/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst
    trunk/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst
    trunk/Master/texmf-dist/doc/bibtex/urlbst/README
    trunk/Master/texmf-dist/doc/bibtex/urlbst/VERSION
    trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.bib
    trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.html
    trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.in
    trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.pdf
    trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.tex
    trunk/Master/texmf-dist/scripts/urlbst/urlbst
    trunk/Master/texmf-dist/source/bibtex/urlbst/Makefile.in
    trunk/Master/texmf-dist/source/bibtex/urlbst/configure
    trunk/Master/texmf-dist/source/bibtex/urlbst/configure.ac

Modified: trunk/Build/source/texk/texlive/linked_scripts/urlbst/urlbst
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/urlbst/urlbst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Build/source/texk/texlive/linked_scripts/urlbst/urlbst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -6,49 +6,72 @@
 # If either input-file or output-file is omitted, they are replaced by
 # stdin or stdout respectively.
 #
-# See http://purl.org/nxg/dist/urlbst for documentation
+# See https://purl.org/nxg/dist/urlbst for documentation
 #
-# Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray <http://nxg.me.uk>
+# Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray <https://nxg.me.uk>
 #
 # This program is distributed under the terms of the
 # GNU General Public Licence, v2.0.
-# The modifications to the input .bst files are asserted as Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+# The modifications to the input .bst files are asserted as Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 # and distributed under the terms of the LaTeX Project Public Licence.
 # See the package README for further dicussion of licences.
 
-$version = '0.8';
+$version = '0.9';
+$releasedate = '2022 December 1';
 ($progname = $0) =~ s/.*\///;
 $mymarker = "% $progname";
 $mymarkerend = "% ...$progname to here";
-$myurl = 'http://purl.org/nxg/dist/urlbst';
+$homepageurl = 'https://purl.org/nxg/dist/urlbst';
+$repourl = 'https://heptapod.host/nxg/urlbst';
 
-
 $infile = '-';
 $outfile = '-';
 
-$addeprints = 1;     # if true (nonzero) we add support for eprints
+# eprint support
+$settings{addeprints} = 1;
+$docstring{addeprints} = '0=no eprints; 1=include eprints';
 $literals{eprintprefix} = 'arXiv:';	# make these settable with --eprint? syntax?
-$eprinturl = 'http://arxiv.org/abs/';
+$docstring{eprintprefix} = "text prefix printed before eprint ref";
+$literals{eprinturl} = 'https://arxiv.org/abs/';
+$docstring{eprinturl} = 'prefix to make URL from eprint ref';
 
-$adddoiresolver = 1;
+# DOI resolver
+$settings{adddoi} = 1;
+$docstring{adddoi} = '0=no DOI resolver; 1=include it';
 $literals{doiprefix} = 'doi:';
-$doiurl = 'https://doi.org/';
+$docstring{doiprefix} = 'printed text to introduce DOI';
+$literals{doiurl} = 'https://doi.org/';
+$docstring{doiurl} = 'prefix to make URL from DOI';
+$settings{doiform} = 0;
+$docstring{doiform} = '0=with href; 1=with \\doi{}';
 
-$addpubmedresolver = 1;
+# PUBMED resolver
+$settings{addpubmed} = 1;
+$docstring{addpubmed} = '0=no PUBMED resolver; 1=include it';
 $literals{pubmedprefix} = 'PMID:';
-$pubmedurl = 'http://www.ncbi.nlm.nih.gov/pubmed/';
+$docstring{pubmedprefix} = 'text prefix printed before PUBMED ref';
+$literals{pubmedurl} = 'http://www.ncbi.nlm.nih.gov/pubmed/';
+$docstring{pubmedurl} = 'prefix to make URL from PUBMED';
 
-$makehref = 0;
+# how do we make hypterlinks
+$settings{hrefform} = 0;
+$docstring{hrefform} = '0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs';
 $literals{urlintro} = "URL: ";
-$inlinelinks = 0;
+$docstring{urlintro} = 'text prefix before URL';
+$settings{inlinelinks} = 0;
+$docstring{inlinelinks} = '0=URLs explicit; 1=URLs attached to titles';
 
-$literals{online} = "online";
-$literals{cited} = "cited ";
-$literals{linktext} = "[link]";
+# other text
+$literals{onlinestring} = "online";
+$docstring{onlinestring} = 'label that a resource is online';
+$literals{citedstring} = "cited ";
+$docstring{citedstring} = 'label in "lastchecked" remark';
+$literals{linktextstring} = "[link]";
+$docstring{linktextstring} = 'anonymous link text';
 
 $automatic_output_filename = 0;
 
-$Usage = "$progname [--eprint] [--doi] [--pubmed]\n    [--nohyperlinks] [--[no]inlinelinks] [--hypertex] [--hyperref]\n    [--literal key=value]\n    [--help] [input-file [output-file]]";
+$Usage = "$progname [--literal key=value]\n    [--setting key=value]\n    [--help] [input-file [output-file]]";
 
 # Magic environment variable: if this is set, then we're being called from a Platypus wrapper
 # See http://www.sveinbjorn.org/platypus
@@ -58,27 +81,29 @@
 
 while ($#ARGV >= 0) {
     if ($ARGV[0] eq '--eprint') {
-	$addeprints = 1;
+	$settings{addeprints} = 1;
     } elsif ($ARGV[0] eq '--noeprint') {
-	$addeprints = 0;
+	$settings{addeprints} = 0;
     } elsif ($ARGV[0] eq '--doi') {
-        $adddoiresolver = 1;
+        $settings{adddoi} = 1;
     } elsif ($ARGV[0] eq '--nodoi') {
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     } elsif ($ARGV[0] eq '--pubmed') {
-        $addpubmedresolver = 1;
+        $settings{addpubmed} = 1;
     } elsif ($ARGV[0] eq '--nopubmed') {
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     } elsif ($ARGV[0] eq '--nohyperlinks') {
-        $makehref = 0;
+        $settings{hrefform} = 0;
+    } elsif ($ARGV[0] eq '--hyperlinks') {
+        $settings{hrefform} = 1; # redundant with --hypertex, for consistency
     } elsif ($ARGV[0] eq '--hypertex') {
-	$makehref = 1;
+	$settings{hrefform} = 1;
     } elsif ($ARGV[0] eq '--hyperref') {
-	$makehref = 2;
+	$settings{hrefform} = 2;
     } elsif ($ARGV[0] eq '--inlinelinks') {
-        $inlinelinks = 1;
+        $settings{inlinelinks} = 1;
     } elsif ($ARGV[0] eq '--noinlinelinks') {
-        $inlinelinks = 0;
+        $settings{inlinelinks} = 0;
     } elsif ($ARGV[0] eq '--automatic-output') {
         $automatic_output_filename = 1;
     } elsif ($ARGV[0] eq '--literal') {
@@ -93,16 +118,42 @@
             $showstrings = 1;
         }
         if ($showstrings) {
-            print "    Possible literal strings (and defaults) are...\n";
+            print "Possible literal strings (and defaults) are...\n";
             while (($k, $v) = each (%literals)) {
-                print "        $k ($v)\n";
+                print "  $k  \t$docstring{$k} [$v]\n";
             }
             exit(0);
         }
+    } elsif ($ARGV[0] eq '--setting') {
+        shift;
+        my $showstrings = 0;
+        if ((($k, $v) = ($ARGV[0] =~ /^(\w+)=(.*)/)) && exists $settings{$k}) {
+            $settings{$k} = $v;
+        } elsif ($ARGV[0] eq 'help') {
+            $showstrings = 1;
+        } else {
+            print "No setting found in $ARGV[0]; ignoring that\n";
+            $showstrings = 1;
+        }
+        if ($showstrings) {
+            print "Possible settings (and defaults) are...\n";
+            while (($k, $v) = each (%settings)) {
+                print "  $k  \t$docstring{$k} [$v]\n";
+            }
+            exit(0);
+        }
     } elsif ($ARGV[0] eq '--help') {
         print <<EOD;
-urlbst version $version
-    Usage: $Usage
+urlbst version $version, $releasedate
+Usage: $Usage
+
+    Options:
+      --literal key=value set one of the literal strings
+                          (see `--literal help' for possibilities)
+      --setting key=value (as --literal)
+      --help              print this help
+
+    Convenience options (can also be controlled using --setting):
       --[no]eprint        include support for `eprint' fields
       --[no]doi           include support for `doi' field
       --[no]pubmed        include support for `pubmed' field
@@ -111,18 +162,19 @@
       --hypertex          include HyperTeX-style hyperlink support
       --hyperref          include {hyperref}-style hyperlink support
                           (generally better)
-      --literal key=value set one of the literal strings
-                          (see `--literal help' for possibilities)
-      --help              print this help
+
     Input and output files may be given as `-' (default) to indicate stdin/out.
 
+    Homepage:     $homepageurl
+    Repository:   $repourl
+
 EOD
         printf("    Defaults:\n");
-        printf("      eprint refs    %s\n", ($addeprints ? "included" : "not included"));
-        printf("      DOIs           %s\n", ($adddoiresolver ? "included" : "not included"));
-        printf("      PUBMED refs    %s\n", ($addpubmedresolver ? "included" : "not included"));
-        printf("      hyperlinks     %s\n", ($makehref==0 ? "none" : $makehref==1 ? "hypertex" : "hyperref"));
-        printf("      inline links   %s\n", ($inlinelinks ? "included" : "not included"));
+        printf("      eprint refs    %s\n", ($settings{addeprints} ? "included" : "not included"));
+        printf("      DOIs           %s\n", ($settings{adddoi} ? "included" : "not included"));
+        printf("      PUBMED refs    %s\n", ($settings{addpubmed} ? "included" : "not included"));
+        printf("      hyperlinks     %s\n", ($settings{hrefform}==0 ? "none" : $settings{hrefform}==1 ? "hypertex" : "hyperref"));
+        printf("      inline links   %s\n", ($settings{inlinelinks} ? "included" : "not included"));
         exit(0);
     } elsif ($ARGV[0] =~ /^-/) {
         die "Unrecognised option $ARGV[0]: Usage: $Usage\n";
@@ -136,13 +188,13 @@
     shift(@ARGV);
 }
 
-if ($inlinelinks && $makehref == 0) {
+if ($settings{inlinelinks} && $settings{hrefform} == 0) {
     print <<'EOD';
 Warning: --inlinelinks and --nohyperlinks were both specified (possibly
     implicitly).  That combination makes no sense, so I'll ignore
     --nohyperlinks and use --hyperref instead
 EOD
-    $makehref = 2;
+    $settings{hrefform} = 2;
 }
 
 if ($automatic_output_filename) {
@@ -200,16 +252,16 @@
 # make it less ugly, and more robust.
 
 print OUT "%%% Modification of BibTeX style file ", ($infile eq '-' ? '<stdin>' : $infile), "\n";
-print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$myurl>\n";
-print OUT "%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,\n";
+print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$homepageurl> and repository <$repourl>\n";
+print OUT "%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,\n";
 print OUT "%%% and distributed under the terms of the LPPL; see README for discussion.\n";
 print OUT "%%%\n";
 print OUT "%%% Added webpage entry type, and url and lastchecked fields.\n";
-print OUT "%%% Added eprint support.\n"   if ($addeprints);
-print OUT "%%% Added DOI support.\n"      if ($adddoiresolver);
-print OUT "%%% Added PUBMED support.\n"   if ($addpubmedresolver);
-print OUT "%%% Added HyperTeX support.\n" if ($makehref == 1);
-print OUT "%%% Added hyperref support.\n" if ($makehref == 2);
+print OUT "%%% Added eprint support.\n"   if ($settings{addeprints});
+print OUT "%%% Added DOI support.\n"      if ($settings{adddoi});
+print OUT "%%% Added PUBMED support.\n"   if ($settings{addpubmed});
+print OUT "%%% Added HyperTeX support.\n" if ($settings{hrefform} == 1);
+print OUT "%%% Added hyperref support.\n" if ($settings{hrefform} == 2);
 print OUT "%%% Original headers follow...\n\n";
 
 $found{initconsts} = 0;
@@ -232,7 +284,7 @@
         print OUT;
         next;
     };
-    
+
     /^ *ENTRY/ && do {
 	# Work through the list of entry types, finding what ones are there.
 	# If we find a URL entry there already, object, since these edits
@@ -280,31 +332,26 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #$addeprints 'addeprints :=         % 0=no eprints; 1=include eprints
-  #$adddoiresolver 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #$addpubmedresolver 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #$makehref 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #$inlinelinks 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+EOD
 
-  % String constants, which you _might_ want to tweak.
-  "$literals{urlintro}" 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "$literals{online}" 'onlinestring := % indication that resource is online; typically "online"
-  "$literals{cited}" 'citedstring := % indicator of citation date; typically "cited "
-  "$literals{linktext}" 'linktextstring := % dummy link text; typically "[link]"
-  "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref
-  "$literals{eprintprefix}" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "$doiurl" 'doiurl := % prefix to make URL from DOI
-  "$literals{doiprefix}" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "$pubmedurl" 'pubmedurl := % prefix to make URL from PUBMED
-  "$literals{pubmedprefix}" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+      while (($k, $v) = each(%settings)) {
+          print OUT "  #$v '$k :=\t% $docstring{$k}\n";
+      }
 
+      print OUT "\n  % String constants, which you _might_ want to tweak.\n";
+      while (($k, $v) = each(%literals)) {
+          print OUT "  \"$v\" '$k :=\t% $docstring{$k}\n";
+      }
+
+      print OUT <<EOD;
+
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
   #0 'makeinlinelink :=     % state variable managed by possibly.setup.inlinelink
@@ -311,7 +358,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -346,21 +393,21 @@
     };
 
     /^ *FUNCTION *\{format.doi\}/ && do {
-        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$adddoiresolver)\n";
+        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$settings{adddoi})\n";
         $found{formatdoi} = 1;
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     };
 
     /^ *FUNCTION *\{format.eprint\}/ && do {
-        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$addeprints)\n";
+        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$settings{addeprints})\n";
         $found{formateprint} = 1;
-        $addeprints = 0;
+        $settings{addeprints} = 0;
     };
 
     /^ *FUNCTION *\{format.pubmed\}/ && do {
-        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$addpubmedresolver)\n";
+        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$settings{addpubmed})\n";
         $found{formatpubmed} = 1;
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     };
 
     /^ *FUNCTION *{output\.nonnull}/ && do {
@@ -469,8 +516,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -535,14 +582,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -583,7 +630,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -590,7 +637,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -636,13 +683,17 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 EOD
     output_replacement_function($found{formatdoi},
                                 'format.doi',
-                                'adddoiresolver',
+                                'adddoi',
                                 $formatdoifunction);
 
     $formatpubmedfunction = <<'EOD';
@@ -655,7 +706,7 @@
 EOD
     output_replacement_function($found{formatpubmed},
                                 'format.pubmed',
-                                'addpubmedresolver',
+                                'addpubmed',
                                 $formatpubmedfunction);
 
     print OUT <<'EOD';
@@ -666,10 +717,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -682,7 +733,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -694,11 +745,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -736,7 +787,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html
@@ -793,7 +844,7 @@
 %%% and disabled urlbst's version; proceed with some caution.
 EOD
 
-        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$$disabling_variable to zero.\nYou might want to edit the output file (search for $function_name).\n";
+        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$settings{$disabling_variable} to zero.\nYou might want to edit the output file (search for $function_name).\n";
 
         ($t = $function_definition_string) =~ s/\n/\n%%% /g;
         print OUT "%%% " . $t . "$mymarker\n";

Modified: trunk/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,7 +1,7 @@
-%%% Modification of BibTeX style file /usr/local/texlive/2019/texmf-dist/bibtex/bst/base/abbrv.bst
-%%% ... by urlbst, version 0.8 (marked with "% urlbst")
-%%% See <http://purl.org/nxg/dist/urlbst>
-%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+%%% Modification of BibTeX style file /usr/local/texlive/2022/texmf-dist/bibtex/bst/base/abbrv.bst
+%%% ... by urlbst, version 0.9 (marked with "% urlbst")
+%%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
+%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 %%% and distributed under the terms of the LPPL; see README for discussion.
 %%%
 %%% Added webpage entry type, and url and lastchecked fields.
@@ -61,30 +61,31 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #1 'addeprints :=         % 0=no eprints; 1=include eprints
-  #1 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #1 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #0 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+  #1 'addeprints :=	% 0=no eprints; 1=include eprints
+  #1 'adddoi :=	% 0=no DOI resolver; 1=include it
+  #2 'hrefform :=	% 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
+  #0 'doiform :=	% 0=with href; 1=with \doi{}
+  #1 'addpubmed :=	% 0=no PUBMED resolver; 1=include it
+  #0 'inlinelinks :=	% 0=URLs explicit; 1=URLs attached to titles
 
   % String constants, which you _might_ want to tweak.
-  "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "online" 'onlinestring := % indication that resource is online; typically "online"
-  "cited " 'citedstring := % indicator of citation date; typically "cited "
-  "[link]" 'linktextstring := % dummy link text; typically "[link]"
-  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
-  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "https://doi.org/" 'doiurl := % prefix to make URL from DOI
-  "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
-  "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+  "[link]" 'linktextstring :=	% anonymous link text
+  "cited " 'citedstring :=	% label in "lastchecked" remark
+  "online" 'onlinestring :=	% label that a resource is online
+  "doi:" 'doiprefix :=	% printed text to introduce DOI
+  "arXiv:" 'eprintprefix :=	% text prefix printed before eprint ref
+  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl :=	% prefix to make URL from PUBMED
+  "PMID:" 'pubmedprefix :=	% text prefix printed before PUBMED ref
+  "https://arxiv.org/abs/" 'eprinturl :=	% prefix to make URL from eprint ref
+  "https://doi.org/" 'doiurl :=	% prefix to make URL from DOI
+  "URL: " 'urlintro :=	% text prefix before URL
 
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
@@ -92,7 +93,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -152,8 +153,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -213,14 +214,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -716,7 +717,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -723,7 +724,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -760,7 +761,11 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 
@@ -778,10 +783,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -794,7 +799,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -806,11 +811,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -848,7 +853,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html

Modified: trunk/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,7 +1,7 @@
-%%% Modification of BibTeX style file /usr/local/texlive/2019/texmf-dist/bibtex/bst/base/alpha.bst
-%%% ... by urlbst, version 0.8 (marked with "% urlbst")
-%%% See <http://purl.org/nxg/dist/urlbst>
-%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+%%% Modification of BibTeX style file /usr/local/texlive/2022/texmf-dist/bibtex/bst/base/alpha.bst
+%%% ... by urlbst, version 0.9 (marked with "% urlbst")
+%%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
+%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 %%% and distributed under the terms of the LPPL; see README for discussion.
 %%%
 %%% Added webpage entry type, and url and lastchecked fields.
@@ -61,30 +61,31 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #1 'addeprints :=         % 0=no eprints; 1=include eprints
-  #1 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #1 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #0 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+  #1 'addeprints :=	% 0=no eprints; 1=include eprints
+  #2 'hrefform :=	% 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
+  #0 'inlinelinks :=	% 0=URLs explicit; 1=URLs attached to titles
+  #1 'adddoi :=	% 0=no DOI resolver; 1=include it
+  #0 'doiform :=	% 0=with href; 1=with \doi{}
+  #1 'addpubmed :=	% 0=no PUBMED resolver; 1=include it
 
   % String constants, which you _might_ want to tweak.
-  "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "online" 'onlinestring := % indication that resource is online; typically "online"
-  "cited " 'citedstring := % indicator of citation date; typically "cited "
-  "[link]" 'linktextstring := % dummy link text; typically "[link]"
-  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
-  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "https://doi.org/" 'doiurl := % prefix to make URL from DOI
-  "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
-  "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+  "cited " 'citedstring :=	% label in "lastchecked" remark
+  "URL: " 'urlintro :=	% text prefix before URL
+  "[link]" 'linktextstring :=	% anonymous link text
+  "arXiv:" 'eprintprefix :=	% text prefix printed before eprint ref
+  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl :=	% prefix to make URL from PUBMED
+  "PMID:" 'pubmedprefix :=	% text prefix printed before PUBMED ref
+  "online" 'onlinestring :=	% label that a resource is online
+  "https://arxiv.org/abs/" 'eprinturl :=	% prefix to make URL from eprint ref
+  "doi:" 'doiprefix :=	% printed text to introduce DOI
+  "https://doi.org/" 'doiurl :=	% prefix to make URL from DOI
 
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
@@ -92,7 +93,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -152,8 +153,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -213,14 +214,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -718,7 +719,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -725,7 +726,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -762,7 +763,11 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 
@@ -780,10 +785,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -796,7 +801,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -808,11 +813,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -850,7 +855,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html

Modified: trunk/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,7 +1,7 @@
-%%% Modification of BibTeX style file /usr/local/texlive/2019/texmf-dist/bibtex/bst/base/plain.bst
-%%% ... by urlbst, version 0.8 (marked with "% urlbst")
-%%% See <http://purl.org/nxg/dist/urlbst>
-%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+%%% Modification of BibTeX style file /usr/local/texlive/2022/texmf-dist/bibtex/bst/base/plain.bst
+%%% ... by urlbst, version 0.9 (marked with "% urlbst")
+%%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
+%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 %%% and distributed under the terms of the LPPL; see README for discussion.
 %%%
 %%% Added webpage entry type, and url and lastchecked fields.
@@ -61,30 +61,31 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #1 'addeprints :=         % 0=no eprints; 1=include eprints
-  #1 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #1 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #0 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+  #1 'addpubmed :=	% 0=no PUBMED resolver; 1=include it
+  #1 'addeprints :=	% 0=no eprints; 1=include eprints
+  #0 'inlinelinks :=	% 0=URLs explicit; 1=URLs attached to titles
+  #1 'adddoi :=	% 0=no DOI resolver; 1=include it
+  #2 'hrefform :=	% 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
+  #0 'doiform :=	% 0=with href; 1=with \doi{}
 
   % String constants, which you _might_ want to tweak.
-  "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "online" 'onlinestring := % indication that resource is online; typically "online"
-  "cited " 'citedstring := % indicator of citation date; typically "cited "
-  "[link]" 'linktextstring := % dummy link text; typically "[link]"
-  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
-  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "https://doi.org/" 'doiurl := % prefix to make URL from DOI
-  "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
-  "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+  "cited " 'citedstring :=	% label in "lastchecked" remark
+  "[link]" 'linktextstring :=	% anonymous link text
+  "https://arxiv.org/abs/" 'eprinturl :=	% prefix to make URL from eprint ref
+  "online" 'onlinestring :=	% label that a resource is online
+  "doi:" 'doiprefix :=	% printed text to introduce DOI
+  "https://doi.org/" 'doiurl :=	% prefix to make URL from DOI
+  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl :=	% prefix to make URL from PUBMED
+  "URL: " 'urlintro :=	% text prefix before URL
+  "PMID:" 'pubmedprefix :=	% text prefix printed before PUBMED ref
+  "arXiv:" 'eprintprefix :=	% text prefix printed before eprint ref
 
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
@@ -92,7 +93,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -152,8 +153,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -213,14 +214,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -716,7 +717,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -723,7 +724,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -760,7 +761,11 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 
@@ -778,10 +783,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -794,7 +799,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -806,11 +811,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -848,7 +853,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html

Modified: trunk/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,7 +1,7 @@
-%%% Modification of BibTeX style file /usr/local/texlive/2019/texmf-dist/bibtex/bst/base/unsrt.bst
-%%% ... by urlbst, version 0.8 (marked with "% urlbst")
-%%% See <http://purl.org/nxg/dist/urlbst>
-%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+%%% Modification of BibTeX style file /usr/local/texlive/2022/texmf-dist/bibtex/bst/base/unsrt.bst
+%%% ... by urlbst, version 0.9 (marked with "% urlbst")
+%%% See <https://purl.org/nxg/dist/urlbst> and repository <https://heptapod.host/nxg/urlbst>
+%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 %%% and distributed under the terms of the LPPL; see README for discussion.
 %%%
 %%% Added webpage entry type, and url and lastchecked fields.
@@ -61,30 +61,31 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #1 'addeprints :=         % 0=no eprints; 1=include eprints
-  #1 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #1 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #0 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+  #0 'inlinelinks :=	% 0=URLs explicit; 1=URLs attached to titles
+  #1 'adddoi :=	% 0=no DOI resolver; 1=include it
+  #0 'doiform :=	% 0=with href; 1=with \doi{}
+  #1 'addeprints :=	% 0=no eprints; 1=include eprints
+  #1 'addpubmed :=	% 0=no PUBMED resolver; 1=include it
+  #2 'hrefform :=	% 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs
 
   % String constants, which you _might_ want to tweak.
-  "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "online" 'onlinestring := % indication that resource is online; typically "online"
-  "cited " 'citedstring := % indicator of citation date; typically "cited "
-  "[link]" 'linktextstring := % dummy link text; typically "[link]"
-  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
-  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "https://doi.org/" 'doiurl := % prefix to make URL from DOI
-  "doi:" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED
-  "PMID:" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+  "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl :=	% prefix to make URL from PUBMED
+  "PMID:" 'pubmedprefix :=	% text prefix printed before PUBMED ref
+  "[link]" 'linktextstring :=	% anonymous link text
+  "online" 'onlinestring :=	% label that a resource is online
+  "https://doi.org/" 'doiurl :=	% prefix to make URL from DOI
+  "doi:" 'doiprefix :=	% printed text to introduce DOI
+  "URL: " 'urlintro :=	% text prefix before URL
+  "https://arxiv.org/abs/" 'eprinturl :=	% prefix to make URL from eprint ref
+  "cited " 'citedstring :=	% label in "lastchecked" remark
+  "arXiv:" 'eprintprefix :=	% text prefix printed before eprint ref
 
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
@@ -92,7 +93,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -152,8 +153,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -213,14 +214,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -715,7 +716,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -722,7 +723,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -759,7 +760,11 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 
@@ -777,10 +782,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -793,7 +798,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -805,11 +810,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -847,7 +852,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/README
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/README	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/README	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,15 +1,15 @@
 urlbst -- add @webpage entry and url/doi/eprint/pubmed fields to BibTeX
 =======================================================================
 
-Version 0.8, 2019 July 1.
+Version 0.9, 2022 December 1.
 
 The urlbst package consists of a Perl script which edits BibTeX style
 files (.bst) to add a `@webpage` entry type, and which adds a few new
-fields -- notably including 'url' -- to all other entry types.  The
+fields – notably including 'url' – to all other entry types.  The
 distribution includes preconverted versions of the four standard
 BibTeX .bst style files.
 
-It has a different goal from Patrick Daly's 'custom-bib' package --
+It has a different goal from Patrick Daly's 'custom-bib' package –
 that is intended to create a BibTeX style .bst file from scratch, and
 supports 'url' and 'eprint' fields.  This package, on the other hand,
 is intended for the case where you already have a style file that
@@ -19,10 +19,10 @@
 The added fields are:
 
   * 'url' and 'lastchecked', to associate a URL with a reference,
-    along with the date at which the URL was last checked to exist; 
+    along with the date at which the URL was last checked to exist;
   * 'doi', for a reference's DOI (see https://doi.org);
-  * 'eprint', for an arXiv eprint reference (see http://arxiv.org); and
-  * 'pubmed' for a reference's PubMed identifier (PMID, see http://pubmed.gov).
+  * 'eprint', for an arXiv eprint reference (see https://arxiv.org); and
+  * 'pubmed' for a reference's PubMed identifier (PMID, see https://pubmed.gov).
 
 Licences
 --------
@@ -30,7 +30,7 @@
 The copyright and licence position for the modified `.bst` files seems
 slightly muddy to me.  On the grounds that any licence is better than
 no licence, I therefore assert that the _modifications_ which the
-`urlbst` program makes to these files are copyright 2002-03, 2005-12, 2014, 2019,
+`urlbst` program makes to these files are copyright 2002-03, 2005-12, 2014, 2019, 2022,
 Norman Gray, and that these modifications are available for
 distribution under the terms of the LaTeX Project Public Licence.
 
@@ -50,4 +50,4 @@
 
 
 Norman Gray  
-http://nxg.me.uk
+https://nxg.me.uk

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/VERSION
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/VERSION	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/VERSION	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1 +1 @@
-urlbst-0.8
+urlbst-0.9

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.bib
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.bib	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.bib	2022-12-04 21:05:53 UTC (rev 65190)
@@ -57,7 +57,7 @@
 }
 
 @Webpage{texfaq,
-  url =          {http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL},
+  url =          {https://texfaq.org/FAQ-citeURL},
   title =        {{UK \TeX\ FAQ: URLs in BibTeX bibliographies}},
   key =          {UK TeX FAQ},
   editor =       {Robin Fairbairns},
@@ -68,7 +68,7 @@
 
 
 @Webpage{url:daly,
-  url =          {http://www.tex.ac.uk/tex-archive/macros/latex/contrib/custom-bib/},
+  url =          {https://ctan.org/pkg/custom-bib},
   title =        {Index of custom-bib},
   author =       {Patrick W Daly},
   year =         2003,

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.html
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.html	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.html	2022-12-04 21:05:53 UTC (rev 65190)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Urlbst</title>
-<link href="http://nxg.me.uk/" rev="author"/>
+<link href="https://nxg.me.uk/" rev="author"/>
 <link type="text/css" rel="stylesheet" href="/style/base.css"/>
 </head>
 
@@ -17,11 +17,14 @@
 hypertex/hyperref support.</p>
 
 <p>The Persistent URL for this page is
-<code>http://purl.org/nxg/dist/urlbst</code>.
-The code (and bugparade) is on
-<a href='https://bitbucket.org/nxg/urlbst/'>bitbucket.org</a>.</p>
+<code>https://purl.org/nxg/dist/urlbst</code>
+– <strong>please quote this rather than the URL it redirects to</strong>.
+It is on CTAN at
+<a href='https://ctan.org/pkg/urlbst'><code>https://ctan.org/pkg/urlbst</code></a>.
+The code (and bugparade) is
+<a href='https://heptapod.host/nxg/urlbst'>online</a>.</p>
 
-<p>Version 0.8, 2019 July 1.</p>
+<p>Version 0.9, 2022 December 1.</p>
 </div>
 
 <p>Contents</p>
@@ -54,9 +57,7 @@
 
 <h2><a name='usage'>Usage</a></h2>
 <pre>
-urlbst [--[no]eprint] [--[no]doi] [--[no]pubmed]
-           [--inlinelinks] [--nohyperlinks] [--hypertex] [--hyperref]
-           [--literal key=value]
+urlbst [--literal key=value] [--setting key=value]
            [input-file [output-file]]
 </pre>
 <p>If either the input-file or the output-file is omitted, they
@@ -63,10 +64,17 @@
 default to stdin and stdout respectively.  If the input file already
 has a URL entry type, then the script objects.
 By default (in the current version), the output
-includes support for eprint, doi and pubmed, but these can be disabled
-by <code>--noeprint</code>, <code>--nodoi</code> and
-<code>--nopubmed</code>, respectively.</p>
+includes support for eprint, doi and pubmed.</p>
 
+<p>The support in the generated <code>.bst</code> file can be adjusted
+with the options <code>--setting</code> and <code>--literal</code>;
+see <code>--setting help</code> and <code>--literal help</code> for
+the available switches.  The options <code>--[no]eprint</code>,
+<code>--[no]doi</code>, <code>--[no]pubmed</code>,
+<code>--inlinelinks</code>, <code>--nohyperlinks</code>,
+<code>--hypertex</code> and <code>--hyperref</code> are shortcuts for
+some of these settings.
+
 <p>The added fields are:</p>
 <ul>
 <li><code>url</code> and <code>lastchecked</code>, to associate a URL with
@@ -78,27 +86,26 @@
   <a href='http://pubmed.gov'>PubMed</a> identifier (PMID).</li>
 </ul>
 
-<p>If either of the <code>--hypertex</code> or <code>--hyperref</code>
-options is present, then the generated <code>.bst</code> file includes
+<p>If setting <code>hrefform</code> is 1 or 2, then the generated
+<code>.bst</code> file includes
 support for hyperlinks in the generated eprint entries in the
 bibliography, with the format being either HyperTeX (see <a
 href="http://arxiv.org/hypertex/#implementation" >arXiv, again</a>),
 supported by xdvi, dvips and others, or using the support available
-from the hyperref package.  These options have no effect unless one of
-the <code>--eprint</code> or <code>--doi</code> options is given: when
+from the hyperref package.  When
 URLs are included in the bibliography, they are written out using the
 <code>\url{...}</code> command, and hyperref automatically processes
 that in the correct way to include a hyperlink.</p>
 
-<p>The <code>--inlinelinks</code> option tells urlbst not to write out
-the URL as text within the bibliography entry.  Instead, urlbst will
-produce a more conventional-looking and compact bibliography entry,
-but the entry's title will now be a hyperlink to that URL.  This
-hyperlink may be useful to anyone who reads your document online
-(this option can only be used with <code>--hyperref</code> or
-<code>--hypertex</code>).  Any DOI or eprint text which would be
-produced as a result of the appropriate option will still appear in
-this mode.</p>
+<p>The setting <code>inlinelinks</code> (option
+<code>--inlinelinks</code>) tells urlbst not to write out the URL as
+text within the bibliography entry.  Instead, urlbst will produce a
+more conventional-looking and compact bibliography entry, but the
+entry's title will now be a hyperlink to that URL.  This hyperlink may
+be useful to anyone who reads your document online (this option can
+only be used with <code>hrefform</code> 1 or 2.  Any DOI or eprint
+text which would be produced as a result of the appropriate option
+will still appear in this mode.</p>
 
 <p>You may adjust various literal strings, either for the purposes of
 internationalisation, or simply because you prefer different text.  To
@@ -108,18 +115,30 @@
 The possible values, and their defaults, are below (say
 <code>--literal help</code> to get this list printed out):</p>
 <table>
-<tr><th>keyword</th><th>default</th><th>meaning</th></tr>
-<tr><td>cited</td><td>cited</td><td>indicator of citation, or "last checked", date</td></tr>
-<tr><td>doiprefix</td><td>doi:</td><td>text printed before DOI</td></tr>
-<tr><td>eprintprefix</td><td>arXiv:</td><td>text printed before eprint
-ref</td></tr>
-<tr><td>linktext</td><td>[link]</td><td>fallback link text</td></tr>
-<tr><td>pubmedprefix</td><td>PMID:</td><td>text printed before PUBMED reference</td></tr>
-<tr><td>online</td><td>online</td><td>indication that resource is online</td></tr>
-<tr><td>urlintro</td><td>URL:</td><td>location of online resource (an
-alternative is "Available from:")</td></tr>
+<tr><th>literal</th><th>description</th><th>default</th></tr>
+<tr><td>urlintro</td><td>prefix before URL; typically "Available from:" or "URL:"</td><td>URL: </td></tr>
+<tr><td>pubmedprefix</td><td>text prefix printed before PUBMED ref</td><td>PMID:</td></tr>
+<tr><td>pubmedurl</td><td>prefix to make URL from PUBMED</td><td>http://www.ncbi.nlm.nih.gov/pubmed/</td></tr>
+<tr><td>eprintprefix</td><td>text prefix printed before eprint ref</td><td>arXiv:</td></tr>
+<tr><td>linktextstring</td><td>anonymous link text</td><td>[link]</td></tr>
+<tr><td>citedstring</td><td>label that something is cited by something else</td><td>cited </td></tr>
+<tr><td>eprinturl</td><td>prefix to make URL from eprint ref</td><td>http://arxiv.org/abs/</td></tr>
+<tr><td>doiurl</td><td>prefix to make URL from DOI</td><td>https://doi.org/</td></tr>
+<tr><td>doiprefix</td><td>printed text to introduce DOI</td><td>doi:</td></tr>
+<tr><td>onlinestring</td><td>label that a resource is online</td><td>online</td></tr>
 </table>
 
+<p>The list of settings (<code>--setting help</code>) is:</p>
+<table>
+<tr><th>setting</th><th>description</th><th>default</th></tr>
+<tr><td>inlinelinks</td><td>0=URLs explicit; 1=URLs attached to titles</td><td>0</td></tr>
+<tr><td>addpubmed</td><td>0=no PUBMED resolver; 1=include it</td><td>1</td></tr>
+<tr><td>addeprints</td><td>0=no eprints; 1=include eprints</td><td>1</td></tr>
+<tr><td>hrefform</td><td>0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs</td><td>0</td></tr>
+<tr><td>adddoi</td><td>0=no DOI resolver; 1=include it</td><td>1</td></tr>
+<tr><td>doiform</td><td>0=with href; 1=with \doi{}</td><td>0</td></tr>
+</table>
+
 <p>The distribution includes preconverted versions of the four
 standard BibTeX .bst style files.</p>
 
@@ -182,17 +201,16 @@
 
 <p>There is more general discussion of including URLs in
 bibliographies in the <a
-href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL" >UK TeX
-FAQ</a>.</p>
+href="https://texfaq.org/FAQ-citeURL" >TeX FAQ</a>.</p>
 
 <h2><a name='download'>Download and installation</a></h2>
 
 <p>Download the file as a
-<a href="urlbst-0.8.tar.gz" >tarball</a>
+<a href="urlbst-0.9.tar.gz" >tarball</a>
 or
-<a href="urlbst-0.8.zip" >zip file</a>
-and unpack it.  Or you can clone the source repository at
-<a href='http://bitbucket.org/nxg/urlbst/'>bitbucket.org</a>.</p>
+<a href="urlbst-0.9.zip" >zip file</a>
+and unpack it.  Or you can clone the source repository
+<a href='https://heptapod.host/nxg/urlbst'>online</a>.</p>
 
 <p>To install, you should simply copy the distributed
 <code>urlbst</code> script to someplace on the path (such as
@@ -209,9 +227,9 @@
 <code>mktexlsr</code> or its equivalent, to update LaTeX's filename
 cache.  For further hints here, see
 the TeX FAQ entries on <a
-href='http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages'
+href='https://texfaq.org/#installing'
 >installing a package</a> and <a
-href='http://www.tex.ac.uk/cgi-bin/texfaq2html?label=wherefiles'
+href='https://texfaq.org/FAQ-inst-wlcf'
 >where LaTeX puts files</a>.</p>
 
 <p>That should be all you have to do.</p>
@@ -297,7 +315,7 @@
 <p>The copyright and licence position for the modified <code>.bst</code> files seems
 slightly muddy to me.  On the grounds that any licence is better than
 no licence, I therefore assert that the <em>modifications</em> which the
-<code>urlbst</code> program makes to these files are copyright 2002-03, 2005-12, 2014, 2019,
+<code>urlbst</code> program makes to these files are copyright 2002-03, 2005-12, 2014, 2019, 2022,
 Norman Gray, and that these modifications are available for
 distribution under the terms of the LaTeX Project Public Licence.</p>
 
@@ -318,18 +336,17 @@
 
 <h2><a name='information'>Further Information and acknowledgements</a></h2>
 
-<p><code>urlbst</code> is archived <a
-href='https://ctan.org/pkg/urlbst'
->on CTAN</a>, and discussed in the
-<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL" >TeX
-FAQ</a>.</p>
+<p><code>urlbst</code> is archived <a href='https://ctan.org/pkg/urlbst' >on CTAN</a>,
+and discussed in the
+<a href="https://texfaq.org/FAQ-citeURL" >TeX FAQ</a>.</p>
 
-<p>The source code for the package is maintained at
-<a href='http://bitbucket.org/nxg/urlbst/'>bitbucket.org</a>,
+<p>The source code for the package is maintained
+<a href='https://heptapod.host/nxg/urlbst'>online</a>.
+<!--
 which also includes an issue tracker, where you can report bugs (or
-just mail me).</p>
+just mail me).--></p>
 
-<p>The <a href="http://purl.org/nxg/dist/urlbst"
+<p>The <a href="https://purl.org/nxg/dist/urlbst"
 >home page of urlbst</a> might possibly have more recent versions than the
 one you're looking at now.</p>
 
@@ -348,6 +365,20 @@
 references.</p>
 
 <dl>
+<dt><strong>0.9, 2022 December 1</strong></dt>
+<dd><ul>
+  <li>Changed repository location to <a href='https://heptapod.host/nxg/urlbst'>heptapod</a>
+  (when Bitbucket dropped support for Mercurial).
+  The issue links below, pointing to Bitbucket, will therefore no
+  longer work.</li>
+  <li>Refactoring of the mechanism for configuring the generated
+  <code>.bst</code> file, specifically adding the
+  <code>--setting</code> option.</li>
+  <li>Added the <code>doiform</code> setting to generate DOIs wrapped
+  in <code>\doi{...}</code>.</li>
+</ul>
+</dd>
+
 <dt><strong>0.8, 2019 July 1</strong></dt>
 <dd><ul>
 <li>The presence of a preexisting <code>format.doi</code>,
@@ -365,8 +396,9 @@
 </dd>
 
 <dt>0.7, 2011 July 20</dt>
-<dd>Add <code>--nodoi</code>, <code>--noeprints</code> and <code>--nopubmed</code> options (which defaulted
-on, and couldn't otherwise be turned off)</dd>
+<dd>Add <code>--nodoi</code>, <code>--noeprints</code> and
+<code>--nopubmed</code> options (which defaulted on, and couldn't
+otherwise be turned off)</dd>
 
 <dt>0.7b1, 2011 March 17</dt>
 <dd>Allow parameterisation of literal strings, with option <code>--literal</code>.</dd>
@@ -449,13 +481,13 @@
 </dl>
 </div>
 
-<p>Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray.  Released under the terms of the GNU
+<p>Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray.  Released under the terms of the GNU
 General Public Licence.</p>
 
 <div class="signature">
-<a href="http://nxg.me.uk"
+<a href="https://nxg.me.uk"
 	>Norman Gray</a><br/>
-2019 July 1
+2022 December 1
 </div>
 
 </body>

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.in
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.in	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.in	2022-12-04 21:05:53 UTC (rev 65190)
@@ -6,9 +6,9 @@
 # If either input-file or output-file is omitted, they are replaced by
 # stdin or stdout respectively.
 #
-# See http://purl.org/nxg/dist/urlbst for documentation
+# See https://purl.org/nxg/dist/urlbst for documentation
 #
-# Copyright @COPYRIGHTYEARS@, Norman Gray <http://nxg.me.uk>
+# Copyright @COPYRIGHTYEARS@, Norman Gray <https://nxg.me.uk>
 #
 # This program is distributed under the terms of the
 # GNU General Public Licence, v2.0.
@@ -17,38 +17,61 @@
 # See the package README for further dicussion of licences.
 
 $version = '@PACKAGE_VERSION@';
+$releasedate = '@RELEASEDATE@';
 ($progname = $0) =~ s/.*\///;
 $mymarker = "% $progname";
 $mymarkerend = "% ...$progname to here";
-$myurl = 'http://purl.org/nxg/dist/urlbst';
+$homepageurl = 'https://purl.org/nxg/dist/urlbst';
+$repourl = '@REPOURL@';
 
-
 $infile = '-';
 $outfile = '-';
 
-$addeprints = @WITHEPRINTS@;     # if true (nonzero) we add support for eprints
+# eprint support
+$settings{addeprints} = @WITHEPRINTS@;
+$docstring{addeprints} = '0=no eprints; 1=include eprints';
 $literals{eprintprefix} = 'arXiv:';	# make these settable with --eprint? syntax?
-$eprinturl = '@EPRINTURL@';
+$docstring{eprintprefix} = "text prefix printed before eprint ref";
+$literals{eprinturl} = '@EPRINTURL@';
+$docstring{eprinturl} = 'prefix to make URL from eprint ref';
 
-$adddoiresolver = @WITHDOIRESOLVER@;
+# DOI resolver
+$settings{adddoi} = @WITHDOIRESOLVER@;
+$docstring{adddoi} = '0=no DOI resolver; 1=include it';
 $literals{doiprefix} = 'doi:';
-$doiurl = '@DOIURL@';
+$docstring{doiprefix} = 'printed text to introduce DOI';
+$literals{doiurl} = '@DOIURL@';
+$docstring{doiurl} = 'prefix to make URL from DOI';
+$settings{doiform} = 0;
+$docstring{doiform} = '0=with href; 1=with \\doi{}';
 
-$addpubmedresolver = @WITHPUBMEDRESOLVER@;
+# PUBMED resolver
+$settings{addpubmed} = @WITHPUBMEDRESOLVER@;
+$docstring{addpubmed} = '0=no PUBMED resolver; 1=include it';
 $literals{pubmedprefix} = 'PMID:';
-$pubmedurl = '@PUBMEDURL@';
+$docstring{pubmedprefix} = 'text prefix printed before PUBMED ref';
+$literals{pubmedurl} = '@PUBMEDURL@';
+$docstring{pubmedurl} = 'prefix to make URL from PUBMED';
 
-$makehref = @WITHHREF@;
+# how do we make hypterlinks
+$settings{hrefform} = @WITHHREF@;
+$docstring{hrefform} = '0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs';
 $literals{urlintro} = "URL: ";
-$inlinelinks = 0;
+$docstring{urlintro} = 'text prefix before URL';
+$settings{inlinelinks} = 0;
+$docstring{inlinelinks} = '0=URLs explicit; 1=URLs attached to titles';
 
-$literals{online} = "online";
-$literals{cited} = "cited ";
-$literals{linktext} = "[link]";
+# other text
+$literals{onlinestring} = "online";
+$docstring{onlinestring} = 'label that a resource is online';
+$literals{citedstring} = "cited ";
+$docstring{citedstring} = 'label in "lastchecked" remark';
+$literals{linktextstring} = "[link]";
+$docstring{linktextstring} = 'anonymous link text';
 
 $automatic_output_filename = 0;
 
-$Usage = "$progname [--eprint] [--doi] [--pubmed]\n    [--nohyperlinks] [--[no]inlinelinks] [--hypertex] [--hyperref]\n    [--literal key=value]\n    [--help] [input-file [output-file]]";
+$Usage = "$progname [--literal key=value]\n    [--setting key=value]\n    [--help] [input-file [output-file]]";
 
 # Magic environment variable: if this is set, then we're being called from a Platypus wrapper
 # See http://www.sveinbjorn.org/platypus
@@ -58,27 +81,29 @@
 
 while ($#ARGV >= 0) {
     if ($ARGV[0] eq '--eprint') {
-	$addeprints = 1;
+	$settings{addeprints} = 1;
     } elsif ($ARGV[0] eq '--noeprint') {
-	$addeprints = 0;
+	$settings{addeprints} = 0;
     } elsif ($ARGV[0] eq '--doi') {
-        $adddoiresolver = 1;
+        $settings{adddoi} = 1;
     } elsif ($ARGV[0] eq '--nodoi') {
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     } elsif ($ARGV[0] eq '--pubmed') {
-        $addpubmedresolver = 1;
+        $settings{addpubmed} = 1;
     } elsif ($ARGV[0] eq '--nopubmed') {
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     } elsif ($ARGV[0] eq '--nohyperlinks') {
-        $makehref = 0;
+        $settings{hrefform} = 0;
+    } elsif ($ARGV[0] eq '--hyperlinks') {
+        $settings{hrefform} = 1; # redundant with --hypertex, for consistency
     } elsif ($ARGV[0] eq '--hypertex') {
-	$makehref = 1;
+	$settings{hrefform} = 1;
     } elsif ($ARGV[0] eq '--hyperref') {
-	$makehref = 2;
+	$settings{hrefform} = 2;
     } elsif ($ARGV[0] eq '--inlinelinks') {
-        $inlinelinks = 1;
+        $settings{inlinelinks} = 1;
     } elsif ($ARGV[0] eq '--noinlinelinks') {
-        $inlinelinks = 0;
+        $settings{inlinelinks} = 0;
     } elsif ($ARGV[0] eq '--automatic-output') {
         $automatic_output_filename = 1;
     } elsif ($ARGV[0] eq '--literal') {
@@ -93,16 +118,42 @@
             $showstrings = 1;
         }
         if ($showstrings) {
-            print "    Possible literal strings (and defaults) are...\n";
+            print "Possible literal strings (and defaults) are...\n";
             while (($k, $v) = each (%literals)) {
-                print "        $k ($v)\n";
+                print "  $k  \t$docstring{$k} [$v]\n";
             }
             exit(0);
         }
+    } elsif ($ARGV[0] eq '--setting') {
+        shift;
+        my $showstrings = 0;
+        if ((($k, $v) = ($ARGV[0] =~ /^(\w+)=(.*)/)) && exists $settings{$k}) {
+            $settings{$k} = $v;
+        } elsif ($ARGV[0] eq 'help') {
+            $showstrings = 1;
+        } else {
+            print "No setting found in $ARGV[0]; ignoring that\n";
+            $showstrings = 1;
+        }
+        if ($showstrings) {
+            print "Possible settings (and defaults) are...\n";
+            while (($k, $v) = each (%settings)) {
+                print "  $k  \t$docstring{$k} [$v]\n";
+            }
+            exit(0);
+        }
     } elsif ($ARGV[0] eq '--help') {
         print <<EOD;
-urlbst version $version
-    Usage: $Usage
+urlbst version $version, $releasedate
+Usage: $Usage
+
+    Options:
+      --literal key=value set one of the literal strings
+                          (see `--literal help' for possibilities)
+      --setting key=value (as --literal)
+      --help              print this help
+
+    Convenience options (can also be controlled using --setting):
       --[no]eprint        include support for `eprint' fields
       --[no]doi           include support for `doi' field
       --[no]pubmed        include support for `pubmed' field
@@ -111,18 +162,19 @@
       --hypertex          include HyperTeX-style hyperlink support
       --hyperref          include {hyperref}-style hyperlink support
                           (generally better)
-      --literal key=value set one of the literal strings
-                          (see `--literal help' for possibilities)
-      --help              print this help
+
     Input and output files may be given as `-' (default) to indicate stdin/out.
 
+    Homepage:     $homepageurl
+    Repository:   $repourl
+
 EOD
         printf("    Defaults:\n");
-        printf("      eprint refs    %s\n", ($addeprints ? "included" : "not included"));
-        printf("      DOIs           %s\n", ($adddoiresolver ? "included" : "not included"));
-        printf("      PUBMED refs    %s\n", ($addpubmedresolver ? "included" : "not included"));
-        printf("      hyperlinks     %s\n", ($makehref==0 ? "none" : $makehref==1 ? "hypertex" : "hyperref"));
-        printf("      inline links   %s\n", ($inlinelinks ? "included" : "not included"));
+        printf("      eprint refs    %s\n", ($settings{addeprints} ? "included" : "not included"));
+        printf("      DOIs           %s\n", ($settings{adddoi} ? "included" : "not included"));
+        printf("      PUBMED refs    %s\n", ($settings{addpubmed} ? "included" : "not included"));
+        printf("      hyperlinks     %s\n", ($settings{hrefform}==0 ? "none" : $settings{hrefform}==1 ? "hypertex" : "hyperref"));
+        printf("      inline links   %s\n", ($settings{inlinelinks} ? "included" : "not included"));
         exit(0);
     } elsif ($ARGV[0] =~ /^-/) {
         die "Unrecognised option $ARGV[0]: Usage: $Usage\n";
@@ -136,13 +188,13 @@
     shift(@ARGV);
 }
 
-if ($inlinelinks && $makehref == 0) {
+if ($settings{inlinelinks} && $settings{hrefform} == 0) {
     print <<'EOD';
 Warning: --inlinelinks and --nohyperlinks were both specified (possibly
     implicitly).  That combination makes no sense, so I'll ignore
     --nohyperlinks and use --hyperref instead
 EOD
-    $makehref = 2;
+    $settings{hrefform} = 2;
 }
 
 if ($automatic_output_filename) {
@@ -200,16 +252,16 @@
 # make it less ugly, and more robust.
 
 print OUT "%%% Modification of BibTeX style file ", ($infile eq '-' ? '<stdin>' : $infile), "\n";
-print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$myurl>\n";
+print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$homepageurl> and repository <$repourl>\n";
 print OUT "%%% Modifications Copyright @COPYRIGHTYEARS@, Norman Gray,\n";
 print OUT "%%% and distributed under the terms of the LPPL; see README for discussion.\n";
 print OUT "%%%\n";
 print OUT "%%% Added webpage entry type, and url and lastchecked fields.\n";
-print OUT "%%% Added eprint support.\n"   if ($addeprints);
-print OUT "%%% Added DOI support.\n"      if ($adddoiresolver);
-print OUT "%%% Added PUBMED support.\n"   if ($addpubmedresolver);
-print OUT "%%% Added HyperTeX support.\n" if ($makehref == 1);
-print OUT "%%% Added hyperref support.\n" if ($makehref == 2);
+print OUT "%%% Added eprint support.\n"   if ($settings{addeprints});
+print OUT "%%% Added DOI support.\n"      if ($settings{adddoi});
+print OUT "%%% Added PUBMED support.\n"   if ($settings{addpubmed});
+print OUT "%%% Added HyperTeX support.\n" if ($settings{hrefform} == 1);
+print OUT "%%% Added hyperref support.\n" if ($settings{hrefform} == 2);
 print OUT "%%% Original headers follow...\n\n";
 
 $found{initconsts} = 0;
@@ -232,7 +284,7 @@
         print OUT;
         next;
     };
-    
+
     /^ *ENTRY/ && do {
 	# Work through the list of entry types, finding what ones are there.
 	# If we find a URL entry there already, object, since these edits
@@ -280,31 +332,26 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #$addeprints 'addeprints :=         % 0=no eprints; 1=include eprints
-  #$adddoiresolver 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #$addpubmedresolver 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #$makehref 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #$inlinelinks 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+EOD
 
-  % String constants, which you _might_ want to tweak.
-  "$literals{urlintro}" 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "$literals{online}" 'onlinestring := % indication that resource is online; typically "online"
-  "$literals{cited}" 'citedstring := % indicator of citation date; typically "cited "
-  "$literals{linktext}" 'linktextstring := % dummy link text; typically "[link]"
-  "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref
-  "$literals{eprintprefix}" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "$doiurl" 'doiurl := % prefix to make URL from DOI
-  "$literals{doiprefix}" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "$pubmedurl" 'pubmedurl := % prefix to make URL from PUBMED
-  "$literals{pubmedprefix}" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+      while (($k, $v) = each(%settings)) {
+          print OUT "  #$v '$k :=\t% $docstring{$k}\n";
+      }
 
+      print OUT "\n  % String constants, which you _might_ want to tweak.\n";
+      while (($k, $v) = each(%literals)) {
+          print OUT "  \"$v\" '$k :=\t% $docstring{$k}\n";
+      }
+
+      print OUT <<EOD;
+
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
   #0 'makeinlinelink :=     % state variable managed by possibly.setup.inlinelink
@@ -311,7 +358,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -346,21 +393,21 @@
     };
 
     /^ *FUNCTION *\{format.doi\}/ && do {
-        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$adddoiresolver)\n";
+        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$settings{adddoi})\n";
         $found{formatdoi} = 1;
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     };
 
     /^ *FUNCTION *\{format.eprint\}/ && do {
-        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$addeprints)\n";
+        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$settings{addeprints})\n";
         $found{formateprint} = 1;
-        $addeprints = 0;
+        $settings{addeprints} = 0;
     };
 
     /^ *FUNCTION *\{format.pubmed\}/ && do {
-        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$addpubmedresolver)\n";
+        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$settings{addpubmed})\n";
         $found{formatpubmed} = 1;
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     };
 
     /^ *FUNCTION *{output\.nonnull}/ && do {
@@ -469,8 +516,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -535,14 +582,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -583,7 +630,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -590,7 +637,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -636,13 +683,17 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 EOD
     output_replacement_function($found{formatdoi},
                                 'format.doi',
-                                'adddoiresolver',
+                                'adddoi',
                                 $formatdoifunction);
 
     $formatpubmedfunction = <<'EOD';
@@ -655,7 +706,7 @@
 EOD
     output_replacement_function($found{formatpubmed},
                                 'format.pubmed',
-                                'addpubmedresolver',
+                                'addpubmed',
                                 $formatpubmedfunction);
 
     print OUT <<'EOD';
@@ -666,10 +717,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -682,7 +733,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -694,11 +745,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -736,7 +787,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html
@@ -793,7 +844,7 @@
 %%% and disabled urlbst's version; proceed with some caution.
 EOD
 
-        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$$disabling_variable to zero.\nYou might want to edit the output file (search for $function_name).\n";
+        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$settings{$disabling_variable} to zero.\nYou might want to edit the output file (search for $function_name).\n";
 
         ($t = $function_definition_string) =~ s/\n/\n%%% /g;
         print OUT "%%% " . $t . "$mymarker\n";

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.tex
===================================================================
--- trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.tex	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/doc/bibtex/urlbst/urlbst.tex	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,8 +1,8 @@
 \documentclass[a4paper]{article}
 
 \title{The \texttt{urlbst} package}
-\author{Norman Gray\\\texttt{<http://nxg.me.uk>}}
-\date{Version 0.8, 2019 July 1}
+\author{Norman Gray\\\texttt{<https://nxg.me.uk>}}
+\date{Version 0.9, 2022 December 1}
 
 %\usepackage{times}
 \usepackage{url}
@@ -54,15 +54,21 @@
 \item \btfield{doi}, for a reference's DOI
   (see \url{https://doi.org});
 \item \btfield{eprint}, for an arXiv eprint reference
-  (see \url{http://arxiv.org}); and
+  (see \url{https://arxiv.org}); and
 \item \btfield{pubmed} for a reference's PubMed identifier
   (\textsc{PMID}, see \url{http://pubmed.gov}).
 \end{itemize}
 
-Usage is simple:
+The script's home page is \url{https://purl.org/nxg/dist/urlbst}
+(\textbf{please quote this rather than the URL it redirects to}).
+It is on CTAN at \url{https://ctan.org/pkg/urlbst}.
+The code repository is at \url{https://heptapod.host/nxg/urlbst}.
+
+
+\section{Usage}
+Command line:
 \begin{verbatim}
-% urlbst [--eprint] [--doi] [--pubmed]
-    [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref]
+% urlbst [--setting key=value] [--literal key=value]
     [input-file [output-file]]
 \end{verbatim}
 where the |input-file| is an existing |.bst| file, and
@@ -69,6 +75,62 @@
 the |output-file| is the name of the new style file to be
 created.  If either file name is missing, the default is the
 standard input or standard output respectively.
+
+There are a number of settings which can be applied on the
+command-line, to adjust the support in the generated style file.  See
+the following tables for the (current) list, and \texttt{urlbst --setting help}
+and \texttt{urlbst --literal help}.  Some of these can be alternately
+set with particular options as shown in Table~\ref{t:options}.  Each
+of these options sets a flag in the generated \texttt{.bst} file, but
+you should feel free to adjust/hack these flags by editing the generated
+file (for example |#0 'adddoi :=| will disable generation of DOI
+links; don't blame me for the eccentric \texttt{.bst} syntax).
+
+\begin{table}
+  \begin{tabular}{lll}
+    setting&description&default\\
+    \hline
+inlinelinks & 0=URLs explicit; 1=URLs attached to titles & 0\\
+addpubmed & 0=no PUBMED resolver; 1=include it & 1\\
+addeprints & 0=no eprints; 1=include eprints & 1\\
+hrefform & 0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs & 0\\
+adddoi & 0=no DOI resolver; 1=include it & 1\\
+doiform & 0=with href; 1=with |\doi{}| & 0\\
+  \end{tabular}
+  \caption{Defined settings}
+\end{table}
+\begin{table}
+  \begin{tabular}{lll}
+    literal&description&default\\
+    \hline
+urlintro & prefix before URL & URL: \\
+pubmedprefix & prefix before PUBMED ref & PMID:\\
+pubmedurl & prefix to make URL from PMID \\
+  && \multicolumn1r{\llap{http://www.ncbi.nlm.nih.gov/pubmed/}}\\
+eprintprefix & prefix printed before eprint ref & arXiv:\\
+linktextstring & anonymous link text & [link]\\
+citedstring & label in `lastchecked' remark & cited \\
+eprinturl & prefix to make URL from eprint ref & https://arxiv.org/abs/\\
+doiurl & prefix to make URL from DOI & https://doi.org/\\
+doiprefix & printed text to introduce DOI & doi:\\
+onlinestring & label that a resource is online & online\\
+  \end{tabular}
+\caption{Literal strings for inclusion in the generated file}
+\end{table}
+
+\begin{table}
+  \begin{tabular}{ll}
+    option & setting\\
+    \hline
+    \texttt{--[no]eprint} & addeprints\\
+    \texttt{--[no]doi} & adddoi\\
+    \texttt{--nohyperlinks} & hrefform=0\\
+    \texttt{--hyper[tex/ref]} & hrefform=1/2\\
+    \texttt{--inlinelinks} & inlinelinks\\
+  \end{tabular}
+  \caption{Backward-compatibility options\label{t:options}}
+\end{table}
+
 For example:
 \begin{verbatim}
 % urlbst --eprint bibstyle.bst
@@ -78,39 +140,36 @@
 screen, so it would more useful if you were to either redirect this to
 a file or supply the output-file argument).
 
-If the option |--eprint| is present, then we switch on support for
-\texttt{eprint} fields in the modified .bst file, with a citation
+If the setting \texttt{addeprint} is true (ie, 1), then we switch on support for
+\btfield{eprint} fields in the modified .bst file, with a citation
 format matching that recommended in
-\url{http://arxiv.org/help/faq/references}.  If the option
-|--doi| is present, we include support for a |doi| field, referring
+\url{https://arxiv.org/help/faq/references}.  If the option
+\texttt{adddoi} is true, we include support for a \btfield{doi} field, referring
 to a Digital Object Identifier (DOI) as standardised by
-\url{http://www.doi.org/}.  And if |--pubmed| is present, we include
-support for a |pubmed| field, referring to a PubMed identifier as
+\url{https://doi.org/}.  And if \texttt{addpubmed} is true, we include
+support for a \btfield{pubmed} field, referring to a PubMed identifier as
 supported at \url{http://www.pubmed.gov}.
 
-If either of the |--hypertex| or |--hyperref| options is present, then
-the generated .bst file includes support for hyperlinks in the
-generated eprint entries in the bibliography, with the format being
-either Hyper\TeX\ (see
-\url{http://arxiv.org/hypertex/#implementation}), supported by xdvi,
-dvips and others, or using the support available from the
-\package{hyperref} package.  These options have no effect unless one
-of the |--eprint|, |--doi|, |--pubmed| or |--inlinelinks| options is given:
-when URLs are included
-in the bibliography, they are written out using the |\url{...}|
-command.  The \package{hyperref} support is more generic, and more
-generally supported, and so you should choose this unless you have a
-particular need for the Hyper\TeX\ support.  The |--nohyperlinks|
-option, which is present by default, suppresses all hyperlinking.
+The genereated .bst file may include support for hyperlinks where
+appropriate, in the generated entries in the bibliography.  If the
+\texttt{hrefform} setting is zero, this is suppressed, and it if is~1
+or~2, the support is include using Hyper\TeX\ (see
+\url{https://arxiv.org/hypertex/#implementation}), supported by xdvi,
+dvips and others, or the \package{hyperref} package, respectively.  When
+URLs are included in the bibliography, they are written out using the
+|\url{...}| command.  The \package{hyperref} support is more generic,
+and more generally supported, and so you should choose this unless you
+have a particular need for the Hyper\TeX\ support.  The
+\texttt{--nohyperlinks} option, which is present by default,
+suppresses all hyperlinking.
 
 By default, any URL field is displayed as part of the bibliography
-entry, linked to the corresponding URL via the mechanism managed by
-the |--hypertex| and |--hyperref| options.  If the |--inlinelinks|
-option is present, however, then the URL is not displayed in the
+entry, linked to the corresponding URL.  If the \texttt{inlinelinks}
+setting is true, however, then the URL is not displayed in the
 printed entry, but instead a hyperlink is created, linked to suitable
 text within the bibliography entry, such as the citation title.  This
 option does not affect the display of eprints, DOI or PubMed fields.  It makes
-no sense to specify |--inlinelinks| with |--nohyperlinks|, and the
+no sense to specify \texttt{inlinelinks} with \texttt{hrefform=0}, and the
 script warns you if you do that, for example by failing to specify one
 of the link-style options.  This option is (primarily) useful if
 you're preparing a version of a document which will be read on-screen;
@@ -137,7 +196,7 @@
 prepending the string \texttt{https://doi.org/} to the DOI.  This is
 generally reasonable, but some DOIs have characters in them which are
 illegal in URLs, with the result that the resulting
-\texttt{dx.doi.org} URL doesn't work.  The only real way of resolving
+\texttt{doi.org} URL doesn't work.  The only real way of resolving
 this is to write a URL-encoding function in the style-file
 implementation language, but while that would doubtless be feasible in
 principle, it would be hard and very, very, ugly.  The only advice I
@@ -146,7 +205,10 @@
 take advantage of the DOI will frequently (or usually?) know how to
 resolve the DOI when then need to.  As a workaround, you could include
 a URL-encoded DOI URL in the \btfield{url} field of the entry (thanks
-to Eric Chamberland for this suggestion).
+to Eric Chamberland for this suggestion).  A slightly more generic
+approach is to apply the setting \texttt{doiform=1}, which will
+generate DOIs wrapped in the macro |\doi{...}|.  This allows you to
+supply a generic |\doi| macro to format them as you desire.
 
 The \ub\ script works by spotting patterns and characteristic function
 names in the input |.bst| file.  It works as-is in the case of the
@@ -293,6 +355,20 @@
 references.
 
 \begin{description}
+\item[\textbf{0.9, 2022 December 1}]\relax 
+\begin{itemize}
+  \item Changed repository location to heptapod\footnote{\url{https://heptapod.host/nxg/urlbst}}
+  (when Bitbucket dropped support for Mercurial).
+  The issue links below, pointing to Bitbucket, will therefore no
+  longer work.
+  \item Refactoring of the mechanism for configuring the generated
+  |.bst| file, specifically adding the
+  |--setting| option.
+  \item Added the |doiform| setting to generate DOIs wrapped
+  in |\doi{...}|.
+\end{itemize}
+
+
 \item[\textbf{0.8, 2019 July 1}]\relax 
 \begin{itemize}
 \item The presence of a preexisting |format.doi|,
@@ -309,8 +385,9 @@
 
 
 \item[0.7, 2011 July 20]\relax 
-Add |--nodoi|, |--noeprints| and |--nopubmed| options (which defaulted
-on, and couldn't otherwise be turned off)
+Add |--nodoi|, |--noeprints| and
+|--nopubmed| options (which defaulted on, and couldn't
+otherwise be turned off)
 
 \item[0.7b1, 2011 March 17]\relax 
 Allow parameterisation of literal strings, with option |--literal|.

Modified: trunk/Master/texmf-dist/scripts/urlbst/urlbst
===================================================================
--- trunk/Master/texmf-dist/scripts/urlbst/urlbst	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/scripts/urlbst/urlbst	2022-12-04 21:05:53 UTC (rev 65190)
@@ -6,49 +6,72 @@
 # If either input-file or output-file is omitted, they are replaced by
 # stdin or stdout respectively.
 #
-# See http://purl.org/nxg/dist/urlbst for documentation
+# See https://purl.org/nxg/dist/urlbst for documentation
 #
-# Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray <http://nxg.me.uk>
+# Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray <https://nxg.me.uk>
 #
 # This program is distributed under the terms of the
 # GNU General Public Licence, v2.0.
-# The modifications to the input .bst files are asserted as Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,
+# The modifications to the input .bst files are asserted as Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,
 # and distributed under the terms of the LaTeX Project Public Licence.
 # See the package README for further dicussion of licences.
 
-$version = '0.8';
+$version = '0.9';
+$releasedate = '2022 December 1';
 ($progname = $0) =~ s/.*\///;
 $mymarker = "% $progname";
 $mymarkerend = "% ...$progname to here";
-$myurl = 'http://purl.org/nxg/dist/urlbst';
+$homepageurl = 'https://purl.org/nxg/dist/urlbst';
+$repourl = 'https://heptapod.host/nxg/urlbst';
 
-
 $infile = '-';
 $outfile = '-';
 
-$addeprints = 1;     # if true (nonzero) we add support for eprints
+# eprint support
+$settings{addeprints} = 1;
+$docstring{addeprints} = '0=no eprints; 1=include eprints';
 $literals{eprintprefix} = 'arXiv:';	# make these settable with --eprint? syntax?
-$eprinturl = 'http://arxiv.org/abs/';
+$docstring{eprintprefix} = "text prefix printed before eprint ref";
+$literals{eprinturl} = 'https://arxiv.org/abs/';
+$docstring{eprinturl} = 'prefix to make URL from eprint ref';
 
-$adddoiresolver = 1;
+# DOI resolver
+$settings{adddoi} = 1;
+$docstring{adddoi} = '0=no DOI resolver; 1=include it';
 $literals{doiprefix} = 'doi:';
-$doiurl = 'https://doi.org/';
+$docstring{doiprefix} = 'printed text to introduce DOI';
+$literals{doiurl} = 'https://doi.org/';
+$docstring{doiurl} = 'prefix to make URL from DOI';
+$settings{doiform} = 0;
+$docstring{doiform} = '0=with href; 1=with \\doi{}';
 
-$addpubmedresolver = 1;
+# PUBMED resolver
+$settings{addpubmed} = 1;
+$docstring{addpubmed} = '0=no PUBMED resolver; 1=include it';
 $literals{pubmedprefix} = 'PMID:';
-$pubmedurl = 'http://www.ncbi.nlm.nih.gov/pubmed/';
+$docstring{pubmedprefix} = 'text prefix printed before PUBMED ref';
+$literals{pubmedurl} = 'http://www.ncbi.nlm.nih.gov/pubmed/';
+$docstring{pubmedurl} = 'prefix to make URL from PUBMED';
 
-$makehref = 0;
+# how do we make hypterlinks
+$settings{hrefform} = 0;
+$docstring{hrefform} = '0=no crossrefs; 1=hypertex hrefs; 2=hyperref hrefs';
 $literals{urlintro} = "URL: ";
-$inlinelinks = 0;
+$docstring{urlintro} = 'text prefix before URL';
+$settings{inlinelinks} = 0;
+$docstring{inlinelinks} = '0=URLs explicit; 1=URLs attached to titles';
 
-$literals{online} = "online";
-$literals{cited} = "cited ";
-$literals{linktext} = "[link]";
+# other text
+$literals{onlinestring} = "online";
+$docstring{onlinestring} = 'label that a resource is online';
+$literals{citedstring} = "cited ";
+$docstring{citedstring} = 'label in "lastchecked" remark';
+$literals{linktextstring} = "[link]";
+$docstring{linktextstring} = 'anonymous link text';
 
 $automatic_output_filename = 0;
 
-$Usage = "$progname [--eprint] [--doi] [--pubmed]\n    [--nohyperlinks] [--[no]inlinelinks] [--hypertex] [--hyperref]\n    [--literal key=value]\n    [--help] [input-file [output-file]]";
+$Usage = "$progname [--literal key=value]\n    [--setting key=value]\n    [--help] [input-file [output-file]]";
 
 # Magic environment variable: if this is set, then we're being called from a Platypus wrapper
 # See http://www.sveinbjorn.org/platypus
@@ -58,27 +81,29 @@
 
 while ($#ARGV >= 0) {
     if ($ARGV[0] eq '--eprint') {
-	$addeprints = 1;
+	$settings{addeprints} = 1;
     } elsif ($ARGV[0] eq '--noeprint') {
-	$addeprints = 0;
+	$settings{addeprints} = 0;
     } elsif ($ARGV[0] eq '--doi') {
-        $adddoiresolver = 1;
+        $settings{adddoi} = 1;
     } elsif ($ARGV[0] eq '--nodoi') {
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     } elsif ($ARGV[0] eq '--pubmed') {
-        $addpubmedresolver = 1;
+        $settings{addpubmed} = 1;
     } elsif ($ARGV[0] eq '--nopubmed') {
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     } elsif ($ARGV[0] eq '--nohyperlinks') {
-        $makehref = 0;
+        $settings{hrefform} = 0;
+    } elsif ($ARGV[0] eq '--hyperlinks') {
+        $settings{hrefform} = 1; # redundant with --hypertex, for consistency
     } elsif ($ARGV[0] eq '--hypertex') {
-	$makehref = 1;
+	$settings{hrefform} = 1;
     } elsif ($ARGV[0] eq '--hyperref') {
-	$makehref = 2;
+	$settings{hrefform} = 2;
     } elsif ($ARGV[0] eq '--inlinelinks') {
-        $inlinelinks = 1;
+        $settings{inlinelinks} = 1;
     } elsif ($ARGV[0] eq '--noinlinelinks') {
-        $inlinelinks = 0;
+        $settings{inlinelinks} = 0;
     } elsif ($ARGV[0] eq '--automatic-output') {
         $automatic_output_filename = 1;
     } elsif ($ARGV[0] eq '--literal') {
@@ -93,16 +118,42 @@
             $showstrings = 1;
         }
         if ($showstrings) {
-            print "    Possible literal strings (and defaults) are...\n";
+            print "Possible literal strings (and defaults) are...\n";
             while (($k, $v) = each (%literals)) {
-                print "        $k ($v)\n";
+                print "  $k  \t$docstring{$k} [$v]\n";
             }
             exit(0);
         }
+    } elsif ($ARGV[0] eq '--setting') {
+        shift;
+        my $showstrings = 0;
+        if ((($k, $v) = ($ARGV[0] =~ /^(\w+)=(.*)/)) && exists $settings{$k}) {
+            $settings{$k} = $v;
+        } elsif ($ARGV[0] eq 'help') {
+            $showstrings = 1;
+        } else {
+            print "No setting found in $ARGV[0]; ignoring that\n";
+            $showstrings = 1;
+        }
+        if ($showstrings) {
+            print "Possible settings (and defaults) are...\n";
+            while (($k, $v) = each (%settings)) {
+                print "  $k  \t$docstring{$k} [$v]\n";
+            }
+            exit(0);
+        }
     } elsif ($ARGV[0] eq '--help') {
         print <<EOD;
-urlbst version $version
-    Usage: $Usage
+urlbst version $version, $releasedate
+Usage: $Usage
+
+    Options:
+      --literal key=value set one of the literal strings
+                          (see `--literal help' for possibilities)
+      --setting key=value (as --literal)
+      --help              print this help
+
+    Convenience options (can also be controlled using --setting):
       --[no]eprint        include support for `eprint' fields
       --[no]doi           include support for `doi' field
       --[no]pubmed        include support for `pubmed' field
@@ -111,18 +162,19 @@
       --hypertex          include HyperTeX-style hyperlink support
       --hyperref          include {hyperref}-style hyperlink support
                           (generally better)
-      --literal key=value set one of the literal strings
-                          (see `--literal help' for possibilities)
-      --help              print this help
+
     Input and output files may be given as `-' (default) to indicate stdin/out.
 
+    Homepage:     $homepageurl
+    Repository:   $repourl
+
 EOD
         printf("    Defaults:\n");
-        printf("      eprint refs    %s\n", ($addeprints ? "included" : "not included"));
-        printf("      DOIs           %s\n", ($adddoiresolver ? "included" : "not included"));
-        printf("      PUBMED refs    %s\n", ($addpubmedresolver ? "included" : "not included"));
-        printf("      hyperlinks     %s\n", ($makehref==0 ? "none" : $makehref==1 ? "hypertex" : "hyperref"));
-        printf("      inline links   %s\n", ($inlinelinks ? "included" : "not included"));
+        printf("      eprint refs    %s\n", ($settings{addeprints} ? "included" : "not included"));
+        printf("      DOIs           %s\n", ($settings{adddoi} ? "included" : "not included"));
+        printf("      PUBMED refs    %s\n", ($settings{addpubmed} ? "included" : "not included"));
+        printf("      hyperlinks     %s\n", ($settings{hrefform}==0 ? "none" : $settings{hrefform}==1 ? "hypertex" : "hyperref"));
+        printf("      inline links   %s\n", ($settings{inlinelinks} ? "included" : "not included"));
         exit(0);
     } elsif ($ARGV[0] =~ /^-/) {
         die "Unrecognised option $ARGV[0]: Usage: $Usage\n";
@@ -136,13 +188,13 @@
     shift(@ARGV);
 }
 
-if ($inlinelinks && $makehref == 0) {
+if ($settings{inlinelinks} && $settings{hrefform} == 0) {
     print <<'EOD';
 Warning: --inlinelinks and --nohyperlinks were both specified (possibly
     implicitly).  That combination makes no sense, so I'll ignore
     --nohyperlinks and use --hyperref instead
 EOD
-    $makehref = 2;
+    $settings{hrefform} = 2;
 }
 
 if ($automatic_output_filename) {
@@ -200,16 +252,16 @@
 # make it less ugly, and more robust.
 
 print OUT "%%% Modification of BibTeX style file ", ($infile eq '-' ? '<stdin>' : $infile), "\n";
-print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$myurl>\n";
-print OUT "%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray,\n";
+print OUT "%%% ... by $progname, version $version (marked with \"$mymarker\")\n%%% See <$homepageurl> and repository <$repourl>\n";
+print OUT "%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, 2022, Norman Gray,\n";
 print OUT "%%% and distributed under the terms of the LPPL; see README for discussion.\n";
 print OUT "%%%\n";
 print OUT "%%% Added webpage entry type, and url and lastchecked fields.\n";
-print OUT "%%% Added eprint support.\n"   if ($addeprints);
-print OUT "%%% Added DOI support.\n"      if ($adddoiresolver);
-print OUT "%%% Added PUBMED support.\n"   if ($addpubmedresolver);
-print OUT "%%% Added HyperTeX support.\n" if ($makehref == 1);
-print OUT "%%% Added hyperref support.\n" if ($makehref == 2);
+print OUT "%%% Added eprint support.\n"   if ($settings{addeprints});
+print OUT "%%% Added DOI support.\n"      if ($settings{adddoi});
+print OUT "%%% Added PUBMED support.\n"   if ($settings{addpubmed});
+print OUT "%%% Added HyperTeX support.\n" if ($settings{hrefform} == 1);
+print OUT "%%% Added hyperref support.\n" if ($settings{hrefform} == 2);
 print OUT "%%% Original headers follow...\n\n";
 
 $found{initconsts} = 0;
@@ -232,7 +284,7 @@
         print OUT;
         next;
     };
-    
+
     /^ *ENTRY/ && do {
 	# Work through the list of entry types, finding what ones are there.
 	# If we find a URL entry there already, object, since these edits
@@ -280,31 +332,26 @@
   eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl
   citedstring onlinestring linktextstring
   openinlinelink closeinlinelink }
-INTEGERS { hrefform inlinelinks makeinlinelink
-  addeprints adddoiresolver addpubmedresolver }
+INTEGERS { hrefform doiform inlinelinks makeinlinelink
+  addeprints adddoi addpubmed }
 FUNCTION {init.urlbst.variables}
 {
   % The following constants may be adjusted by hand, if desired
 
   % The first set allow you to enable or disable certain functionality.
-  #$addeprints 'addeprints :=         % 0=no eprints; 1=include eprints
-  #$adddoiresolver 'adddoiresolver :=     % 0=no DOI resolver; 1=include it
-  #$addpubmedresolver 'addpubmedresolver :=     % 0=no PUBMED resolver; 1=include it
-  #$makehref 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
-  #$inlinelinks 'inlinelinks :=        % 0=URLs explicit; 1=URLs attached to titles
+EOD
 
-  % String constants, which you _might_ want to tweak.
-  "$literals{urlintro}" 'urlintro := % prefix before URL; typically "Available from:" or "URL":
-  "$literals{online}" 'onlinestring := % indication that resource is online; typically "online"
-  "$literals{cited}" 'citedstring := % indicator of citation date; typically "cited "
-  "$literals{linktext}" 'linktextstring := % dummy link text; typically "[link]"
-  "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref
-  "$literals{eprintprefix}" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:"
-  "$doiurl" 'doiurl := % prefix to make URL from DOI
-  "$literals{doiprefix}" 'doiprefix :=      % text prefix printed before DOI ref; typically "doi:"
-  "$pubmedurl" 'pubmedurl := % prefix to make URL from PUBMED
-  "$literals{pubmedprefix}" 'pubmedprefix :=      % text prefix printed before PUBMED ref; typically "PMID:"
+      while (($k, $v) = each(%settings)) {
+          print OUT "  #$v '$k :=\t% $docstring{$k}\n";
+      }
 
+      print OUT "\n  % String constants, which you _might_ want to tweak.\n";
+      while (($k, $v) = each(%literals)) {
+          print OUT "  \"$v\" '$k :=\t% $docstring{$k}\n";
+      }
+
+      print OUT <<EOD;
+
   % The following are internal state variables, not configuration constants,
   % so they shouldn't be fiddled with.
   #0 'makeinlinelink :=     % state variable managed by possibly.setup.inlinelink
@@ -311,7 +358,7 @@
   "" 'openinlinelink :=     % ditto
   "" 'closeinlinelink :=    % ditto
 }
-INTEGERS { 
+INTEGERS {
   bracket.state
   outside.brackets
   open.brackets
@@ -346,21 +393,21 @@
     };
 
     /^ *FUNCTION *\{format.doi\}/ && do {
-        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$adddoiresolver)\n";
+        #print STDERR "$progname: style file $infile already supports DOIs; urlbst format.doi disabled\n(see generated .bst style: you may need to make edits near \$settings{adddoi})\n";
         $found{formatdoi} = 1;
-        $adddoiresolver = 0;
+        $settings{adddoi} = 0;
     };
 
     /^ *FUNCTION *\{format.eprint\}/ && do {
-        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$addeprints)\n";
+        #print STDERR "$progname: style file $infile already supports eprints; urlbst format.eprint disabled\n(see generated .bst style: you may need to make edits near \$settings{addeprints})\n";
         $found{formateprint} = 1;
-        $addeprints = 0;
+        $settings{addeprints} = 0;
     };
 
     /^ *FUNCTION *\{format.pubmed\}/ && do {
-        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$addpubmedresolver)\n";
+        #print STDERR "$progname: style file $infile already supports Pubmed; urlbst format.pubmed disabled\n(see generated .bst style: you may need to make edits near \$settings{addpubmed})\n";
         $found{formatpubmed} = 1;
-        $addpubmedresolver = 0;
+        $settings{addpubmed} = 0;
     };
 
     /^ *FUNCTION *{output\.nonnull}/ && do {
@@ -469,8 +516,8 @@
 { 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file)
 FUNCTION {possibly.setup.inlinelink}
 { makeinlinelink hrefform #0 > uand
-    { doi empty$ adddoiresolver uand
-        { pubmed empty$ addpubmedresolver uand
+    { doi empty$ adddoi uand
+        { pubmed empty$ addpubmed uand
             { eprint empty$ addeprints uand
                 { url empty$
                     { "" }
@@ -535,14 +582,14 @@
       bracket.state open.brackets =
         { " [" * }
         { ", " * } % bracket.state will be within.brackets
-      if$ 
-      s * 
+      if$
+      s *
       close.brackets 'bracket.state :=
     }
   if$
 }
 
-% Call this function just before adding something which should be presented in 
+% Call this function just before adding something which should be presented in
 % brackets.  bracket.state is handled specially within output.nonnull.
 FUNCTION {inbrackets}
 { bracket.state close.brackets =
@@ -583,7 +630,7 @@
 }
 % make hypertex specials
 FUNCTION {make.href.hypertex}
-{ 
+{
   "\special {html:<a href=" quote$ *
   swap$ * quote$ * "> }" * swap$ *
   "\special {html:</a>}" *
@@ -590,7 +637,7 @@
 }
 % make hyperref specials
 FUNCTION {make.href.hyperref}
-{ 
+{
   "\href {" swap$ * "} {\path{" * swap$ * "}}" *
 }
 FUNCTION {make.href}
@@ -636,13 +683,17 @@
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    { doiprefix doi * doiurl doi * make.href }
+    { doiform #1 =
+        { "\doi{" doi * "}" * }
+        { doiprefix doi * doiurl doi * make.href }
+      if$
+    }
   if$
 }
 EOD
     output_replacement_function($found{formatdoi},
                                 'format.doi',
-                                'adddoiresolver',
+                                'adddoi',
                                 $formatdoifunction);
 
     $formatpubmedfunction = <<'EOD';
@@ -655,7 +706,7 @@
 EOD
     output_replacement_function($found{formatpubmed},
                                 'format.pubmed',
-                                'addpubmedresolver',
+                                'addpubmed',
                                 $formatpubmedfunction);
 
     print OUT <<'EOD';
@@ -666,10 +717,10 @@
 % the URL and the lastchecked in brackets.
 FUNCTION {output.url}
 { url empty$
-    'skip$ 
-    { new.block 
+    'skip$
+    { new.block
       format.url output
-      format.lastchecked output 
+      format.lastchecked output
     }
   if$
 }
@@ -682,7 +733,7 @@
     { % If the generated DOI will be the same as the URL,
       % then don't print the URL (thanks to Joseph Wright for this code,
       % at http://tex.stackexchange.com/questions/5660)
-      adddoiresolver 
+      adddoi
           doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated
           url empty$ { "Y" } { url } if$          % the URL, or "Y" if empty
           =                                       % are the strings equal?
@@ -694,11 +745,11 @@
         { format.eprint output.nonnull }
         'skip$
       if$
-      adddoiresolver doi empty$ not and
+      adddoi doi empty$ not and
         { format.doi output.nonnull }
         'skip$
       if$
-      addpubmedresolver pubmed empty$ not and
+      addpubmed pubmed empty$ not and
         { format.pubmed output.nonnull }
         'skip$
       if$
@@ -736,7 +787,7 @@
 % Webpage entry type.
 % Title and url fields required;
 % author, note, year, month, and lastchecked fields optional
-% See references 
+% See references
 %   ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
 %   http://www.classroom.net/classroom/CitingNetResources.html
 %   http://neal.ctstateu.edu/history/cite.html
@@ -793,7 +844,7 @@
 %%% and disabled urlbst's version; proceed with some caution.
 EOD
 
-        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$$disabling_variable to zero.\nYou might want to edit the output file (search for $function_name).\n";
+        print STDERR "$progname: WARNING: style file $infile already includes a $function_name function;\nyou may need to disable the urlbst version by setting \$settings{$disabling_variable} to zero.\nYou might want to edit the output file (search for $function_name).\n";
 
         ($t = $function_definition_string) =~ s/\n/\n%%% /g;
         print OUT "%%% " . $t . "$mymarker\n";

Modified: trunk/Master/texmf-dist/source/bibtex/urlbst/Makefile.in
===================================================================
--- trunk/Master/texmf-dist/source/bibtex/urlbst/Makefile.in	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/source/bibtex/urlbst/Makefile.in	2022-12-04 21:05:53 UTC (rev 65190)
@@ -100,6 +100,8 @@
 	{ echo 's, at PACKAGE_VERSION\@, at PACKAGE_VERSION@,g'; \
 	  echo 's, at RELEASEDATE\@, at RELEASEDATE@,g'; \
 	  echo 's/@COPYRIGHTYEARS\@/@COPYRIGHTYEARS@/'; \
+	  echo 's, at REPOURL\@, at REPOURL@,g'; \
+	  echo 's, at CTANURL\@, at CTANURL@,g'; \
 	  hg parent --template 's/@HGIDENT\@/{node|short} ({latesttag}+{latesttagdistance}), {date|isodate}/\n'; \
 	  } >hg.sed
 
@@ -119,12 +121,12 @@
 # Very simple test target -- just check that we don't bomb converting
 # the standard styles
 check: $(BSTSTYLES) $(TESTSTYLES)
-	for f in $(BSTSTYLES) $(TESTSTYLES); do \
-		ROOT=`echo $$f|sed s/\.bst$$//`; \
-		printf '\\relax\n'			>  test-$$ROOT.aux; \
-		printf '\\citation{*}\n'		>> test-$$ROOT.aux; \
-		printf '\\bibdata{urlbst}\n'		>> test-$$ROOT.aux; \
-		printf '\\bibstyle{'"$$ROOT"'}\n'	>> test-$$ROOT.aux; \
+	for f in $(BSTSTYLES) $(TESTSTYLES); do		\
+		ROOT=`echo $$f|sed s/\.bst$$//`;	\
+		{ printf '\\relax\n'; 			\
+		  sed -n 's/^.*\(test:[a-z0-9-]*\).*/\\citation{\1}/p' urlbst.bib; \
+		  printf '\\bibdata{urlbst}\n';		\
+		  printf '\\bibstyle{'"$$ROOT"'}\n';	} >test-$$ROOT.aux; \
 		echo "*** testing $$f"; \
 		bibtex test-$$ROOT; \
 	done

Modified: trunk/Master/texmf-dist/source/bibtex/urlbst/configure
===================================================================
--- trunk/Master/texmf-dist/source/bibtex/urlbst/configure	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/source/bibtex/urlbst/configure	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,12 +1,13 @@
 #! /bin/sh
 # From configure.ac @PACKAGE_VERSION at .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for urlbst 0.8.
+# Generated by GNU Autoconf 2.71 for urlbst 0.9.
 #
-# Report bugs to <norman at astro.gla.ac.uk>.
+# Report bugs to <gray at nxg.name>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -17,7 +18,9 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -24,7 +27,7 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -34,46 +37,46 @@
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
 
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
+
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -82,13 +85,6 @@
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -97,8 +93,12 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -110,31 +110,11 @@
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
 
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
 # Use a proper internal environment variable to ensure we don't fall
   # into an infinite loop, continuously re-executing ourselves.
   if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
@@ -155,13 +135,15 @@
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
   fi
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
@@ -168,7 +150,7 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else
+else \$as_nop
   case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
@@ -188,41 +170,52 @@
 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
 
-else
+else \$as_nop
   exitcode=1; echo positional parameters were not saved.
 fi
 test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
 test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
+  if (eval "$as_required") 2>/dev/null
+then :
   as_have_required=yes
-else
+else $as_nop
   as_have_required=no
 fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
 
-else
+else $as_nop
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
   as_found=:
   case $as_dir in #(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
+	     as_shell=$as_dir$as_base
 	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
   break 2
 fi
 fi
@@ -230,14 +223,21 @@
        esac
   as_found=false
 done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
 IFS=$as_save_IFS
+if $as_found
+then :
 
+else $as_nop
+  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
 
-      if test "x$CONFIG_SHELL" != x; then :
+
+      if test "x$CONFIG_SHELL" != x
+then :
   export CONFIG_SHELL
              # We cannot yet assume a decent shell, so we have to provide a
 # neutralization value for shells without unset; and this also
@@ -255,22 +255,23 @@
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
 
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+    if test x$as_have_required = xno
+then :
+  printf "%s\n" "$0: This script requires a shell more modern than all"
+  printf "%s\n" "$0: the shells that I found on your system."
+  if test ${ZSH_VERSION+y} ; then
+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and
-$0: norman at astro.gla.ac.uk about your system, including any
-$0: error possibly output before this message. Then install
-$0: a modern shell, or manually run the script under such a
-$0: shell if you do have one."
+    printf "%s\n" "$0: Please tell bug-autoconf at gnu.org and gray at nxg.name
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
   fi
   exit 1
 fi
@@ -294,6 +295,7 @@
 }
 as_unset=as_fn_unset
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -311,6 +313,14 @@
   as_fn_set_status $1
   exit $1
 } # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_mkdir_p
 # -------------
@@ -325,7 +335,7 @@
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -334,7 +344,7 @@
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -373,12 +383,13 @@
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -390,12 +401,13 @@
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
@@ -402,6 +414,14 @@
   }
 fi # as_fn_arith
 
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
@@ -413,9 +433,9 @@
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -442,7 +462,7 @@
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -486,7 +506,7 @@
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
   # already done that, so ensure we don't try to do so again and fall
@@ -500,6 +520,10 @@
   exit
 }
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -513,6 +537,13 @@
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -580,9 +611,9 @@
 # Identity of this package.
 PACKAGE_NAME='urlbst'
 PACKAGE_TARNAME='urlbst'
-PACKAGE_VERSION='0.8'
-PACKAGE_STRING='urlbst 0.8'
-PACKAGE_BUGREPORT='norman at astro.gla.ac.uk'
+PACKAGE_VERSION='0.9'
+PACKAGE_STRING='urlbst 0.9'
+PACKAGE_BUGREPORT='gray at nxg.name'
 PACKAGE_URL=''
 
 ac_unique_file="urlbst.in"
@@ -597,6 +628,8 @@
 WITHEPRINTS
 PERL
 COPYRIGHTYEARS
+CTANURL
+REPOURL
 RELEASEDATE
 target_alias
 host_alias
@@ -617,6 +650,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -685,6 +719,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -714,8 +749,6 @@
   *)    ac_optarg=yes ;;
   esac
 
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
   case $ac_dashdash$ac_option in
   --)
     ac_dashdash=yes ;;
@@ -756,9 +789,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -782,9 +815,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -937,6 +970,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -986,9 +1028,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1002,9 +1044,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1048,9 +1090,9 @@
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
@@ -1066,7 +1108,7 @@
   case $enable_option_checking in
     no) ;;
     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
 
@@ -1074,7 +1116,7 @@
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1130,7 +1172,7 @@
 	 X"$as_myself" : 'X\(//\)[^/]' \| \
 	 X"$as_myself" : 'X\(//\)$' \| \
 	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -1187,7 +1229,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures urlbst 0.8 to adapt to many kinds of systems.
+\`configure' configures urlbst 0.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1227,6 +1269,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1248,7 +1291,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of urlbst 0.8:";;
+     short | recursive ) echo "Configuration of urlbst 0.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1260,7 +1303,7 @@
   --with-pubmed=[=url]     Include support for a PUBMED resolver by default, giving optional URL
   --with-href[=int]  Include eprint hyperlinks (0/1/2=none/hypertex/hyperref)
 
-Report bugs to <norman at astro.gla.ac.uk>.
+Report bugs to <gray at nxg.name>.
 _ACEOF
 ac_status=$?
 fi
@@ -1276,9 +1319,9 @@
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1306,7 +1349,8 @@
 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
     cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
+    # Check for configure.gnu first; this name is used for a wrapper for
+    # Metaconfig's "Configure" on case-insensitive file systems.
     if test -f "$ac_srcdir/configure.gnu"; then
       echo &&
       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1314,7 +1358,7 @@
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1323,10 +1367,10 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-urlbst configure 0.8
-generated by GNU Autoconf 2.69
+urlbst configure 0.9
+generated by GNU Autoconf 2.71
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1336,14 +1380,34 @@
 ## ------------------------ ##
 ## Autoconf initialization. ##
 ## ------------------------ ##
+ac_configure_args_raw=
+for ac_arg
+do
+  case $ac_arg in
+  *\'*)
+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+  *$as_nl*)
+    ac_safe_unquote= ;;
+  *)
+    ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.
+    ac_unsafe_a="$ac_unsafe_z#~"
+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by urlbst $as_me 0.8, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+It was created by urlbst $as_me 0.9, which was
+generated by GNU Autoconf 2.71.  Invocation command line was
 
-  $ $0 $@
+  $ $0$ac_configure_args_raw
 
 _ACEOF
 exec 5>>config.log
@@ -1376,8 +1440,12 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    printf "%s\n" "PATH: $as_dir"
   done
 IFS=$as_save_IFS
 
@@ -1412,7 +1480,7 @@
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -1447,11 +1515,13 @@
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""	$as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    $as_echo "## ---------------- ##
+    printf "%s\n" "## ---------------- ##
 ## Cache variables. ##
 ## ---------------- ##"
     echo
@@ -1462,8 +1532,8 @@
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -1487,7 +1557,7 @@
 )
     echo
 
-    $as_echo "## ----------------- ##
+    printf "%s\n" "## ----------------- ##
 ## Output variables. ##
 ## ----------------- ##"
     echo
@@ -1495,14 +1565,14 @@
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      $as_echo "$ac_var='\''$ac_val'\''"
+      printf "%s\n" "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
+      printf "%s\n" "## ------------------- ##
 ## File substitutions. ##
 ## ------------------- ##"
       echo
@@ -1510,15 +1580,15 @@
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
+	printf "%s\n" "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      $as_echo "## ----------- ##
+      printf "%s\n" "## ----------- ##
 ## confdefs.h. ##
 ## ----------- ##"
       echo
@@ -1526,8 +1596,8 @@
       echo
     fi
     test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
+      printf "%s\n" "$as_me: caught signal $ac_signal"
+    printf "%s\n" "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -1541,63 +1611,48 @@
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
 
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
 do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+  case $ac_site_file in #(
+  */*) :
+     ;; #(
+  *) :
+    ac_site_file=./$ac_site_file ;;
+esac
+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
 See \`config.log' for more details" "$LINENO" 5; }
   fi
@@ -1607,8 +1662,8 @@
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
@@ -1615,8 +1670,8 @@
     esac
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
@@ -1630,12 +1685,12 @@
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -1644,24 +1699,24 @@
 	ac_old_val_w=`echo x $ac_old_val`
 	ac_new_val_w=`echo x $ac_new_val`
 	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
 	  ac_cache_corrupted=:
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
 	  eval $ac_var=\$ac_old_val
 	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
@@ -1671,11 +1726,12 @@
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+	    and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -1688,25 +1744,31 @@
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-RELEASEDATE="2019 July 1"
+RELEASEDATE="2022 December 1"
 
 
+REPOURL=https://heptapod.host/nxg/urlbst
 
+CTANURL=https://ctan.org/pkg/urlbst
 
-COPYRIGHTYEARS="2002-03, 2005-12, 2014, 2019"
 
 
 
+COPYRIGHTYEARS="2002-03, 2005-12, 2014, 2019, 2022"
 
 
 
+
+
+
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PERL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PERL+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $PERL in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
@@ -1716,11 +1778,15 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -1732,11 +1798,11 @@
 fi
 PERL=$ac_cv_path_PERL
 if test -n "$PERL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
-$as_echo "$PERL" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+printf "%s\n" "$PERL" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -1744,7 +1810,7 @@
 
 WITHEPRINTS=1
 
-EPRINTURL=http://arxiv.org/abs/
+EPRINTURL=https://arxiv.org/abs/
 
 
 WITHDOIRESOLVER=1
@@ -1759,7 +1825,8 @@
 
 
 # Check whether --with-eprints was given.
-if test "${with_eprints+set}" = set; then :
+if test ${with_eprints+y}
+then :
   withval=$with_eprints; if test "$withval" = "yes"; then
     WITHEPRINTS=1
   elif test "$withval" = "no"; then
@@ -1773,7 +1840,8 @@
 
 
 # Check whether --with-doi was given.
-if test "${with_doi+set}" = set; then :
+if test ${with_doi+y}
+then :
   withval=$with_doi; if test "$withval" = yes; then
     WITHDOIRESOLVER=1
   elif test "$withval" = no; then
@@ -1787,7 +1855,8 @@
 
 
 # Check whether --with-pubmed was given.
-if test "${with_pubmed+set}" = set; then :
+if test ${with_pubmed+y}
+then :
   withval=$with_pubmed; if test "$withval" = yes; then
     WITHPUBMEDRESOLVER=1
   elif test "$withval" = no; then
@@ -1805,7 +1874,8 @@
 
 
 # Check whether --with-href was given.
-if test "${with_href+set}" = set; then :
+if test ${with_href+y}
+then :
   withval=$with_href; if test "$withval" = yes; then
     WITHHREF=2
   elif test "$withval" = no; then
@@ -1849,8 +1919,8 @@
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -1880,7 +1950,7 @@
      /^ac_cv_env_/b end
      t clear
      :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
      t end
      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      :end' >>confcache
@@ -1887,8 +1957,8 @@
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
       if test ! -f "$cache_file" || test -h "$cache_file"; then
 	cat confcache >"$cache_file"
       else
@@ -1902,8 +1972,8 @@
       fi
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -1956,7 +2026,7 @@
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -1972,8 +2042,8 @@
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
 as_write_fail=0
 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
@@ -1996,7 +2066,9 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
@@ -2003,7 +2075,7 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -2013,46 +2085,46 @@
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
 
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
+
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -2061,13 +2133,6 @@
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -2076,8 +2141,12 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -2089,32 +2158,12 @@
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
 
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
 
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
@@ -2125,13 +2174,14 @@
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -2158,6 +2208,7 @@
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
+
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -2164,12 +2215,13 @@
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -2181,12 +2233,13 @@
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
@@ -2217,7 +2270,7 @@
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -2239,6 +2292,10 @@
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -2252,6 +2309,12 @@
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -2293,7 +2356,7 @@
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -2302,7 +2365,7 @@
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -2364,8 +2427,8 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by urlbst $as_me 0.8, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+This file was extended by urlbst $as_me 0.9, which was
+generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -2411,17 +2474,19 @@
 Configuration files:
 $config_files
 
-Report bugs to <norman at astro.gla.ac.uk>."
+Report bugs to <gray at nxg.name>."
 
 _ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-urlbst config.status 0.8
-configured by $0, generated by GNU Autoconf 2.69,
+urlbst config.status 0.9
+configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -2458,21 +2523,21 @@
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
+    printf "%s\n" "$ac_cs_version"; exit ;;
   --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
+    printf "%s\n" "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
+    printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
@@ -2500,7 +2565,7 @@
 if \$ac_cs_recheck; then
   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
   exec "\$@"
@@ -2514,7 +2579,7 @@
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  $as_echo "$ac_log"
+  printf "%s\n" "$ac_log"
 } >&5
 
 _ACEOF
@@ -2540,7 +2605,7 @@
 # We use the long form for the default assignment because of an extremely
 # bizarre bug on SunOS 4.1.3.
 if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -2768,7 +2833,7 @@
 	   esac ||
 	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
@@ -2776,17 +2841,17 @@
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	  printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
     case $configure_input in #(
     *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
@@ -2803,7 +2868,7 @@
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -2827,9 +2892,9 @@
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -2882,8 +2947,8 @@
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
@@ -2925,9 +2990,9 @@
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -2979,7 +3044,8 @@
   $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+

Modified: trunk/Master/texmf-dist/source/bibtex/urlbst/configure.ac
===================================================================
--- trunk/Master/texmf-dist/source/bibtex/urlbst/configure.ac	2022-12-04 00:50:04 UTC (rev 65189)
+++ trunk/Master/texmf-dist/source/bibtex/urlbst/configure.ac	2022-12-04 21:05:53 UTC (rev 65190)
@@ -1,11 +1,14 @@
 dnl  Process this file with autoconf to produce a configure script
-AC_INIT(urlbst, 0.8, norman at astro.gla.ac.uk)
-RELEASEDATE="2019 July 1"
+AC_INIT(urlbst, 0.9, gray at nxg.name)
+RELEASEDATE="2022 December 1"
 AC_SUBST(RELEASEDATE)
 
+AC_SUBST(REPOURL, [https://heptapod.host/nxg/urlbst])
+AC_SUBST(CTANURL, [https://ctan.org/pkg/urlbst])
+
 AC_REVISION(@PACKAGE_VERSION@)
 
-COPYRIGHTYEARS="2002-03, 2005-12, 2014, 2019"
+COPYRIGHTYEARS="2002-03, 2005-12, 2014, 2019, 2022"
 AC_SUBST(COPYRIGHTYEARS)
 
 AC_PREREQ(2.50)
@@ -18,7 +21,7 @@
 dnl  Add --with-eprints: tune default support for eprints
 WITHEPRINTS=1
 AC_SUBST(WITHEPRINTS)
-EPRINTURL=http://arxiv.org/abs/
+EPRINTURL=https://arxiv.org/abs/
 AC_SUBST(EPRINTURL)
 
 dnl  Add --with-doi: tune default support for DOI fields



More information about the tex-live-commits mailing list.