o.J. bei \citeyear

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


Gast

o.J. bei \citeyear

Beitrag von Gast »

Sofern das Jahr nicht angegeben wird, wird über \DeclareLabeldate im Literaturverzeichnis und bei zitieren o.J. angegeben. Nun möchte ich gerne nach jemanden zitieren, sodass ausgegeben wird: nach Mustermann (o.J). Probiert habe ich das mittels: nach \citeauthor{mustermann} (\citeyear{mustrmann}). Dabei erhalte ich zwar in der Klammer, die passende Verlinkung zum Literaturverzeichnis, jedoch ein leeres Feld. Manuelle Eingabe von o.J fällt aufgrund der Verlinkung weg.
Wie kann ich das umsetzen?

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{hyperref
\usepackage[backend=biber, style=authoryear, dashed=false]{biblatex}

\DeclareLabeldate{
	\field{date}
	\field{year}
	\field{eventdate} 
	\field{origdate}
	\literal{nodate}
} % o.J bei keiner Angabe von Jahr

\begin{filecontents*}{\jobname.bib}
@online{mustermann,
  author      = {Max Mustermann},
  shortauthor = {MM},
  title       = {Titel},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \parencite{mustermann}

nach \citeauthor{mustermann} (\citeyear{mustermann})

  \printbibliography
\end{document}

MoeWe
Forum-Meister
Forum-Meister
Beiträge: 802
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: o.J. bei \citeyear

Beitrag von MoeWe »

Für Zitate dieser Bauart gibt es den Befehl \textcite. Wenn Du wirklich mal einen Befehl brauchst, der nur das labeldate ausgibt, dann kannst Du Dir in Analogie zu \citedate etwas eigenes bauen.

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{hyperref}
\usepackage[backend=biber, style=authoryear, dashed=false]{biblatex}

\DeclareLabeldate{
  \field{date}
  \field{year}
  \field{eventdate} 
  \field{origdate}
  \literal{nodate}
}

\DeclareCiteCommand{\citelabeldate}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printlabeldate}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citelabeldate}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printlabeldateextra}
  {\multicitedelim}
  {\usebibmacro{postnote}}


\begin{filecontents*}{\jobname.bib}
@online{mustermann,
  author      = {Max Mustermann},
  shortauthor = {MM},
  title       = {Titel},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \parencite{mustermann}

  nach \textcite{mustermann}

  wenn's sein muss \citelabeldate*{mustermann}
  
  \parencite{knuth:ct:b,knuth:ct:c}
  
  Achtung! \citelabeldate*{knuth:ct:b,knuth:ct:c} vs \citelabeldate{knuth:ct:b,knuth:ct:c}

  \printbibliography
\end{document}

Antworten