Getrenntes Literaturverzeichnis mit unterschiedlichen Stilen

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.
aqualx
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 8. Aug 2019, 11:30

Getrenntes Literaturverzeichnis mit unterschiedlichen Stilen

Beitrag 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


Code: Alles auswählen

\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}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2118
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.

aqualx
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Do 8. Aug 2019, 11:30

Beitrag 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.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2118
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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

Code: Alles auswählen

\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}
in der Präambel.

Gast

Beitrag 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.

Code: Alles auswählen

\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

Antworten