von domwass » Fr 22. Jan 2010, 16:43
Franziska hat geschrieben:ich habe die .bib-Angaben mit filecontents eingefügt. Ein paar Anpassungen aus meiner biblatex.cfg habe ich in die Präambel gesetzt. Ist das richtig so? Habe ich die weiteren Angaben in der biblatex.cfg damit quasi ausgeschaltet?
Das ist richtig so. Die biblatex.cfg ist aber nicht ausgeschaltet. Wenn du
sichergehen willst, das keine Angaben von biblatex.cfg verwendet werden,
lege eine leere biblatex.cfg in das Verzeichnis mit dem Testdokument.
Danke für das sehr schöne Minimalbeispiel. Ich habe es entsprechend
deiner Wünsche angepasst (s.u.).
Kurze Erläuterung: Das bibmacro 'cite' muss geändert werden, weil es
überprüft, ob ein Jahr vorhanden ist, und wenn nicht, überhaupt keine
Jahresangabe ausgibt (also das entsprechende bibmacro
'cite:year+labelyear' gar nicht aufruft). Dieses bibmacro
(cite:year+labelyear) habe ich dann so umdefiniert, dass der bibstring
'noyear' verwendet wird, falls kein Jahr angegeben ist. Diesen bibstring
habe ich vorher definiert (damit kann man das leichter ändern, wenn statt
'o.J.' etwas anderes stehen soll).
Außerdem habe ich noch das bibmacro 'year+labelyear' angepasst, das für
die Darstellung im Literaturverzeichnis zuständig ist.
Der Doppelpunkt nach 'o.J.' wird übrigens verschluckt, weil biblatex den
Punkt als Satzendepunkt interpretiert. Schreibt man stattdessen
'o.J\adddot', bleibt der Punkt erhalten (siehe Minimalbeispiel).
Das hat auch mit der Einstellung der Option 'autopunct' (bzw. dem Befehl
\DeclareAutoPunctuation) zu tun.
Übrigens: Der bibstyle 'authoryear-ibid' entspricht dem bibstyle
'authoryear', so dass du einfach style=authoryear-ibid verwenden kannst.
Hier das Minimalbeispiel:
\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{mustermanna,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {Mustertitel1},
publisher = {Musterverlag},
location = {Musterstadt},
year = {2001},
pagetotal = {123},
edition={2}
}
@Book{mustermannb,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {Mustertitel2},
publisher = {Musterverlag},
location = {Musterstadt},
year = {2001},
pagetotal = {234},
edition={3},
}
@Book{mustermann,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {MustertitelohneJahr1},
publisher = {Musterverlag},
location = {Musterstadt},
pagetotal = {345},
edition={4},
}
@Book{mustermanno,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {MustertitelohneJahr2},
publisher = {Musterverlag},
location = {Musterstadt},
year = {o.\,J\adddot},
pagetotal = {345},
edition={4},
}
\end{filecontents}
\usepackage[latin9]{inputenc}
\usepackage{babel,csquotes}
\usepackage[
style=authoryear-ibid,
natbib=true
]{biblatex}
\bibliography{\jobname}
%Nachnamen Verfasser in Kapitälchen:
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\NewBibliographyString{noyear}
\DefineBibliographyStrings{ngerman}{%
noyear = {o\adddot\,J\adddot\space}}
% Jahr und label nicht in Klammern (Zitate)
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}}%\OR\iffieldundef{year}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:year+labelyear}}}
{\usebibmacro{cite:shorthand}}}
\renewbibmacro*{cite:year+labelyear}{%
\iffieldundef{year}
{\printtext{\bibstring{noyear}}}
{\printtext[bibhyperref]{%
\printfield{year}%
\printfield{labelyear}}}}
% o.J. in Bibliographie, wenn kein year angegeben
\renewbibmacro*{year+labelyear}{%
\iffieldundef{year}
{\printtext{\bibstring{noyear}}}
{\printfield{year}%
\printfield{labelyear}}}
%labelyear normal
\DeclareFieldFormat{labelyear}{{\mknumalph{#1}}}
%kein Komma Autor (
\renewcommand*{\nameyeardelim}{\addspace}
%Doppelpunkt nach Jahreszahl
\renewcommand{\postnotedelim}{\addcolon\addspace}
%S. vor Seitenangabe entfernen
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit}
\begin{document}
Dies ist nur ein kleines Testdokument.
\citep[12]{mustermanna}
\citep[34]{mustermannb}
\citep[56]{mustermann}
\citep[67]{mustermanno}
\printbibliography
\end{document}
[quote="Franziska"]ich habe die .bib-Angaben mit filecontents eingefügt. Ein paar Anpassungen aus meiner biblatex.cfg habe ich in die Präambel gesetzt. Ist das richtig so? Habe ich die weiteren Angaben in der biblatex.cfg damit quasi ausgeschaltet?[/quote]
Das ist richtig so. Die biblatex.cfg ist aber nicht ausgeschaltet. Wenn du
sichergehen willst, das keine Angaben von biblatex.cfg verwendet werden,
lege eine leere biblatex.cfg in das Verzeichnis mit dem Testdokument.
Danke für das sehr schöne Minimalbeispiel. Ich habe es entsprechend
deiner Wünsche angepasst (s.u.).
Kurze Erläuterung: Das bibmacro 'cite' muss geändert werden, weil es
überprüft, ob ein Jahr vorhanden ist, und wenn nicht, überhaupt keine
Jahresangabe ausgibt (also das entsprechende bibmacro
'cite:year+labelyear' gar nicht aufruft). Dieses bibmacro
(cite:year+labelyear) habe ich dann so umdefiniert, dass der bibstring
'noyear' verwendet wird, falls kein Jahr angegeben ist. Diesen bibstring
habe ich vorher definiert (damit kann man das leichter ändern, wenn statt
'o.J.' etwas anderes stehen soll).
Außerdem habe ich noch das bibmacro 'year+labelyear' angepasst, das für
die Darstellung im Literaturverzeichnis zuständig ist.
Der Doppelpunkt nach 'o.J.' wird übrigens verschluckt, weil biblatex den
Punkt als Satzendepunkt interpretiert. Schreibt man stattdessen
'o.J\adddot', bleibt der Punkt erhalten (siehe Minimalbeispiel).
Das hat auch mit der Einstellung der Option 'autopunct' (bzw. dem Befehl
\DeclareAutoPunctuation) zu tun.
Übrigens: Der bibstyle 'authoryear-ibid' entspricht dem bibstyle
'authoryear', so dass du einfach style=authoryear-ibid verwenden kannst.
Hier das Minimalbeispiel:
[code]
\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{mustermanna,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {Mustertitel1},
publisher = {Musterverlag},
location = {Musterstadt},
year = {2001},
pagetotal = {123},
edition={2}
}
@Book{mustermannb,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {Mustertitel2},
publisher = {Musterverlag},
location = {Musterstadt},
year = {2001},
pagetotal = {234},
edition={3},
}
@Book{mustermann,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {MustertitelohneJahr1},
publisher = {Musterverlag},
location = {Musterstadt},
pagetotal = {345},
edition={4},
}
@Book{mustermanno,
author = {Mustermann, Michel and Musterfrau,
Martina},
title = {MustertitelohneJahr2},
publisher = {Musterverlag},
location = {Musterstadt},
year = {o.\,J\adddot},
pagetotal = {345},
edition={4},
}
\end{filecontents}
\usepackage[latin9]{inputenc}
\usepackage{babel,csquotes}
\usepackage[
style=authoryear-ibid,
natbib=true
]{biblatex}
\bibliography{\jobname}
%Nachnamen Verfasser in Kapitälchen:
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\NewBibliographyString{noyear}
\DefineBibliographyStrings{ngerman}{%
noyear = {o\adddot\,J\adddot\space}}
% Jahr und label nicht in Klammern (Zitate)
\renewbibmacro*{cite}{%
\global\boolfalse{cbx:loccit}%
\iffieldundef{shorthand}
{\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}}%\OR\iffieldundef{year}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\usebibmacro{cite:year+labelyear}}}
{\usebibmacro{cite:shorthand}}}
\renewbibmacro*{cite:year+labelyear}{%
\iffieldundef{year}
{\printtext{\bibstring{noyear}}}
{\printtext[bibhyperref]{%
\printfield{year}%
\printfield{labelyear}}}}
% o.J. in Bibliographie, wenn kein year angegeben
\renewbibmacro*{year+labelyear}{%
\iffieldundef{year}
{\printtext{\bibstring{noyear}}}
{\printfield{year}%
\printfield{labelyear}}}
%labelyear normal
\DeclareFieldFormat{labelyear}{{\mknumalph{#1}}}
%kein Komma Autor (
\renewcommand*{\nameyeardelim}{\addspace}
%Doppelpunkt nach Jahreszahl
\renewcommand{\postnotedelim}{\addcolon\addspace}
%S. vor Seitenangabe entfernen
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit}
\begin{document}
Dies ist nur ein kleines Testdokument.
\citep[12]{mustermanna}
\citep[34]{mustermannb}
\citep[56]{mustermann}
\citep[67]{mustermanno}
\printbibliography
\end{document}[/code]