Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

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


WsEe1
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 13. Mär 2021, 18:37

Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von WsEe1 »

Hallo,

ich versuche das Literaturverzeichnis an meine Vorgabe anzupassen. Ich würde gerne mit \newbibmacro arbeiten, weiß aber nicht zu richtig wie das geht.
Hier mein Minimalbeispiel

\begin{filecontents*}{bediaBibliographie.bib}
@Article{crawford2001fmr1,
  author    = {Crawford, Dana C. and Acu{\~n}a, Juan M. and Sherman, Stephanie L.},
  journal   = {Genetics in Medicine},
  title     = {FMR1 and the fragile X syndrome: human genome epidemiology review},
  year      = {2001},
  number    = {5},
  pages     = {359--371},
  volume    = {3},
  comment   = {Einleitung FMR, Zahlen zu Inzidenz},
  publisher = {Nature Publishing Group},
}
\end{filecontents*}

\documentclass[a4paper 11pt]{scrreport}
\usepackage[utf8]{inputenc} %für Windows
%\usepackage{fancyhdr}% für eigene Kopf und Fußzeilen
\usepackage[ngerman]{babel} % für deutsch
\usepackage[T1]{fontenc}    % Silbentrennung 

\usepackage[%
 backend=biber,%
 style=authoryear,%
 sortcites=true,%
 hyperref=auto,%
 maxcitenames=2,%
 maxbibnames=3,%
 mincitenames=1,%
 minbibnames=1,%
 dashed=false,%
 doi=false,%
 isbn=false,%
 giveninits=true,  
uniquename=init, ]{biblatex} \DeclareNameAlias{sortname}{family-given} \newbibmacro{}[]{} \begin{document} Hier wird zitiert \cite{crawford2001fmr1} und dann endet das Beispiel \end{document}

Ich möchte, dass

  1. number gar nicht nicht angezeigt wird
  2. die beiden letzten Autoren nur mit "," und nicht mit " und " getrennt sind
  3. Band und Seite sollen mit einem Doppelpunkt getrennt sein und vor der Seite soll nichts stehen, also kein S., pp. oä sondern z.b. 3:359-375
  4. Zwischem dem Titel und dem Herausgebenden Journal soll ein Doppelpunkt ":" statt "In " stehen

Ich weiß nicht so recht, was ich bei bibmacro einfügen kann
Vielen Dank schonmal


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

Re: Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Nicht für alle Änderungen, die Du gern hättest, ist es sinnvoll mit \renewbibmacro zu arbeiten. Einige Dinge kann man auch anders lösen, aber zumindest ein \renewbibmacro kann ich dir anbieten.

\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage[
  backend=biber,
  style=authoryear,
  sortcites=true,
  maxcitenames=2, maxbibnames=3,
  mincitenames=1, minbibnames=1,
  giveninits=true,
  uniquename=init,
  dashed=false,
  doi=false, isbn=false,
]{biblatex}

\DeclareNameAlias{sortname}{family-given}

\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}

\renewbibmacro{in:}{%
  \ifboolexpr{
       test {\ifentrytype{article}}
    or test {\ifentrytype{periodical}}}
    {}
    {\bibstring{in}}%
  \printunit{\intitlepunct}}

\renewcommand*{\bibpagespunct}{%
  \ifboolexpr{
       test {\ifentrytype{article}}
    or test {\ifentrytype{periodical}}}
    {\addcolon}
    {\addcomma\space}%
}

\DeclareFieldFormat[article,periodical]{pages}{#1}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{article}
      \pertype{periodical}
      \step[fieldset=number, null]
    }
  }
}

\begin{filecontents*}{\jobname.bib}
@Article{crawford2001fmr1,
  author    = {Crawford, Dana C. and Acuña, Juan M.
               and Sherman, Stephanie L.},
  journal   = {Genetics in Medicine},
  title     = {{FMR1} and the Fragile~{X} Syndrome:
               Human Genome Epidemiology Review},
  year      = {2001},
  number    = {5},
  pages     = {359--371},
  volume    = {3},
  comment   = {Einleitung FMR, Zahlen zu Inzidenz},
  publisher = {Nature Publishing Group},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Hier wird zitiert \autocite{crawford2001fmr1} und dann endet das Beispiel
\autocite{sigfridsson}
\printbibliography
\end{document}

Um zu wissen, welche bibmacros Du wie anpassen musst, musst Du Dir den Quellcode des Stils ansehen. Nur so kannst Du beurteilen, was wie ausgegeben wird. Ein großer Teil der Basisdefinitionen ist in biblatex.def, für Standardstile wie authoryear befinden sich die meisten Dinge in standard.bbx sowie in den Stildateien authoryear.bbx und authoryear.cbx.

Hier würdest Du wahrscheinlich mit der Definition des *bibliography drivers* für @article beginnen, der die Ausgabe des Beispieleintrags im Literaturverzeichnis maßgeblich bestimmt. Diese Definition ist in standard.bbx (Z. 28-64) zu finden. Da musst Du dann die einzelnen bibmacros nachverfolgen um zu sehen, ob sie relevant für Deine Fragestellung sind.


WsEe1
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 13. Mär 2021, 18:37

Re: Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von WsEe1 »

Vielen Dank.
Ich konnte nachvollziehen, welche Codezeile welche Veränderung bewirkt. Damit bin ich schon ein gutes Stück weiter.

Aber selber ein Code zu erstellen, schaffe ich leider nicht.

Wann nimmst du denn \Declare und wann \renewcommand ?

Die 300 Zeilen Code nach dem Link zu Github wirken sehr beeindrucken und ich würde das echt gerne ein bisschen können. Das System für neue Befehle habe ich leider noch nicht verstanden.

Wie mache ich denn am Ende und nach der Jahreszahl den Punkt weg?
Die Zeitschrift soll nicht kursiv geschrieben werden.
Der Titel nicht in Anführungszeichen

Das "und" zwischen den letzten beiden Autoren würdest du anders lösen?


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

Re: Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

WsEe1 hat geschrieben:
Mo 15. Mär 2021, 17:55

Wann nimmst du denn \Declare und wann \renewcommand ?

Es gibt in biblatex verschiedene Objekte (in Ermangelung eines besseren Begriffs), die jeweils mit anderen Befehlen angepasst werden.

So ist in: ein Bibmacro, das mit \renewbibmacro angepasst wird, finalnamedelim ist ein *context-sensitive delimiter*, der mit \DeclareDelimFormat/\DeclareDelimAlias angepasst wird. \bibpagespunct ist ein einfaches LaTeX-Makro und kann daher mit \renewcommand umdefiniert werden. Das Format für die Ausgabe der Seiten ist ein Feldformat und wird mit \DeclareFieldFormat geändert. Eine kleine Einführung dazu gibt es bei https://tex.stackexchange.com/q/12806/35864. Man wird das wohl am besten durch Beispiele und selber Herumspielen lernen.

WsEe1 hat geschrieben:
Mo 15. Mär 2021, 17:55

Wie mache ich denn am Ende und nach der Jahreszahl den Punkt weg?
Die Zeitschrift soll nicht kursiv geschrieben werden.
Der Titel nicht in Anführungszeichen

Der Punkt am Ende ist der Befehl \finentrypunct. Der Punkt nach dem Jahr der *context-sensitive delimiter* nametitledelim.

Für den Zeitschriftennamen ist das Feldformat journaltitle zuständig, für den Titel title.

WsEe1 hat geschrieben:
Mo 15. Mär 2021, 17:55

Das "und" zwischen den letzten beiden Autoren würdest du anders lösen?

Leider verstehe ich nicht ganz worauf Du hinauswillst. \DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim} sorgt dafür, dass das "und" im Literaturverzeichnis zu einem Komma wird. Im Zitat finde ich das etwas albern, da finde ich "Sigfridsson und Ryde 1998" schöner als "Sigfridsson, Ryde 1998". (Du kannst aber mal das [bib] löschen und sehen was sich ändert.) Wenn die Zeile bei Dir nicht dafür sorgt, dass das "und" im Literaturverzeichnis zu einem Komma wird, ist Deine biblatex-Version eventuell zu alt. Du kannst sehen, was ich mit dem Code unten bekomme, wenn Du auf "LaTeX-Ausgabe" klickst.

\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage[
  backend=biber,
  style=authoryear,
  sortcites=true,
  maxcitenames=2, maxbibnames=3,
  mincitenames=1, minbibnames=1,
  giveninits=true,
  uniquename=init,
  dashed=false,
  doi=false, isbn=false,
]{biblatex}

\renewcommand*{\finentrypunct}{}

\DeclareNameAlias{sortname}{family-given}

\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}

\DeclareDelimFormat[bib]{nametitledelim}{\addspace}

\renewbibmacro{in:}{%
  \ifboolexpr{
       test {\ifentrytype{article}}
    or test {\ifentrytype{periodical}}}
    {}
    {\bibstring{in}}%
  \printunit{\intitlepunct}}

\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat[article]{title}{#1}

\renewcommand*{\bibpagespunct}{%
  \ifboolexpr{
       test {\ifentrytype{article}}
    or test {\ifentrytype{periodical}}}
    {\addcolon}
    {\addcomma\space}%
}

\DeclareFieldFormat[article,periodical]{pages}{#1}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{article}
      \pertype{periodical}
      \step[fieldset=number, null]
    }
  }
}

\begin{filecontents*}{\jobname.bib}
@Article{crawford2001fmr1,
  author    = {Crawford, Dana C. and Acuña, Juan M.
               and Sherman, Stephanie L.},
  journal   = {Genetics in Medicine},
  title     = {{FMR1} and the Fragile~{X} Syndrome:
               Human Genome Epidemiology Review},
  year      = {2001},
  number    = {5},
  pages     = {359--371},
  volume    = {3},
  comment   = {Einleitung FMR, Zahlen zu Inzidenz},
  publisher = {Nature Publishing Group},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Hier wird zitiert \autocite{crawford2001fmr1} und dann endet das Beispiel
\autocite{sigfridsson}
\printbibliography
\end{document}

WsEe1
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Sa 13. Mär 2021, 18:37

Re: Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von WsEe1 »

So übers Wochenende hatte ich wieder Zeit, mir das nochmal anzuschauen.
Vielen Dank! Es sieht super aus.

\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim} nimmt es bei mir nicht. Ich benutze overleaf. Ich werde das nun aber mal in der aktuellen Version von TexStudio probieren.


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

Re: Neuer Versuch- Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Ah ja, selbst mit TeX Live 2020 läuft bei Overleaf nur biblatex v3.14. Da muss man dann die inzwischen veraltete (weil etwas verwirrende) gesternte Version nehmen

\DeclareDelimAlias*[bib]{finalnamedelim}{multinamedelim}

Bei einem aktuellen biblatex (>= v3.15) sollte man hingegen den Stern weglassen

\DeclareDelimAlias[bib]{finalnamedelim}{multinamedelim}

Antworten