BibLatex: authoryear anpassen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

Markdown is OFF

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: BibLatex: authoryear anpassen

von baumbaron » Mo 31. Aug 2009, 13:24

Vielen Dank,

ich habe jetzt wie vorgeschlagen die Klammersetzung im Literaturverzeichnis via

Code: Alles auswählen

\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

Code: Alles auswählen

<***.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

von domwass » Mo 31. Aug 2009, 13:08

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.-

von baumbaron » Mo 31. Aug 2009, 12:19

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

von domwass » Mo 31. Aug 2009, 11:38

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.-

von baumbaron » Mo 31. Aug 2009, 10:52

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

Code: Alles auswählen

\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

von domwass » Mo 31. Aug 2009, 10:05

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

Code: Alles auswählen

\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:

Code: Alles auswählen

\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:

Code: Alles auswählen

\newbibmacro*{year+labelyear}{%
  \iffieldundef{year}
    {}
    {\printtext[parens]{%
       \printfield{year}%
       \printfield{labelyear}}}}
Der Befehl

Code: Alles auswählen

\printtext[parens]
sorgt dafür, dass year und labelyear ('a', 'b' etc.) in Klammern gesetzt werden.

Gruß,
Dominik.-

von baumbaron » Mo 31. Aug 2009, 09:45

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

Code: Alles auswählen

\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

Code: Alles auswählen

\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

Code: Alles auswählen

\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

von domwass » Mo 31. Aug 2009, 09:04

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:

Code: Alles auswählen

\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.-

BibLatex: authoryear anpassen

von baumbaron » Mo 31. Aug 2009, 06:11

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

Nach oben