
Ich habe das Problem, dass ich den Zitationsmanager Citavi verwende und dieser nur im Format exportieren kann urldate = {dd.mm.yyyy}
. Bibtex benötigt jedoch das Format urldate = {yyyy-mm-dd}
. Alle Daten meiner Bibliographie manuell zu ändern, ist in meinem Fall nicht wirklich realistisch, da ich viele Einträge habe und nach jedem Export dies erneut tun müsste.
Beispielsweise sieht mein Bibtex-Eintrag so aus:
@Misc{FAO.2011,
Title = {{FAOSTAT: Food balance sheet}},
Author = {FAO},
Year = {2011},
Address = {Rome},
Url = {http://faostat3.fao.org/download/FB/FBS/E},
Urldate = {15.1.2014}
}
Dann erhalte ich folgende Warnung, wenn ich es mit BibTex kompiliere
Package biblatex Warning: Biber reported the following issues
(biblatex) with 'FAO.2011':
(biblatex) - Datamodel: Entry 'FAO.2011' (literature.bib): Inval
id format '15.1.2014' of date field 'urldate' - ignoring.
Gibt es eine Möglichkeit, das Format von Bibtex so zu ändern, dass es das urldate
In-Format liest urldate = {dd.mm.yyyy}
, oder kann ich es irgendwie in konvertieren urldate = {yyyy-mm-dd}
?
Ich habe im Internet gesucht und keine Lösung für dieses Problem gefunden. Es scheint ein spezifisches Problem von Citavi zu sein. Schade, dass Citavi nicht anpassbar ist.
Meine Frage ähnelt dieser:Ignorieren Sie ein Bibliographiefeld [z. B. „urldate“], um Biblatex-/Biber-Warnungen zu vermeiden.. Allerdings wurde in diesem Thema keine Lösung für mein Problem bereitgestellt, da es in diesem Fall urldate
nicht benötigt wurde und daher einfach ignoriert wurde. Aber ich muss geben urldate
.
Antwort1
Dank Giacomos Feedback habe ich eine andere Lösung für dieses spezielle Problem gefunden:
Das Problem hängt eher mit Citavi zusammen und Citavi ist nicht so klar oder transparent wie LaTeX. Zur Information für andere, die auf ein ähnliches Problem stoßen könnten: Obwohl Citavi nach dem Datum in dem Format fragt, in dem urldate={dd.mm.yyyy}
Sie es eingeben können, urldate = {yyyy-mm-dd}
macht der Export keine Probleme. Seltsamerweise werden alle anderen Einträge entsprechend exportiert, wenn man nur einen Eintrag ändert. Mein Fehler, dass ich es nicht früher ausprobiert habe. Ich hätte es früher ausprobieren sollen.
Antwort2
Wenn Sie ein Paket verwenden, biblatex
können Sie verwenden
\DeclareSourcemap{
\maps{
\map[overwrite]{
\step[fieldsource=urldate,
match=\regexp{([0-9]{2})\.([0-9]{2})\.([0-9]{4})},
replace={$3-$2-$1},
final]
}
}
}
in Ihrer Präambel, um urldate
das Feld der Eingabedateien neu zu formatieren *.bib
.
Antwort3
Um die Formatierung in BibTeX zu erzwingen, verwende ich doppelte Klammern, zB:
Urldate = {{15/01/2014}}
Antwort4
Ich habe ein kleines Python-Skript geschrieben, das das Format von urldate ändert: Legen Sie Ihre .bib-Datei in dasselbe Verzeichnis wie dieses Skript, nennen Sie sie "quellen.bib" und führen Sie das Skript aus. Eine neu formatierte Datei mit dem Namen "changedFile.bib" wird angezeigt.
import re
file = open("quellen.bib","r");
fileChanged = open("changedFile.bib","w");
pattern = re.compile("([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})");
for line in file:
if "urldate =" in line and pattern.search(line):
#save end of line to add it later to the modified date
endline = line[line.index('}')+1:len(line)];
date = line[line.index('{')+1:line.index('}')];
month = int(date[0:date.index('/')]);
date = date[date.index('/')+1:len(date)];
day = int(date[0:date.index('/')]);
date = date[date.index('/')+1:len(date)];
year = int(date);
if month > 12:
# check if month and day are reversed
temp = day;
day = month;
month = temp;
# check if every value is ledgit
if(month > 0 and month < 13 and day >0 and day < 32 and year > 1000):
if(month<10):
#add 0 if month or day is less then 10
month = "0"+str(month);
if(day<10):
day = "0"+str(day);
fileChanged.write(" urldate = {"+ str(year)+"-"+str(month)+"-"+str(day)+"}"+endline);
else:
print("something is wrong with this line: ");
print("day: ",day,"montH: ",month, "year: ",year);
print(line);
else:
fileChanged.write(line);
file.close;
fileChanged.close;