Aggiungo il codice per \usebibdataurl necessario se si usa hyperref, che è diverso dal precedente:
`\def\usebibdataurl#1{%
\scantokens{\url{\usebibdata{#1}{url}}\endinput}}`
Ciao
Enrico
Adesso invece riporto una nuova versione del codice; se si carica hyperref il codice va dopo.
`\usepackage{keyval}
\makeatletter
%%% Definizione delle variabili
\define@key{reuse}{currentkind}{\def\@tempa{#1}}
\define@key{reuse}{currententry}{\def\reuse@current{#1}}
\def\define@reuse@key#1{%
\define@key{reuse}{#1}{\global\@namedef{reuse@\reuse@current @#1}{##1}}}
\define@reuse@key{title}
\define@reuse@key{isbn}
\define@reuse@key{url}
\define@reuse@key{year}
\define@reuse@key{note}
%%% La macro sostituita a @book, @article, eccetera
\def\reuse@find#1#{%
\lowercase{\edef\@tempa{\zap@space#1 \@empty}}%
\ifcsname reuse@type@\@tempa\endcsname
\expandafter\@gobble
\else
\begingroup\makeatother
\expandafter\reuse@extract
\fi}
\let\reuse@type@preamble\@empty
\let\reuse@type@string\@empty
%%% la macro per estrarre i valori
\def\reuse@extract#1{\setkeys{reuse}{currententry=#1}\endgroup}
%%% I due tipi da ignorare: @preamble e @string
\let\reuse@type@preamble\@empty
\let\reuse@type@string\@empty
%%% La macro per gestire gli errori
\def\reuse@error#1#2{%
\PackageError{reuse}
{Undefined key `#1' or empty value for `#2'}
{The key you used is wrong or the value to `#2' has not been set}}
%%% Le quattro macro a livello utente
\newcommand\newbibdata#1{\define@reuse@key{#1}}
\def\usebibdata#1#2{\@ifundefined{reuse@#1@#2}
{\reuse@error{#1}{#2}}
{\@nameuse{reuse@#1@#2}}}
\def\usebibdataurl#1{\@ifundefined{reuse@#1@#2}
{\reuse@error{#1}{url}}
{\@usebibdataurl{#1}}}
\@ifpackageloaded{hyperref}{\@tempswatrue}{\@tempswafalse}
\if@tempswa
\def\@usebibdataurl#1{%
\scantokens{\url{\usebibdata{#1}{url}}\endinput}}
\else
\newcommand{\@usebibdataurl}[2][|]{%
\toks@=\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter{\usebibdata{#1}{url}}
\scantokens\expandafter{%
\expandafter\url\expandafter#1\the\toks@#1\endinput}}
\fi
\newcommand{\bibinput}[1]{%
\begingroup
\catcode`\%=12
\let\KV@err=\@gobble
\let\KV@errx=\@gobble
\let\XKV@err=\@gobble
\begingroup\lccode`\~=`\@
\lowercase{\endgroup\let~}\reuse@find
\catcode`\@=\active \input{#1.bib}\endgroup}
\makeatother`
Alla fine ho deciso per i quindici \expandafter. 🙂
Ciao
Enrico