Re: Estrazione elementi Bibtex in una macro

#59893
Up
0
Down
::

Ciao a tutti,

desideravo porre il seguente quesito:

Prendiamo una macro definita con \newcommand che riceve un parametro

Il parametro è la stessa chiave di ricerca che si passa al comando \cite per fare riferimento a un elemento di BIBTEX.

Supponiamo che io abbia il seguente elemento nel mio file .bib:

@book{eco2005nome,
title={Il nome della rosa},
author={Eco, U.},
isbn={9788845246340},
series={Grandi tascabili Bompiani},
url={http://books.google.com/books?id=OV\_yAAAAMAAJ},
year={2005},
publisher={Tascabili Bompiani}
}

Nel mio file .tex scrivo:

qualche cosa \CLAFE{eco2005nome} ancora qualche cosa

Vorrei che la macro \CLAFE, che riceve il parametro “eco2005nome” legga il file CLAFE.BIB estragga in diverse variabili il valore del “title”, di “year”. In modo che poi possa utilizzare, all’interno della macro ovviamente, questa variabili per fare altre cose.

\newcommand{\CLAFE}[1]
{
Ricevo il parametro #1 che conterrà “eco2005nome”
Leggo il file .bib con questa chiave
Imposto in una variabile, per esempio, ANNO, il valore del campo Year del record .Bib
Scrivo il contenuto di ANNO in corsivo, o in grassetto o altro ….
}

Chiedo troppo ?
🙂

Ciao a tutti e un grazie comunque.

CLAFE

Interessante problema.
`\documentclass[a4paper]{article}

\usepackage{keyval}
\makeatletter
\def\define@reuse@key#1{%
\define@key{reuse}{#1}{\global\@namedef{\currentry @#1}{##1}}}
\define@reuse@key{title}
\define@reuse@key{author}
\define@reuse@key{isbn}
\define@reuse@key{series}
\define@reuse@key{url}
\define@reuse@key{year}
\define@reuse@key{publisher}
\define@reuse@key{journal}
%%% inserire tutti gli altri tipi che servono
%\define@reuse@key{}

\def\book#1{\extractkey#1\@nil}
\let\article\book
\let\incollection\book
%%% Inserire tutti gli altri tipi che servono

\def\extractkey#1,#2\@nil{\def\currentry{#1}\setkeys{reuse}{#2}}
\def\usebibdata#1#2{\@nameuse{#1@#2}}
\makeatother

\newcommand{\bibinput}[1]{%
\begingroup\catcode`\@=0 \input{#1.bib}\endgroup}

\bibinput{xyz} % il nome del file .bib

\begin{document}
\usebibdata{eco2005nome}{title}

\usebibdata{eco2005nome}{year}
\end{document}`
Dovrai completare le due liste di comandi secondo lo schema dato; la prima lista per i campi, la seconda per i tipi di documento.

Ciao
Enrico

Go to top