Detailanpassungen am Literaturverzeichnis mit biblatex

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.
stevenbu
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 26. Mai 2009, 11:41

Detailanpassungen am Literaturverzeichnis mit biblatex

Beitrag von stevenbu »

Hallo zusammen

Die standardmässige Einstellung von biblatex für den author-year stil entspricht nicht dem was bei meiner Arbeit verlangt ist. (Ist aber der, der dem Soll am nächsten kommt.) Durch Internetrecherche, biblatex.def und biblatex guide studium bin ich schon auf folgendes Resultat gekommen:

Code: Alles auswählen

\usepackage[sorting=nyt,style=authoryear,bibstyle=authoryear,citestyle=authoryear,natbib=true,hyperref=auto]{biblatex}
\bibliography{Literaturverzeichnis}
\usepackage[USenglish]{babel}
\usepackage[babel]{csquotes}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{author/editor}%
  \newunit
  \usebibmacro{title}%
  \newunit
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \printfield{volume}%
  \iffieldundef{number}{}{\printtext[parens]{\printfield{number}}}%  
  \setunit*{\addcolon}%
  \printfield{pages}%
  \usebibmacro{finentry}}
\DeclareFieldFormat{pages}{#1}
Das ergibt mir folgenden zum Beispiel den folgenden Output:

Wiegner, T. N. and S. P. Seitzinger (2004). Seasonal bioavailability of dissolved organic carbon and nitrogen from pristine and polluted freshwater wetlands. Limnology and Oceanography 49:1703-1712.

Nun ist es aber so, dass folgendes verlangt wird:

Wiegner, T. N. and S. P. Seitzinger. 2004. Seasonal bioavailability of dissolved organic carbon and nitrogen from pristine and polluted freshwater wetlands. Limnology and Oceanography 49:1703-1712.

also sollen die Klammern bei der Jahreszahl raus und dafür ein Punkt nach den Autoren rein. Zudem sollte die Ausgabenummer des Journals fett geschrieben sein.
Da die Jahreszahl ja zusammen mit dem Autoren (\usebibmacro{author/editor}) aufgerufen wird, kann ich sie nicht separat steuern. Weiss da jemand Hilfe? Und wie lautet der Befehl in der "biblatex-Umgebung" für fette Schrift?

Besten Dank
stevenbu

Benutzeravatar
domwass
TeX-Entwickler
TeX-Entwickler
Beiträge: 617
Registriert: Di 26. Aug 2008, 12:44
Kontaktdaten:

Re: Detailanpassungen am Literaturverzeichnis mit biblatex

Beitrag von domwass »

stevenbu hat geschrieben:Da die Jahreszahl ja zusammen mit dem Autoren (\usebibmacro{author/editor}) aufgerufen wird, kann ich sie nicht separat steuern.

Doch, nur nicht im BibliographyDriver. Aber du kannst ja das bibmacro umdefinieren (mit dem Befehl \renewbibmacro).
Und wie lautet der Befehl in der "biblatex-Umgebung" für fette Schrift?
\textbf sollte auch mit biblatex funktionieren.

Bau am besten ein vollständiges Minimalbeispiel, dann kann man dir einfacher helfen. Und die bib-Dateien kann man mit Hilfe der filecontents-Umgebung auch in das Minimalbeispiel integrieren.

Gruß,
Dominik.-

stevenbu
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 26. Mai 2009, 11:41

Beitrag von stevenbu »

Hallo domwass

Hier das Minimalbeispiel - wobei das nicht läuft: ich kriege da immer die Meldung "empty bibliography" (übrigens auch wenn ich das Beispiel von http://biblatex.dominik-wassenhoven.de/ ... ml?de&mini 1:1 kopiere).

Code: Alles auswählen

\documentclass[11pt,twoside]{scrreprt}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{CoxReaeration,
  author = {Cox, B.A.},
  title = {A review of dissolve oxygen modelling techniques for lowland rivers},
  journal = {The Science of the Total Environment},
  year = {2003},
  volume = {314},
  pages = {303-334},
  owner = {stef},
  timestamp = {2009.04.01}
}

@ARTICLE{DevolAmazon,
  author = {Allan H. Devol and Bruce R. Forsberg and Jeffrey E. Richey and Tania
	P. Pementel},
  title = {Seasonal variation in chemical distributions in the Amazon (Solimões)
	River: A multiyear time series},
  journal = {Global Biogeochemical Cycle},
  year = {1995},
  volume = {9},
  pages = {307-328},
  number = {3},
  month = {9},
  owner = {stef},
  timestamp = {2009.03.27}
}
\end{filecontents}

\usepackage[latin9]{inputenc}
\usepackage[USenglish]{babel}
\usepackage[babel]{csquotes}
\usepackage[sorting=nyt,style=authoryear,bibstyle=authoryear,citestyle=authoryear,natbib=true,hyperref=auto]{biblatex}
\bibliography{\jobname}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{author/editor}%
  \newunit
  \usebibmacro{title}%
  \newunit
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \printfield{volume}%
  \iffieldundef{number}{}{\printtext[parens]{\printfield{number}}}%  
  \setunit*{\addcolon}%
  \printfield{pages}%
  \usebibmacro{finentry}}
\DeclareFieldFormat{pages}{#1}

\begin{document}
Dies ist nur ein kleines Testdokument.
\cite{*}
\printbibliography
\end{document}

\textbf funktioniert nicht. Sowohl

Code: Alles auswählen

\printfield{\textbf{volume}}%
als auch

Code: Alles auswählen

\printtext[textbf]{\printfield{volume}}%
funktionieren nicht :cry: .

Doch, nur nicht im BibliographyDriver. Aber du kannst ja das bibmacro umdefinieren (mit dem Befehl \renewbibmacro).
Das habe ich mir auch gedacht und mir das macro in biblatex.def mal angesehen.

Code: Alles auswählen

\newbibmacro*{author/editor}{%
  \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}
    {\usebibmacro{author}}
    {\usebibmacro{editor}}}
Dort kann ich aber keine Einbindung des Jahres feststellen. Auch die dahinter hängenden Macros

Code: Alles auswählen

\newbibmacro*{author}{%
  \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}
    {\printnames{author}%
     \iffieldundef{authortype}
  {}
  		{\addcomma\space
	\usebibmacro{authorstrg}}}
{}}
und

Code: Alles auswählen

\newbibmacro*{editor}{%
  \ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}}
    {\printnames{editor}%
     \addcomma\space
     \usebibmacro{editorstrg}%
     \clearname{editor}}
    {}}
zeigen keine Einbindung der Jahreszahl. Leider verstehe ich zu wenig vom Programmieren in LaTeX um mir ein neues Macro zu schreiben (man siehts daran, dass ich keine Ahnung habe welches Makro überhaupt verwendet wird um die Jahreszahl anzuzeigen :?: ). Die Biblatexdokumentation enthält für mich zu wenig (die falschen?) Infos damit ich damit von 0 her ein Makro bauen könnte (obwohl ich vom Umfang der Dokumentation beeindruckt bin). Wenn ich irgendwo eine Liste aller Makros hätte die in biblatex verwendet werden und diese auch analysieren könnte, dann wäre ich glaube ich in der Lage das Problem selber zu lösen.

Besten Dank und Viele Grüsse
stevenbu

Benutzeravatar
domwass
TeX-Entwickler
TeX-Entwickler
Beiträge: 617
Registriert: Di 26. Aug 2008, 12:44
Kontaktdaten:

Beitrag von domwass »

stevenbu hat geschrieben:Hier das Minimalbeispiel - wobei das nicht läuft: ich kriege da immer die Meldung "empty bibliography"
\cite{*} gibt es so nicht (BibTeX sucht dann nach einem Eintrag mit dem bibtexkey '*'). Was du suchst, ist \nocite{*}.
(übrigens auch wenn ich das Beispiel von http://biblatex.dominik-wassenhoven.de/ ... ml?de&mini 1:1 kopiere).
Sicher? Hier läuft's.

Folgendes funktioniert:

Code: Alles auswählen

\documentclass[11pt,twoside]{scrreprt} 

\usepackage{filecontents} 
\begin{filecontents}{\jobname.bib} 
@ARTICLE{CoxReaeration, 
  author = {Cox, B.A.}, 
  title = {A review of dissolve oxygen modelling techniques for lowland rivers}, 
  journal = {The Science of the Total Environment}, 
  year = {2003}, 
  volume = {314}, 
  pages = {303-334}, 
  owner = {stef}, 
  timestamp = {2009.04.01} 
} 

@ARTICLE{DevolAmazon, 
  author = {Allan H. Devol and Bruce R. Forsberg and Jeffrey E. Richey and Tania 
   P. Pementel}, 
  title = {Seasonal variation in chemical distributions in the Amazon (Solimões) 
   River: A multiyear time series}, 
  journal = {Global Biogeochemical Cycle}, 
  year = {1995}, 
  volume = {9}, 
  pages = {307-328}, 
  number = {3}, 
  month = {9}, 
  owner = {stef}, 
  timestamp = {2009.03.27} 
} 
\end{filecontents} 

\usepackage[latin9]{inputenc} 
\usepackage[USenglish]{babel} 
\usepackage[babel]{csquotes} 
\usepackage[
  sorting=nyt,
  style=authoryear,
  natbib=true,
  hyperref=auto
]{biblatex} 
\bibliography{\jobname} 

\DeclareBibliographyDriver{article}{% 
  \usebibmacro{author/editor}% 
  \newunit 
  \usebibmacro{title}% 
  \newunit 
  \usebibmacro{journal}% 
  \setunit*{\addspace}% 
  \printtext{\textbf{\printfield{volume}}}% 
  \iffieldundef{number}{}{\printtext[parens]{\printfield{number}}}%   
  \setunit*{\addcolon}% 
  \printfield{pages}% 
  \usebibmacro{finentry}} 
  
\DeclareFieldFormat{pages}{#1} 

\makeatletter
\renewbibmacro*{author}{%
  \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}
    {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND
                 \NOT\iffirstonpage}
       {\bibnamedash}
       {\savefield{fullhash}{\bbx@lasthash}%
        \printnames{author}%
	\iffieldundef{authortype}
	  {\setunit{\adddot\space}}% <-- statt \setunit{\addspace}
	  {\setunit{\addcomma\space}}}%
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
      	\setunit{\addspace}}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\adddot\space}}% <-- statt \setunit*{\addspace}
  \usebibmacro{year+labelyear}}
\makeatother

\renewbibmacro*{year+labelyear}{%
  \iffieldundef{year}
    {}
    {\printfield{year}%
     \printfield{labelyear}}}
         
\begin{document} 
Dies ist nur ein kleines Testdokument. 
\nocite{*} 
\printbibliography[maxnames=99]% damit alle Namen angezeigt werden
\end{document}
\textbf funktioniert nicht. Sowohl

Code: Alles auswählen

\printfield{\textbf{volume}}%
als auch

Code: Alles auswählen

\printtext[textbf]{\printfield{volume}}%
funktionieren nicht :cry: .
Aber folgendes funktioniert:

Code: Alles auswählen

\printtext{\textbf{\printfield{volume}}}
Das habe ich mir auch gedacht und mir das macro in biblatex.def mal angesehen.
Die bibmacros author und editor werden in authoryear.bbx umdefiniert. Von dort ausgehend habe ich dann die Änderungen eingebaut (siehe Minimalbeispiel oben).

Übrigens: Wenn du style=authoryear angibst, wird automatisch bibstyle und citestyle eingestellt. Die beiden letzten Optionen sind nur dazu gedacht, wenn man in den bibliographischen Angaben im Text und im Literaturverzeichnis jeweils unterschiedliche Stile verwendet (was im Normalfall nicht vorkommt).

Gruß,
Dominik.-

stevenbu
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 26. Mai 2009, 11:41

Beitrag von stevenbu »

Ah, ok - vielen dank. Ich weiss jetzt wieso es nicht lief... ich lies bibtex nicht laufen (ich dachte, das würde durch "filecontents" erledigt).

nochmals Vielen Dank das hat mir sehr geholfen.
stefan

Benutzeravatar
domwass
TeX-Entwickler
TeX-Entwickler
Beiträge: 617
Registriert: Di 26. Aug 2008, 12:44
Kontaktdaten:

Beitrag von domwass »

Falls die Frage damit für dich beantwortet ist, aktualisiere doch bitte den Status.

Gruß,
Dominik.-

Antworten