Unterscheiden Sie zwischen allen Eintragstypen in Biblatex (z. B. Mathemathik vs. Doktorarbeit).

Unterscheiden Sie zwischen allen Eintragstypen in Biblatex (z. B. Mathemathik vs. Doktorarbeit).

Ich bin vor kurzem auf Biblatex umgestiegen, was bisher großartig ist, aber nicht so einfach wie Biblatex. Ich bin auf ein Problem gestoßen, das ich bisher nicht lösen konnte:

Meine Bibliographie enthält reports, techreports, mastersthesisund phdthesis,neben einigen articlesund books. Wie im Biblatex-Dokument geschrieben, sind die ersten beiden mit @reportsund der dritte und vierte mit zugeordnet @thesis. Der Grund dafür scheint unklar und da ich unterschiedliche Formatierungsoptionen für die vier Einträge habe, ist es nicht möglich, sie zu kombinieren. Die Kombination scheint im biblatex.defFolgenden angeordnet zu sein. \DeclareDriverSourceMap Während ich mich daran arbeitete, eine eigene Datei für einen benutzerdefinierten Bibliographiestil zu definieren *.bbx, habe ich auch unterschiedliche Darstellungen für alle vier Einträge definiert.

\DeclareBibliographyDriver{report}{ ...
...
\DeclareBibliographyDriver{phdthesis}{...

Aber biblatex verweist immer noch darauf biblatex.defund ignoriert meine Einträge. Wie kann ich die Befehle im \DeclareDriverSourceMapAbschnitt unterdrücken oder erneuern? Die bevorzugte Option wäre, etwas Code in die *.bbxDatei einzufügen, wenn nicht anders möglich, würde auch die Präambel gehen. Aber mit meinem MWE scheint eine erneute Deklaration in der Präambel nicht möglich zu sein.


Hier ist das MWE:

\begin{filecontents*}{Beispielbibliographie.bib}
@PHDTHESIS{Mus15,
  Title                    = {Doktorarbeit ABC},
  Author                   = {Wax Mustermann},
  School                   = {XY Universität},
  Year                     = {2015},
  Note                     = {ISBN unbekannt},
}
@MASTERSTHESIS{Mus10,
  Title                    = {Bachelorarbeit DEF},
  Author                   = {Martina Musterfrau},
  School                   = {XY Universität},
  Year                     = {2010},
  Note                     = {Max Mustermann},
  Type                     = {unveröffentlichte Bachelorarbeit},
}
@ARTICLE{Gan11,
  Title                    = {GHI},
  Author                   = {T. Gantenbein},
  Journal                  = {Journal für Beispiele},
  Year                     = {2011},
  Number                   = {8},
  Pages                    = {1001-1010},
  Volume                   = {43},
}
\end{filecontents*}

\begin{filecontents}{Beispiel.bbx}
\ProvidesFile{Beispiel.bbx}

\RequireBibliographyStyle{standard}
\ExecuteBibliographyOptions{labelalpha,sorting=anyt}

\DeclareFieldFormat{labelalphawidth}{\mkbibbrackets{#1}}
\DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}}

\defbibenvironment{bibliography}
  {\list
     {\printtext[labelalphawidth]{%
        \printfield{prefixnumber}%
    \printfield{labelalpha}%
        \printfield{extraalpha}}}
     {\setlength{\labelwidth}{\labelalphawidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{##1\hss}}
  {\endlist}
  {\item}

\defbibenvironment{shorthand}
  {\list
     {\printfield[shorthandwidth]{shorthand}}
     {\setlength{\labelwidth}{\shorthandwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}%
      \renewcommand*{\makelabel}[1]{##1\hss}}}
  {\endlist}
  {\item}

\renewcommand*{\labelnamepunct}{\addcolon\addspace}
\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}
\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1\isdot}

\DeclareBibliographyDriver{mastersthesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printfield{school}%
  \newunit\newblock
  \printfield{type}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printfield{year}%
  \newunit\newblock
  {}%
}

\DeclareBibliographyDriver{phdthesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printfield{school}%
  \newunit\newblock
  \printfield{year}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  {}%
}
\endinput
\end{filecontents}


\documentclass[12pt,halfparskip,BCOR0pt,DIV12]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lipsum}

\DeclareDriverSourcemap[datatype=bibtex]{
  \map{
    \step[fieldset=day, null]
  }
}

\usepackage[backend=bibtex, bibstyle=Beispiel, citestyle=alphabetic, firstinits=true, isbn=false, doi=false, url=false, maxbibnames=99]{biblatex}
\bibliography{Beispielbibliographie.bib}


\begin{document}

\lipsum[1] \cite{Gan11,Mus10,Mus15}
\lipsum[2]

\printbibliography[title=Literaturverzeichnis]

\end{document}

Antwort1

Sie werden feststellen, dass s mit @techreportabgebildet werden , während und beide mit bzw. abgebildet werden . Es gibt also eine Möglichkeit, die Typen zu unterscheiden, allerdings nicht über den Eintragstyp, sondern über das Feld.@reporttype = {techreport}@phdthesis@mastersthesis@thesistype = {phdthesis}type = {mastersthesis}type

Ich hätte gedacht, dass die Ausgabe für die Typen ausreichend ähnlich ist, sodass es ausreicht, jeweils einen Treiber zu haben (was genau ist der Unterschied zwischen der erwarteten Ausgabe für @mastersthesisund @phdtehsisaußer der Zeichenfolge, die bereits automatisch anzeigt, ob wir eine MA- oder PhD-Arbeit haben?), das hängt natürlich von der genauen Ausgabe ab, die Sie suchen, aber Sie können es mit gegen den Typ prüfen \iffieldequalstr{type}{techreport}{Ohh, a @techreport}{just a normal @report}.

Zum Beispiel

\DeclareBibliographyDriver{report}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printtext{\iffieldequalstr{type}{techreport}{Ohh, a @techreport}{just a normal @report}}
  \newunit\newblock
  \usebibmacro{finentry}}

Wenn Sie die Neuzuordnung unbedingt unterdrücken müssen, biblatex.defkönnen Sie die Tatsache ausnutzen, dass biblateximmer nur eine Sourcemapping-Direktive beliebigen Typs akzeptiert werden kann. Wenn Sie also hinzufügen

\DeclareDriverSourcemap[datatype=bibtex]{
  \map{
    \step[fieldset=day, null]
  }
}

zur Präambel Ihres Dokuments werden die Standardzuordnungen ignoriert.

verwandte Informationen