Klammern für leeres Jahresfeld entfernen, Biblatex, IEEE-Stil

Klammern für leeres Jahresfeld entfernen, Biblatex, IEEE-Stil

Durch die Verwendung des IEEE-Stils von Biblatex habe ich festgestellt, dass die Referenz leere Klammern anzeigt, obwohl das Feld „Jahr“ nicht definiert ist. Wie kann ich dies entfernen, ohne biblatex.bst ändern zu müssen?

\documentclass{article}

\usepackage[style=ieee,backend=bibtex]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\x.bib}
@ELECTRONIC{MEMSnet,
  title = {What is {MEMS}?},
  organization = {MEMSnet},
  url = {http://www.memsnet.org/mems/what_is.html},
  urldate = {Dec. 01, 2013}
}
\end{filecontents}

\addbibresource{\x.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

ich habe

(). Was ist MEMS? MEMSnet, [Online]. Verfügbar:http://www.memsnet.org/mems/what_is.html.

das ist kein korrekter Zitierstil. Ich hätte gerne:

Was ist MEMS? MEMSnet, [Online]. Verfügbar:http://www.memsnet.org/mems/what_is.html.

Vielen Dank

Antwort1

In ieee.bbxfinden wir die Zeilen

\DeclareBibliographyDriver{online}{%
  [...]
  \setunit{\adddot\addspace}%
  \printtext[parens]{\usebibmacro{date}}%
  \setunit{\adddot\addspace}%
  [...]

Versuchen Sie also biblatex, das Makro zu verwenden date(das standardmäßig nur \printdate) und seine Ausgabe in Klammern zu setzen. Wenn es nichts ausgibt, wird eine leere Zeichenfolge in Klammern gesetzt, was zu dem Ergebnis führt, das Sie oben erhalten haben.

Die naheliegende Lösung besteht darin, den Eintrag mit einem Feld zu versehen date(schließlich sollte [fast] jeder Bib-Eintrag eines haben, siehe auch den Kommentar von Joseph Wright oben). Dies kann @onlinejedoch mit einigen Ressourcen schwierig und geradezu unmöglich sein.

Da wir den Treiber nicht komplett neu schreiben wollen @online(was eine offensichtliche Möglichkeit wäre, das Problem zu beheben), patchen wir ihn mitxpatch.

Laden Sie \usepackage{xpatch}diesen Code und fügen Sie ihn in Ihre Präambel ein

\xpatchbibdriver{online}
  {\printtext[parens]{\usebibmacro{date}}}
  {\iffieldundef{year}
    {}
    {\printtext[parens]{\usebibmacro{date}}}}
  {}
  {\typeout{There was an error patching biblatex-ieee (specifically, ieee.bbx's @online driver)}}

Dabei wird die oben diskutierte fehlerhafte Zeile ( \printtext[parens]{\usebibmacro{date}}) durch eine (mehr oder weniger ausgefeilte) Konstruktion ersetzt, in der wir prüfen, ob ein yearFeld (also ein ausreichendes Datumsfeld) vorhanden ist, und nur wenn diese Bedingung erfüllt ist (also nur, wenn ein Jahr vorhanden ist; hier setzen wir natürlich voraus, dass dies yeardie absolute Mindestanforderung für eine Datumsausgabe in der Bibliographie ist), fahren wir mit dem Drucken des Datums fort, andernfalls wird nichts unternommen.

\documentclass{article}
\usepackage[style=ieee,backend=bibtex]{biblatex}
\usepackage{xpatch}

\begin{filecontents}{\jobname.bib}
@ELECTRONIC{MEMSnet,
  title = {What is {MEMS}?},
  organization = {MEMSnet},
  url = {http://www.memsnet.org/mems/what_is.html},
  urldate = {2013-12-01},
}
\end{filecontents}

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

\xpatchbibdriver{online}
  {\printtext[parens]{\usebibmacro{date}}}
  {\iffieldundef{year}
    {}
    {\printtext[parens]{\usebibmacro{date}}}}
  {}
  {\typeout{There was an error patching biblatex-ieee (specifically, ieee.bbx's @online driver)}}

\begin{document}
  \nocite{MEMSnet,wilde,markey}
  \printbibliography
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen