Da dbf a bib e Jabref
iw9cmd flavio
iw9cmd@libero.it
Gio 3 Nov 2005 20:24:12 CET
Ilbuonme ha scritto:
> Ciao a tutti!
> Avete idea di come si possa convertire un database .dbf di quelli
> che OpenOffice crea per la bibliografia in uno .bib?
> Io ho quasi un migliaio di articoli, libri etc. catalogati in un
> database .dbf, con campi 'personalizzati' tipo "reperito" (booleano:
> vero/falso), oppure "collocazione a Palermo" (dove si trova nelle mie
> biblioteche di facoltà) etc. Vorrei passare al formato .bib, e ad
> un'applicazione tipo Jabref, ma non posso reinserire tutte le entry ad
> una ad una!
> Provando a salvare il file dbf come cvs o txt, la funzione di
> importazione di Jabref non lo riconosce.
> E un'ultima domanda: nel formato .bib, e soprattutto con Jabref (e
> programmi affini), si possono aggiungere campi personalizzati, come
> quelli che citavo sopra ("reperito", "collocazione" etc.)?
bibtex , che io ne sappia, non gestisce i campi personalizzati, per
ogni categoria ha i suoi campi e basta. L'unica scappatoia è il campo
annote che permette di scrivere un commento non visualizzato o il
comando note che permette di scrivere un commento visualizzato nelle
bibliografia.
Puoi scrivere qualsiasi cosa con i commenti ma penso proprio che non
sia questo che ti interessa.
> Ho provato a scaricare un'applicazione "dbf2bib", trovata in un
> angolo di internet (un solo risultato sotto Google), ma non funziona
> quando da console lo eseguo con ./dbf2bib.
suggerimento:
dividi gli articoli in tabelle diverse a seconda di che si tratta
(oppure metti un flag di riconoscimento ad ogni voce della
bibliografia che so a nel primo campo per articolo l per libro...).
Esporta le tabelle una ad una in csv usando un separatore
scognito, tipo @, $ o £. Poi converti con uno scriptino in bash o in
perl che scriva un file bibtex. Poi unisci i file e il gioco è fatto.
Se hai messo il flag lo script dovrà contenere un po' di logica di
controllo tipo se il primo campo è una a allora...
E in questo caso la tabella sarà unica.
Ho uno scriptino in bash che se ne occupa ma è una ciofeca che va
modificata per ogni tipo voce e che funziona per tabelle singole.
L'ho fatto in un momento in cui avevo poco tempo per pensare a cose
più complicate e avavo pochi tipi di voce. Altri sapranno fare
certamente di meglio.
#!/bin/bash
entry=@Article{A_
file=art.csv
numlinee=`wc -l $file |cut -d" " -f1`
i=0
while [ $i -lt $numlinee ]
do
i=$(( $i + 1 ))
linea=`head -n $i $file|tail -1`
author=`echo $linea|tr -d \"|cut -d$ -f1`
title=`echo $linea|tr -d \"|cut -d$ -f2`
jour=`echo $linea|tr -d \"|cut -d$ -f3`
year=`echo $linea|tr -d \"|cut -d$ -f4`
vol=`echo $linea|tr -d \"|cut -d$ -f5`
pag=`echo $linea|tr -d \"|cut -d$ -f6`
echo $entry$i,
echo author={$author},
echo title={$title},
echo journal={$jour},
echo year={$year},
echo volume={$vol},
echo pages={$pag},
echo }
Questo converte un file csv (art.csv) solo di articoli coi campi
separati da $ la cui
sintassi è:
autore$titolo$giornale$anno$volume$pagina$
tr -d \" serve per levare " che avevo utilizzato come indicatore di
testo. Con un case, un flag nel primo campo un po' di copia e incolla
e un minimo di attenzione dovresti arrivare a quello che vuoi.
Ciao
iw9cmd flavio
P.S.: altri avranno a che dire sull'uso improprio di bash e diranno
che era meglio il perl, awk o altra roba del genere. A me veniva
comodo così, anche se è poco ortodosso.
Maggiori informazioni sulla lista
palermo