diff options
author | Karl Berry <karl@freefriends.org> | 2008-06-18 18:55:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-06-18 18:55:13 +0000 |
commit | ba68b87b140dbb977245265756c4872e375173e2 (patch) | |
tree | e26d7f0abfc99e203f971cc683985ef7c6093941 /Master | |
parent | 35bf49efe29bec63bd2bd90993121c549a4abaa7 (diff) |
urlbst update (16jun08)
git-svn-id: svn://tug.org/texlive/trunk@8847 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
20 files changed, 6996 insertions, 720 deletions
diff --git a/Master/texmf-dist/bibtex/bib/urlbst/urlbst.bib b/Master/texmf-dist/bibtex/bib/urlbst/urlbst.bib index 6b4946d8142..d981b820df0 100644 --- a/Master/texmf-dist/bibtex/bib/urlbst/urlbst.bib +++ b/Master/texmf-dist/bibtex/bib/urlbst/urlbst.bib @@ -1,23 +1,31 @@ % Webpage with lastchecked and date -@webpage{url:latex, - author = {Barbara Beeton}, - year = 2001, - month = may, - url = {http://www.tug.org/docs/html/ptr-faq.html}, - title = {What is {\TeX}?}, - lastchecked = {20 August 2001} +@webpage{url:weapas, + url = {http://www.beadsland.com/weapas/}, + title = {Web Extension to {American Psychological Association} Style ({WEAPAS}) (Rev.2.0)}, + author = {B Land}, + year = 2001, + month = jul, + lastchecked = {23 October 2002} +} + +@Webpage{apastyle, + url = {http://www.apastyle.org/elecref.html}, + author = {{American Psychological Association}}, + title = {Electronic References}, + year = 2001, + lastchecked = {23 October 2002}, + note = {Excerpted from 5th edition of the APA Publication Manual} } -% Webpage with lastchecked but no date @webpage{url:iso690, author = {{International Standards Organisation}}, title = {{ISO 690-2}}, - url = {http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm}, + url = {http://www.collectionscanada.gc.ca/iso/tc46sc9/standard/690-2e.htm}, lastchecked = {20 August 2001} } -% Webpage with date but no lastchecked -@Webpage{classroom96, +% This one appears to be dead +@Webpage{gone:classroom96, title = {Citing Internet Addresses: how students should reference online sources in their bibliographies}, year = 1996, @@ -26,15 +34,57 @@ url = "http://www.classroom.net/classroom/CitingNetResources.html" } -% Webpage with neither date nor lastchecked @Webpage{emory95, author = "libsf@web.cc.emory.edu", title = "Citation Formats", - url = "http://www.cc.emory.edu/WHSCL/citation.formats.html" + date = {1997}, + lastchecked = {23 October 2002}, + url = {http://business.library.emory.edu/eresources/citing.html} +} + +@Book{walker, + author = {Janice R. Walker and Todd Taylor}, + title = {The Columbia Guide to Online Style}, + publisher = {Columbia University Press}, + year = 2006, + DEADurl = {http://www.columbia.edu/cu/cup/cgos/}, + edition = {2nd}, + isbn = {978-0-231-13211-4}, + DEADlastchecked = {23 October 2002} +} + +@Webpage{walker-orig, + title = {{MLA}-Style Citations of Electronic Sources}, + author = {Janice R. Walker}, + url = {http://www.cas.usf.edu/english/walker/mla.html}, + year = 1995, + lastchecked = {23 October 2002}, + note = {Updated and superceded by \cite{walker}} +} + +@Webpage{texfaq, + url = {http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL}, + title = {{UK \TeX\ FAQ: URLs in \BibTeX\ bibliographies}}, + key = {UK TeX FAQ}, + editor = {Robin Fairbairns}, + year = 2002, + lastchecked = {23 October 2002} } + + +@Webpage{url:daly, + url = {http://www.tex.ac.uk/tex-archive/macros/latex/contrib/custom-bib/}, + title = {Index of custom-bib}, + author = {Patrick W Daly}, + year = 2003, + lastchecked = {4 June 2003} +} + +% Following are test entries + % Article with URL and lastchecked -@article{url:towell, +@article{test:towell, title = {Presence in Text-Based Networked Virtual Environments or `{MUDs}'}, author = {John Towell and Elizabeth Towell}, @@ -48,7 +98,7 @@ } % Book with URL, lastchecked, and note. -@Book{raymond99, +@Book{test:raymond99, author = {Eric S Raymond}, title = {The Cathedral and the Bazaar}, publisher = {O'Reilly}, @@ -60,12 +110,108 @@ } % Plain book, no URLs at all -@book{laurillard93, +@book{test:laurillard93, author = {Diana Laurillard}, title = {Rethinking University Teaching}, publisher = {Routledge}, year = 1993 } +% Webpage with lastchecked but no date +@webpage{test:iso690, + author = {{International Standards Organisation}}, + title = {{ISO 690-2}}, + url = {http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm}, + lastchecked = {20 August 2001} +} + +% Webpage with date but no lastchecked +@Webpage{test:classroom96, + title = {Citing Internet Addresses: how students should + reference online sources in their bibliographies}, + year = 1996, + month = mar, + key = {Classroom}, + url = "http://www.classroom.net/classroom/CitingNetResources.html" +} + +% Webpage with neither date nor lastchecked +@Webpage{test:emory95, + author = "libsf@web.cc.emory.edu", + title = "Citation Formats", + url = "http://www.emory.edu/WHSCL/citation.formats.html" +} + +% The same, but with no title either +@Webpage{test:emory95x, + author = "libsf@web.cc.emory.edu", + url = "http://www.emory.edu/WHSCL/citation.formats.html" +} + +% Article with eprint number +@techreport{test:simkin, + author = {Mikhail Simkin and V. P. Roychowdhury}, + title = {Read before you cite!}, + year = 2002, + institution = {UCLA}, + eprint = {cond-mat/0212043} +} + +% Article with a DOI +% an underscore +@article{test:gray00c, + author = "Norman Gray", + title = "Automatic Reduction of Elliptic Integrals using + {Carlson's} Relations", + journal = {Mathematics of Computation}, + volume = 71, + pages = {311-318}, + year = 2002, + doi = {10.1090/S0025-5718-01-01333-3} +} + +% Article with a PUBMED reference +@Article{test:giffin03, + author = {M J Giffin and J C Stroud and D L Bates and von Koenig, K D and J Hardin and L Chen}, + title = {Structure of {NFAT1} Bound as a Dimer to the {HIV-1 LTR} kappa {B} element}, + journal = {Nature Structural Biology}, + year = {2003}, + volume = {10}, + number = {10}, + pages = {800-6}, + month = oct, + pubmed = {12949493} +} + +@ARTICLE{test:nastydoi, + author = {Zemla, Adam and Venclovas, Ceslovas and Moult, John and + Fidelis, Krzysztof}, + title = {{P}rocessing and analysis of {CASP}3 protein structure predictions}, + journal = {Proteins: Structure, Function, and Genetics}, + year = {1999}, + volume = {37}, + pages = {22--29}, + number = {S3}, + month = jan, + comment = {Description of GDT measure.}, + doi = {10.1002/(SICI)1097-0134(1999)37:3+<22::AID-PROT5>3.0.CO;2-W}, + keywords = {CASP}, + timestamp = {2007-03-13} +} + +% Example from Jason Eisner, by mail (nothing special about the entry, +% but he seemed to be having formatting problems with unsrturl and proceedings +% entries. +@InProceedings{test:eisner-sample, + author = {Damianos Karakos and Sanjeev Khudanpur and Jason + Eisner and Carey~E. Priebe}, + title = {Iterative denoising using {J}ensen-{R}eny\'{\i} + divergences with an application to unsupervised + document categorization}, + booktitle = {Proceedings of ICASSP}, + year = 2007, + url = {http://cs.jhu.edu/~jason/papers/#icassp07} +} + diff --git a/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst b/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst index 1a99ffbd620..aefda0e00f9 100644 --- a/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst +++ b/Master/texmf-dist/bibtex/bst/urlbst/abbrvurl.bst @@ -1,8 +1,13 @@ -%%% Modification of BibTeX style file /local2/teTeX-1.0/share/texmf/bibtex/bst/base/abbrv.bst -%%% to add webpage entry type, and url and lastchecked fields -%%% Edits by urlbst.pl, version 0.1 -%%% (marked with % urlbst.pl) +%%% Modification of BibTeX style file /usr/local/texlive/2007/texmf-dist/bibtex/bst/base/abbrv.bst +%%% ... by urlbst, version 0.6-1 (marked with "% urlbst") +%%% See <http://purl.org/nxg/dist/urlbst> +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added PUBMED support. +%%% Added hyperref support. %%% Original headers follow... + % BibTeX standard bibliography style `abbrv' % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. % Copyright (C) 1985, all rights reserved. @@ -36,22 +41,54 @@ ENTRY type volume year - url % urlbst.pl - lastchecked + eprint % urlbst + doi % urlbst + pubmed % urlbst + url % urlbst + lastchecked % urlbst } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } -INTEGERS { bracket.state outside.brackets open.brackets within.brackets close.brackets } % urlbst.pl +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED + "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref + #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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here FUNCTION {init.state.consts} -{ #0 'outside.brackets := % urlbst.pl +{ #0 'outside.brackets := % urlbst #1 'open.brackets := #2 'within.brackets := #3 'close.brackets := - #0 'before.all := + #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := @@ -59,7 +96,7 @@ FUNCTION {init.state.consts} STRINGS { s t } -% urlbst.pl +% urlbst FUNCTION {output.nonnull.original} { 's := output.state mid.sentence = @@ -81,12 +118,50 @@ FUNCTION {output.nonnull.original} s } -% urlbst.pl... +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} FUNCTION {output.nonnull} { % Save the thing we've been asked to output 's := - % If the bracket-state is close.brackets, then add a close-bracket to what's - % currently at the top of the stack, and set bracket.state to outside.brackets + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets bracket.state close.brackets = { "]" * outside.brackets 'bracket.state := @@ -98,7 +173,8 @@ FUNCTION {output.nonnull} % Write out what's currently at the top of the stack, using the % original output.nonnull function. s - output.nonnull.original + add.inlinelink + output.nonnull.original % invoke the original output.nonnull } { % Still in brackets. Add open-bracket or (continuation) comma, add the % new text (in s) to the top of the stack, and move to the close-brackets @@ -123,20 +199,13 @@ FUNCTION {inbrackets} if$ } -FUNCTION {format.url} -{ url empty$ - { "" } - { "Available from World Wide Web: \url{" url * "}" * } - if$ -} - FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {output} { duplicate$ empty$ @@ -153,9 +222,8 @@ FUNCTION {output.check} if$ } -FUNCTION {output.bibitem} -{ outside.brackets 'bracket.state := % urlbst.pl - newline$ +FUNCTION {output.bibitem.original} +{ newline$ "\bibitem{" write$ cite$ write$ "}" write$ @@ -164,13 +232,8 @@ FUNCTION {output.bibitem} before.all 'output.state := } -FUNCTION {fin.entry} -{ - bracket.state close.brackets = % urlbst.pl - { "]" * } - 'skip$ - if$ - add.period$ +FUNCTION {fin.entry.original} +{ add.period$ write$ newline$ } @@ -612,7 +675,73 @@ FUNCTION {format.incoll.inproc.crossref} " \cite{" * crossref * "}" * } -% urlbst.pl... +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + % Output a URL. We can't use the more normal idiom (something like % `format.url output'), because the `inbrackets' within % format.lastchecked applies to everything between calls to `output', @@ -628,6 +757,51 @@ FUNCTION {output.url} if$ } +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + % Webpage entry type. % Title and url fields required; % author, note, year, month, and lastchecked fields optional @@ -640,10 +814,19 @@ FUNCTION {output.url} FUNCTION {webpage} { output.bibitem author empty$ - 'skip$ - { format.authors output.nonnull } + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ format.title "title" output.check inbrackets "online" output new.block @@ -651,23 +834,22 @@ FUNCTION {webpage} 'skip$ { format.date "year" output.check } if$ - lastchecked empty$ - 'skip$ - { format.lastchecked output } - if$ - new.block - format.url "url" output.check + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. new.block note output fin.entry } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {article} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -680,8 +862,6 @@ FUNCTION {article} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -698,6 +878,7 @@ FUNCTION {book} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -714,8 +895,6 @@ FUNCTION {book} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -724,14 +903,13 @@ FUNCTION {booklet} { output.bibitem format.authors output new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -748,6 +926,7 @@ FUNCTION {inbook} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -766,8 +945,6 @@ FUNCTION {inbook} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -776,6 +953,7 @@ FUNCTION {incollection} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -794,8 +972,6 @@ FUNCTION {incollection} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -804,6 +980,7 @@ FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -830,8 +1007,6 @@ FUNCTION {inproceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -851,6 +1026,7 @@ FUNCTION {manual} { format.authors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check author empty$ { organization empty$ @@ -868,8 +1044,6 @@ FUNCTION {manual} format.edition output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -878,6 +1052,7 @@ FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull @@ -885,8 +1060,6 @@ FUNCTION {mastersthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -895,13 +1068,12 @@ FUNCTION {misc} { output.bibitem format.authors output title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title output howpublished new.block.checka howpublished output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry empty.misc.check @@ -911,6 +1083,7 @@ FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull @@ -918,8 +1091,6 @@ FUNCTION {phdthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -931,6 +1102,7 @@ FUNCTION {proceedings} { format.editors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check format.bvolume output format.number.series output @@ -955,8 +1127,6 @@ FUNCTION {proceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -965,6 +1135,7 @@ FUNCTION {techreport} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block format.tr.number output.nonnull @@ -972,8 +1143,6 @@ FUNCTION {techreport} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -982,6 +1151,7 @@ FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block note "note" output.check @@ -1238,6 +1408,7 @@ FUNCTION {begin.bib} EXECUTE {begin.bib} +EXECUTE {init.urlbst.variables} EXECUTE {init.state.consts} ITERATE {call.type$} diff --git a/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst b/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst index d18332871bd..19ed512e504 100644 --- a/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst +++ b/Master/texmf-dist/bibtex/bst/urlbst/alphaurl.bst @@ -1,8 +1,13 @@ -%%% Modification of BibTeX style file /local2/teTeX-1.0/share/texmf/bibtex/bst/base/alpha.bst -%%% to add webpage entry type, and url and lastchecked fields -%%% Edits by urlbst.pl, version 0.1 -%%% (marked with % urlbst.pl) +%%% Modification of BibTeX style file /usr/local/texlive/2007/texmf-dist/bibtex/bst/base/alpha.bst +%%% ... by urlbst, version 0.6-1 (marked with "% urlbst") +%%% See <http://purl.org/nxg/dist/urlbst> +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added PUBMED support. +%%% Added hyperref support. %%% Original headers follow... + % BibTeX standard bibliography style `alpha' % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. % Copyright (C) 1985, all rights reserved. @@ -36,22 +41,54 @@ ENTRY type volume year - url % urlbst.pl - lastchecked + eprint % urlbst + doi % urlbst + pubmed % urlbst + url % urlbst + lastchecked % urlbst } {} { label extra.label sort.label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } -INTEGERS { bracket.state outside.brackets open.brackets within.brackets close.brackets } % urlbst.pl +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED + "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref + #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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here FUNCTION {init.state.consts} -{ #0 'outside.brackets := % urlbst.pl +{ #0 'outside.brackets := % urlbst #1 'open.brackets := #2 'within.brackets := #3 'close.brackets := - #0 'before.all := + #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := @@ -59,7 +96,7 @@ FUNCTION {init.state.consts} STRINGS { s t } -% urlbst.pl +% urlbst FUNCTION {output.nonnull.original} { 's := output.state mid.sentence = @@ -81,12 +118,50 @@ FUNCTION {output.nonnull.original} s } -% urlbst.pl... +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} FUNCTION {output.nonnull} { % Save the thing we've been asked to output 's := - % If the bracket-state is close.brackets, then add a close-bracket to what's - % currently at the top of the stack, and set bracket.state to outside.brackets + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets bracket.state close.brackets = { "]" * outside.brackets 'bracket.state := @@ -98,7 +173,8 @@ FUNCTION {output.nonnull} % Write out what's currently at the top of the stack, using the % original output.nonnull function. s - output.nonnull.original + add.inlinelink + output.nonnull.original % invoke the original output.nonnull } { % Still in brackets. Add open-bracket or (continuation) comma, add the % new text (in s) to the top of the stack, and move to the close-brackets @@ -123,20 +199,13 @@ FUNCTION {inbrackets} if$ } -FUNCTION {format.url} -{ url empty$ - { "" } - { "Available from World Wide Web: \url{" url * "}" * } - if$ -} - FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {output} { duplicate$ empty$ @@ -153,9 +222,8 @@ FUNCTION {output.check} if$ } -FUNCTION {output.bibitem} -{ outside.brackets 'bracket.state := % urlbst.pl - newline$ +FUNCTION {output.bibitem.original} +{ newline$ "\bibitem[" write$ label write$ "]{" write$ @@ -166,13 +234,8 @@ FUNCTION {output.bibitem} before.all 'output.state := } -FUNCTION {fin.entry} -{ - bracket.state close.brackets = % urlbst.pl - { "]" * } - 'skip$ - if$ - add.period$ +FUNCTION {fin.entry.original} +{ add.period$ write$ newline$ } @@ -614,7 +677,73 @@ FUNCTION {format.incoll.inproc.crossref} " \cite{" * crossref * "}" * } -% urlbst.pl... +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + % Output a URL. We can't use the more normal idiom (something like % `format.url output'), because the `inbrackets' within % format.lastchecked applies to everything between calls to `output', @@ -630,6 +759,51 @@ FUNCTION {output.url} if$ } +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + % Webpage entry type. % Title and url fields required; % author, note, year, month, and lastchecked fields optional @@ -642,10 +816,19 @@ FUNCTION {output.url} FUNCTION {webpage} { output.bibitem author empty$ - 'skip$ - { format.authors output.nonnull } + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ format.title "title" output.check inbrackets "online" output new.block @@ -653,23 +836,22 @@ FUNCTION {webpage} 'skip$ { format.date "year" output.check } if$ - lastchecked empty$ - 'skip$ - { format.lastchecked output } - if$ - new.block - format.url "url" output.check + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. new.block note output fin.entry } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {article} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -682,8 +864,6 @@ FUNCTION {article} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -700,6 +880,7 @@ FUNCTION {book} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -716,8 +897,6 @@ FUNCTION {book} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -726,14 +905,13 @@ FUNCTION {booklet} { output.bibitem format.authors output new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -750,6 +928,7 @@ FUNCTION {inbook} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -768,8 +947,6 @@ FUNCTION {inbook} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -778,6 +955,7 @@ FUNCTION {incollection} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -796,8 +974,6 @@ FUNCTION {incollection} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -806,6 +982,7 @@ FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -832,8 +1009,6 @@ FUNCTION {inproceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -853,6 +1028,7 @@ FUNCTION {manual} { format.authors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check author empty$ { organization empty$ @@ -870,8 +1046,6 @@ FUNCTION {manual} format.edition output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -880,6 +1054,7 @@ FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull @@ -887,8 +1062,6 @@ FUNCTION {mastersthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -897,13 +1070,12 @@ FUNCTION {misc} { output.bibitem format.authors output title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title output howpublished new.block.checka howpublished output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry empty.misc.check @@ -913,6 +1085,7 @@ FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull @@ -920,8 +1093,6 @@ FUNCTION {phdthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -933,6 +1104,7 @@ FUNCTION {proceedings} { format.editors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check format.bvolume output format.number.series output @@ -957,8 +1129,6 @@ FUNCTION {proceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -967,6 +1137,7 @@ FUNCTION {techreport} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block format.tr.number output.nonnull @@ -974,8 +1145,6 @@ FUNCTION {techreport} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -984,6 +1153,7 @@ FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block note "note" output.check @@ -1398,6 +1568,7 @@ FUNCTION {begin.bib} EXECUTE {begin.bib} +EXECUTE {init.urlbst.variables} EXECUTE {init.state.consts} ITERATE {call.type$} diff --git a/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst b/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst index 78fecde3486..5c0788e1398 100644 --- a/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst +++ b/Master/texmf-dist/bibtex/bst/urlbst/plainurl.bst @@ -1,8 +1,13 @@ -%%% Modification of BibTeX style file /local2/teTeX-1.0/share/texmf/bibtex/bst/base/plain.bst -%%% to add webpage entry type, and url and lastchecked fields -%%% Edits by urlbst.pl, version 0.1 -%%% (marked with % urlbst.pl) +%%% Modification of BibTeX style file /usr/local/texlive/2007/texmf-dist/bibtex/bst/base/plain.bst +%%% ... by urlbst, version 0.6-1 (marked with "% urlbst") +%%% See <http://purl.org/nxg/dist/urlbst> +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added PUBMED support. +%%% Added hyperref support. %%% Original headers follow... + % BibTeX standard bibliography style `plain' % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. % Copyright (C) 1985, all rights reserved. @@ -36,22 +41,54 @@ ENTRY type volume year - url % urlbst.pl - lastchecked + eprint % urlbst + doi % urlbst + pubmed % urlbst + url % urlbst + lastchecked % urlbst } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } -INTEGERS { bracket.state outside.brackets open.brackets within.brackets close.brackets } % urlbst.pl +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED + "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref + #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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here FUNCTION {init.state.consts} -{ #0 'outside.brackets := % urlbst.pl +{ #0 'outside.brackets := % urlbst #1 'open.brackets := #2 'within.brackets := #3 'close.brackets := - #0 'before.all := + #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := @@ -59,7 +96,7 @@ FUNCTION {init.state.consts} STRINGS { s t } -% urlbst.pl +% urlbst FUNCTION {output.nonnull.original} { 's := output.state mid.sentence = @@ -81,12 +118,50 @@ FUNCTION {output.nonnull.original} s } -% urlbst.pl... +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} FUNCTION {output.nonnull} { % Save the thing we've been asked to output 's := - % If the bracket-state is close.brackets, then add a close-bracket to what's - % currently at the top of the stack, and set bracket.state to outside.brackets + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets bracket.state close.brackets = { "]" * outside.brackets 'bracket.state := @@ -98,7 +173,8 @@ FUNCTION {output.nonnull} % Write out what's currently at the top of the stack, using the % original output.nonnull function. s - output.nonnull.original + add.inlinelink + output.nonnull.original % invoke the original output.nonnull } { % Still in brackets. Add open-bracket or (continuation) comma, add the % new text (in s) to the top of the stack, and move to the close-brackets @@ -123,20 +199,13 @@ FUNCTION {inbrackets} if$ } -FUNCTION {format.url} -{ url empty$ - { "" } - { "Available from World Wide Web: \url{" url * "}" * } - if$ -} - FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {output} { duplicate$ empty$ @@ -153,9 +222,8 @@ FUNCTION {output.check} if$ } -FUNCTION {output.bibitem} -{ outside.brackets 'bracket.state := % urlbst.pl - newline$ +FUNCTION {output.bibitem.original} +{ newline$ "\bibitem{" write$ cite$ write$ "}" write$ @@ -164,13 +232,8 @@ FUNCTION {output.bibitem} before.all 'output.state := } -FUNCTION {fin.entry} -{ - bracket.state close.brackets = % urlbst.pl - { "]" * } - 'skip$ - if$ - add.period$ +FUNCTION {fin.entry.original} +{ add.period$ write$ newline$ } @@ -612,7 +675,73 @@ FUNCTION {format.incoll.inproc.crossref} " \cite{" * crossref * "}" * } -% urlbst.pl... +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + % Output a URL. We can't use the more normal idiom (something like % `format.url output'), because the `inbrackets' within % format.lastchecked applies to everything between calls to `output', @@ -628,6 +757,51 @@ FUNCTION {output.url} if$ } +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + % Webpage entry type. % Title and url fields required; % author, note, year, month, and lastchecked fields optional @@ -640,10 +814,19 @@ FUNCTION {output.url} FUNCTION {webpage} { output.bibitem author empty$ - 'skip$ - { format.authors output.nonnull } + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ format.title "title" output.check inbrackets "online" output new.block @@ -651,23 +834,22 @@ FUNCTION {webpage} 'skip$ { format.date "year" output.check } if$ - lastchecked empty$ - 'skip$ - { format.lastchecked output } - if$ - new.block - format.url "url" output.check + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. new.block note output fin.entry } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {article} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -680,8 +862,6 @@ FUNCTION {article} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -698,6 +878,7 @@ FUNCTION {book} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -714,8 +895,6 @@ FUNCTION {book} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -724,14 +903,13 @@ FUNCTION {booklet} { output.bibitem format.authors output new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -748,6 +926,7 @@ FUNCTION {inbook} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -766,8 +945,6 @@ FUNCTION {inbook} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -776,6 +953,7 @@ FUNCTION {incollection} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -794,8 +972,6 @@ FUNCTION {incollection} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -804,6 +980,7 @@ FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -830,8 +1007,6 @@ FUNCTION {inproceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -851,6 +1026,7 @@ FUNCTION {manual} { format.authors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check author empty$ { organization empty$ @@ -868,8 +1044,6 @@ FUNCTION {manual} format.edition output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -878,6 +1052,7 @@ FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull @@ -885,8 +1060,6 @@ FUNCTION {mastersthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -895,13 +1068,12 @@ FUNCTION {misc} { output.bibitem format.authors output title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title output howpublished new.block.checka howpublished output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry empty.misc.check @@ -911,6 +1083,7 @@ FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull @@ -918,8 +1091,6 @@ FUNCTION {phdthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -931,6 +1102,7 @@ FUNCTION {proceedings} { format.editors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check format.bvolume output format.number.series output @@ -955,8 +1127,6 @@ FUNCTION {proceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -965,6 +1135,7 @@ FUNCTION {techreport} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block format.tr.number output.nonnull @@ -972,8 +1143,6 @@ FUNCTION {techreport} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -982,6 +1151,7 @@ FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block note "note" output.check @@ -1238,6 +1408,7 @@ FUNCTION {begin.bib} EXECUTE {begin.bib} +EXECUTE {init.urlbst.variables} EXECUTE {init.state.consts} ITERATE {call.type$} diff --git a/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst b/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst index 7c4426bd0dc..602c0f105c7 100644 --- a/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst +++ b/Master/texmf-dist/bibtex/bst/urlbst/unsrturl.bst @@ -1,8 +1,13 @@ -%%% Modification of BibTeX style file /local2/teTeX-1.0/share/texmf/bibtex/bst/base/unsrt.bst -%%% to add webpage entry type, and url and lastchecked fields -%%% Edits by urlbst.pl, version 0.1 -%%% (marked with % urlbst.pl) +%%% Modification of BibTeX style file /usr/local/texlive/2007/texmf-dist/bibtex/bst/base/unsrt.bst +%%% ... by urlbst, version 0.6-1 (marked with "% urlbst") +%%% See <http://purl.org/nxg/dist/urlbst> +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added PUBMED support. +%%% Added hyperref support. %%% Original headers follow... + % BibTeX standard bibliography style `unsrt' % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. % Copyright (C) 1985, all rights reserved. @@ -36,22 +41,54 @@ ENTRY type volume year - url % urlbst.pl - lastchecked + eprint % urlbst + doi % urlbst + pubmed % urlbst + url % urlbst + lastchecked % urlbst } {} { label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } -INTEGERS { bracket.state outside.brackets open.brackets within.brackets close.brackets } % urlbst.pl +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } % urlbst... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "Available from: " 'urlintro := % prefix before URL + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref + "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref + "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED + "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref + #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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here FUNCTION {init.state.consts} -{ #0 'outside.brackets := % urlbst.pl +{ #0 'outside.brackets := % urlbst #1 'open.brackets := #2 'within.brackets := #3 'close.brackets := - #0 'before.all := + #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := @@ -59,7 +96,7 @@ FUNCTION {init.state.consts} STRINGS { s t } -% urlbst.pl +% urlbst FUNCTION {output.nonnull.original} { 's := output.state mid.sentence = @@ -81,12 +118,50 @@ FUNCTION {output.nonnull.original} s } -% urlbst.pl... +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} FUNCTION {output.nonnull} { % Save the thing we've been asked to output 's := - % If the bracket-state is close.brackets, then add a close-bracket to what's - % currently at the top of the stack, and set bracket.state to outside.brackets + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets bracket.state close.brackets = { "]" * outside.brackets 'bracket.state := @@ -98,7 +173,8 @@ FUNCTION {output.nonnull} % Write out what's currently at the top of the stack, using the % original output.nonnull function. s - output.nonnull.original + add.inlinelink + output.nonnull.original % invoke the original output.nonnull } { % Still in brackets. Add open-bracket or (continuation) comma, add the % new text (in s) to the top of the stack, and move to the close-brackets @@ -123,20 +199,13 @@ FUNCTION {inbrackets} if$ } -FUNCTION {format.url} -{ url empty$ - { "" } - { "Available from World Wide Web: \url{" url * "}" * } - if$ -} - FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {output} { duplicate$ empty$ @@ -153,9 +222,8 @@ FUNCTION {output.check} if$ } -FUNCTION {output.bibitem} -{ outside.brackets 'bracket.state := % urlbst.pl - newline$ +FUNCTION {output.bibitem.original} +{ newline$ "\bibitem{" write$ cite$ write$ "}" write$ @@ -164,13 +232,8 @@ FUNCTION {output.bibitem} before.all 'output.state := } -FUNCTION {fin.entry} -{ - bracket.state close.brackets = % urlbst.pl - { "]" * } - 'skip$ - if$ - add.period$ +FUNCTION {fin.entry.original} +{ add.period$ write$ newline$ } @@ -611,7 +674,73 @@ FUNCTION {format.incoll.inproc.crossref} " \cite{" * crossref * "}" * } -% urlbst.pl... +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + % Output a URL. We can't use the more normal idiom (something like % `format.url output'), because the `inbrackets' within % format.lastchecked applies to everything between calls to `output', @@ -627,6 +756,51 @@ FUNCTION {output.url} if$ } +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + % Webpage entry type. % Title and url fields required; % author, note, year, month, and lastchecked fields optional @@ -639,10 +813,19 @@ FUNCTION {output.url} FUNCTION {webpage} { output.bibitem author empty$ - 'skip$ - { format.authors output.nonnull } + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ format.title "title" output.check inbrackets "online" output new.block @@ -650,23 +833,22 @@ FUNCTION {webpage} 'skip$ { format.date "year" output.check } if$ - lastchecked empty$ - 'skip$ - { format.lastchecked output } - if$ - new.block - format.url "url" output.check + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. new.block note output fin.entry } -% ...% urlbst.pl +% ...urlbst to here FUNCTION {article} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -679,8 +861,6 @@ FUNCTION {article} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -697,6 +877,7 @@ FUNCTION {book} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -713,8 +894,6 @@ FUNCTION {book} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -723,14 +902,13 @@ FUNCTION {booklet} { output.bibitem format.authors output new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check howpublished address new.block.checkb howpublished output address output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -747,6 +925,7 @@ FUNCTION {inbook} } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check crossref missing$ { format.bvolume output @@ -765,8 +944,6 @@ FUNCTION {inbook} format.edition output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -775,6 +952,7 @@ FUNCTION {incollection} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -793,8 +971,6 @@ FUNCTION {incollection} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -803,6 +979,7 @@ FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block crossref missing$ @@ -829,8 +1006,6 @@ FUNCTION {inproceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -850,6 +1025,7 @@ FUNCTION {manual} { format.authors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check author empty$ { organization empty$ @@ -867,8 +1043,6 @@ FUNCTION {manual} format.edition output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -877,6 +1051,7 @@ FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block "Master's thesis" format.thesis.type output.nonnull @@ -884,8 +1059,6 @@ FUNCTION {mastersthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -894,13 +1067,12 @@ FUNCTION {misc} { output.bibitem format.authors output title howpublished new.block.checkb + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title output howpublished new.block.checka howpublished output format.date output new.block - output.url % urlbst.pl - new.block note output fin.entry empty.misc.check @@ -910,6 +1082,7 @@ FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check new.block "PhD thesis" format.thesis.type output.nonnull @@ -917,8 +1090,6 @@ FUNCTION {phdthesis} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -930,6 +1101,7 @@ FUNCTION {proceedings} { format.editors output.nonnull } if$ new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.btitle "title" output.check format.bvolume output format.number.series output @@ -954,8 +1126,6 @@ FUNCTION {proceedings} } if$ new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -964,6 +1134,7 @@ FUNCTION {techreport} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block format.tr.number output.nonnull @@ -971,8 +1142,6 @@ FUNCTION {techreport} address output format.date "year" output.check new.block - output.url % urlbst.pl - new.block note output fin.entry } @@ -981,6 +1150,7 @@ FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block + title empty$ 'skip$ 'setup.inlinelink if$ % urlbst format.title "title" output.check new.block note "note" output.check @@ -1092,6 +1262,7 @@ FUNCTION {begin.bib} EXECUTE {begin.bib} +EXECUTE {init.urlbst.variables} EXECUTE {init.state.consts} ITERATE {call.type$} diff --git a/Master/texmf-dist/doc/latex/urlbst/README b/Master/texmf-dist/doc/latex/urlbst/README index ed3af19c36a..7e30209d774 100644 --- a/Master/texmf-dist/doc/latex/urlbst/README +++ b/Master/texmf-dist/doc/latex/urlbst/README @@ -1,47 +1,283 @@ -Adds a `webpage' BibTeX entry type, and support for general `url' and -`lastchecked' fields, to arbitrary BibTeX style files. + Urlbst - %%VERSION%% 0.1 + A script to add a webpage BibTeX entry type, and add support for + general url and lastchecked fields, to (most) BibTeX .bst files. + Optionally adds basic support for eprint and doi fields, and + hypertex/hyperref support, too. -The Perl script urlbst.pl can be used to add this support to an -arbitrary .bst file which has a reasonably `conventional' structure. -The result is meant to be robust rather than pretty. + The Persistent URL for this page is http://purl.org/nxg/dist/urlbst. - Usage: urlbst.pl [input-file [output-file]] + Version 0.6-1, 2008 June 16. -if either the input-file or the output-file is omitted, they default -to stdin and stdout respectively. If the input file already has a URL -entry type, then the script objects. + Contents + * Usage + * For example... + * Download and installation + * Further Information + * Version history -For example: + The standard BibTeX styles have no explicit support for the web, in + that they include no `webpage' type, and have no support for adding + URLs to references. There are rumours that such support might appear in + BibTeX 1.0, but there is no estimate of when that is likely to arrive. - urlbst.pl `kpsewhich siam.bst` siamurl.bst + The Perl script urlbst can be used to add this support to an arbitrary + .bst file which has a reasonably `conventional' structure. The result + is meant to be robust rather than pretty. -The distributed files abbrvurl.bst, alphaurl.bst, plainurl.bst and -unsrturl.bst are versions of the standard style files which have been -pre-converted. + 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 works + (or at least, which you cannot or will not change), and edits it to add + the new webpage entry type, plus the url, lastchecked and eprint + fields. Fuller details are in the manual. -Only the style files which result from conversion of the standard -styles are checked in the regression tests. Other style files which -are known to work include +Usage - acm.bst, amsalpha.bst, amsplain.bst, apalike.bst, gerabbrv.bst, - geralpha.bst, gerapali.bst, gerplain.bst, gerunsrt.bst, ieeetr.bst and - siam.bst +urlbst [--eprint] [--doi] + [--inlinelinks] [--nohyperlinks] [--hypertex] [--hyperref] + [input-file [output-file]] -Style files known not to work, because they are too different from the -standard styles, include the koma-script styles and the refer styles -(they are not designed to produce conventional .bbl files). The -natbib and revtex style files already have URL fields. If you have a -BibTeX style file which you think ought to work, but with which the -script fails, send it to me, and I'll try to work out what I've missed. + if either the input-file or the output-file is omitted, they default to + stdin and stdout respectively. If the input file already has a URL + entry type, then the script objects. - + If the option --eprint is present, then include support for a eprint + field in the modified .bst file, with a citation format matching that + recommended in the arXiv documentation. Similarly, if the option --doi + is present, then include support for a doi field, referring to a DOI + for the bibliographic item. + 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 + HyperTeX (see arXiv, again), supported by xdvi, dvips and others, or + using the support available from the hyperref package. These options + have no effect unless one of the --eprint or --doi options is given: + when URLs are included in the bibliography, they are written out using + the \url{...} command, and hyperref automatically processes that in the + correct way to include a hyperlink. -Copyright 2002, Norman Gray. -Released under the terms of the GNU General Public Licence. + The --inlinelinks 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 --hyperref or --hypertex). Any DOI or eprint text which would be + produced as a result of the appropriate option will still appear in + this mode. - Norman Gray - norman@astro.gla.ac.uk - $Date: 2002/04/22 15:49:06 $ + The distribution includes preconverted versions of the four standard + BibTeX .bst style files. + + Only the style files which result from conversion of the standard + styles are checked in the regression tests. Other style files which are + known to work include + + acm.bst, amsalpha.bst, amsplain.bst, apalike.bst, gerabbrv.bst, + geralpha.bst, gerapali.bst, gerplain.bst, gerunsrt.bst, ieeetr.bst, + siam.bst, mla.bst + + Style files which are known to fail: + * Currently (v0.5), there exists a style achicago.bst which seems to + fox urlbst; it turns out that there's a simpler but almost + equivalent style chicago.bst which works. + * Some APA-like styles, including at least apager.bst, seem to be + sufficiently different from the most common styles, that they + confuse urlbst completely. + * The koma-script styles and the refer styles are not designed to + produce conventional .bbl files, and urlbst does not aim to produce + anything useful from these. + + This might be a good time for me to revisit the rather convoluted logic + within the script, to make it a little more robust in the face of + variants like these, but don't hold your breath... + + The natbib and revtex style files already have URL fields. If you have + a BibTeX style file which you think ought to work, but with which the + script fails, send it to me, and I'll try to work out what I've missed + (no promises, though). + + Note that the command to invoke the script changed from `urlbst.pl' to + plain `urlbst' between versions 0.3 and 0.4. + +For example... + + To add URL support to the standard siam.bst file, you can give the + command +% urlbst /path/to/original/siam.bst siamurl.bst + + Your TeX installation will likely have some way of helping you find + where the original .bst files are. On teTeX-based systems, for example, + the command kpsewhich siam.bst returns the full path of the siam.bst + file which BibTeX would find. + + The distributed files abbrvurl.bst, alphaurl.bst, plainurl.bst and + unsrturl.bst are versions of the standard style files which have been + pre-converted. + + There is more general discussion of including URLs in bibliographies in + the UK TeX FAQ. + +Download and installation + + Download the file urlbst-0.6-1.tar.gz and unpack it. + + To install, you should simply copy the distributed urlbst script to + someplace on the path (such as /usr/local/bin, or ~/local/bin, + depending on your privileges and tastes). + + If you (might) want to use the pre-converted standard .bst files, then + you'll need to copy these to somewhere in the BibTeX search path. Type + kpsepath bst on Unix to find out the list of places BibTeX searches, + and pick either one of the user-local locations, or a system-wide one. + If you're installing in a system-wide location, you'll need admin + privileges, obviously, and you will probably need to use texhash, + mktexlsr or its equivalent, to update LaTeX's filename cache. For + further hints here, see the TeX FAQ entries on installing a package and + where LaTeX puts files. + + That should be all you have to do. + + The urlbst script is distributed with a path which should just work, as + long as the Perl binary is in your path, but if you have problems here, + then you might want to change the first line to something like +#! /usr/local/bin/perl + + if that's where your Perl binary is. + + You can also use the conventional ./configure; make; make install to + configure and install the package (as root, or using sudo if you're + installing it in a system location), though you still have to install + the .bst files by hand. This is rather heavyweight for the trivial + amount of configuration required, so it's almost always simpler just to + do things by hand. + + If you need to change some of the urlbst defaults, however, or if your + fingers type ./configure spontaneously, then you can be reassured that + the configure script supports the standard --prefix option, plus the + following options setting defaults: + + --with-eprints=url, --without-eprints + This makes the --eprints option to urlbst available by default, + and allows you to optionally specify a prefix for creating URLs + from eprint numbers. The default for this URL is + http://arxiv.org/abs/ -- this is appropriate for arXiv, + obviously, but there are now a variety of other preprint + archives appearing, for which this might be inappropriate. If + you have comments on this default, or alternatives, please let + me know. This option is enabled by default; if you have some + reason for disabling the --eprints option for urlbst, the give + the configure option --without-eprints + + --with-doi=url, --without-doi + This makes available the --doi option to urlbst and, as with the + --with-eprints option, allows you to customise the DOI resolver + URL. The --doi option to urlbst is on by default. + + --with-href=0/1/2 + This allows you to specify the type of hyperlinks which are + inserted in the bibliography. Values 0, 1 and 2, indicating no + hyperlinks, hypertex-style links, and hyperref-style links, + respectively. The default is --with-href=0. The hyperref-style + option is intended to complement the increasingly standard + hyperref package. + + The first two options simply change defaults, and if you never use the + new eprints or doi fields, then the defaults don't matter to you. + + Since the modified style generates URLs wrapped in the \url{} macro, it + is useful to use the resulting bibliography style alongside the url + package. Since this tends to work with hyperref anyway, where possible, + you don't get any extra goodness by changing the --with-href default at + configuration time. + + Documentation + + Basic documentation is in the file urlbst.tex. This is distributed as a + PDF file, but if you want to regenerate it, use +% latex urlbst +% bibtex urlbst +% latex urlbst +% latex urlbst + +Further Information + + urlbst is archived on CTAN at biblio/bibtex/contrib/urlbst/, and + discussed in the TeX FAQ. + + The home page of urlbst might possibly have more recent versions than + the one you're looking at now. + + Copyright 2002-8, Norman Gray. Released under the terms of the GNU + General Public Licence. + +Version history + + 0.6-1, 2008 June 16 + Fixed some broken links to the various citation standards (I + think in this context this should probably not be happening, + yes?). The distributed *url.bst no longer have the --inlinelinks + option turned on by default. + + 0.6, 2007 March 26 + Added the option --inlinelinks, which adds inline hyperlinks to + any bibliography entries which have URLs, but does so inline, + rather than printing the URL explicitly in the bibliography. + This is (primarily) useful if you're preparing a version of a + document which will be read on-screen. Thanks to Jason Eisner + for the suggestion, and much testing. + + Incorporate hyperref bugfixes from Pawel/ Widera. + + 0.6b3 + Further reworkings of the inlinelinks support, so that + it's now fired by a format.title (or format.btitle) line, + with a fallback in fin.entry. This should be more robust, + and allows me to delete some of the previous version's + gymnastics. + + 0.6b2 + Reworked inlinelinks support; should now be more robust. + Incorporate hyperref bugfixes from Pawel/ Widera. + + 0.6b1 + Added the option inlinelinks, which adds inline hyperlinks + to any bibliography entries which have URLs, but does so + inline, rather than printing the URL explicitly in the + bibliography. This is (only) useful if you're preparing a + version of a document which will be read on-screen. + + 0.5.2, 2006 September 6 + Another set of documentation-only changes, hopefully clarifying + installation. + + 0.5.1, 2006 January 10 + No functionality changes. Documentation and webpage changes + only, hopefully clarifying usage and configuration + + 0.5, 2005 June 3 + Added support for Digital Object Identifiers (DOI) fields in + bibliographies. + + 0.4-1, 2005 April 12 + Documentation improvements -- there are now examples in the help + text! + + 0.4, 2004 December 1 + Bug fixes: now compatible with mla.bst and friends. Now uses + ./configure (optionally). Assorted reorganisation. + + 0.3, 2003 June 4 + Added --eprint, --hypertex and --hyperref options. + + 0.2, 2002 October 23 + The `editor' field is now supported in the webpage entry type. + Basic documentation added. + + 0.1, 2002 April + Initial version + + Norman Gray + 2008 June 16 diff --git a/Master/texmf-dist/doc/latex/urlbst/VERSION b/Master/texmf-dist/doc/latex/urlbst/VERSION new file mode 100644 index 00000000000..6a4461b90b2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/VERSION @@ -0,0 +1 @@ +urlbst-0.6-1 diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst b/Master/texmf-dist/doc/latex/urlbst/urlbst new file mode 100755 index 00000000000..18501bd58b3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst @@ -0,0 +1,698 @@ +#! /usr/bin/env perl +# +# Usage: ./urlbst.pl [--eprint] [--doi] [--pubmed] +# [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref] +# [input-file [output-file]] +# 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 +# +# $Id: urlbst.in,v 1.10 2008/01/27 23:18:54 norman Exp $ + +$version = '0.6-1'; +($progname = $0) =~ s/.*\///; +$mymarker = "% $progname"; +$mymarkerend = "% ...$progname to here"; +$myurl = 'http://purl.org/nxg/dist/urlbst'; + + +$infile = '-'; +$outfile = '-'; + +$addeprints = 0; # if true (nonzero) we add support for eprints +$eprintprefix = 'arXiv:'; # make these settable with --eprint? syntax? +$eprinturl = 'http://arxiv.org/abs/'; + +$adddoiresolver = 0; +$doiprefix = 'doi:'; +$doiurl = 'http://dx.doi.org/'; + +$addpubmedresolver = 0; +$pubmedprefix = 'PMID:'; +$pubmedurl = 'http://www.ncbi.nlm.nih.gov/pubmed/'; + +$makehref = 0; +$availablestring = "Available from: "; +$inlinelinks = 0; + +$Usage = "$progname [--eprint] [--doi] [--pubmed]\n [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref]\n [--help] [input-file [output-file]]"; + +while ($#ARGV >= 0) { + if ($ARGV[0] eq '--eprint') { + $addeprints = 1; + } elsif ($ARGV[0] eq '--doi') { + $adddoiresolver = 1; + } elsif ($ARGV[0] eq '--pubmed') { + $addpubmedresolver = 1; + } elsif ($ARGV[0] eq '--nohyperlinks') { + $makehref = 0; + } elsif ($ARGV[0] eq '--hypertex') { + $makehref = 1; + } elsif ($ARGV[0] eq '--hyperref') { + $makehref = 2; + } elsif ($ARGV[0] eq '--inlinelinks') { + $inlinelinks = 1; + } elsif ($ARGV[0] eq '--help') { + print <<EOD; +urlbst version $version + Usage: $Usage + --eprint: include support for `eprint' fields + --doi: include support for `doi' field + --pubmed: include support for `pubmed' field + --nohyperlinks do not include active links anywhere + --inlinelinks add hyperlinks to entry titles + --hypertex: include HyperTeX-style hyperlink support + --hyperref: include {hyperref}-style hyperlink support + (generally better) + --help: print this help + Input and output files may be given as `-' (default) to indicate stdin/out +EOD + exit(0); + } elsif ($ARGV[0] =~ /^-/) { + die "Unrecognised option $ARGV[0]: Usage: $Usage\n"; + } elsif ($infile eq '-') { + $infile = $ARGV[0]; + } elsif ($outfile eq '-') { + $outfile = $ARGV[0]; + } else { + die "Usage: $Usage\n"; + } + shift(@ARGV); +} + +if ($inlinelinks && $makehref == 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; +} + +$exitstatus = 0; # success status + +open (IN, "<$infile") || die "Can't open $infile to read"; +open (OUT, ">$outfile") || die "Can't open $outfile to write"; + +# We have to make certain assumptions about the source files, in order +# to patch them at the correct places. Specifically, we assume that +# +# - there's a function init.state.consts +# +# - ...and an output.nonnull which does the actual outputting, which +# has the `usual' interface. +# +# - we can replace +# fin.entry +# by +# new.block +# output.url % the function which formats and displays any URL +# fin.entry +# +# - there is a function which handles the `article' entry type (this +# will always be true) +# +# - there is a function output.bibitem which is called at the +# beginning of each entry type +# - ...and one called fin.entry which is called at the end +# +# If the functions format.date, format.title or new.block are not defined (the +# former is not in apalike, for example, and the last is not in the +# AMS styles), then replacements are included in the output. +# +# All these assumptions are true of the standard files and, since most +# style files derive from them more or less directly, are true of most (?) +# other style files, too. +# +# There's some rather ugly Perl down here. The parsing for +# brace-matching could probably do with being rewritten in places, to +# 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 "%%% 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 "%%% Original headers follow...\n\n"; + +$found{initconsts} = 0; +$found{outputnonnull} = 0; +$found{article} = 0; +$found{outputbibitem} = 0; +$found{finentry} = 0; +$found{formatdate} = 0; +$found{formattitle} = 0; +$found{newblock} = 0; + +while (<IN>) { + /^ *%/ && do { + # Pass commented lines unchanged + 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 + # will mess things up. + $line = $_; + until ($line =~ /\{\s*(\w*)/) { + $line .= <IN>; + } + $bracematchtotal = 0; # reset + bracematcher($line); + $line =~ /\{\s*(\w*)/; + $found{'entry'.$1} = 1; + print OUT $line; + $line = <IN>; + until (bracematcher($line) == 0) { + # XXX deal with multiple entries on one line + ($line =~ /^\s*(\w*)/) && ($found{'entry'.$1} = 1); + print OUT $line; + $line = <IN>; + } + if (defined($found{entryurl})) { + print STDERR "$progname: style file $infile already has URL entry!\n"; + # print out the rest of the file, and give up + print OUT $line; + while (<IN>) { + print OUT; + } + $exitstatus = 1; + last; + } else { + print OUT " eprint $mymarker\n doi $mymarker\n pubmed $mymarker\n url $mymarker\n lastchecked $mymarker\n"; + } + print OUT $line; + next; + }; + + /^ *FUNCTION *\{init\.state\.consts\}/ && do { + # In the init.state.consts function, add an extra set of + # constants at the beginning. Also use this as the marker for + # the place to add the init strings function. + print OUT <<EOD; +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } $mymarker... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "$availablestring" 'urlintro := % prefix before URL + "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref + "$eprintprefix" 'eprintprefix := % text prefix printed before eprint ref + "$doiurl" 'doiurl := % prefix to make URL from DOI + "$doiprefix" 'doiprefix := % text prefix printed before DOI ref + "$pubmedurl" 'pubmedurl := % prefix to make URL from PUBMED + "$pubmedprefix" 'pubmedprefix := % text prefix printed before PUBMED ref + #$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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +$mymarkerend +EOD + $line = $_; + until ($line =~ /\{.*\}.*\{/s) { + $line .= <IN>; + } + $line =~ s/(\{.*?\}.*?\{)/$1 #0 'outside.brackets := $mymarker + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + /s; + print OUT $line; + $found{initconsts} = 1; + next; + }; + + /^ *EXECUTE *\{init\.state\.consts\}/ && do { + print OUT "EXECUTE {init.urlbst.variables}\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{new.block\}/ && do { + $found{newblock} = 1; + }; + + /^ *FUNCTION *{output\.nonnull}/ && do { + print OUT "$mymarker\n"; + print OUT "FUNCTION {output.nonnull.original}\n"; + copy_block(); + print_output_functions(); + $found{outputnonnull} = 1; + next; + }; + + /FUNCTION *\{fin.entry\}/ && do { + # Rename fin.entry to fin.entry.original (wrapped below) + s/fin.entry/fin.entry.original/; + $found{finentry} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.date}/ && do { + $found{formatdate} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.title}/ && do { + # record that we found this + $found{formattitle} = 1; + print OUT; + next; + }; + + /^ *format\.b?title/ && do { + # interpolate a call to setup.inlinelink + print OUT " title empty\$ 'skip\$ 'setup\.inlinelink if\$ $mymarker\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{article\}/ && do { + + print_missing_functions(); + print_webpage_def(); + + print OUT; + $found{article} = 1; + next; + }; + + /FUNCTION *\{output.bibitem\}/ && do { + # Rename output.bibitem to output.bibitem.original (wrapped below) + s/{output.bibitem\}/\{output.bibitem.original\}/; + $found{outputbibitem} = 1; + print OUT; + next; + }; + + print OUT; +}; + +if ($exitstatus == 0) { + # Skip this if we've already reported an error -- it'll only be confusing + foreach $k (keys %found) { + if ($found{$k} == 0) { + print STDERR "$progname: $infile: failed to find feature $k\n"; + } + } +} + +close (IN); +close (OUT); + +exit $exitstatus;; + + + + + + +sub print_output_functions { + print OUT "$mymarker...\n"; + + print OUT <<'EOD'; +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +EOD + + # new.block is defined elsewhere + + print OUT <<'EOD'; +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% 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 = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} +EOD + print OUT "$mymarkerend\n"; +} + +sub print_webpage_def { + print OUT "$mymarker...\n"; + + # Some of the functions below call new.block, so we need a dummy + # version, in the case where the style being edited doesn't supply + # that function. + if (! $found{newblock}) { + print OUT "FUNCTION {new.block} % dummy new.block function\n{\n % empty\n}\n\n"; + $found{newblock} = 1; + } + + print OUT <<'EOD'; +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% 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 +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +EOD + + print OUT "$mymarkerend\n\n\n"; +} + + +sub print_missing_functions { + # We've got to the bit of the file which handles the entry + # types, so write out the webpage entry handler. This uses + # the format.date function, which which many but not all + # bst files have (for example, apalike doesn't). So + # check that we either have found this function already, or + # add it. + if (! $found{formatdate}) { + if ($found{entrymonth}) { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} +EOD + } else { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + 'skip$ + { %write$ + "(" year * ")" * + } + if$ +} +EOD + } + $found{formatdate} = 1; + } + + # If the style file didn't supply a format.title function, then supply + # one here (the {webpage} function requires it). + if (! $found{formattitle}) { + print OUT <<'EOD'; +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} +EOD + $found{formattitle} = 1; + } +} + +# Utility function: Keep track of open and close braces in the string argument. +# Keep state in $bracematchtotal, return the current value. +sub bracematcher { + my $s = shift; + $s =~ s/[^\{\}]//g; + #print "s=$s\n"; + foreach my $c (split (//, $s)) { + $bracematchtotal += ($c eq '{' ? 1 : -1); + } + return $bracematchtotal; +} + +# Utility function: use bracematcher to copy the complete block which starts +# on or after the current line. +sub copy_block { + $bracematchtotal = 0; + # copy any leading lines which don't have braces (presumably comments) + while (defined ($line = <IN>) && ($line !~ /{/)) { + print OUT $line; + } + while (defined ($line) && bracematcher($line) > 0) { + print OUT $line; + $line = <IN>; + } + print OUT "$line\n"; # print out terminating \} (assumed + # alone on the line) +} diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.html b/Master/texmf-dist/doc/latex/urlbst/urlbst.html new file mode 100644 index 00000000000..eac33dfa948 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.html @@ -0,0 +1,347 @@ +<?xml version="1.0"?> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>Urlbst</title> +<link href="http://nxg.me.uk/" rev="author"/> +<link type="text/css" rel="stylesheet" + href="http://nxg.me.uk/style/base.css"/> +</head> + +<body> +<h1>Urlbst</h1> +<div class="abstract"> +<p>A script to add a <code>webpage</code> BibTeX entry type, and add +support for general <code>url</code> and <code>lastchecked</code> +fields, to (most) BibTeX <code>.bst</code> files. Optionally adds +basic support for <code>eprint</code> and <code>doi</code> fields, and +hypertex/hyperref support, too.</p> + +<p>The Persistent URL for this page is +<code>http://purl.org/nxg/dist/urlbst</code>.</p> + +<p>Version 0.6-1, 2008 June 16.</p> +</div> + +<p>Contents</p> +<ul> +<li><a href='#usage'>Usage</a></li> +<li><a href='#example'>For example...</a></li> +<li><a href='#download'>Download and installation</a></li> +<li><a href='#information'>Further Information</a></li> +<li><a href='#history'>Version history</a></li> +</ul> + +<p>The standard BibTeX styles have no explicit support for the web, in +that they include no `webpage' type, and have no support for adding +URLs to references. There are rumours that such support might appear +in BibTeX 1.0, but there is no estimate of when that is likely to arrive.</p> + +<p>The Perl script <code>urlbst</code> can be used to add this support to an +arbitrary <code>.bst</code> file which has a reasonably `conventional' +structure. The result is meant to be robust rather than pretty.</p> + +<p>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 +works (or at least, which you cannot or will not change), and edits it +to add the new webpage entry type, plus the url, lastchecked and +eprint fields. Fuller details are in the <a href="urlbst.pdf" +>manual</a>.</p> + +<h2><a name='usage'>Usage</a></h2> +<pre> +urlbst [--eprint] [--doi] + [--inlinelinks] [--nohyperlinks] [--hypertex] [--hyperref] + [input-file [output-file]] +</pre> +<p>if either the input-file or the output-file is omitted, they default +to stdin and stdout respectively. If the input file already has a URL +entry type, then the script objects.</p> + +<p>If the option <code>--eprint</code> is present, then include +support for a <code>eprint</code> field in the modified +<code>.bst</code> file, with a citation format matching that +recommended in <a href="http://arxiv.org/help/faq/references" >the +arXiv documentation</a>. Similarly, if the option <code>--doi</code> +is present, then include support for a <code>doi</code> field, +referring to a <a href="http://www.doi.org/">DOI</a> for the +bibliographic item.</p> + +<p>If either of the <code>--hypertex</code> or <code>--hyperref</code> +options is present, 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 +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 distribution includes preconverted versions of the four +standard BibTeX .bst style files.</p> + +<p>Only the style files which result from conversion of the standard +styles are checked in the regression tests. Other style files which +are known to work include</p> +<blockquote> +acm.bst, amsalpha.bst, amsplain.bst, apalike.bst, gerabbrv.bst, +geralpha.bst, gerapali.bst, gerplain.bst, gerunsrt.bst, ieeetr.bst, +siam.bst, mla.bst +</blockquote> + +<p>Style files which are known to fail:</p> +<ul> +<li>Currently (v0.5), there exists a style <code>achicago.bst</code> +which seems to fox <code>urlbst</code>; it turns out that there's a +simpler but almost equivalent style <code>chicago.bst</code> which +works.</li> + +<li>Some APA-like styles, including at least <code>apager.bst</code>, +seem to be sufficiently different from the most common styles, that +they confuse <code>urlbst</code> completely.</li> + +<li>The <em>koma-script</em> styles and the <em>refer</em> styles are +not designed to produce conventional <code>.bbl</code> files, and +<code>urlbst</code> does not aim to produce anything useful from these.</li> +</ul> +<p>This might be a good time for me to revisit the rather +convoluted logic within the script, to make it a little more robust in +the face of variants like these, but don't hold your breath...</p> + +<p>The natbib and revtex style files already have URL fields. If you have a +BibTeX style file which you think ought to work, but with which the +script fails, send it to me, and I'll try to work out what I've +missed (no promises, though).</p> + +<p>Note that the command to invoke the script changed from `urlbst.pl' +to plain `urlbst' between versions 0.3 and 0.4.</p> + +<h2><a name='example'>For example...</a></h2> +<p>To add URL support to the standard <code>siam.bst</code> file, you +can give the command</p> +<pre> +% urlbst /path/to/original/siam.bst siamurl.bst +</pre> +<p>Your TeX installation will likely have some way of helping you find where +the original <code>.bst</code> files are. On teTeX-based systems, for +example, the command <code>kpsewhich siam.bst</code> returns the full +path of the <code>siam.bst</code> file which BibTeX would find.</p> + +<p>The distributed files <code>abbrvurl.bst</code>, +<code>alphaurl.bst</code>, <code>plainurl.bst</code> and +<code>unsrturl.bst</code> are versions of the standard style files +which have been pre-converted.</p> + +<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> + +<h2><a name='download'>Download and installation</a></h2> + +<p>Download the file +<a href="urlbst-0.6-1.tar.gz" >urlbst-0.6-1.tar.gz</a> +and unpack it.</p> + +<p>To install, you should simply copy the distributed +<code>urlbst</code> script to someplace on the path (such as +<code>/usr/local/bin</code>, or <code>~/local/bin</code>, depending on +your privileges and tastes).</p> + +<p>If you (might) want to use the pre-converted standard +<code>.bst</code> files, then you'll need to copy these to somewhere +in the BibTeX search path. Type <kbd>kpsepath bst</kbd> on Unix to +find out the list of places BibTeX searches, and pick either one of +the user-local locations, or a system-wide one. If you're installing +in a system-wide location, you'll need admin privileges, obviously, +and you will probably need to use <code>texhash</code>, +<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' +>installing a package</a> and <a +href='http://www.tex.ac.uk/cgi-bin/texfaq2html?label=wherefiles' +>where LaTeX puts files</a>.</p> + +<p>That should be all you have to do.</p> + +<p>The urlbst script is distributed with a path which should just work, +as long as the Perl binary is in your path, but if you have problems +here, then you might want to change the first line to something like</p> +<pre> +#! /usr/local/bin/perl +</pre> +<p>if that's where your Perl binary is.</p> + +<p>You can also use the conventional <code>./configure; make; make +install</code> to configure and install the package (as root, or using +<code>sudo</code> if you're installing it in a system location), +though you still have to install the <code>.bst</code> files by hand. +This is rather heavyweight for the trivial amount of configuration +required, so it's almost always simpler just to do things by hand.</p> + +<p>If you need to change some of the <code>urlbst</code> defaults, +however, or if your fingers type <code>./configure</code> +spontaneously, then you can be reassured that the configure script +supports the standard <code>--prefix</code> option, plus the following +options setting defaults:</p> +<dl> + +<dt><code>--with-eprints=url</code>, <code>--without-eprints</code></dt> + +<dd>This makes the <code>--eprints</code> option to urlbst available +by default, and allows you to optionally specify a prefix for creating +URLs from eprint numbers. The default for this URL is +<code>http://arxiv.org/abs/</code> -- this is appropriate for arXiv, +obviously, but there are now a variety of other preprint archives +appearing, for which this might be inappropriate. If you have +comments on this default, or alternatives, please let me know. This +option is enabled by default; if you have some reason for disabling +the <code>--eprints</code> option for urlbst, the give the configure +option <code>--without-eprints</code></dd> + +<dt><code>--with-doi=url</code>, <code>--without-doi</code></dt> + +<dd>This makes available the <code>--doi</code> option to urlbst and, +as with the <code>--with-eprints</code> option, allows you to +customise the DOI resolver URL. The <code>--doi</code> option to +urlbst is on by default.</dd> + +<dt><code>--with-href=0/1/2</code></dt> + +<dd>This allows you to specify the type of hyperlinks which are +inserted in the bibliography. Values 0, 1 and 2, indicating no +hyperlinks, hypertex-style links, and hyperref-style links, +respectively. The default is <code>--with-href=0</code>. The +<code>hyperref</code>-style option is intended to complement the +increasingly standard <code>hyperref</code> package.</dd> + +</dl> + +<p>The first two options simply change defaults, and if you never use +the new <code>eprints</code> or <code>doi</code> fields, then the +defaults don't matter to you. </p> + +<p>Since the modified style generates URLs wrapped in the +<code>\url{}</code> macro, it is useful to use the resulting +bibliography style alongside the <code>url</code> package. Since this +tends to work with <code>hyperref</code> anyway, where possible, you +don't get any extra goodness by changing the <code>--with-href</code> +default at configuration time.</p> + +<h3>Documentation</h3> + +<p>Basic documentation is in the file <code>urlbst.tex</code>. This +is distributed as a PDF file, but if you want to regenerate it, use</p> +<pre> +% latex urlbst +% bibtex urlbst +% latex urlbst +% latex urlbst +</pre> + +<h2><a name='information'>Further Information</a></h2> + +<p><code>urlbst</code> is archived on CTAN at <a +href="http://www.tex.ac.uk/tex-archive/biblio/bibtex/contrib/urlbst/" +><code>biblio/bibtex/contrib/urlbst/</code></a>, and discussed in the +<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL" >TeX +FAQ</a>.</p> + +<p>The <a href="http://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> + +<p>Copyright 2002-8, Norman Gray. Released under the terms of the GNU +General Public Licence.</p> + +<h2><a name='history'>Version history</a></h2> +<dl> + +<dt>0.6-1, 2008 June 16</dt> +<dd>Fixed some broken links to the various citation standards (I think +in this context this should probably <em>not</em> be happening, +yes?). The distributed <code>*url.bst</code> no longer have the +<code>--inlinelinks</code> option turned on by default.</dd> + +<dt>0.6, 2007 March 26</dt> +<dd><p>Added the option <code>--inlinelinks</code>, which adds inline hyperlinks +to any bibliography entries which have URLs, but does so inline, rather +than printing the URL explicitly in the bibliography. This is (primarily) +useful if you're preparing a version of a document which will be read +on-screen. Thanks to Jason Eisner for the suggestion, and much testing.</p> +<p>Incorporate hyperref bugfixes from Paweł Widera.</p> +<dl> +<dt>0.6b3</dt> +<dd>Further reworkings of the inlinelinks support, so that it's now +fired by a format.title (or format.btitle) line, with a fallback in +fin.entry. This should be more robust, and allows me to delete some +of the previous version's gymnastics.</dd> + +<dt>0.6b2</dt> +<dd>Reworked <code>inlinelinks</code> support; should now be more +robust. Incorporate hyperref bugfixes from Paweł Widera.</dd> + +<dt>0.6b1</dt> +<dd>Added the option <code>inlinelinks</code>, which adds inline hyperlinks +to any bibliography entries which have URLs, but does so inline, rather +than printing the URL explicitly in the bibliography. This is (only) +useful if you're preparing a version of a document which will be read +on-screen.</dd> +</dl> +</dd> + +<dt>0.5.2, 2006 September 6</dt> +<dd>Another set of documentation-only changes, hopefully clarifying +installation.</dd> + +<dt>0.5.1, 2006 January 10</dt> +<dd>No functionality changes. Documentation and webpage changes only, +hopefully clarifying usage and configuration</dd> + +<dt>0.5, 2005 June 3</dt> +<dd>Added support for Digital Object Identifiers (DOI) fields in +bibliographies.</dd> + +<dt>0.4-1, 2005 April 12</dt> +<dd>Documentation improvements -- there are now examples in the help text!</dd> + +<dt>0.4, 2004 December 1</dt> +<dd>Bug fixes: now compatible with mla.bst and friends. Now uses +./configure (optionally). Assorted reorganisation.</dd> + +<dt>0.3, 2003 June 4</dt> +<dd>Added --eprint, --hypertex and --hyperref options.</dd> + +<dt>0.2, 2002 October 23</dt> +<dd>The `editor' field is now supported in the webpage entry type. Basic +documentation added.</dd> + +<dt>0.1, 2002 April</dt> +<dd>Initial version</dd> + +</dl> + + +<div class="signature"> +<a href="http://nxg.me.uk" + >Norman Gray</a><br/> +2008 June 16 +</div> + +</body> +</html> diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.html.in b/Master/texmf-dist/doc/latex/urlbst/urlbst.html.in new file mode 100644 index 00000000000..6facc246252 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.html.in @@ -0,0 +1,347 @@ +<?xml version="1.0"?> + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<title>Urlbst</title> +<link href="http://nxg.me.uk/" rev="author"/> +<link type="text/css" rel="stylesheet" + href="http://nxg.me.uk/style/base.css"/> +</head> + +<body> +<h1>Urlbst</h1> +<div class="abstract"> +<p>A script to add a <code>webpage</code> BibTeX entry type, and add +support for general <code>url</code> and <code>lastchecked</code> +fields, to (most) BibTeX <code>.bst</code> files. Optionally adds +basic support for <code>eprint</code> and <code>doi</code> fields, and +hypertex/hyperref support, too.</p> + +<p>The Persistent URL for this page is +<code>http://purl.org/nxg/dist/urlbst</code>.</p> + +<p>Version @PACKAGE_VERSION@, @RELEASEDATE@.</p> +</div> + +<p>Contents</p> +<ul> +<li><a href='#usage'>Usage</a></li> +<li><a href='#example'>For example...</a></li> +<li><a href='#download'>Download and installation</a></li> +<li><a href='#information'>Further Information</a></li> +<li><a href='#history'>Version history</a></li> +</ul> + +<p>The standard BibTeX styles have no explicit support for the web, in +that they include no `webpage' type, and have no support for adding +URLs to references. There are rumours that such support might appear +in BibTeX 1.0, but there is no estimate of when that is likely to arrive.</p> + +<p>The Perl script <code>urlbst</code> can be used to add this support to an +arbitrary <code>.bst</code> file which has a reasonably `conventional' +structure. The result is meant to be robust rather than pretty.</p> + +<p>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 +works (or at least, which you cannot or will not change), and edits it +to add the new webpage entry type, plus the url, lastchecked and +eprint fields. Fuller details are in the <a href="urlbst.pdf" +>manual</a>.</p> + +<h2><a name='usage'>Usage</a></h2> +<pre> +urlbst [--eprint] [--doi] + [--inlinelinks] [--nohyperlinks] [--hypertex] [--hyperref] + [input-file [output-file]] +</pre> +<p>if either the input-file or the output-file is omitted, they default +to stdin and stdout respectively. If the input file already has a URL +entry type, then the script objects.</p> + +<p>If the option <code>--eprint</code> is present, then include +support for a <code>eprint</code> field in the modified +<code>.bst</code> file, with a citation format matching that +recommended in <a href="http://arxiv.org/help/faq/references" >the +arXiv documentation</a>. Similarly, if the option <code>--doi</code> +is present, then include support for a <code>doi</code> field, +referring to a <a href="http://www.doi.org/">DOI</a> for the +bibliographic item.</p> + +<p>If either of the <code>--hypertex</code> or <code>--hyperref</code> +options is present, 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 +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 distribution includes preconverted versions of the four +standard BibTeX .bst style files.</p> + +<p>Only the style files which result from conversion of the standard +styles are checked in the regression tests. Other style files which +are known to work include</p> +<blockquote> +acm.bst, amsalpha.bst, amsplain.bst, apalike.bst, gerabbrv.bst, +geralpha.bst, gerapali.bst, gerplain.bst, gerunsrt.bst, ieeetr.bst, +siam.bst, mla.bst +</blockquote> + +<p>Style files which are known to fail:</p> +<ul> +<li>Currently (v0.5), there exists a style <code>achicago.bst</code> +which seems to fox <code>urlbst</code>; it turns out that there's a +simpler but almost equivalent style <code>chicago.bst</code> which +works.</li> + +<li>Some APA-like styles, including at least <code>apager.bst</code>, +seem to be sufficiently different from the most common styles, that +they confuse <code>urlbst</code> completely.</li> + +<li>The <em>koma-script</em> styles and the <em>refer</em> styles are +not designed to produce conventional <code>.bbl</code> files, and +<code>urlbst</code> does not aim to produce anything useful from these.</li> +</ul> +<p>This might be a good time for me to revisit the rather +convoluted logic within the script, to make it a little more robust in +the face of variants like these, but don't hold your breath...</p> + +<p>The natbib and revtex style files already have URL fields. If you have a +BibTeX style file which you think ought to work, but with which the +script fails, send it to me, and I'll try to work out what I've +missed (no promises, though).</p> + +<p>Note that the command to invoke the script changed from `urlbst.pl' +to plain `urlbst' between versions 0.3 and 0.4.</p> + +<h2><a name='example'>For example...</a></h2> +<p>To add URL support to the standard <code>siam.bst</code> file, you +can give the command</p> +<pre> +% urlbst /path/to/original/siam.bst siamurl.bst +</pre> +<p>Your TeX installation will likely have some way of helping you find where +the original <code>.bst</code> files are. On teTeX-based systems, for +example, the command <code>kpsewhich siam.bst</code> returns the full +path of the <code>siam.bst</code> file which BibTeX would find.</p> + +<p>The distributed files <code>abbrvurl.bst</code>, +<code>alphaurl.bst</code>, <code>plainurl.bst</code> and +<code>unsrturl.bst</code> are versions of the standard style files +which have been pre-converted.</p> + +<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> + +<h2><a name='download'>Download and installation</a></h2> + +<p>Download the file +<a href="urlbst-@PACKAGE_VERSION@.tar.gz" >urlbst-@PACKAGE_VERSION@.tar.gz</a> +and unpack it.</p> + +<p>To install, you should simply copy the distributed +<code>urlbst</code> script to someplace on the path (such as +<code>/usr/local/bin</code>, or <code>~/local/bin</code>, depending on +your privileges and tastes).</p> + +<p>If you (might) want to use the pre-converted standard +<code>.bst</code> files, then you'll need to copy these to somewhere +in the BibTeX search path. Type <kbd>kpsepath bst</kbd> on Unix to +find out the list of places BibTeX searches, and pick either one of +the user-local locations, or a system-wide one. If you're installing +in a system-wide location, you'll need admin privileges, obviously, +and you will probably need to use <code>texhash</code>, +<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' +>installing a package</a> and <a +href='http://www.tex.ac.uk/cgi-bin/texfaq2html?label=wherefiles' +>where LaTeX puts files</a>.</p> + +<p>That should be all you have to do.</p> + +<p>The urlbst script is distributed with a path which should just work, +as long as the Perl binary is in your path, but if you have problems +here, then you might want to change the first line to something like</p> +<pre> +#! /usr/local/bin/perl +</pre> +<p>if that's where your Perl binary is.</p> + +<p>You can also use the conventional <code>./configure; make; make +install</code> to configure and install the package (as root, or using +<code>sudo</code> if you're installing it in a system location), +though you still have to install the <code>.bst</code> files by hand. +This is rather heavyweight for the trivial amount of configuration +required, so it's almost always simpler just to do things by hand.</p> + +<p>If you need to change some of the <code>urlbst</code> defaults, +however, or if your fingers type <code>./configure</code> +spontaneously, then you can be reassured that the configure script +supports the standard <code>--prefix</code> option, plus the following +options setting defaults:</p> +<dl> + +<dt><code>--with-eprints=url</code>, <code>--without-eprints</code></dt> + +<dd>This makes the <code>--eprints</code> option to urlbst available +by default, and allows you to optionally specify a prefix for creating +URLs from eprint numbers. The default for this URL is +<code>http://arxiv.org/abs/</code> -- this is appropriate for arXiv, +obviously, but there are now a variety of other preprint archives +appearing, for which this might be inappropriate. If you have +comments on this default, or alternatives, please let me know. This +option is enabled by default; if you have some reason for disabling +the <code>--eprints</code> option for urlbst, the give the configure +option <code>--without-eprints</code></dd> + +<dt><code>--with-doi=url</code>, <code>--without-doi</code></dt> + +<dd>This makes available the <code>--doi</code> option to urlbst and, +as with the <code>--with-eprints</code> option, allows you to +customise the DOI resolver URL. The <code>--doi</code> option to +urlbst is on by default.</dd> + +<dt><code>--with-href=0/1/2</code></dt> + +<dd>This allows you to specify the type of hyperlinks which are +inserted in the bibliography. Values 0, 1 and 2, indicating no +hyperlinks, hypertex-style links, and hyperref-style links, +respectively. The default is <code>--with-href=0</code>. The +<code>hyperref</code>-style option is intended to complement the +increasingly standard <code>hyperref</code> package.</dd> + +</dl> + +<p>The first two options simply change defaults, and if you never use +the new <code>eprints</code> or <code>doi</code> fields, then the +defaults don't matter to you. </p> + +<p>Since the modified style generates URLs wrapped in the +<code>\url{}</code> macro, it is useful to use the resulting +bibliography style alongside the <code>url</code> package. Since this +tends to work with <code>hyperref</code> anyway, where possible, you +don't get any extra goodness by changing the <code>--with-href</code> +default at configuration time.</p> + +<h3>Documentation</h3> + +<p>Basic documentation is in the file <code>urlbst.tex</code>. This +is distributed as a PDF file, but if you want to regenerate it, use</p> +<pre> +% latex urlbst +% bibtex urlbst +% latex urlbst +% latex urlbst +</pre> + +<h2><a name='information'>Further Information</a></h2> + +<p><code>urlbst</code> is archived on CTAN at <a +href="http://www.tex.ac.uk/tex-archive/biblio/bibtex/contrib/urlbst/" +><code>biblio/bibtex/contrib/urlbst/</code></a>, and discussed in the +<a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=citeURL" >TeX +FAQ</a>.</p> + +<p>The <a href="http://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> + +<p>Copyright 2002-8, Norman Gray. Released under the terms of the GNU +General Public Licence.</p> + +<h2><a name='history'>Version history</a></h2> +<dl> + +<dt>0.6-1, 2008 June 16</dt> +<dd>Fixed some broken links to the various citation standards (I think +in this context this should probably <em>not</em> be happening, +yes?). The distributed <code>*url.bst</code> no longer have the +<code>--inlinelinks</code> option turned on by default.</dd> + +<dt>0.6, 2007 March 26</dt> +<dd><p>Added the option <code>--inlinelinks</code>, which adds inline hyperlinks +to any bibliography entries which have URLs, but does so inline, rather +than printing the URL explicitly in the bibliography. This is (primarily) +useful if you're preparing a version of a document which will be read +on-screen. Thanks to Jason Eisner for the suggestion, and much testing.</p> +<p>Incorporate hyperref bugfixes from Paweł Widera.</p> +<dl> +<dt>0.6b3</dt> +<dd>Further reworkings of the inlinelinks support, so that it's now +fired by a format.title (or format.btitle) line, with a fallback in +fin.entry. This should be more robust, and allows me to delete some +of the previous version's gymnastics.</dd> + +<dt>0.6b2</dt> +<dd>Reworked <code>inlinelinks</code> support; should now be more +robust. Incorporate hyperref bugfixes from Paweł Widera.</dd> + +<dt>0.6b1</dt> +<dd>Added the option <code>inlinelinks</code>, which adds inline hyperlinks +to any bibliography entries which have URLs, but does so inline, rather +than printing the URL explicitly in the bibliography. This is (only) +useful if you're preparing a version of a document which will be read +on-screen.</dd> +</dl> +</dd> + +<dt>0.5.2, 2006 September 6</dt> +<dd>Another set of documentation-only changes, hopefully clarifying +installation.</dd> + +<dt>0.5.1, 2006 January 10</dt> +<dd>No functionality changes. Documentation and webpage changes only, +hopefully clarifying usage and configuration</dd> + +<dt>0.5, 2005 June 3</dt> +<dd>Added support for Digital Object Identifiers (DOI) fields in +bibliographies.</dd> + +<dt>0.4-1, 2005 April 12</dt> +<dd>Documentation improvements -- there are now examples in the help text!</dd> + +<dt>0.4, 2004 December 1</dt> +<dd>Bug fixes: now compatible with mla.bst and friends. Now uses +./configure (optionally). Assorted reorganisation.</dd> + +<dt>0.3, 2003 June 4</dt> +<dd>Added --eprint, --hypertex and --hyperref options.</dd> + +<dt>0.2, 2002 October 23</dt> +<dd>The `editor' field is now supported in the webpage entry type. Basic +documentation added.</dd> + +<dt>0.1, 2002 April</dt> +<dd>Initial version</dd> + +</dl> + + +<div class="signature"> +<a href="http://nxg.me.uk" + >Norman Gray</a><br/> +@RELEASEDATE@ +</div> + +</body> +</html> diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.in b/Master/texmf-dist/doc/latex/urlbst/urlbst.in new file mode 100755 index 00000000000..0bb468f6322 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.in @@ -0,0 +1,698 @@ +#! @PERL@ -w +# +# Usage: ./urlbst.pl [--eprint] [--doi] [--pubmed] +# [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref] +# [input-file [output-file]] +# 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 +# +# $Id: urlbst.in,v 1.10 2008/01/27 23:18:54 norman Exp $ + +$version = '@PACKAGE_VERSION@'; +($progname = $0) =~ s/.*\///; +$mymarker = "% $progname"; +$mymarkerend = "% ...$progname to here"; +$myurl = 'http://purl.org/nxg/dist/urlbst'; + + +$infile = '-'; +$outfile = '-'; + +$addeprints = @WITHEPRINTS@; # if true (nonzero) we add support for eprints +$eprintprefix = 'arXiv:'; # make these settable with --eprint? syntax? +$eprinturl = '@EPRINTURL@'; + +$adddoiresolver = @WITHDOIRESOLVER@; +$doiprefix = 'doi:'; +$doiurl = '@DOIURL@'; + +$addpubmedresolver = @WITHPUBMEDRESOLVER@; +$pubmedprefix = 'PMID:'; +$pubmedurl = '@PUBMEDURL@'; + +$makehref = @WITHHREF@; +$availablestring = "Available from: "; +$inlinelinks = 0; + +$Usage = "$progname [--eprint] [--doi] [--pubmed]\n [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref]\n [--help] [input-file [output-file]]"; + +while ($#ARGV >= 0) { + if ($ARGV[0] eq '--eprint') { + $addeprints = 1; + } elsif ($ARGV[0] eq '--doi') { + $adddoiresolver = 1; + } elsif ($ARGV[0] eq '--pubmed') { + $addpubmedresolver = 1; + } elsif ($ARGV[0] eq '--nohyperlinks') { + $makehref = 0; + } elsif ($ARGV[0] eq '--hypertex') { + $makehref = 1; + } elsif ($ARGV[0] eq '--hyperref') { + $makehref = 2; + } elsif ($ARGV[0] eq '--inlinelinks') { + $inlinelinks = 1; + } elsif ($ARGV[0] eq '--help') { + print <<EOD; +urlbst version $version + Usage: $Usage + --eprint: include support for `eprint' fields + --doi: include support for `doi' field + --pubmed: include support for `pubmed' field + --nohyperlinks do not include active links anywhere + --inlinelinks add hyperlinks to entry titles + --hypertex: include HyperTeX-style hyperlink support + --hyperref: include {hyperref}-style hyperlink support + (generally better) + --help: print this help + Input and output files may be given as `-' (default) to indicate stdin/out +EOD + exit(0); + } elsif ($ARGV[0] =~ /^-/) { + die "Unrecognised option $ARGV[0]: Usage: $Usage\n"; + } elsif ($infile eq '-') { + $infile = $ARGV[0]; + } elsif ($outfile eq '-') { + $outfile = $ARGV[0]; + } else { + die "Usage: $Usage\n"; + } + shift(@ARGV); +} + +if ($inlinelinks && $makehref == 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; +} + +$exitstatus = 0; # success status + +open (IN, "<$infile") || die "Can't open $infile to read"; +open (OUT, ">$outfile") || die "Can't open $outfile to write"; + +# We have to make certain assumptions about the source files, in order +# to patch them at the correct places. Specifically, we assume that +# +# - there's a function init.state.consts +# +# - ...and an output.nonnull which does the actual outputting, which +# has the `usual' interface. +# +# - we can replace +# fin.entry +# by +# new.block +# output.url % the function which formats and displays any URL +# fin.entry +# +# - there is a function which handles the `article' entry type (this +# will always be true) +# +# - there is a function output.bibitem which is called at the +# beginning of each entry type +# - ...and one called fin.entry which is called at the end +# +# If the functions format.date, format.title or new.block are not defined (the +# former is not in apalike, for example, and the last is not in the +# AMS styles), then replacements are included in the output. +# +# All these assumptions are true of the standard files and, since most +# style files derive from them more or less directly, are true of most (?) +# other style files, too. +# +# There's some rather ugly Perl down here. The parsing for +# brace-matching could probably do with being rewritten in places, to +# 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 "%%% 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 "%%% Original headers follow...\n\n"; + +$found{initconsts} = 0; +$found{outputnonnull} = 0; +$found{article} = 0; +$found{outputbibitem} = 0; +$found{finentry} = 0; +$found{formatdate} = 0; +$found{formattitle} = 0; +$found{newblock} = 0; + +while (<IN>) { + /^ *%/ && do { + # Pass commented lines unchanged + 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 + # will mess things up. + $line = $_; + until ($line =~ /\{\s*(\w*)/) { + $line .= <IN>; + } + $bracematchtotal = 0; # reset + bracematcher($line); + $line =~ /\{\s*(\w*)/; + $found{'entry'.$1} = 1; + print OUT $line; + $line = <IN>; + until (bracematcher($line) == 0) { + # XXX deal with multiple entries on one line + ($line =~ /^\s*(\w*)/) && ($found{'entry'.$1} = 1); + print OUT $line; + $line = <IN>; + } + if (defined($found{entryurl})) { + print STDERR "$progname: style file $infile already has URL entry!\n"; + # print out the rest of the file, and give up + print OUT $line; + while (<IN>) { + print OUT; + } + $exitstatus = 1; + last; + } else { + print OUT " eprint $mymarker\n doi $mymarker\n pubmed $mymarker\n url $mymarker\n lastchecked $mymarker\n"; + } + print OUT $line; + next; + }; + + /^ *FUNCTION *\{init\.state\.consts\}/ && do { + # In the init.state.consts function, add an extra set of + # constants at the beginning. Also use this as the marker for + # the place to add the init strings function. + print OUT <<EOD; +STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } $mymarker... +INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver } +% Following constants may be adjusted by hand, if desired +FUNCTION {init.urlbst.variables} +{ + "$availablestring" 'urlintro := % prefix before URL + "$eprinturl" 'eprinturl := % prefix to make URL from eprint ref + "$eprintprefix" 'eprintprefix := % text prefix printed before eprint ref + "$doiurl" 'doiurl := % prefix to make URL from DOI + "$doiprefix" 'doiprefix := % text prefix printed before DOI ref + "$pubmedurl" 'pubmedurl := % prefix to make URL from PUBMED + "$pubmedprefix" 'pubmedprefix := % text prefix printed before PUBMED ref + #$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 + % the following are internal state variables, not config constants + #0 'makeinlinelink := % state variable managed by setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +$mymarkerend +EOD + $line = $_; + until ($line =~ /\{.*\}.*\{/s) { + $line .= <IN>; + } + $line =~ s/(\{.*?\}.*?\{)/$1 #0 'outside.brackets := $mymarker + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := + + /s; + print OUT $line; + $found{initconsts} = 1; + next; + }; + + /^ *EXECUTE *\{init\.state\.consts\}/ && do { + print OUT "EXECUTE {init.urlbst.variables}\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{new.block\}/ && do { + $found{newblock} = 1; + }; + + /^ *FUNCTION *{output\.nonnull}/ && do { + print OUT "$mymarker\n"; + print OUT "FUNCTION {output.nonnull.original}\n"; + copy_block(); + print_output_functions(); + $found{outputnonnull} = 1; + next; + }; + + /FUNCTION *\{fin.entry\}/ && do { + # Rename fin.entry to fin.entry.original (wrapped below) + s/fin.entry/fin.entry.original/; + $found{finentry} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.date}/ && do { + $found{formatdate} = 1; + print OUT; + next; + }; + + /^ *FUNCTION *{format\.title}/ && do { + # record that we found this + $found{formattitle} = 1; + print OUT; + next; + }; + + /^ *format\.b?title/ && do { + # interpolate a call to setup.inlinelink + print OUT " title empty\$ 'skip\$ 'setup\.inlinelink if\$ $mymarker\n"; + print OUT; + next; + }; + + /^ *FUNCTION *\{article\}/ && do { + + print_missing_functions(); + print_webpage_def(); + + print OUT; + $found{article} = 1; + next; + }; + + /FUNCTION *\{output.bibitem\}/ && do { + # Rename output.bibitem to output.bibitem.original (wrapped below) + s/{output.bibitem\}/\{output.bibitem.original\}/; + $found{outputbibitem} = 1; + print OUT; + next; + }; + + print OUT; +}; + +if ($exitstatus == 0) { + # Skip this if we've already reported an error -- it'll only be confusing + foreach $k (keys %found) { + if ($found{$k} == 0) { + print STDERR "$progname: $infile: failed to find feature $k\n"; + } + } +} + +close (IN); +close (OUT); + +exit $exitstatus;; + + + + + + +sub print_output_functions { + print OUT "$mymarker...\n"; + + print OUT <<'EOD'; +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +FUNCTION {setup.inlinelink} +{ makeinlinelink + { hrefform #1 = % hypertex + { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink := + "\special {html:</a>}" 'closeinlinelink := + } + { hrefform #2 = % hyperref + { "\href{" url * "}{" * 'openinlinelink := + "}" 'closeinlinelink := + } + 'skip$ + if$ % hrefform #2 = + } + if$ % hrefform #1 = + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +EOD + + # new.block is defined elsewhere + + print OUT <<'EOD'; +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% 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 = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets "cited " lastchecked * } + if$ +} +EOD + print OUT "$mymarkerend\n"; +} + +sub print_webpage_def { + print OUT "$mymarker...\n"; + + # Some of the functions below call new.block, so we need a dummy + # version, in the case where the style being edited doesn't supply + # that function. + if (! $found{newblock}) { + print OUT "FUNCTION {new.block} % dummy new.block function\n{\n % empty\n}\n\n"; + $found{newblock} = 1; + } + + print OUT <<'EOD'; +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html:<a href=" quote$ * + swap$ * quote$ * "> }" * swap$ * + "\special {html:</a>}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + output.url + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { setup.inlinelink % add some artificial link text here, as a fallback + "[link]" output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% 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 +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + new.block + title empty$ 'skip$ 'setup.inlinelink if$ + format.title "title" output.check + inbrackets "online" output + new.block + year empty$ + 'skip$ + { format.date "year" output.check } + if$ + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +EOD + + print OUT "$mymarkerend\n\n\n"; +} + + +sub print_missing_functions { + # We've got to the bit of the file which handles the entry + # types, so write out the webpage entry handler. This uses + # the format.date function, which which many but not all + # bst files have (for example, apalike doesn't). So + # check that we either have found this function already, or + # add it. + if (! $found{formatdate}) { + if ($found{entrymonth}) { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} +EOD + } else { + print OUT <<'EOD'; +FUNCTION {format.date} +{ year empty$ + 'skip$ + { %write$ + "(" year * ")" * + } + if$ +} +EOD + } + $found{formatdate} = 1; + } + + # If the style file didn't supply a format.title function, then supply + # one here (the {webpage} function requires it). + if (! $found{formattitle}) { + print OUT <<'EOD'; +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} +EOD + $found{formattitle} = 1; + } +} + +# Utility function: Keep track of open and close braces in the string argument. +# Keep state in $bracematchtotal, return the current value. +sub bracematcher { + my $s = shift; + $s =~ s/[^\{\}]//g; + #print "s=$s\n"; + foreach my $c (split (//, $s)) { + $bracematchtotal += ($c eq '{' ? 1 : -1); + } + return $bracematchtotal; +} + +# Utility function: use bracematcher to copy the complete block which starts +# on or after the current line. +sub copy_block { + $bracematchtotal = 0; + # copy any leading lines which don't have braces (presumably comments) + while (defined ($line = <IN>) && ($line !~ /{/)) { + print OUT $line; + } + while (defined ($line) && bracematcher($line) > 0) { + print OUT $line; + $line = <IN>; + } + print OUT "$line\n"; # print out terminating \} (assumed + # alone on the line) +} diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.pdf b/Master/texmf-dist/doc/latex/urlbst/urlbst.pdf Binary files differnew file mode 100644 index 00000000000..5ff76111f17 --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.pdf diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.tex b/Master/texmf-dist/doc/latex/urlbst/urlbst.tex new file mode 100644 index 00000000000..2554f08b5cb --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.tex @@ -0,0 +1,255 @@ +\documentclass[a4paper]{article} + +\title{The \texttt{urlbst} package} +\author{Norman Gray\\\texttt{<http://nxg.me.uk>}} +\date{Version 0.6-1, 2008 June 16} + +%\usepackage{times} +\usepackage{url} +\usepackage{hyperref} + +% Not long enough to make it useful to number sections +\setcounter{secnumdepth}{0} + +% Squeeze a bit more on to the page +%\addtolength\textwidth{1cm} +%\addtolength\oddsidemargin{-0.5cm} + +\makeatletter +% Easy verbatim mode +\catcode`\|=\active +\def|{\begingroup \let\do\@makeother \dospecials \verbatim@font \doverb} +\def\doverb#1|{#1\endgroup} + +\renewcommand{\verbatim@font}{\normalfont\small\ttfamily} +\makeatother + +\newcommand{\ub}{\package{urlbst}} +\newcommand{\BibTeX}{Bib\TeX} +\newcommand{\package}[1]{\texttt{#1}} +\newcommand{\btfield}[1]{\textsf{#1}} + +\begin{document} +\maketitle + +The \ub\ package consists of a Perl script which edits \BibTeX\ style +files (|.bst|) to add a \btfield{webpage} entry type, and which +supports \btfield{url} and corresponding \btfield{lastchecked} fields +on 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 \package{custom-bib} +package~\cite{url:daly} -- that is intended to create a \BibTeX\ style +|.bst| file from scratch, and supports \btfield{url} and +\btfield{eprint} fields. This package, on the other hand, is intended +for the case where you already have a style file that works (or at +least, which you cannot or will not change), and edits it to add the +new \btfield{webpage} entry type, plus the \btfield{url}, +\btfield{lastchecked} and \btfield{eprint} fields. + +Usage is simple: +\begin{verbatim} +% urlbst [--eprint] [--doi] [--pubmed] + [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref] + [input-file [output-file]] +\end{verbatim} +where the |input-file| is an existing |.bst| file, and +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. +For example: +\begin{verbatim} +% urlbst --eprint bibstyle.bst +\end{verbatim} +would convert the style file \texttt{bibstyle.bst}, including support +for e-prints, and sending the result to the standard output (ie, the +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 +format matching that recommended in +\url{http://arxiv.org/help/faq/references}. If the option +|--doi| is present, then include support for a |doi| field, referring +to a Digital Object Identifier (DOI) as standardised by +\url{http://www.doi.org/}. And if |--pubmed| is present, then include +support for a |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. + +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 +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 +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; +the point of it is that the resulting bibliography is substantially +more compact than it would otherwise be. + +The support for all the above behaviours is always included in the +output file. The options instead control only whether the various +behaviours are enabled or disabled, and if you need to alter these, +you may do so by editing the generated |.bst| file and adjusting +values in the |{init.urlbst.variables}| function, where indicated. + +The generated references have URLs inside |\url{...}|. The best +way to format this this is with the \package{url} package +(see~\cite{texfaq} for pointers), but as a poor alternative, you can +try |\newcommand{\url}[1]{\texttt{#1}}|. The \package{hyperref} +package automatically processes |\url{...}| in the correct way to +include a hyperlink, and if you have selected \package{hyperref} +output, then nothing more need be done. If you selected Hyper\TeX\ +output, however, then the script encloses the |\url| command in an +appropriate Hyper\TeX\ special. + +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 +four standard \BibTeX\ style files |plain.bst|, |unsrt.bst|, +|alpha.bst| and |abbrv.bst|. It also works straightforwardly for +many other style files -- since many of these are derived from, or at +least closely inspired by, the standard ones -- but it does not +pretend that it can do so for all of them. In some cases, such as the +style files for the \package{refer} or \package{koma-script} packages, +the style files are not intended to be used for formatting; others are +sufficiently different from the standard files that a meaningful edit +becomes impossible. For the large remainder, however, the result of +this script should need only relatively minor edits before being +perfectly usable. + +\section{New \texttt{.bib} entry and field types} + +The new entry type \btfield{webpage} has required fields +\btfield{title} and \btfield{url}, and optional fields +\btfield{author}, \btfield{editor}, \btfield{note}, \btfield{year}, +\btfield{month} and \btfield{lastchecked}. The \btfield{url} and +\btfield{lastchecked} fields are new, and are +valid in other entry types as well: the first, obviously, is the URL +which is being cited, or which is being quoted as an auxiliary source +for an article perhaps; the second is the date when you last checked +that the URL was there, in the state you quoted it; this is necessary +since some people, heedless of the archival importance of preserving +the validity of URLs, indulge in the vicious practice of reorganising +web pages and destroying links. For the case of the \btfield{webpage} entry +type, the \btfield{editor} field should be used for the `maintainer' +of a web page. + +For example, in Figure~\ref{f:ex} we illustrate two potential |.bib| +file entries. The \texttt{@webpage} entry type is the new type +provided by this package, and provides reference information for a +webpage; it includes the new \texttt{url} and \texttt{lastchecked} +fields. There is also an example of the standard \texttt{@book} entry +type, which now includes the \texttt{url} and \texttt{lastchecked} +fields as well. The difference between the two references is that in +the \texttt{@book} case it is the book being cited, so that the +\texttt{url} provides extra information; in the \texttt{@webpage} case +it is the page itself which is of interest. You use the new |eprint|, +|doi| and |pubmed| fields similarly, if the bibliographic item in +question has an e-print, DOI or PubMed reference. +\begin{figure} +\begin{verbatim} +@Webpage{apastyle, + url = {http://www.apastyle.org/elecref.html}, + author = {{American Psychological Association}}, + title = {Electronic References}, + year = 2001, + lastchecked = {23 October 2002}, + note = {Excerpted from 5th edition of the APA Publication Manual} +} + +@Book{schutz, + author = {Bernard Schutz}, + title = {Gravity from the GroundUp}, + publisher = {Cambridge University Press}, + year = {2003}, + url = {http://www.gravityfromthegroundup.org/}, + lastchecked = {2008 June 16} +} +\end{verbatim} +\caption{\label{f:ex}The new \texttt{@webpage} entry type, and the \texttt{url} + field in action} +\end{figure} + +How do you use this in a document? To use the the +\texttt{alphaurl.bst} style -- which is a pre-converted version of the +standard \texttt{alpha.bst} style, included in the \texttt{urlbst} +distribution -- you simply make sure that \texttt{alphaurl.bst} is in +your BibTeX search path (use the command \texttt{kpsepath bst} to find +this path and \texttt{kpsewhich alphaurl.bst} to confirm that BibTeX +can find it) and add |\bibliographystyle{alphaurl}| to your \LaTeX\ document. + +\section{Sources} + +There are various sources which suggest how to format references to +web pages. I have followed none specifically, but fortunately they do +not appear to materially disagree. + +ISO-690~\cite{url:iso690} is a formal standard for this stuff. Walker +and Taylor's \emph{Columbia Guide to Online Style}~\cite{walker} +provides extensive coverage (but is only available on dead trees). +Emory University's +\emph{Citation Formats}~\cite{emory95} is a compendium of links rather +than a guide itself. The APA has a couple of style guides, a proposed +one~\cite{url:weapas} and a style included in the published APA style +guide~\cite{apastyle} (I'm not sure of the relationship between these +last two). + +\section{Hints} + +If you use Emacs' \BibTeX\ mode, you can insert the following in your +|.emacs| file to add knowledge of the new \btfield{webpage} entry: +\begin{verbatim} +(defun my-bibtex-hook () + (setq bibtex-mode-user-optional-fields '("location" "issn")) ; e.g. + (setq bibtex-entry-field-alist + (cons + '("Webpage" + ((("url" "The URL of the page") + ("title" "The title of the resource")) + (("author" "The author of the webpage") + ("editor" "The editor/maintainer of the webpage") + ("year" "Year of publication of the page") + ("month" "Month of publication of the page") + ("lastchecked" "Date when you last verified the page was there") + ("note" "Remarks to be put at the end of the entry")))) + bibtex-entry-field-alist))) +(add-hook 'bibtex-mode-hook 'my-bibtex-hook) +\end{verbatim} +After that, you can add a \btfield{webpage} entry by typing |C-c C-b webpage| +(or |M-x bibtex-entry|). + +It is a \emph{very} good idea to use the \package{url} package: it deals with +the problem of line-breaking long URLs, and with the problem that +\BibTeX{} creates, of occasionally inserting \%-signs into URLs in +generated bibliographies. + +See also the URL entry in the UK \TeX\ FAQ~\cite{texfaq}, and +references therein. + +\textbf{Acknowledgements:} Thanks to Jason Eisner for suggesting +the |--inlinelinks| option, to Pawe\l{} Widera for the +suggestion to use |\path| when formatting DOIs and to Michael Giffin +for the suggestion to include PubMed URLs. + +\bibliography{urlbst} +\bibliographystyle{plainurl} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/urlbst/urlbst.tex.in b/Master/texmf-dist/doc/latex/urlbst/urlbst.tex.in new file mode 100644 index 00000000000..a063aca4abf --- /dev/null +++ b/Master/texmf-dist/doc/latex/urlbst/urlbst.tex.in @@ -0,0 +1,255 @@ +\documentclass[a4paper]{article} + +\title{The \texttt{urlbst} package} +\author{Norman Gray\\\texttt{<http://nxg.me.uk>}} +\date{Version @PACKAGE_VERSION@, @RELEASEDATE@} + +%\usepackage{times} +\usepackage{url} +\usepackage{hyperref} + +% Not long enough to make it useful to number sections +\setcounter{secnumdepth}{0} + +% Squeeze a bit more on to the page +%\addtolength\textwidth{1cm} +%\addtolength\oddsidemargin{-0.5cm} + +\makeatletter +% Easy verbatim mode +\catcode`\|=\active +\def|{\begingroup \let\do\@makeother \dospecials \verbatim@font \doverb} +\def\doverb#1|{#1\endgroup} + +\renewcommand{\verbatim@font}{\normalfont\small\ttfamily} +\makeatother + +\newcommand{\ub}{\package{urlbst}} +\newcommand{\BibTeX}{Bib\TeX} +\newcommand{\package}[1]{\texttt{#1}} +\newcommand{\btfield}[1]{\textsf{#1}} + +\begin{document} +\maketitle + +The \ub\ package consists of a Perl script which edits \BibTeX\ style +files (|.bst|) to add a \btfield{webpage} entry type, and which +supports \btfield{url} and corresponding \btfield{lastchecked} fields +on 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 \package{custom-bib} +package~\cite{url:daly} -- that is intended to create a \BibTeX\ style +|.bst| file from scratch, and supports \btfield{url} and +\btfield{eprint} fields. This package, on the other hand, is intended +for the case where you already have a style file that works (or at +least, which you cannot or will not change), and edits it to add the +new \btfield{webpage} entry type, plus the \btfield{url}, +\btfield{lastchecked} and \btfield{eprint} fields. + +Usage is simple: +\begin{verbatim} +% urlbst [--eprint] [--doi] [--pubmed] + [--nohyperlinks] [--inlinelinks] [--hypertex] [--hyperref] + [input-file [output-file]] +\end{verbatim} +where the |input-file| is an existing |.bst| file, and +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. +For example: +\begin{verbatim} +% urlbst --eprint bibstyle.bst +\end{verbatim} +would convert the style file \texttt{bibstyle.bst}, including support +for e-prints, and sending the result to the standard output (ie, the +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 +format matching that recommended in +\url{http://arxiv.org/help/faq/references}. If the option +|--doi| is present, then include support for a |doi| field, referring +to a Digital Object Identifier (DOI) as standardised by +\url{http://www.doi.org/}. And if |--pubmed| is present, then include +support for a |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. + +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 +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 +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; +the point of it is that the resulting bibliography is substantially +more compact than it would otherwise be. + +The support for all the above behaviours is always included in the +output file. The options instead control only whether the various +behaviours are enabled or disabled, and if you need to alter these, +you may do so by editing the generated |.bst| file and adjusting +values in the |{init.urlbst.variables}| function, where indicated. + +The generated references have URLs inside |\url{...}|. The best +way to format this this is with the \package{url} package +(see~\cite{texfaq} for pointers), but as a poor alternative, you can +try |\newcommand{\url}[1]{\texttt{#1}}|. The \package{hyperref} +package automatically processes |\url{...}| in the correct way to +include a hyperlink, and if you have selected \package{hyperref} +output, then nothing more need be done. If you selected Hyper\TeX\ +output, however, then the script encloses the |\url| command in an +appropriate Hyper\TeX\ special. + +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 +four standard \BibTeX\ style files |plain.bst|, |unsrt.bst|, +|alpha.bst| and |abbrv.bst|. It also works straightforwardly for +many other style files -- since many of these are derived from, or at +least closely inspired by, the standard ones -- but it does not +pretend that it can do so for all of them. In some cases, such as the +style files for the \package{refer} or \package{koma-script} packages, +the style files are not intended to be used for formatting; others are +sufficiently different from the standard files that a meaningful edit +becomes impossible. For the large remainder, however, the result of +this script should need only relatively minor edits before being +perfectly usable. + +\section{New \texttt{.bib} entry and field types} + +The new entry type \btfield{webpage} has required fields +\btfield{title} and \btfield{url}, and optional fields +\btfield{author}, \btfield{editor}, \btfield{note}, \btfield{year}, +\btfield{month} and \btfield{lastchecked}. The \btfield{url} and +\btfield{lastchecked} fields are new, and are +valid in other entry types as well: the first, obviously, is the URL +which is being cited, or which is being quoted as an auxiliary source +for an article perhaps; the second is the date when you last checked +that the URL was there, in the state you quoted it; this is necessary +since some people, heedless of the archival importance of preserving +the validity of URLs, indulge in the vicious practice of reorganising +web pages and destroying links. For the case of the \btfield{webpage} entry +type, the \btfield{editor} field should be used for the `maintainer' +of a web page. + +For example, in Figure~\ref{f:ex} we illustrate two potential |.bib| +file entries. The \texttt{@webpage} entry type is the new type +provided by this package, and provides reference information for a +webpage; it includes the new \texttt{url} and \texttt{lastchecked} +fields. There is also an example of the standard \texttt{@book} entry +type, which now includes the \texttt{url} and \texttt{lastchecked} +fields as well. The difference between the two references is that in +the \texttt{@book} case it is the book being cited, so that the +\texttt{url} provides extra information; in the \texttt{@webpage} case +it is the page itself which is of interest. You use the new |eprint|, +|doi| and |pubmed| fields similarly, if the bibliographic item in +question has an e-print, DOI or PubMed reference. +\begin{figure} +\begin{verbatim} +@Webpage{apastyle, + url = {http://www.apastyle.org/elecref.html}, + author = {{American Psychological Association}}, + title = {Electronic References}, + year = 2001, + lastchecked = {23 October 2002}, + note = {Excerpted from 5th edition of the APA Publication Manual} +} + +@Book{schutz, + author = {Bernard Schutz}, + title = {Gravity from the GroundUp}, + publisher = {Cambridge University Press}, + year = {2003}, + url = {http://www.gravityfromthegroundup.org/}, + lastchecked = {2008 June 16} +} +\end{verbatim} +\caption{\label{f:ex}The new \texttt{@webpage} entry type, and the \texttt{url} + field in action} +\end{figure} + +How do you use this in a document? To use the the +\texttt{alphaurl.bst} style -- which is a pre-converted version of the +standard \texttt{alpha.bst} style, included in the \texttt{urlbst} +distribution -- you simply make sure that \texttt{alphaurl.bst} is in +your BibTeX search path (use the command \texttt{kpsepath bst} to find +this path and \texttt{kpsewhich alphaurl.bst} to confirm that BibTeX +can find it) and add |\bibliographystyle{alphaurl}| to your \LaTeX\ document. + +\section{Sources} + +There are various sources which suggest how to format references to +web pages. I have followed none specifically, but fortunately they do +not appear to materially disagree. + +ISO-690~\cite{url:iso690} is a formal standard for this stuff. Walker +and Taylor's \emph{Columbia Guide to Online Style}~\cite{walker} +provides extensive coverage (but is only available on dead trees). +Emory University's +\emph{Citation Formats}~\cite{emory95} is a compendium of links rather +than a guide itself. The APA has a couple of style guides, a proposed +one~\cite{url:weapas} and a style included in the published APA style +guide~\cite{apastyle} (I'm not sure of the relationship between these +last two). + +\section{Hints} + +If you use Emacs' \BibTeX\ mode, you can insert the following in your +|.emacs| file to add knowledge of the new \btfield{webpage} entry: +\begin{verbatim} +(defun my-bibtex-hook () + (setq bibtex-mode-user-optional-fields '("location" "issn")) ; e.g. + (setq bibtex-entry-field-alist + (cons + '("Webpage" + ((("url" "The URL of the page") + ("title" "The title of the resource")) + (("author" "The author of the webpage") + ("editor" "The editor/maintainer of the webpage") + ("year" "Year of publication of the page") + ("month" "Month of publication of the page") + ("lastchecked" "Date when you last verified the page was there") + ("note" "Remarks to be put at the end of the entry")))) + bibtex-entry-field-alist))) +(add-hook 'bibtex-mode-hook 'my-bibtex-hook) +\end{verbatim} +After that, you can add a \btfield{webpage} entry by typing |C-c C-b webpage| +(or |M-x bibtex-entry|). + +It is a \emph{very} good idea to use the \package{url} package: it deals with +the problem of line-breaking long URLs, and with the problem that +\BibTeX{} creates, of occasionally inserting \%-signs into URLs in +generated bibliographies. + +See also the URL entry in the UK \TeX\ FAQ~\cite{texfaq}, and +references therein. + +\textbf{Acknowledgements:} Thanks to Jason Eisner for suggesting +the |--inlinelinks| option, to Pawe\l{} Widera for the +suggestion to use |\path| when formatting DOIs and to Michael Giffin +for the suggestion to include PubMed URLs. + +\bibliography{urlbst} +\bibliographystyle{plainurl} + +\end{document} diff --git a/Master/texmf-dist/source/latex/urlbst/Makefile.in b/Master/texmf-dist/source/latex/urlbst/Makefile.in new file mode 100644 index 00000000000..7add0fe04a2 --- /dev/null +++ b/Master/texmf-dist/source/latex/urlbst/Makefile.in @@ -0,0 +1,150 @@ +# BSTSTYLES are the standard styles that we distribute +BSTSTYLES=plainurl.bst unsrturl.bst alphaurl.bst abbrvurl.bst +# TESTSTYLES are a couple of extra ones that we explicitly test +TESTSTYLES=mlaurl.bst + +MAINTAINER_FILES= Makefile configure +GENERATED=urlbst urlbst.tex urlbst.pdf urlbst.html \ + README VERSION $(BSTSTYLES) +# distribute generated files +# ...plus the configure files +# ...plus the configured files +DISTRIBS=$(GENERATED) \ + configure configure.ac \ + urlbst.in urlbst.bib urlbst.tex.in urlbst.html.in Makefile.in + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +DIST=urlbst-@PACKAGE_VERSION@ + +### Implicit rules + +# Don't include --inlinelinks when generating %url.bst here, as we +# do want the links visible when generating the documentation, and it's +# probably abetter default in any case. +%url.bst: urlbst + export BSTINPUTS=test: ; \ + if test -z "`kpsewhich ${@:url.bst=.bst}`"; then \ + echo "Can't locate ${@:url.bst=.bst}"; \ + else \ + ./urlbst --eprint --doi --pubmed --hyperref `kpsewhich ${@:url.bst=.bst}` $@; \ + fi + +# Incomplete TeX support +%.ps: %.dvi + dvips -o $@ $< +%.bbl: %.tex plainurl.bst + pdflatex $< + if grep -q 'Citation.*undefined' ${<:.tex=.log}; then \ + bibtex ${<:.tex=}; \ + pdflatex $<; \ + rm ${<:.tex=.pdf}; \ + fi +%.pdf: %.tex %.bbl + pdflatex $< +%.dvi: %.tex %.bbl + latex $< +%.gz: % + gzip --best -f $< + + + +### Targets start here + +all: urlbst + +dist: $(DIST).tar.gz + +$(DIST).tar: $(DISTRIBS) + sed '1s,.*,#! /usr/bin/env perl,' urlbst >tmp && mv tmp urlbst \ + && chmod +x urlbst + rm -Rf $(DIST) $(DIST).tar + mkdir $(DIST) + cp $(DISTRIBS) $(DIST) + tar cf $@ $(DIST) + rm -Rf $(DIST) + +urlbst: urlbst.in config.status + ./config.status urlbst + +urlbst.tex: urlbst.tex.in config.status + ./config.status urlbst.tex + +urlbst.html: urlbst.html.in config.status + ./config.status urlbst.html + +Makefile: Makefile.in config.status + ./config.status Makefile + +configure: configure.ac + autoconf + +config.status: configure + ./configure + +# Version stamp file, included in the distribution for convenience, +# so it's easy to see which version it is has been unpacked at CTAN. +VERSION: + echo $(DIST) >VERSION + +# The README is just a plain-text version of urlbst.html +README: urlbst.html + lynx -dump -nolist urlbst.html >README + +# Very simple install target -- hardly worth bothering, really.... +install: urlbst + cp urlbst $(bindir) + +# Very simple test target -- just check that we don't bomb converting +# the standard styles +test: $(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; \ + bibtex test-$$ROOT; \ + done + +# Brute-force test target, which finds all the system .bst files, +# converts them, and runs BibTeX on them. It doesn't test the results +# in any way -- you have to do that by eye. +# +# No, this is a hopelessly blunderbus approach. And in any case the +# 'locate *.bst' doesn't work. At least the following would find only things +# on the .bst search path. +# BSTPATH=`kpsepath bst` +# for d in `IFS=:; echo $BSTPATH`; do +# dd=`expr "$d" : '!*\(.*[^/]\)/*$'` +# echo dd=$dd +# test -d "$dd" && find $dd -name \*.bst +# done +test-all: + printf '\\relax\n'>test-all.mainaux + sed -n 's/^.*{\(test:.*\),/\\citation{\1}/p' urlbst.bib>>test-all.mainaux + for f in `locate '*.bst' | grep -v norman`; do T=`echo $$f|sed 's+.*/\(.*\)\.bst+\1url+'`;perl urlbst $$f $$T.bst; if test $$? = 0; then TF=test-$$T.aux; cp test-all.mainaux $$TF;printf '\\bibdata{urlbst}\n'>>$$TF; printf '\\bibstyle{$$T}\n'>>$$TF; else rm $$T.bst; fi done + for f in `ls test-*.aux|sed s+.aux++`;do bibtex $$f;done + rm test-all.mainaux + +# Tarball for unpacking in the webpage distribution directory +webpage-tarball.tar: urlbst.pdf urlbst.html $(DIST).tar.gz + mkdir webpage-tarball + cp urlbst.pdf $(DIST).tar.gz webpage-tarball + cp urlbst.html webpage-tarball/index.html + cd webpage-tarball; tar cf ../webpage-tarball.tar * + rm -Rf webpage-tarball + +tidy: + rm -f webpage-tarball.tar + rm -f *~ test-* + rm -f *.aux *.bbl *.log *.blg *.dvi *.pdf + +clean: tidy + rm -f *.bst + rm -Rf config.status autom4te.cache + rm -f $(GENERATED) + +maintainer-clean: clean + rm -f $(MAINTAINER_FILES) diff --git a/Master/texmf-dist/source/latex/urlbst/VERSION b/Master/texmf-dist/source/latex/urlbst/VERSION deleted file mode 100644 index 49d59571fbf..00000000000 --- a/Master/texmf-dist/source/latex/urlbst/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.1 diff --git a/Master/texmf-dist/source/latex/urlbst/configure b/Master/texmf-dist/source/latex/urlbst/configure new file mode 100755 index 00000000000..7543f55f02b --- /dev/null +++ b/Master/texmf-dist/source/latex/urlbst/configure @@ -0,0 +1,2779 @@ +#! /bin/sh +# From configure.ac Revision: 1.16 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61 for urlbst 0.6-1. +# +# Report bugs to <norman@astro.gla.ac.uk>. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +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.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 </dev/null 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='urlbst' +PACKAGE_TARNAME='urlbst' +PACKAGE_VERSION='0.6-1' +PACKAGE_STRING='urlbst 0.6-1' +PACKAGE_BUGREPORT='norman@astro.gla.ac.uk' + +ac_unique_file="urlbst.in" +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +RELEASEDATE +PERL +WITHEPRINTS +EPRINTURL +WITHDOIRESOLVER +DOIURL +WITHPUBMEDRESOLVER +PUBMEDURL +WITHHREF +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +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 +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # 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.6-1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --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] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/urlbst] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of urlbst 0.6-1:";; + esac + cat <<\_ACEOF + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-eprints[=url] Include eprint support by default, giving optional URL + --with-doi=[=url] Include support for a DOI resolver by default, giving optional URL + --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@astro.gla.ac.uk>. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$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/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +urlbst configure 0.6-1 +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +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.6-1, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# 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=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +RELEASEDATE="2008 June 16" + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + + +WITHEPRINTS=0 + +EPRINTURL=http://arxiv.org/abs/ + + +WITHDOIRESOLVER=0 + +DOIURL=http://dx.doi.org/ + + +WITHPUBMEDRESOLVER=0 + +PUBMEDURL=http://www.ncbi.nlm.nih.gov/pubmed/ + + + +# Check whether --with-eprints was given. +if test "${with_eprints+set}" = set; then + withval=$with_eprints; if test "$withval" = "yes"; then + WITHEPRINTS=1 + elif test "$withval" = "no"; then + WITHEPRINTS=0 + else + WITHEPRINTS=1 + EPRINTURL=$withval + fi +fi + + + +# Check whether --with-doi was given. +if test "${with_doi+set}" = set; then + withval=$with_doi; if test "$withval" = yes; then + WITHDOIRESOLVER=1 + elif test "$withval" = no; then + WITHDOIRESOLVER=0 + else + WITHDOIRESOLVER=1 + DOIURL=$withval + fi +fi + + + +# Check whether --with-pubmed was given. +if test "${with_pubmed+set}" = set; then + withval=$with_pubmed; if test "$withval" = yes; then + WITHPUBMEDRESOLVER=1 + elif test "$withval" = no; then + WITHPUBMEDRESOLVER=0 + else + WITHPUBMEDRESOLVER=1 + PUBMEDURL=$withval + fi +fi + + + +WITHHREF=0 + + + +# Check whether --with-href was given. +if test "${with_href+set}" = set; then + withval=$with_href; if test "$withval" = yes; then + WITHHREF=2 + elif test "$withval" = no; then + WITHHREF=0 + else + WITHHREF=$withval + fi +fi + + + +ac_config_files="$ac_config_files Makefile urlbst.tex urlbst.html" + +ac_config_files="$ac_config_files urlbst" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +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=`echo "$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. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +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.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# 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.6-1, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to <bug-autoconf@gnu.org>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +urlbst config.status 0.6-1 +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "urlbst.tex") CONFIG_FILES="$CONFIG_FILES urlbst.tex" ;; + "urlbst.html") CONFIG_FILES="$CONFIG_FILES urlbst.html" ;; + "urlbst") CONFIG_FILES="$CONFIG_FILES urlbst" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# 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 +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +RELEASEDATE!$RELEASEDATE$ac_delim +PERL!$PERL$ac_delim +WITHEPRINTS!$WITHEPRINTS$ac_delim +EPRINTURL!$EPRINTURL$ac_delim +WITHDOIRESOLVER!$WITHDOIRESOLVER$ac_delim +DOIURL!$DOIURL$ac_delim +WITHPUBMEDRESOLVER!$WITHPUBMEDRESOLVER$ac_delim +PUBMEDURL!$PUBMEDURL$ac_delim +WITHHREF!$WITHHREF$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 48; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS <conf$$subs.sed +rm -f conf$$subs.sed +cat >>$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$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/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$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 "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + + + + esac + + + case $ac_file$ac_mode in + "urlbst":F) chmod +x urlbst ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/Master/texmf-dist/source/latex/urlbst/configure.ac b/Master/texmf-dist/source/latex/urlbst/configure.ac new file mode 100644 index 00000000000..cd41ab186c1 --- /dev/null +++ b/Master/texmf-dist/source/latex/urlbst/configure.ac @@ -0,0 +1,86 @@ +dnl Process this file with autoconf to produce a configure script +AC_REVISION($Revision: 1.16 $) + +AC_INIT(urlbst, 0.6-1, norman@astro.gla.ac.uk) +RELEASEDATE="2008 June 16" +AC_SUBST(RELEASEDATE) + +AC_PREREQ(2.50) + +AC_CONFIG_SRCDIR([urlbst.in]) + +AC_PATH_PROG(PERL, perl) + + +dnl Add --with-eprints: tune default support for eprints +WITHEPRINTS=0 +AC_SUBST(WITHEPRINTS) +EPRINTURL=http://arxiv.org/abs/ +AC_SUBST(EPRINTURL) + +dnl Add --with-doi: tune default support for DOI fields +WITHDOIRESOLVER=0 +AC_SUBST(WITHDOIRESOLVER) +DOIURL=http://dx.doi.org/ +AC_SUBST(DOIURL) + +dnl Add --with-pubmed +WITHPUBMEDRESOLVER=0 +AC_SUBST(WITHPUBMEDRESOLVER) +PUBMEDURL=http://www.ncbi.nlm.nih.gov/pubmed/ +AC_SUBST(PUBMEDURL) + +AC_ARG_WITH(eprints, +[ --with-eprints[[=url]] Include eprint support by default, giving optional URL], + if test "$withval" = "yes"; then + WITHEPRINTS=1 + elif test "$withval" = "no"; then + WITHEPRINTS=0 + else + WITHEPRINTS=1 + EPRINTURL=$withval + fi) + +AC_ARG_WITH(doi, +[ --with-doi=[[=url]] Include support for a DOI resolver by default, giving optional URL], + if test "$withval" = yes; then + WITHDOIRESOLVER=1 + elif test "$withval" = no; then + WITHDOIRESOLVER=0 + else + WITHDOIRESOLVER=1 + DOIURL=$withval + fi) + +AC_ARG_WITH(pubmed, +[ --with-pubmed=[[=url]] Include support for a PUBMED resolver by default, giving optional URL], + if test "$withval" = yes; then + WITHPUBMEDRESOLVER=1 + elif test "$withval" = no; then + WITHPUBMEDRESOLVER=0 + else + WITHPUBMEDRESOLVER=1 + PUBMEDURL=$withval + fi) + + +dnl Add --with-href: set default support for hyperlinks +dnl Default is to have no hyperlinks +WITHHREF=0 +AC_SUBST(WITHHREF) + +AC_ARG_WITH(href, +[ --with-href[[=int]] Include eprint hyperlinks (0/1/2=none/hypertex/hyperref)], + if test "$withval" = yes; then + WITHHREF=2 + elif test "$withval" = no; then + WITHHREF=0 + else + WITHHREF=$withval + fi) + + +AC_CONFIG_FILES(Makefile urlbst.tex urlbst.html) +AC_CONFIG_FILES(urlbst, [chmod +x urlbst]) + +AC_OUTPUT diff --git a/Master/texmf-dist/source/latex/urlbst/urlbst.pl b/Master/texmf-dist/source/latex/urlbst/urlbst.pl deleted file mode 100644 index 1b8de3456ea..00000000000 --- a/Master/texmf-dist/source/latex/urlbst/urlbst.pl +++ /dev/null @@ -1,405 +0,0 @@ -#! /usr/bin/perl -w -# -# Usage: ./urlbst.pl [input-file [output-file]] -# -# If either input-file or output-file is omitted, they are replaced by -# stdin or stdout respectively. -# -# $Id: urlbst.pl,v 1.3 2002/04/22 15:49:06 norman Exp $ - -$version = '0.1'; # %%VERSION%% -($progname = $0) =~ s/.*\///; -$mymarker = "% $progname"; - -$infile = ($#ARGV >= 0 ? $ARGV[0] : '-'); -$outfile = ($#ARGV >= 1 ? $ARGV[1] : '-'); - -$exitstatus = 0; # success status - -open (IN, "<$infile") || die "Can't open $infile to read"; -open (OUT, ">$outfile") || die "Can't open $outfile to write"; - -# We have to make certain assumptions about the source files, in order -# to patch them at the correct places. Specifically, we assume that -# -# - there's a function init.state.consts -# -# - ...and an output.nonnull which does the actual outputting, which -# has the `usual' interface. -# -# - we can replace -# note output -# by -# output.url % the function which formats and displays any URL -# new.block -# note output -# -# - there is a function which handles the `article' entry type (this -# will always be true) -# -# - there is a function output.bibitem which is called at the -# beginning of each entry type -# - ...and one called fin.entry which is called at the end -# -# If the functions format.date, format.title or new.block are not defined (the -# former is not in apalike, for example, and the last is not in the -# AMS styles), then replacements areincluded in the output. -# -# All these assumptions are true of the standard files and, since most -# style files derive from them more or less directly, are true of most (?) -# other style files, too. -# -# There's some rather ugly Perl down here. The parsing for -# brace-matching could probably do with being rewritten in places, to -# make it less ugly, and more robust. - -print OUT "%%% Modification of BibTeX style file ", ($infile eq '-' ? '<stdin>' : $infile), "\n"; -print OUT "%%% to add webpage entry type, and url and lastchecked fields\n%%% Edits by $progname, version $version\n%%% (marked with $mymarker)\n"; -print OUT "%%% Original headers follow...\n"; - -$found{initconsts} = 0; -$found{outputnonnull} = 0; -$found{article} = 0; -$found{outputbibitem} = 0; -$found{finentry} = 0; -$found{formatdate} = 0; -$found{formattitle} = 0; -$found{newblock} = 0; - -while (<IN>) { - /^ *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 edit - # will mess things up. - $line = $_; - until ($line =~ /\{\s*(\w*)/) { - $line .= <IN>; - } - $bracematchtotal = 0; # reset - bracematcher($line); - $line =~ /\{\s*(\w*)/; - $found{'entry'.$1} = 1; - print OUT $line; - $line = <IN>; - until (bracematcher($line) == 0) { - # XXX deal with multiple entries on one line - ($line =~ /^\s*(\w*)/) && ($found{'entry'.$1} = 1); - print OUT $line; - $line = <IN>; - } - if (defined($found{entryurl})) { - print STDERR "$progname: style file $infile already has URL entry!\n"; - # print out the rest of the file, and give up - while (<IN>) { - print OUT; - } - $exitstatus = 1; - last; - } else { - print OUT " url $mymarker\n lastchecked\n"; - } - print OUT $line; - next; - }; - - /^ *FUNCTION *\{init\.state\.consts\}/ && do { - print OUT "INTEGERS { bracket.state outside.brackets open.brackets within.brackets close.brackets } $mymarker\n"; - $line = $_; - until ($line =~ /\{.*\}.*\{/s) { - $line .= <IN>; - } - $line =~ s/(\{.*?\}.*?\{)/$1 #0 'outside.brackets := $mymarker - #1 'open.brackets := - #2 'within.brackets := - #3 'close.brackets := - - /s; - print OUT $line; - $found{initconsts} = 1; - next; - }; - - /^ *FUNCTION *{output\.nonnull}/ && do { - print OUT "$mymarker\n"; - print OUT "FUNCTION {output.nonnull.original}\n"; - $bracematchtotal = 0; - while (defined ($line = <IN>) && bracematcher($line) > 0) { - print OUT $line; - } - print OUT "$line\n"; # print out terminating \} (assumed - # alone on the line) - print_output_functions(); - $found{outputnonnull} = 1; - next; - }; - - /note *output/ && do { - print OUT " output.url $mymarker\n new.block\n"; - print OUT; - next; - }; - - /^ *FUNCTION *{format\.date}/ && do { - $found{formatdate} = 1; - print OUT; - next; - }; - - /^ *FUNCTION *{format\.title}/ && do { - $found{formattitle} = 1; - print OUT; - next; - }; - - /^ *FUNCTION *{new.block}/ && do { - $found{newblock} = 1; - print OUT; - next; - }; - - /^ *FUNCTION *\{article\}/ && do { - - print_missing_functions(); - print_webpage_def(); - - print OUT; - $found{article} = 1; - next; - }; - - /FUNCTION *\{output.bibitem\}/ && do { - $line = $_; - until ($line =~ /\{.*\}.*\{/s) { - $line .= <IN>; - } - $line =~ s/(\{.*?\}.*?\{)/$1 outside.brackets 'bracket.state := $mymarker - /s; - print OUT $line; - $found{outputbibitem} = 1; - next; - }; - - /FUNCTION *\{fin\.entry\}/ && do { - $line = $_; - until ($line =~ /\{.*\}.*\{/s) { - $line .= <IN>; - } - $line =~ s/(\{.*?\}.*?\{)/$1 - bracket.state close.brackets = $mymarker - \{ "]" * \} - 'skip\$ - if\$ - /s; - print OUT $line; - $found{finentry} = 1; - next; - }; - - print OUT; -} - -foreach $k (keys %found) { - if ($found{$k} == 0) { - print STDERR "$progname: $infile: failed to find feature $k\n"; - } -} - -close (IN); -close (OUT); - -exit $exitstatus;; - - - - - - -sub print_output_functions { - print OUT "$mymarker...\n"; - print OUT <<'EOD'; -FUNCTION {output.nonnull} -{ % Save the thing we've been asked to output - 's := - % If the bracket-state is close.brackets, then add a close-bracket to what's - % currently at the top of the stack, and set bracket.state to outside.brackets - bracket.state close.brackets = - { "]" * - outside.brackets 'bracket.state := - } - 'skip$ - if$ - bracket.state outside.brackets = - { % We're outside all brackets -- this is the normal situation. - % Write out what's currently at the top of the stack, using the - % original output.nonnull function. - s - output.nonnull.original - } - { % Still in brackets. Add open-bracket or (continuation) comma, add the - % new text (in s) to the top of the stack, and move to the close-brackets - % state, ready for next time (unless inbrackets resets it). If we come - % into this branch, then output.state is carefully undisturbed. - bracket.state open.brackets = - { " [" * } - { ", " * } % bracket.state will be within.brackets - if$ - s * - close.brackets 'bracket.state := - } - if$ -} - -% 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 = - { within.brackets 'bracket.state := } % reset the state: not open nor closed - { open.brackets 'bracket.state := } - if$ -} - -FUNCTION {format.url} -{ url empty$ - { "" } - { "Available from World Wide Web: \url{" url * "}" * } - if$ -} - -FUNCTION {format.lastchecked} -{ lastchecked empty$ - { "" } - { inbrackets "cited " lastchecked * } - if$ -} -EOD - print OUT "% ...$mymarker\n"; -} - -sub print_webpage_def { - print OUT "$mymarker...\n"; - print OUT <<'EOD'; -% Output a URL. We can't use the more normal idiom (something like -% `format.url output'), because the `inbrackets' within -% format.lastchecked applies to everything between calls to `output', -% so that `format.url format.lastchecked * output' ends up with both -% the URL and the lastchecked in brackets. -FUNCTION {output.url} -{ url empty$ - 'skip$ - { new.block - format.url output - format.lastchecked output - } - if$ -} - -% Webpage entry type. -% Title and url fields required; -% author, note, year, month, and lastchecked fields optional -% 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 -% http://www.cas.usf.edu/english/walker/mla.html -% for citation formats for web pages. -FUNCTION {webpage} -{ output.bibitem - author empty$ - 'skip$ - { format.authors output.nonnull } - if$ - new.block - format.title "title" output.check - inbrackets "online" output - new.block - year empty$ - 'skip$ - { format.date "year" output.check } - if$ - lastchecked empty$ - 'skip$ - { format.lastchecked output } - if$ - new.block - format.url "url" output.check - new.block - note output - fin.entry -} -EOD - print OUT "% ...$mymarker\n\n\n"; -} - - -sub print_missing_functions { - # We've got to the bit of the file which handles the entry - # types, so write out the webpage entry handler. This uses - # the format.date function, which which many but not all - # bst files have (for example, apalike doesn't). So - # check that we either have found this function already, or - # add it. - if (! $found{formatdate}) { - if ($found{entrymonth}) { - print OUT <<'EOD'; -FUNCTION {format.date} -{ year empty$ - { month empty$ - { "" } - { "there's a month but no year in " cite$ * warning$ - month - } - if$ - } - { month empty$ - 'year - { month " " * year * } - if$ - } - if$ -} -EOD - } else { - print OUT <<'EOD'; -FUNCTION {format.date} -{ year empty$ - 'skip$ - { %write$ - "(" year * ")" * - } - if$ -} -EOD - } - $found{formatdate} = 1; - } - - if (! $found{formattitle}) { - print OUT <<'EOD'; -FUNCTION {format.title} -{ title empty$ - { "" } - { title "t" change.case$ } - if$ -} -EOD - } - - # The same, for the new.block function - if (! $found{newblock}) { - # No new.block function defined. Odd (AMS). So define dummy - print OUT 'FUNCTION {new.block} { skip$ }'."\n"; - $found{newblock} = 1; - } -} - -# Keep track of open and close braces in the string argument. -# Keep state in $matchtotal, return the current value. -sub bracematcher { - my $s = shift; - $s =~ s/[^\{\}]//g; - #print "s=$s\n"; - foreach my $c (split (//, $s)) { - $bracematchtotal += ($c eq '{' ? 1 : -1); - } - return $bracematchtotal; -} diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index a1dc63941c4..39b49e1776c 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -195,7 +195,7 @@ my @WorkingTLP = qw( typedref typogrid uebungsblatt ucthesis uhrzeit uiucthesis ulsy umich-thesis uml umlaute umthesis umtypewriter underlin undertilde units unitsdef unroman - upmethodology upquote ushort uwthesis + upmethodology upquote urlbst ushort uwthesis vancouver variations varindex varsfromjobname vector velthuis venn verse versions vertex vhistory visualfaq vmargin vntex volumes vpe vxu |