urldate taucht in cite Fussnote nicht auf

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


Raffelk
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Do 4. Mai 2017, 21:16

urldate taucht in cite Fussnote nicht auf

Beitrag von Raffelk »

Hallo,
muss ja sagen das Latex/biblatex mir immer besser gefällt. Wenn ich mir überlege was ich an meinen letzten Studienarbeiten in "ätz"Programmen gebastelt habe um das alles sauber und gleich zu halten...

Gut nun aber zu meiner Frage an euch:
Mir scheint es das Formtierungsvorgaben in Zitat, Fussnoten und Literaturverzeichnissen nur dazu erfunden wurde um Studenten zu quälen.
Es ist wohl so das jede Uni irgendwie ihren eigenen Vorgaben haben.
Nun in unserer Vorschrift habe ich eine Quelle aus dem Internet folgendermassen als Fussnote zu nennen:
Vgl.: Mustermann, M. / Musterfrau, G. / Musterjunge, A. (2000): Das Online-Leben der Musterfamilie. (URL: www.mustermann.mu) (21.5.2017).

Das sich diese Formatierung selbstverständlich zu anderen Quellen wie Bücher unterscheidet, habe ich es so gelöst in dem ich ein eigenes Format für die Fussnote von Online-Quellen erstellt habe (urlfootcite, in meinem Kurzbeispiel). Hoffe das dieses eine richtige und übliche Vorgehensweise ist.

Nun obwohl ich urldate (habe ich gewählt weil ich gelesen haben das lastchecked nicht übernommen wird) in der Fussnote zwischen den letzten beiden Klammern aufrufe und dieses im Literaturverzeichniss richtig im PDF auftauscht, erscheint diese nicht in meiner Fussnote.

Kann mir jemand von euch einen Tip geben ob ich mit meinem Vorgehen komplett falsch liege oder ob ich nur einen Teil falsch verstanden haben.

Danke schon einmal vorweg für euer durchlesen und eventuelle Idee.

% Das ist mein LaTeX-Dokument.
\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{buecher.bib}
@webpage{page1,
author = {Mustermann, Max and Musterfrau,
Gitte and Musterjunge, Alfons},
title = {Das Online-Leben der Musterfamilie},
year = {Verlag der nutzlosen Bücher},
url = {www.mustermanns.mu},
year = {2000},
urldate = {2017-05-21}
}

\end{filecontents}


\usepackage[utf8]{inputenc}
\usepackage{babel,csquotes}
\usepackage[style=authoryear,%
maxnames=3,giveninits=true,]{biblatex}
\bibliography{buecher.bib}


\renewcommand*{\multinamedelim}{\addspace\slash\space}
\renewcommand*{\finalnamedelim}{\multinamedelim} 

\DeclareNameAlias{author}{family-given}
 
\DeclareCiteCommand{\urlfootcite}[\mkbibfootnote] 
  {\usebibmacro{prenote}}                                 
  {\usebibmacro{citeindex}%
   \addcolon{\addnbspace}
   \printnames{author}%
   \setunit{\addnbspace\bibleftparen}
   \printfield{year}%
   \bibrightparen\addcolon\addspace
   \printfield{title}%
   \newunitpunct\addspace\bibleftparen
   \printfield{url}%
   \bibrightparen
   \addspace\bibleftparen
   \printfield{urldate}%
   \bibrightparen
}
  {\addsemicolon\space}
  {\usebibmacro{postnote}}

\begin{document}
Das ist der ultimative Test \urlfootcite[Vgl.][]{page1}.
\nocite{*}
\printbibliography
\end{document}
% Ende des Dokumentes 

Gast

Beitrag von Gast »

Aus Deinen Ausführungen in http://golatex.de/letzter-author-falschrum-t19184.html schließe ich, dass Du für andere Quellen einfach nur 'Autor (Jahr)' als Zitat möchtest, für Online-Quellen aber die hier vorgestellte Version.

Ich würde keinen Extrabefehl definieren. Die Idee ist ja gerade, dass biblatex Dir das Denken abnimmt. Mit der folgenden Version musst Du immer nur \autocite aufrufen, dann bekommst Du Fußnotenzitate im vollen Stil für Online-Quellen und 'Autor (Jahr)' für alles andere.

Am besten kennzeichnest Du alle Online-Quellen als @online statt @webpage. @online ist der Name, unter dem biblatex das normalerweise kennt.
\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@online{page1,
author = {Mustermann, Max and Musterfrau,
Gitte and Musterjunge, Alfons},
title = {Das Online-Leben der Musterfamilie},
year = {Verlag der nutzlosen Bücher},
url = {www.mustermanns.mu},
year = {2000},
urldate = {2017-05-21}
}

\end{filecontents}


\usepackage[utf8]{inputenc}
\usepackage{babel,csquotes}
\usepackage[style=authoryear,%
maxnames=3, giveninits=true, uniquename=init, autocite=footnote]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\DeclareDelimFormat{nametitledelim}{\addcolon\space}
\renewcommand*{\multinamedelim}{\addspace\slash\space}
\renewcommand*{\finalnamedelim}{\multinamedelim}

\DeclareNameAlias{author}{family-given}

\DeclareFieldFormat{url}{\mkbibparens{\mkbibacro{URL}\addcolon\space\url{#1}}}
\DeclareFieldFormat{urldate}{\mkbibparens{#1}}
 
\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{%
    \iffieldundef{shorthand}
      {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
         {\usebibmacro{cite:label}%
          \setunit{\printdelim{nonameyeardelim}}}
         {\printnames{labelname}%
          \setunit{\printdelim{nameyeardelim}}}%
       \usebibmacro{cite:paren:labelyear+extrayear}%
       \ifentrytype{online}{A\usebibmacro{cite:online}}{B}}
      {\usebibmacro{cite:shorthand}}}}

\newbibmacro{cite:online}{%
  \setunit{\printdelim{nametitledelim}}%
  \usebibmacro{title}%
  \newunit
  \usebibmacro{url+urldate}%
}

\makeatletter
\renewbibmacro*{cite:shorthand}{\printfield{shorthand}}

\renewbibmacro*{cite:label}{%
  \iffieldundef{label}
    {\printfield[citetitle]{labeltitle}}
    {\printfield{label}}}

\newbibmacro*{cite:paren:labelyear+extrayear}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
     \ifdefstring\blx@dateformat@labeldate{edtf}
       {}
       {\datecircaprint}%
     \dateeraprintpre{labelyear}%
     \printfield{labelyear}%
     \printfield{extrayear}%
     \dateuncertainprint%
     \iffieldsequal{labeldateera}{labelenddateera}{}
       {\dateeraprint{labelyear}}%
     \ifdefstring\blx@dateformat@labeldate{edtf}
       {\datecircaprintedtf}
       {}%
     \iffieldundef{labelendyear}
       {}
       {\iffieldsequal{labelyear}{labelendyear}{}
        {\ifdefstring\blx@dateformat@labeldate{edtf}
          {\slash}% strict EDTF
          {\bibdaterangesep
           \enddatecircaprint}%
         \dateeraprintpre{labelendyear}%
         \printfield{labelendyear}%
         \enddateuncertainprint
         \ifdefstring\blx@dateformat@labeldate{edtf}
           {\enddatecircaprintedtf}
           {}%
         \dateeraprint{labelendyear}}}}}}
\makeatother

\begin{document}
Das ist der ultimative Test \autocite[Vgl.][]{page1}. \autocite{sigfridsson}

\printbibliography
\end{document}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Das A und B hier ist doch bestimmt vom Testen über oder?

\ifentrytype{online}{A\usebibmacro{cite:online}}{B}}

Gast

Beitrag von Gast »

Oh blast! Natürlich. Danke!

Wir landen also bei
\documentclass[ngerman]{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@online{page1,
author = {Mustermann, Max and Musterfrau,
Gitte and Musterjunge, Alfons},
title = {Das Online-Leben der Musterfamilie},
year = {Verlag der nutzlosen Bücher},
url = {www.mustermanns.mu},
year = {2000},
urldate = {2017-05-21}
}

\end{filecontents}


\usepackage[utf8]{inputenc}
\usepackage{babel,csquotes}
\usepackage[style=authoryear,%
maxnames=3, giveninits=true, uniquename=init, autocite=footnote]{biblatex}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\DeclareDelimFormat{nametitledelim}{\addcolon\space}
\renewcommand*{\multinamedelim}{\addspace\slash\space}
\renewcommand*{\finalnamedelim}{\multinamedelim}

\DeclareNameAlias{author}{family-given}

\DeclareFieldFormat{url}{\mkbibparens{\mkbibacro{URL}\addcolon\space\url{#1}}}
\DeclareFieldFormat{urldate}{\mkbibparens{#1}}
 
\renewbibmacro*{cite}{%
  \printtext[bibhyperref]{%
    \iffieldundef{shorthand}
      {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
         {\usebibmacro{cite:label}%
          \setunit{\printdelim{nonameyeardelim}}}
         {\printnames{labelname}%
          \setunit{\printdelim{nameyeardelim}}}%
       \usebibmacro{cite:paren:labelyear+extrayear}%
       \ifentrytype{online}{\usebibmacro{cite:online}}{}}
      {\usebibmacro{cite:shorthand}}}}

\newbibmacro{cite:online}{%
  \setunit{\printdelim{nametitledelim}}%
  \usebibmacro{title}%
  \newunit
  \usebibmacro{url+urldate}%
}

\makeatletter
\renewbibmacro*{cite:shorthand}{\printfield{shorthand}}

\renewbibmacro*{cite:label}{%
  \iffieldundef{label}
    {\printfield[citetitle]{labeltitle}}
    {\printfield{label}}}

\newbibmacro*{cite:paren:labelyear+extrayear}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
     \ifdefstring\blx@dateformat@labeldate{edtf}
       {}
       {\datecircaprint}%
     \dateeraprintpre{labelyear}%
     \printfield{labelyear}%
     \printfield{extrayear}%
     \dateuncertainprint%
     \iffieldsequal{labeldateera}{labelenddateera}{}
       {\dateeraprint{labelyear}}%
     \ifdefstring\blx@dateformat@labeldate{edtf}
       {\datecircaprintedtf}
       {}%
     \iffieldundef{labelendyear}
       {}
       {\iffieldsequal{labelyear}{labelendyear}{}
        {\ifdefstring\blx@dateformat@labeldate{edtf}
          {\slash}% strict EDTF
          {\bibdaterangesep
           \enddatecircaprint}%
         \dateeraprintpre{labelendyear}%
         \printfield{labelendyear}%
         \enddateuncertainprint
         \ifdefstring\blx@dateformat@labeldate{edtf}
           {\enddatecircaprintedtf}
           {}%
         \dateeraprint{labelendyear}}}}}}
\makeatother

\begin{document}
Das ist der ultimative Test \autocite[Vgl.][]{page1}. \autocite{sigfridsson}

\printbibliography
\end{document}

Raffelk
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Do 4. Mai 2017, 21:16

Beitrag von Raffelk »

Hallo Gast,
erst einmal vielen Dank dafür das du meine Frage durchgelesen hast und dann dich hingesetzt hast und eine komplette Lösung zu coderen und zu posten.

Wenn ich deine Lösung recht verstehen überscheribst du in deinem ersten Teil das biblatex Macro für Cite. Dort baust du dann eine Auswertung des Typs der Quelle und dann verwendest du ein weiteres Macros um die Formatierung zu erzielen.
Also wenn ich noch weitere unterschiedliche Formate hätte könnte ich die mit weiteren seperaten Macros abarbeite.

Sehr cool, vielen Dank für deine Hilfe.

Gast

Beitrag von Gast »

Ja, das ist von der Idee her genau richtig. Das Makro cite:paren:labelyear+extrayear ist eine Kopie der Standarddefinition von cite:labelyear+extrayear , nur dass das Jahr in Klammern steht und kein Link gesetzt wird. Ebenso wurden cite:shorthand und cite:label so undefiniert, dass sie keinen Link setzen. Der Link wird nun von cite gesetzt. Neu ist da neben dem Link nur \ifentrytype{online}{\usebibmacro{cite:online}}{}, das eben für @online-Quellen das neue Makro cite:online aufruft, das mehr Informationen bereitstellt. Du könntest dieses Prinzip natürlich noch für andere Typen übernehmen. Solltest Du das tun wollen, wirst Du aber eventuell schnell einen Punkt erreichen, an dem das anders besser gelöst werden kann. Meine Lösung geht mehr oder weniger davon aus, dass nur @online besonders ist und alles andere 'Autor (Jahr)' sein soll. Wenn dem nicht so ist, sollten wir das Konzept nochmal überdenken.

Antworten