Seite 1 von 1

Eigener Bibliographietreiber cite:driver & iffieldundef

Verfasst: Sa 5. Apr 2014, 00:26
von Gast
Hallo,

ich schreibe gerade einen eigenen Bibliographietreiber für rechtliche Dokumente. Leider komme ich schon früh nicht weiter.

Wenn ich das richtig verstanden habe, wird die Ausgabe der Literaturangabe im Text (also durch einen cite Befehl) durch \DeclareBibliographyDriver{cite:driver-name} definiert, richtig?
Mein Problem ist, dass trotz dieser Definition meine Literaturangabe im Text mit title year ausgegeben wird, was hier leider falsch ist.

Und im Literaturverzeichnis funktioniert mein Macro für die Ausgabe des Feldes date nicht. Egal, was drin steht, es wird nichts (bzw hier "abc" für Testzwecke) ausgegeben.

MB:
\documentclass[fontsize=12pt,paper=a4,titlepage,twoside=false,headings=normal]{scrartcl}

%%%%% BEGINN: Spracheinrichtung %%%%%
 % Deutsche Sprachunterstützung (Worttrennung, etc.)
\usepackage[ngerman]{babel}
 % Unicode Eingabe
\usepackage[utf8]{inputenc}
 % Sonderzeichen verfügbar machen
\usepackage[T1]{fontenc}
 % Eurozeichen verfügbar machen
\usepackage{eurosym}
\DeclareUnicodeCharacter{20AC}{\euro}
%%%%% ENDE: Spracheinrichtung %%%%%



%%%%% BEGINN: Seiteneinrichtung %%%%%
%% Schriftarten
 % Überschriften auf Times stellen
\addtokomafont{sectioning}{\rmfamily}
 % Schriftartfamilie auf Times stellen
\usepackage{txfonts}

%% Absatzformatierung
 % Zeilenabstand: eineinhalb
\usepackage{setspace}
\onehalfspacing
 % Neue Absätze ohne Einrückung aber mit Zeilenabstand
\parindent 0pt
\parskip 10pt
 % Hurenkinder und Schusterjungen vermeiden
\clubpenalty10000
%%%%% ENDE: Seiteneinrichtung %%%%%



%%%%% BEGINN: Bibliographieeinrichtung %%%%%
%% Biblatex zur Literaturverwaltung
\usepackage[style=authoryear,
%  			citestyle=authoryear,
%  			bibstyle=authoryear,
 			language=ngerman,
 			sorting=nyt,
 			date=short,
 			% natbib Unterstützung
 			natbib=true,
 			% Im Literaturverzeichnis Seiten der Quellenangaben anzeigen 
 			backref=false,
 			hyperref=false,
 			% Vor- und Mittelname abkürzen
 			firstinits=false,
  			backend=biber]{biblatex}
 % Bibliographiedatei
\begin{filecontents*}{Bibliographie.bib}
@legal{ARES601,
  journaltitle = {A/RES},
  type = {resolution},
  number = {60/1},
  date = {2005-09-16},
  title = {2005 World Summit Outcome},
}
\end{filecontents*}
\bibliography{Bibliographie.bib}
\usepackage{csquotes}
%%%%% ENDE: Bibliographieeinrichtung %%%%%


\DeclareBibliographyDriver{legal}{%
	\iffieldequalstr{type}{resolution}
		{\usebibmacro{resolution}}%
		{\usebibmacro{legal}}%
	\addspace%
	\usebibmacro{legaldate}
	\addcolon\addspace%
	\printfield{title}%
	\adddot\addspace%
	\printfield{subtitle}%
	\finentry%
}
\newbibmacro*{legaldate}{%
	\iffieldundef{date}%
		{abc}%
		{\mkbibparens{%
			\printtext{v.}%
			\addspace%
			\printdate%
			}%
		}%
}
\newbibmacro*{resolution}{%
	\printfield{journaltitle}%
	\printtext{/}%
	\printfield{number}%
}
\newbibmacro*{legal}{%
	\printfield{journaltitle}%
	\addspace%
	\printfield{number}%
}

\DeclareBibliographyDriver{cite:legal}{%
	\iffieldequalstr{type}{resolution}
		{\usebibmacro{cite:resolution}}%
		{\usebibmacro{cite:legal}}%
}%

\newbibmacro*{cite:resolution}{%
	\printfield{journaltitle}%
	\printtext{/}%
	\printfield{number}%
}

\newbibmacro*{cite:legal}{%
	\printfield{journaltitle}%
	\addspace%
	\printfield{number}%
}


%%%%% ENDE: Präambel %%%%%
%%%%% BEGINN: Dokument %%%%%

\begin{document}

Lorem Ipsum \autocite[Nr. 138]{ARES601} Ipsum Lorem

\newpage
\printbibliography

\end{document}
Ausgabe:
Lorem Ipsum (2005 World Summit Outcome 2005, Nr. 138) Ipsum Lorem
-----
Literatur
A/RES/60/1 abc: 2005 World Summit Outcome.
Richtig wäre:
Lorem Ipsum (A/RES/60/1: Nr. 138) Ipsum Lorem
-----
Literatur
A/RES/60/1 (v. 16.09.2005): 2005 World Summit Outcome.
Wo liegt mein Fehler?

Verfasst: Sa 5. Apr 2014, 11:32
von u_fischer
Wenn ich das richtig verstanden habe, wird die Ausgabe der Literaturangabe im Text (also durch einen cite Befehl) durch \DeclareBibliographyDriver{cite:driver-name} definiert, richtig?
Nein, das deklariert die Formatierung in der "Bibliography". Du brauchst \DeclareCiteCommand.

Verfasst: Sa 5. Apr 2014, 13:59
von Gast
Hallo,

aber mit \DeclareCiteCommand erstelle ich doch neue Zitierbefehle, wie beispielsweise \citeJournalAndArticleTitle?
Ich benötige aber keinen neuen bzw speziellen Zitierbefehl, sondern lediglich eine Korrekte Ausgabe mit den vorgefertigen \autocite \parencite \footcite befehlen.

Ich möchte, nachdem die Formatierung im Literaturverzeichnis einigermaßen passt – abgesehen, von der \iffieldundef{date} Problematik –, auch die Formatierung der Literaturangabe im Fließtext anpassen. Wie geht das?

Wenn das ebenfalls über \DeclareCiteCommand funktioniert brauche ich bitte ein kurzes Beispiel oder einen Link.

Gruß

Verfasst: Sa 5. Apr 2014, 15:07
von u_fischer
Wenn du einen existierenden \cite-Befehl ändern willst musst du dessen Definition suchen, (irgendwo in einem der cbx-Dateien oder in biblatex.def, und nachschauen, wie er definiert wird. Dann kannst du die Definition entweder mit \DeclareCiteCommand einfach überschreiben, oder du definierst einen der verwendeten bibmacros um.

Verfasst: Sa 5. Apr 2014, 15:52
von Gast
Hallo,

danke. Es wird jetzt richtig ausgegeben.
\renewbibmacro*{cite}{%
  \iffieldequalstr{entrytype}{legal}
  {\usebibmacro{cite:legal}}
  {\iffieldundef{shorthand}
	    {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
	       {\usebibmacro{cite:label}%
	        \setunit{\addspace}}
	       {\printnames{labelname}%
	        \setunit{\nameyeardelim}}%
	     \usebibmacro{cite:labelyear+extrayear}}
	    {\usebibmacro{cite:shorthand}}
    }
}


\newbibmacro*{cite:legal}
	{\iffieldequalstr{type}{resolution}
		{\usebibmacro{cite:resolution}}
		{\usebibmacro{cite:slegal}}
	}

\newbibmacro*{cite:resolution}{%
	\printfield{journaltitle}%
	\printtext{/}%
	\printfield{number}%
}

\newbibmacro*{cite:slegal}{%
	\printfield{journaltitle}%
	\addspace%
	\printfield{number}%
}
Allerdings sieht mir das eher nach quick and dirty anstatt einer anständigen Lösung aus.

Ist der Code so annehmbar? Kann man die den labels zugeordneten Eingabefelder irgendwie verändern?

Und die andere frage ist immer noch offen: Wieso wird das Datum aus dem date Feld nicht ausgegeben?

Gruß