Seite 1 von 1

Getrenntes Literaturverzeichnis mit unterschiedlichen Stilen

Verfasst: Do 8. Aug 2019, 11:37
von aqualx
Hallo zusammen,

ich versuche in meinem Quellenverzeichnis Literatur und Internetquellen zu trennen. Dabei soll die Literatur im Fließtext als (Autor Jahr) und die Internetquellen als [lfd. Nr.] erscheinen und im getrennten Verzeichnis alphabetisch bzw. zahlenaufsteigend aufgeführt werden.

Ich hoffe ihr könnt mir weiterhelfen.

Hier das Minimalbeispiel


\documentclass{article}

\usepackage[style=alphabetic,backend=biber,labelnumber,defernumbers]{biblatex}

\begin{filecontents*}{test.bib}
@article{Lit2010,
	keywords = {Literatur}, 
	author = {Grundlagen},
	date = {2010},
	title = {Titel des Buches}
}
@article{Int2011,
	keywords = {Internet}, 
	author = {Autor A und Autor B},
	date = {2010},
	title = {Titel der Internetseite}
}
\end{filecontents*}
\bibliography{test.bib}

\DeclareCiteCommand{\citeonline}[\mkbibbrackets]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{%
     \printfield{prefixnumber}%
     \printfield{labelnumber}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\defbibenvironment{online}
  {\list
     {\printtext[labelnumberwidth]{%
  \iffieldundef{shorthand}
    {\printfield{prefixnumber}%
     \printfield{labelnumber}}
    {\printfield{shorthand}}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\title{}
\begin{document}

Hier soll das Buch~\parencite{Lit2010} und die Internetseite~\parencite{Int2011} zitiert werden.

\printbibliography[
	heading=subbibliography,
	title={Literatur},
	keyword=Literatur,
	omitnumbers]
	
\printbibliography[
	heading=subbibliography,
	title={Online},
	sorting=none,
	notkeyword=Literatur,
	env=online]

\end{document}

Verfasst: Do 8. Aug 2019, 12:01
von Bartman
Ein Lesetipp zu einem veraltetem Befehl, dessen Argument ohne die Dateinamenserweiterung auskommt: Abschnitt 3.7.1 Resources in der Dokumentation von biblatex.

Wenn Du keine gemeinsame Überschrift mit \printbibheading vergeben möchtest, dann brauchst Du heading=subbibliography nicht.

Verfasst: Do 8. Aug 2019, 12:08
von aqualx
Hallo,

in meinem Minimalbeispiel fehlt die gemeinsame Überschrift, die ich in meinem Hauptdokument aber mit drin habe,

Danke für den Link.

Mein Anliegen besteht in erster Linie darin zwei Zitationsstile für Internetquellen und Literaturquellen einzustellen.

Verfasst: Do 8. Aug 2019, 12:32
von Bartman
Du möchtest authoryear, benutzt aber alphabetic.

Beim zweiten Literaturverweis verwendest Du \parencite statt \citeonline.

Falls die Anzeige der Nummer im Verzeichnis zu dem Verweis im Text passen soll, dann fehlt noch
\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}
in der Präambel.

Verfasst: Do 8. Aug 2019, 21:39
von Gast
Statt sich auf manuell erstellte keywords zu verlassen, würde ich biblatex Online-Quellen lieber selbst erkennen lassen. Dazu müssen Online-Quellen nur den Typ @online nutzen (aber das sollten sie wohl eh). (Ich nutze im Folgenden die Variante, bei der biblatex anhand des Typs entscheidet, wie Dinge auszusehen haben, es ist dem Leser als Übungsaufgabe überlassen das mittels \ifkeyword und Co. für keyords anzupassen, wenn das unbedingt gewünscht ist.)

Ferner ist es wesentlich komfortabler, wenn man nicht gezwungen ist, zwei verschiedene Befehle zu nutzen. biblatex sollte bei der Nutzung eines einheitlichen Befehls automatisch entscheiden können, wie das Zitat auszusehen hat. Dabei ergibt sich aber das kleine Problem, dass Du unterschiedliche Klammerarten für die unterschiedlichen Typen möchtest. biblatexs \...cite-Makros arbeiten so, dass die äußere Klammerung unabhängig vom Zitatinhalt gesetzt wird, daher wäre einiges an Arbeit nötig, die Klammern auch automatisch anzupassen.
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear,
  labelnumber,defernumbers]{biblatex}

\letbibmacro{cite:default}{cite}

\newbibmacro{cite:online}{%
  \printtext[bibhyperref]{%
    \printfield{labelprefix}%
    \printfield{labelnumber}}}

\renewbibmacro{cite}{%
  \ifbibmacroundef{cite:\thefield{entrytype}}
    {\usebibmacro{cite:default}}
    {\usebibmacro*{cite:\thefield{entrytype}}}}

\DeclareFieldFormat{labelnumberwidth}{\mkbibparens{#1}}
\DeclareFieldFormat{shorthandwidth}{\mkbibparens{#1}}
\defbibenvironment{online}
  {\list
     {\printtext[labelnumberwidth]{%
        \printfield{labelprefix}%
        \printfield{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\bibliography{biblatex-examples.bib}

\begin{document}

Hier soll der Artikel~\autocite{sigfridsson}
und die Internetseite~\autocite{markey} zitiert werden.

Hier soll das Buch~\autocite{worman}
und die Internetseite~\autocite{baez/online} zitiert werden.

\printbibheading
\printbibliography[
  heading=subbibliography,
  title={Literatur},
  nottype=online,
  omitnumbers]

\newrefcontext[sorting=none]
\printbibliography[
  heading=subbibliography,
  title={Online},
  type=online,
  env=online]

\end{document}
Beachte, dass sorting=none, nicht mehr als Argument zu \printbibliography angegeben werden kann. Das muss jetzt mittels \newrefcontext erledigt werden. Viel mehr sollte sich dadurch aber nicht ändern