Seite 1 von 1

BibLatex: authoryear anpassen

Verfasst: Mo 31. Aug 2009, 06:11
von baumbaron
Liebe Bilatex-Kundige,

Oftmals befinden sich in einem Literaturverzeichnis mehrere Einträge eines Autors zum gleichen Jahr.
Ist es moeglich durch einfache Anpassung der Standard-Stildateien die Jahreszitate derselben automatisch durchzunummerieren ?

Also z.B.
@BOOK{Ammer79Analyse,
title = {Grammatik und funktionale Analyse},
year = {1979},
author = {Ammer, Karl}
}
@BOOK{Ammer79Funktional,
title = {Funktionalgrammatik},
year = {1979},
author = {Ammer, Karl}
}
in Jahreszitaten als "1979a" bzw. "1979b" setzen zu lassen?


Für Antworten dankt

Martin

Verfasst: Mo 31. Aug 2009, 09:04
von domwass
Das ist eigentlich das Standardverhalten. Eventuell musst du einen zusätzlichen LaTeX-Lauf machen, damit das 'a' und 'b' auch wirklich angehängt werden. Mit folgendem Beispiel funktioniert es jedenfalls:
\documentclass[ngerman]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{Ammer79Analyse, 
title = {Grammatik und funktionale Analyse}, 
year = {1979}, 
author = {Ammer, Karl} 
} 
@BOOK{Ammer79Funktional, 
title = {Funktionalgrammatik}, 
year = {1979}, 
author = {Ammer, Karl} 
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}

\usepackage[
  style=authoryear
]{biblatex}
\bibliography{\jobname}

\begin{document}
\cite{Ammer79Funktional}

\cite{Ammer79Analyse}

\printbibliography
\end{document}
Gruß,
Dominik.-

Verfasst: Mo 31. Aug 2009, 09:45
von baumbaron
Danke fuer die Antwort - du hast natuerlich recht und dein Beispiel mit dem Standardstil authoryear laeuft wie gewuenscht.

Ich selbst hatte mir allerdings aus dem authoryear schon einen eigenen Stil zusammengebaut (vornehmlich um die Jahreszahlklammern loszuwerden) und in der entsprechenden .cbx Datei ganz naiv u.a. die Zeile
\DeclareFieldFormat[book]{year}{#1}
eingefuegt, womit die Klammerformatierung glueckte.

Allerdings verschwindet die Zusatzmarkierung (1979a) dann, welche selbst scheinbar als Parameter fuer printfield[year] uebergeben wird da
\DeclareFieldFormat[book]{year}{#1 #2}
fuer derartige Eintraege das gewuenschte Resultat ergibt, allerdings fuer alle uebrigen Eintraege einen Fehler verursacht (denn #2 gibt es natuerlich nicht).

Leider habe ich in der biblatex doku (die sonst ganz wunderbar ist) keinen Eintrag fuer den Bezeichner der Zusatzmarkierung gefunden, welche man mit Code alla
\iffieldundef{zusatzmarkierung}{}{\printfield{zusatzmarkierung}}
kontrolliert explizit einfuegen koennte.
Ueberhaupt: sollte nicht \printfield eigentlich ein Befehl sein, der nur genau ein Argument akzeptierte?


Fuer Ideen dankbar gruesst

Martin

Verfasst: Mo 31. Aug 2009, 10:05
von domwass
baumbaron hat geschrieben:Danke fuer die Antwort - du hast natuerlich recht und dein Beispiel mit dem Standardstil authoryear laeuft wie gewuenscht.
Deshalb ist es sinnvoll, ein Minimalbeispiel mitzuliefern.
Ich selbst hatte mir allerdings aus dem authoryear schon einen eigenen Stil zusammengebaut (vornehmlich um die Jahreszahlklammern loszuwerden) und in der entsprechenden .cbx Datei ganz naiv u.a. die Zeile
\DeclareFieldFormat[book]{year}{#1}
eingefuegt, womit die Klammerformatierung glueckte.
Welche Klammern meinst du? Bei den Zitaten im Text steht keine Klammer, und bei den Literaturangaben in der Bibliographie fällt die Klammer auch mit deinem Code nicht weg. Auch hier wäre ein Minimalbeispiel nötig, um zu sehen, was du eigentlich machst.

Vielleicht suchst du ja so etwas:
\renewbibmacro*{year+labelyear}{%
  \iffieldundef{year}
    {}
    {\printfield{year}%
     \printfield{labelyear}}}
Damit werden die Klammern um die Jahreszahl in der Bibliographie nicht ausgegeben. Die Originaldefinition, die in authoryear.bbx steht, sieht übrigens so aus:
\newbibmacro*{year+labelyear}{%
  \iffieldundef{year}
    {}
    {\printtext[parens]{%
       \printfield{year}%
       \printfield{labelyear}}}}
Der Befehl
\printtext[parens]
sorgt dafür, dass year und labelyear ('a', 'b' etc.) in Klammern gesetzt werden.

Gruß,
Dominik.-

Verfasst: Mo 31. Aug 2009, 10:52
von baumbaron
domwass hat geschrieben:Deshalb ist es sinnvoll, ein Minimalbeispiel mitzuliefern.
Gut, seufzend gebe ich Dir dessen Sinnhaftigkeit zu :)

Also, heruntergekocht auf das Wesentliche versuche ich folgendes Verhalten zu erzeugen:

Zitate im Literaturverzeichnis: Autor (Jahr) Title ....
Zitate im Text: Autor Jahr

Dazu die bisherigen bbx/cbx-Versuche
\begin{filecontents}{test.bib}
@BOOK{Ammer1,
title = {Grammatik und funktionale Analyse},
year = {1979},
author = {Ammer, Karl}
}
@BOOK{Ammer2,
title = {Funktionalgrammatik},
year = {1979},
author = {Ammer, Karl}
}
\end{filecontents}
\begin{filecontents}{test.bbx}
\ProvidesFile{test.bbx}
\RequireBibliographyStyle{standard}
\DeclareBibliographyDriver{book}{
  \usebibmacro{author}
  \printfield{year}%   
  \finentry
}
\DeclareFieldFormat[book]{year}{\mkbibparens{#1}} 
\endinput
\end{filecontents}

\begin{filecontents}{test.cbx}
\ProvidesFile{test.cbx}
\RequireCitationStyle{authoryear}
\renewbibmacro*{cite:year+labelyear}{
  \iffieldundef{year}
    {}
    {\printfield{year}%
     \printfield{labelyear}}
}
\endinput
\end{filecontents}

\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[style=test]{biblatex}
\bibliography{test.bib}

\begin{document}
\cite{Ammer1}
\cite{Ammer2}

\printbibliography

\end{document}

Wie befreie ich jetzt das Jahresfeld in Textzitaten aus der selbstverschuldeteten Umklammerung ?

Dank fuer eine Antwort,

M

Verfasst: Mo 31. Aug 2009, 11:38
von domwass
Gut, danke für das Minimalbeispiel. Bevor ich da jetzt in die Einzelheiten gehe, eine Frage: Warum baust du in deinem bibliography style (bbx) auf standard auf und nicht auf authoryear? Sprich: welches Aussehen willst du in der Bibliographie erreichen?

Gruß,
Dominik.-

Verfasst: Mo 31. Aug 2009, 12:19
von baumbaron
domwass hat geschrieben:Bevor ich da jetzt in die Einzelheiten gehe, eine Frage: Warum baust du in deinem bibliography style (bbx) auf standard auf und nicht auf authoryear?
Das hatte keinen tieferen Grund als das Minimalbeispiel hinzubiegen. Meine eigentliche bbx laedt keine der Standardstile. (Das sollte fuer das beobachtbare Verhalten egal sein)
Sprich: welches Aussehen willst du in der Bibliographie erreichen?
Wie oben geschrieben:

Literaturverzeichnis (bbx): Autor (Jahr), Titel. Ort: Verlag
Zitate im Text (cbx): Autor Jahr, S.234


In der bbx lasse ich das Jahr explizit in Klammern schreiben, haette dies aber gerne in der cbx wieder unwirksam gemacht.

Gruss,
Martin

Verfasst: Mo 31. Aug 2009, 13:08
von domwass
Dann schau dir an, wie das in den authoryear-Stilen gelöst ist. In der bbx wird das Makro 'year+labelyear' verwendet um die Jahreszahl in Klammern hinter dem Autoren-/Herausgebernamen aufzuführen. Außerdem werden die bibmacros, die ansonsten das Jahr ausgeben (z.B. 'location+year') so abgeändert, dass sie eben kein Jahr ausgeben. Daneben wird noch die Option 'labelyear' auf 'true' gesetzt.

In der cbx-Datei wird das bibmacro 'cite:year+labelyear' definiert, dass eben nicht in Klammern ausgegeben wird.

Vielleicht hilft dir das, damit du deine Dateien entsprechend anpassen kannst.

Gruß,
Dominik.-

Verfasst: Mo 31. Aug 2009, 13:24
von baumbaron
Vielen Dank,

ich habe jetzt wie vorgeschlagen die Klammersetzung im Literaturverzeichnis via
\DeclareBibliographyDriver{book}
...
  \printtext[parens]{\printfield{year}\printfield{labelyear}}
...
und als Zitationstil authoryear verwandt - so funktioniert es reibungslos.

Mir war nur die ganze Zeit unklar, dass Veraenderungen in der .bbx via DeclareFieldFormat
<***.bbx>
...
\DeclareFieldFormat[book]{year}{\mkbibparens{#1}} 
...
auch auf die Ausgabe der Textzitate (d.h. aud die .cbx) Einfluss haben.

Aber so geht es nun ganz wunderbar.

Vielen Dank!

Eine schoene Woche,
Martin