BibLatex: DeclareFieldFormat bzw. DeclareNameFormat

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:

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: DeclareFieldFormat bzw. DeclareNameFormat

von domwass » Fr 4. Feb 2011, 15:42

PL hat geschrieben:Wie wäre es hiermit: […]
1. Ich habe den "authorstrg"-Makro so erweitert, dass die "bibliography strings" optional sind. Du kannst als "authortype" also entweder einen Schlüssel angeben (Bsp. interview1) oder normalen Text (Bsp. interview2).
Sehr elegante Lösung!

Gruß,
Dominik.-

von domwass » Fr 4. Feb 2011, 15:42

Ruffy2k hat geschrieben:Ebenso werde ich mir Biber mal ansehen, aber ich glaube mit BibLatex kann man auch Custom-Typen definieren?!
Nein, wie ich schon geschrieben habe, kann man mit biblatex und BibTeX nur
auf @customa etc. zurückgreifen, aber eben keine neuen Typen wie
@interview einführen. Das geht nur mit biblatex und biber.

Gruß,
Dominik.-

von rocketscience » Fr 4. Feb 2011, 15:25

Hallo PL,

ich habe den Teil
\renewbibmacro*{authorstrg}{% 
  \iffieldundef{authortype} 
    {} 
    {\printtext{% 
       \ifbibxstring{\thefield{authortype}} 
    {\ifboolexpr{ 
       test {\ifnumgreater{\value{author}}{1}} 
       or 
       test {\ifandothers{author}} 
     } 
       {\bibstring{\thefield{authortype}s}} 
       {\bibstring{\thefield{authortype}}}} 
    {\thefield{authortype}}}}}
ausprobiert und es funktioniert tadellos. Ich werde mir bei Gelegenheit die Erweiterung mal anschauen, um das zu verstehen, was du erweitert hast.

Ebenso werde ich mir Biber mal ansehen, aber ich glaube mit BibLatex kann man auch Custom-Typen definieren?!

Vielen Dank und mfG

von PL » Fr 4. Feb 2011, 14:06

Wie wäre es hiermit:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=verbose]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@customa{interview1,
  author     = {Schmidt, Heinz},
  title      = {Titel des Interviews},
  authortype = {director},
  location   = {Buxtehude},
  date       = {2010-05-21},
}
@customa{interview2,
  author     = {Doe, John},
  title      = {Titel des Interviews},
  authortype = {Sales Manager},
  location   = {Buxtehude},
  date       = {2010-05-22},
}
\end{filecontents*}
\bibliography{\jobname}

\DeclareBibliographyDriver{customa}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \usebibmacro{location+date}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

\renewbibmacro*{authorstrg}{%
  \iffieldundef{authortype}
    {}
    {\printtext{%
       \ifbibxstring{\thefield{authortype}}
	 {\ifboolexpr{
	    test {\ifnumgreater{\value{author}}{1}}
	    or
	    test {\ifandothers{author}}
	  }
	    {\bibstring{\thefield{authortype}s}}
	    {\bibstring{\thefield{authortype}}}}
	 {\thefield{authortype}}}}}

\NewBibliographyString{director,directors}
\DefineBibliographyStrings{ngerman}{
  director  = {Gesch\"aftsf\"uhrer},
  directors = {Gesch\"aftsf\"uhrer},
}

\begin{document}
\nocite{*}
\printbibheading[title={Quellen}]
\printbibliography[type=customa,heading=subbibliography,title={Interviews}]
\end{document}
Wichtig:

1. Ich habe den "authorstrg"-Makro so erweitert, dass die "bibliography strings" optional sind. Du kannst als "authortype" also entweder einen Schlüssel angeben (Bsp. interview1) oder normalen Text (Bsp. interview2).

2. Wenn du Biber statt BibTeX verwendest, kannst du auch neue Eintragstypen einführen, also z.B. "customa" durch "interview" ersetzen.

von rocketscience » Do 3. Feb 2011, 09:37

Hallo Dominik,

vielen Dank für deine Antwort.
Ich verstehe im Augenblick (noch) nicht den Vorteil eines definierten Befehls \SalesManager, der würde mir doch eigentlich "nur" einen vorher definierten Wert ausgeben:
\newcommand{\SalesManager}{Sales Manager}
oder verstehe ich deinen Vorschlag falsch?
Um meinem Vorhaben eine "Jobbezeichnung" hinter dem Namen in Klammern anzugeben näher zu kommen, weißt du, ob es ein anderes Feld in BibLatex gibt, welches hinter dem Namen stehen könnte und einfach nur den Inhalt ausgibt, wie bspw. das Feld "title" es tut?

Grüße

von domwass » Do 3. Feb 2011, 09:11

Ruffy2k hat geschrieben:Wenn ich deine Lösung richtig verstehe, dann muss ich über den Code
\NewBibliographyString{interviewer} 
\NewBibliographyString{interviewers} 
\DefineBibliographyStrings{ngerman}{ 
  interviewer = {Interviewer}, 
  interviewers = {Interviewer}, 
} 
pro Funktion der Interviewpartner neue Strings definieren.
Ja, z.B. salesmanageram, salesmanageraf usw. Um das zu vereinfachen,
kannst du dir natürlich einen Befehl \SalesManager erstellen und dann mit
\NewBibliographyString{salesmanageram} 
\NewBibliographyString{salesmanageraf} 
\DefineBibliographyStrings{ngerman}{ 
  salesmanageram = {\SalesManager{} America}, 
  salesmanageraf = {\SalesManager{} Africa}, 
} 
entsprechend einstellen.
Ich hatte mir gedacht, dass ich mit "authortyp" in meiner Literaturdatenbank beliebige Funktionen definieren kann und diese dann einfach hinter dem Name ausgegeben werden.
Wie gesagt, das, was im Feld »authortype« angegeben ist, muss ein
definierter bibliography string sein.
Bin ich mit meinem Vorhaben von Anfang an einen falschen Weg gegangen, oder sollte ich für interview evt. einen eigenen Entry-Typ definieren, damit BibLatex diesen nicht als "misc" interpretiert?! Ich hab allerding noch keine eigenen Typen definiert, bin daher etwas unbeholfen an dieser Stelle.
Man kann nicht einfach beliebige eigene Typen definieren, denn sie müssen
in der bst-Datei von biblatex vorhanden sein. Aus diesem Grund gibt es die
Typen @customa, @customb, … @customf, die man für solche Fälle
heranziehen kann.

Gruß,
Dominik.-

von rocketscience » Mi 2. Feb 2011, 16:02

Das sieht schon gut aus, mein Vorhaben ist folgendes:

Ich möchte ein Verzeichnis meiner Interviewpartner als Unterverzeichnis im Quellenverzeichnis haben.

Nun habe ich mir gedacht, einfach in meiner Literaturdatenbank einen neuen Entry Type zu definieren, der interview heißt und dort folgende Parameter zu vergeben:
Author = {Name des Interviewpartners},
Title = {Titel des Interviews},
Authortype = {Funktion des Interviepartners (bspw. Geschäftsführer)},
Address = {Ort des Interviews},
Date = {Datum des Interviews}}
Auf das Feld "authortype" bin ich durch die BibLatex Doku gekommen, passte ganz gut, um folgende Struktur für die Einträge im Verzeichnis zu generieren:

Name, Vorname; Funktion des Interviewpartners; Titel des Interviews; Datum des Interviews; Ort des Interviews

Nun habe ich bspw. Funktionen der Interviewpartner, die nicht immer gleich sind (Sales Manager Amerika, Sales Manager Afrika, etc.)

Wenn ich deine Lösung richtig verstehe, dann muss ich über den Code
\NewBibliographyString{interviewer} 
\NewBibliographyString{interviewers} 
\DefineBibliographyStrings{ngerman}{ 
  interviewer = {Interviewer}, 
  interviewers = {Interviewer}, 
} 
pro Funktion der Interviewpartner neue Strings definieren.

Ich hatte mir gedacht, dass ich mit "authortyp" in meiner Literaturdatenbank beliebige Funktionen definieren kann und diese dann einfach hinter dem Name ausgegeben werden.

Bin ich mit meinem Vorhaben von Anfang an einen falschen Weg gegangen, oder sollte ich für interview evt. einen eigenen Entry-Typ definieren, damit BibLatex diesen nicht als "misc" interpretiert?! Ich hab allerding noch keine eigenen Typen definiert, bin daher etwas unbeholfen an dieser Stelle.

Grüße aus HH

von domwass » Mi 2. Feb 2011, 15:44

Schwebt dir so etwas vor?
\documentclass{scrreprt} 
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib} 
@interview{Beispiel2010a, 
   Author = {Max Muster}, 
   Title = {Interview zum Muster}, 
   Authortype = {interviewer}, 
   Address = {Musterstadt}, 
   Date = {2011-01-21}} 
\end{filecontents*} 

\usepackage[ansinew]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel}
\usepackage[german=quotes]{csquotes}
\usepackage[
   citestyle=verbose-ibid, 
   bibstyle=authoryear, 
   labelyear=true, 
   hyperref=true, 
   abbreviate=true, 
   isbn=false, 
   url=false, 
   doi=false, 
   dashed=false, 
   ibidtracker=true, 
   pagetracker=true, 
   maxnames=2, 
]{biblatex} 
\bibliography{\jobname} 

\renewbibmacro*{authorstrg}{% 
  \iffieldundef{authortype} 
    {} 
    {\ifboolexpr{ 
       test {\ifnumgreater{\value{author}}{1}} 
       or 
       test {\ifandothers{author}} 
     } 
       {\printtext{Funktion:\addspace}\bibstring{\thefield{authortype}s}}
       {\printtext{Funktion:\addspace}\bibstring{\thefield{authortype}}}}}
      
\NewBibliographyString{interviewer}
\NewBibliographyString{interviewers}
\DefineBibliographyStrings{ngerman}{ 
  interviewer = {Interviewer}, 
  interviewers = {Interviewer}, 
}

\begin{document} 
\footnote{\cite[Vgl.][]{Beispiel2010a}}
\printbibliography 
\end{document}
Gruß,
Dominik.-

von rocketscience » Mi 2. Feb 2011, 12:11

Hallo Dominik,

danke für den Tipp, ich habe folgendes in meine modifizierte verbode-ibid eigentragen (bzw. hinzugefügt)
\NewBibliographyString{authortype}

\DefineBibliographyStrings{ngerman}{ 
	sequens   = {f}, 
	sequentes = {ff},
	andothers = {{et\,al\adddot}},				 
	editor    = {(Hrsg.)}, 
	editors   = {(Hrsg.)},
	authortype = {Funktion:},
}

Leider brachte das keinen Erfolg, ich bekomme aus irgendeinem Grund beim kompillieren auch nicht deine angegebene Fehlermeldung (Editor bei mir ist TextMate).

EDIT: Fehlermeldung taucht doch versteckt in der Log auf:
ackage biblatex Warning: Bibliography string 'Test Authortype' undefined
(biblatex) at entry 'Beispiel2010a' on input line 100.
Eine generelle Frage von mir an dieser Stelle, ist die myverbose-ibid.cbx überhaupt der richtige Ort oder ändern sich damit nur die Fußnoten (so hab ich das bisher verstanden)?

Grüße

von domwass » Mi 2. Feb 2011, 11:51

Du müsstest eigentlich eine Warnung bekommen:
Package biblatex Warning: Bibliography string 'Test Authortype' undefined
(biblatex) at entry 'Beispiel2010a' on input line 87.
Das ist auch der Grund, warum das Feld fett ausgegeben wird (als Hinweis
darauf, dass etwas nicht stimmt). authortype erwartet einen vordefinierten
Bibliography String wie »editor«, »compiler« oder ähnliches, die in der lbx-
Datei definiert sein müssen. Du kannst natürlich eigene Bibliography Strings
definieren (mit \NewBibliographyString und \DefineBibliographyStrings).

Gruß,
Dominik.-

Nach oben