PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bibliographie mit parencite in biblatex



sensemann
13-09-2011, 20:36
Servus,

ich versuche gerade, biblatex auf meine Vorlage anzupassen. Das funktioniert schon einigermaßen.

Im Text nutze ich vorrangig \parencite{} und hab ihn mir so zurechtgedreht, dass er eckige Klammern nutzt. So soll auch die Auflistung im Literaturverzeichnis sein, also vergleichbar mit numeric, nur eben mit Name und Jahreszahl in eckigen Klammern - der vollständige Literatureintrag danach.

Da ich allerdings den authoryear-Style nutze, sieht es natürlich nicht so aus. Lässt es sich so drehen, dass die Einträge wie bei numeric aufgelistet werden, nur eben anhand von \parencite?

Und hier das Minimalbeispiel:

\documentclass[final,ngerman]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}

\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
edition = {2},
month = nov
}
\end{filecontents}

\usepackage[style=authoryear-ibid]{biblatex}
\bibliography{literatur}

% using brackets for parencite [Doe et al., 2001]
\renewcommand*{\mkbibparens}[1]{{\ifcitation{\bibleftbracket#1\bibrightbracket}%
{\bibleftparen#1\bibrightparen}}}
\renewcommand*{\bibopenparen}[1]{{\ifcitation{\bibleftbracket#1}{\bibleftparen#1}} }
\renewcommand*{\bibcloseparen}{{\ifcitation{\bibri ghtbracket}{\bibrightparen}}}

\begin{document}

\begin{quotation}
A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties. [...] Software components are binary units of independent production, acquisition, and deployment that interact in form of a functioning system. \parencite{Szyperski2002}
\end{quotation}

\printbibliography[title=Literaturverzeichnis]

\end{document}

sensemann
09-11-2011, 14:35
Hi, hat keiner eine Idee?

nochmal kurz etwas verständlicher: Im Text nutze ich



\textcite{blah1992} --> Blah et al. (1992) ...
\parencite{blah1992 --> [Blah et al., 1992] ...


und in der Bibliographie soll es so auftauchen:


[Blah et al., 1992] Blah, Blah2 und Dings, Titel. usw. usf.
...
[Blop et al., 1995] Blop, Blah, Dingens. Titel. In ...
...

Vielleicht ist es auch schon zu vermurkst und es gibt eine geschicktere Möglichkeit, das mit Biblatex zu erreichen?

mechanicus
09-11-2011, 15:35
Hi,


\documentclass[final,ngerman]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}

\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
edition = {2},
month = nov
}
\end{filecontents}

\usepackage[style=authoryear-ibid,backend=biber,maxcitenames=1,]{biblatex}

\addbibresource{literatur.bib}
\addbibresource{biblatex-examples.bib}

\DefineBibliographyStrings{ngerman}{%
andothers = {{et\,al\adddot}}, % 'et al.' anstatt 'u.a.'
}

\renewcommand*{\nameyeardelim}{\addcomma\space}
\DeclareCiteCommand{\parencite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}

\DeclareCiteCommand{\textparencite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}

\begin{document}

\verb+\textparencite{Szyperski2002}+:\quad\textpar encite{Szyperski2002}

\verb+\textparencite{companion}+:\quad\textparenci te{companion}


\verb+\parencite{Szyperski2002}+:\quad\parencite{S zyperski2002}

\verb+\parencite{companion}+:\quad\parencite{compa nion}

\printbibliography[title=Literaturverzeichnis]

\end{document}


\textcite hier zu nutzen ist ungünstig. Es ist leichter ein eigenes cite-Kommando zu erstellen.

Marco

sensemann
09-11-2011, 16:13
Hi Marco,

danke für die fixe Antwort. Mit parencite und textcite habe ich eigentlich keine Probleme - die machen, was sie sollen. Ist es in der Form denn problematisch?

Mein Problem ist eher, dass das Literaturverzeichnis nicht so aussieht, wie gewünscht. Bei deinem Beispiel erscheint es nicht (wahrscheinlich weil du biber nimmst) - wenn ich biber rausnehme ist es da, sieht allerdings aus wie immer.



Blah 1, Blah2, und Dings (Nov. 2008) ...
...
Blop 2 und Co (Apr. 2009) ...
...


statt



[Blah et al., 2008] Blah, Blah2 und Dings, Titel. usw. usf.
...
[Blop et al., 2009] Blop, Blah, Dingens. Titel. In ...
...

mechanicus
09-11-2011, 17:22
Die Anpassungen müssen dann aber an der bibliography-Umgebung durchgeführt werden.

Marco

mechanicus
09-11-2011, 18:13
\documentclass[final,ngerman]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}

\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
edition = {2},
month = nov
}
\end{filecontents}

\usepackage[style=authoryear-ibid,backend=biber,maxcitenames=1,%
uniquename=minfull]{biblatex}

\addbibresource{literatur.bib}
\addbibresource{biblatex-examples.bib}

\DefineBibliographyStrings{ngerman}{%
andothers = {{et\,al\adddot}}, % 'et al.' anstatt 'u.a.'
}

\renewcommand*{\nameyeardelim}{\addcomma\space}
\DeclareCiteCommand{\parencite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}

\DeclareCiteCommand{\textparencite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}


\defbibenvironment{bibliography}
{\list{}{%
\leftmargin\dimexpr\bibhang+10em\relax
\itemindent-\leftmargin
\itemsep\bibitemsep
\parsep\bibparsep}}
{\endlist}
{\item}

\newcounter{tempcount}
\AtEveryBibitem{%
\makebox[10em][l]{%
\setcounter{tempcount}{\value{maxnames}}%
\setcounter{maxnames}{1}%
\printtext[brackets]{%
\printnames{labelname}%
\setunit{\addspace}%
\printtext{%
\printfield{labelyear}%
\printfield{extrayear}}%
}%
\setcounter{maxnames}{\value{tempcount}}%
}%
}

\begin{document}

\verb+\textparencite{Szyperski2002}+:\quad\textpar encite{Szyperski2002}

\verb+\textparencite{companion}+:\quad\textparenci te{companion}


\verb+\parencite{Szyperski2002}+:\quad\parencite{S zyperski2002}

\verb+\parencite{companion}+:\quad\parencite{compa nion}

\printbibliography[title=Literaturverzeichnis]

\end{document}


Sollte passen

Marco

sensemann
14-11-2011, 15:46
Super, wieder einen Schritt weiter, allerdings noch nicht ganz fertig.

Ich habe deine Lösung noch etwas an meine Bedürfnisse angepasst (bibhang, bibitemsep usw.), allerdings stört noch eins: Die box, die du für das label aufmachst, hat immer die gleiche Breite. Bei mir stehen da ein bis zwei Namen drin - die Breite kann also stark variieren. Kriegt man das noch hin, dass das Label "natürlich" vor dem Eintrag steht - letzterer sich also immer direkt anschließt? Dann könnte man sicher nicht mit einer festen Breite arbeiten :confused:

Hier der IST-Stand:


\documentclass[final,ngerman]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}

\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
edition = {2},
month = nov
}
\end{filecontents}

\usepackage[style=authoryear-ibid,maxcitenames=2,%
firstinits=true,block=space,bibstyle=authortitle]{biblatex}

\addbibresource{literatur.bib}
\addbibresource{biblatex-examples.bib}

\DefineBibliographyStrings{ngerman}{%
andothers = {{et\,al\adddot}}, % 'et al.' anstatt 'u.a.'
}

\renewcommand*{\nameyeardelim}{\addcomma\space}
\renewcommand{\labelnamepunct}{\addcolon\addspace} % doppelpunkt zw. name und titel
\setlength\bibitemsep{4pt}

\DeclareCiteCommand{\parencite}[\mkbibbrackets]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}

\defbibenvironment{bibliography}
{\list{}{%
\leftmargin\dimexpr\bibhang+3em\relax
\itemindent-\leftmargin
\itemsep\bibitemsep
\parsep\bibparsep}}
{\endlist}
{\item}

\newcounter{tempcount}
\AtEveryBibitem{%
\makebox[10em][l]{%
\setcounter{tempcount}{\value{maxnames}}%
\setcounter{maxnames}{2}%
\printtext[brackets]{%
\printnames{labelname}%
% \setunit{\addspace}%
\setunit{\nameyeardelim}
\printtext{%
\printfield{labelyear}%
\printfield{extrayear}}%
}%
\setcounter{maxnames}{\value{tempcount}}%
}%
}

\begin{document}

\verb+\cite{companion}+:\quad\cite{companion}

\verb+\textcite{Szyperski2002}+:\quad\textcite{Szy perski2002}

\verb+\parencite{companion}+:\quad\parencite{compa nion}

\verb+\parencite{Szyperski2002}+:\quad\parencite{S zyperski2002}


\printbibliography[title=Literaturverzeichnis]

\end{document}