[Tex/LaTex] How to cite a standard (ISO, etc.) in BibLaTeX

biblatex

I want to cite an ISO standard using BibLaTeX. All guidelines I found for BibTeX suggested using misc and replacing the author and editor fields by a number field which was then the full string denoting the ISO standard ("ISO 9241-210:2010" say). BibLaTeX won't display the number though. I found this German thread where it was suggested to copy the misc BibliographyDriver to a new standard type (as suggested by the section "2.1.3 Unsupported Types" of the BibLaTeX documentation) and replace

\usebibmacro{author/editor+others/translator+others} 

by

\usebibmacro{series+number}

The result is a complete adapted copy of the standard.bbx file, renamed to din.bbx though. Is this the only/best solution? Can't I just change what I need and insert it somehow?


This link is not TeX-related but might be useful: http://www.garshol.priv.no/blog/47.html

Best Answer

Here is a solution using biblatex 2.0/biber 1.0. You can define your own entrytype for this and then just write your own driver for the new type. Since you "own" this driver, you can do what you want with it, add new fields, format them how you like. This is very easy, I just copied an existing driver from the standard.bbx in biblatex and changed it a bit, making it a "standard" driver and referencing the fields I allowed for this type in the datamodel declaration (NUMBER and TYPE). You are really adding to the data model as this already specified that most common fields like AUTHOR, YEAR etc. are allowed in all entry types. NUMBER and TYPE aren't so I added them. I didn't have to actually define these fields in the data model as they already exist - you could of course make completely new fields with new names but then you'd need some \DeclareDatamodelFields declarations. See section 4.5.3 of the biblatex 2.x documentation.

\begin{filecontents}{test1.bib}
@STANDARD{test1,
  author = {Alan Author},
  title = {I Claim This Technology},
  type = {ISO},
  number = {ISO 9241-210:2010},
  year = {2010}
}
\end{filecontents}
\documentclass{article}
\usepackage[style=numeric]{biblatex}
\addbibresource{test1.bib}
\DeclareDatamodelEntrytypes{standard}
\DeclareDatamodelEntryfields[standard]{type,number}
\DeclareBibliographyDriver{standard}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit\newblock
  \printfield{number}%
  \setunit{\addspace}\newblock
  \printfield[parens]{type}%
  \newunit\newblock
  \usebibmacro{location+date}%
  \newunit\newblock
  \iftoggle{bbx:url}
    {\usebibmacro{url+urldate}}
    {}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \usebibmacro{related}%
  \usebibmacro{finentry}}
\begin{document}
\cite{test1}
\printbibliography
\end{document}

enter image description here

Related Question