Normen mit biblatex

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


kasiii
Forum-Century
Forum-Century
Beiträge: 132
Registriert: Di 20. Aug 2013, 15:37

Normen mit biblatex

Beitrag von kasiii »

Hallo,

ich muss Normen zitieren... Soweit klappt das auch ganz gut. Allerdings wird das month-Feld ausgeschrieben ausgegeben (das soll im APA-Stil auch so sein).

Ich habe mir mit Hilfe von einigen Foreneinträgen den folgenden Code zusammengeschustert.
\documentclass[]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8,]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[style=apa, backend=biber,]{biblatex}
	\DeclareLanguageMapping{ngerman}{ngerman-apa}
	\DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}	% Bei mehreren Autoren wird et~al. verwendet.

	
\usepackage{filecontents}
\begin{filecontents}{norm1.bib}
@NORM{DIN40110,
  	label = {DIN 40\,110-1},
	title = {Wechselstromgrößen -- Teil 1: Zweileiter-Stromkreiese},
	sortkey = {DIN 40\;110-1:1994-03},
	year = {1994},
	month = {03},
}
@NORM{DIN1338,
	label = {DIN 1338},
	title = {Formelschreibweise und Formelsatz},
	sortkey = {DIN 1338:2011-03},
	year = {2011},
	month = {03},
}
\end{filecontents}
\addbibresource{norm1.bib}

\DeclareDatamodelEntrytypes{norm}
\DeclareDatamodelEntryfields[norm]{
  label,
  sortkey,
  year
  }
\DeclareBibliographyDriver{norm}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{label}%
  \addcolon
  \printfield{year}-\printfield{month}\addcomma%
  \newunit\newblock
  \printfield{title}%
  }

\newcommand*{\citenorm}{\addspace}
\DeclareCiteCommand{\citenorm}{}{\printfield{label}}{}{} % {\addcolon\printfield{year}}


\begin{document}
\citenorm{DIN40110} \\ \citenorm{DIN1338}

\printbibheading[title={Literaturverzeichnis}]
\printbibliography[type=norm, heading=subbibliography, title={Normen}]
\end{document}

Im Literaturverzeichnis erhalte ich zum Beispiel den Eintrag:

DIN 1338:2011-März, Formelschreibweise und Formelsatz

Wenn Normen Zitiert werden, sollte der Monat allerdings nur als Zahl ausgegeben werden:

DIN 1338:2011-03, Formelschreibweise und Formelsatz

Wie erreiche ich das gewünsche Verhalten? Alle anderen Quellen sollen weiterhin den ausgeschriebenen Monatsnamen enthalten.

Gast

Beitrag von Gast »

Die Lösung
\stripzeros{\thefield{month}}
die ich aus den \printdate Definitionen geklaut habe ist zwar weder schön, noch besonders elegant, aber sie scheint zu tun, was sie tun soll.
\documentclass[]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8,]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[style=apa, backend=biber,]{biblatex}
   \DeclareLanguageMapping{ngerman}{ngerman-apa}
   \DefineBibliographyStrings{ngerman}{andothers={et\addabbrvspace al\adddot}}   % Bei mehreren Autoren wird et~al. verwendet.

   
\usepackage{filecontents}
\begin{filecontents}{norm1.bib}
@NORM{DIN40110,
   label = {DIN 40\,110-1},
   title = {Wechselstromgrößen -- Teil 1: Zweileiter-Stromkreiese},
   sortkey = {DIN40110-1:1994-03}
   date = {1994-03},
}
@NORM{DIN1338,
   label = {DIN 1338},
   title = {Formelschreibweise und Formelsatz},
   sortkey = {DIN01338:2011-03}
   date = {2011-03},
}
\end{filecontents}
\addbibresource{norm1.bib}

\DeclareDatamodelEntrytypes{norm}
\DeclareDatamodelEntryfields[norm]{
  label,
  sortkey,
  year
  }
\DeclareBibliographyDriver{norm}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \printfield{label}%
  \addcolon
  \printfield{year}-\stripzeros{\thefield{month}}\addcomma%
  \newunit\newblock
  \printfield{title}%
  }

\DeclareCiteCommand{\citenorm}{}{\printfield{label}}{}{} % {\addcolon\printfield{year}}


\begin{document}
\citenorm{DIN40110} \\ \citenorm{DIN1338}

\printbibheading[title={Literaturverzeichnis}]
\printbibliography[type=norm, heading=subbibliography, title={Normen}]
\end{document}
Die Zeile \newcommand*{\citenorm}{\addspace} ist übrigens höchst unnötig und verwirrt den geneigten Leser nur. Im m sortkey mit Leerzeichenbefehlen wie \, zu spielen verstehe ich übrigens nicht, sortkey = {DIN40110-1:1994-03} und sortkey = {DIN01338:2011-03} reichen doch völlig.

Gast

Beitrag von Gast »

OK eleganter ist Deiner alter Code \printfield{year}-\printfield{month}\addcomma% in Verbindung mit
\DeclareFieldFormat[norm]{month}{#1}
In der Lösung einen weiter oben war außerdem das \stripzeros zu viel.

Die anderen Anmerkungen gelten aber immer noch.

Antworten