Literaturverzeichnis an Vorgabe anpassen

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


Tobi92
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 20. Jun 2023, 02:03

Literaturverzeichnis an Vorgabe anpassen

Beitrag von Tobi92 »

Hallo zusammen,
ich habe für meine Bachelorarbeit Latex für mich entdeckt und mich neu eingearbeitet. Dazu habe ich eine Vorlage genutzt. Diese war allerdings veraltet, weshalb hier noch bibtex verwendet wurde. Da ich das Literaturverzeichnis anpassen muss, habe ich die Vorlage auf biblatex umgestellt. Allerdings ist es mir trotz einiger Recherche noch nicht gelungen, die Vorgaben einzuhalten. Deshalb nun der Post im Forum in der Hoffnung, dass mir jemand helfen kann.

So sieht es aktuell aus:
[1] P. Basu. „Biomass Characteristics“. In: Biomass Gasification and Pyrolysis. Hrsg. von
P. Basu. Boston: Academic Press, 2010, S. 27–63

So soll es aussehen:
[1] Basu, P., 2010. Biomass Characteristics, in: Basu, P. (Eds.), Biomass Gasification and Pyrolysis. Academic Press, Boston, pp. 73-78

Ich habe versucht, ein Minimalbeispiel nach allen Regeln einzufügen. Hoffe ich habe alles beachtet:
\begin{filecontents*}{\jobname.bib}
\@inbook{Basu2010,
   author = {Basu, Prabir},
   title = {Biomass Characteristics},
   booktitle = {Biomass Gasification and Pyrolysis},
   editor = {Basu, Prabir},
   publisher = {Academic Press},
   address = {Boston},
   pages = {27-63},
   ISBN = {978-0-12-374988-8},
   DOI = {https://doi.org/10.1016/B978-0-12-374988-8.00002-7},
   url = {https://www.sciencedirect.com/science/article/pii/B9780123749888000027},
   year = {2010},
   type = {Book Section}
}
\end{filecontents*}
\listfiles
\documentclass[a4paper]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[
backend=biber,
natbib=true,
style=numeric,
sortlocale=de,
sorting=nyt,
hyperref=true,
isbn=false,
url=false,
doi=false,
eprint=false,
related=false,
giveninits=true
]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\addbibresource{\jobname.bib}
\begin{document}
Das ist ein Beispiel aus \citep{Basu2010}.
\printbibliography
\end{document}

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

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Da das zitierte Werk in der Tat ein @inbook und kein @incollection ist, ist P. Basu nicht editor sondern bookauthor. Das "Eds." ist also auf jeden Fall fehl am Platze. Standardmäßig wiederholt biblatex den bookauthor nicht, wenn er mit dem author übereinstimmt.

Ansonsten handelt es sich um etwas Gefriemel, um Eigenschaften der authoryear-Stile (Jahr direkt nach Namen) in den numeric-Stil zu überführen. Wir nutzen biblatex-ext-Stile, um den editor leichter vor den booktitle zu bekommen.
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[
  backend=biber,
  natbib=true,
  style=ext-numeric,
  labeldateparts=false,
  giveninits=true,
  innamebeforetitle=true,
  isbn=false,
  url=false,
  doi=false,
  eprint=false,
  related=false,
]{biblatex}

\DeclareNameAlias{sortname}{family-given}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}
\DeclareDelimFormat[bib]{nametitledelim}{\addperiod\space}

\DeclareNameAlias{ineditor}{editor}
\DeclareNameAlias{bookauthor}{author}

\DeclareDelimFormat[bib,biblist]{innametitledelim}{\addcomma\space}

\newbibmacro*{date+extradate}{%
  \printdate}
\renewbibmacro*{issue+date}{%
  \iffieldundef{issue}
    {}
    {\printtext[parens]{%
       \printfield{issue}}}%
  \newunit}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {\setunit{\printdelim{nameyeardelim}}}
       {\setunit{\printdelim{authortypedelim}}}%
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
        \setunit{\printdelim{nameyeardelim}}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{editor}{%
  \usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
  \usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{translator}{%
  \usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
  \usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{#1}%
     \clearname{translator}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{pubinstorg+location+date}[1]{%
  \printunit{\addperiod\space}%
  \printlist{#1}%
  \setunit*{\publocdelim}%
  \printlist{location}%
  \newunit}

\renewbibmacro*{location+date}{%
  \printlist{location}%
  \newunit}

\begin{filecontents*}{\jobname.bib}
@incollection{Basu2010,
  author     = {Basu, Prabir},
  title      = {Biomass Characteristics},
  booktitle  = {Biomass Gasification and Pyrolysis},
  bookauthor = {Basu, Prabir},
  publisher  = {Academic Press},
  address    = {Boston},
  pages      = {27-63},
  ISBN       = {978-0-12-374988-8},
  DOI        = {B978-0-12-374988-8.00002-7},
  url        = {https://www.sciencedirect.com/science/article/pii/B9780123749888000027},
  year       = {2010},
  type       = {Book Section},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Das ist ein Beispiel aus \citep{Basu2010,pines,westfahl:space}.
\printbibliography
\end{document}
Zuletzt geändert von MoeWe am So 25. Jun 2023, 18:22, insgesamt 1-mal geändert.

Tobi92
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 20. Jun 2023, 02:03

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von Tobi92 »

Wow, vielen Dank für die schnelle und umfangreiche Hilfe. Ich habe die ergänzten Zeilen soeben in meine Präambel eingefügt. Leider erhalte ich folgende Fehlermeldung: Bibliography macro 'labeltitle' undefined. Hast du eine Idee, woran das liegen kann?

Ist es außerdem noch möglich, die Anführungszeichen beim Titel im Literaturverzeichnis wegzulassen?

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

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Tobi92 hat geschrieben:
So 25. Jun 2023, 15:23
Ich habe die ergänzten Zeilen soeben in meine Präambel eingefügt. Leider erhalte ich folgende Fehlermeldung: Bibliography macro 'labeltitle' undefined. Hast du eine Idee, woran das liegen kann?
Ah. Da wird es wohl einen Eintrag ohne author, editor etc. geben. Finde mal raus, welcher das ist, und überlege Dir, wie der aussehen soll. Bau ihn dann in mein Mininmalbeispiel rein und dann überlegen wir uns, wie wir das angehen.
Tobi92 hat geschrieben:
So 25. Jun 2023, 15:23
Ist es außerdem noch möglich, die Anführungszeichen beim Titel im Literaturverzeichnis wegzulassen?
Ja. Wir das geht, ist zum Beispiel in https://tex.stackexchange.com/q/462133/35864 detailliert erläutert.

Tobi92
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 20. Jun 2023, 02:03

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von Tobi92 »

Hier das Minimalbeispiel mit dem Übeltäter:
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[
  backend=biber,
  natbib=true,
  style=ext-numeric,
  labeldateparts=false,
  giveninits=true,
  innamebeforetitle=true,
  isbn=false,
  url=false,
  doi=false,
  eprint=false,
  related=false,
]{biblatex}

\DeclareNameAlias{sortname}{family-given}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}
\DeclareDelimFormat[bib]{nametitledelim}{\addperiod\space}

\DeclareNameAlias{ineditor}{editor}
\DeclareNameAlias{bookauthor}{author}

\DeclareDelimFormat[bib,biblist]{innametitledelim}{\addcomma\space}

\newbibmacro*{date+extradate}{%
  \printdate}
\renewbibmacro*{issue+date}{%
  \iffieldundef{issue}
    {}
    {\printtext[parens]{%
       \printfield{issue}}}%
  \newunit}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {\setunit{\printdelim{nameyeardelim}}}
       {\setunit{\printdelim{authortypedelim}}}%
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
        \setunit{\printdelim{nameyeardelim}}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{editor}{%
  \usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
  \usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{translator}{%
  \usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
  \usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{#1}%
     \clearname{translator}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{pubinstorg+location+date}[1]{%
  \printunit{\addperiod\space}%
  \printlist{#1}%
  \setunit*{\publocdelim}%
  \printlist{location}%
  \newunit}

\renewbibmacro*{location+date}{%
  \printlist{location}%
  \newunit}

\begin{filecontents*}{\jobname.bib}
@incollection{Basu2010,
  author     = {Basu, Prabir},
  title      = {Biomass Characteristics},
  booktitle  = {Biomass Gasification and Pyrolysis},
  bookauthor = {Basu, Prabir},
  publisher  = {Academic Press},
  address    = {Boston},
  pages      = {27-63},
  ISBN       = {978-0-12-374988-8},
  DOI        = {B978-0-12-374988-8.00002-7},
  url        = {https://www.sciencedirect.com/science/article/pii/B9780123749888000027},
  year       = {2010},
  type       = {Book Section},
}
@online{UBA2022,
   organization = {Umweltbundesamt},
   title = {Bewertungsgrundlage: Anlagen der Bewertungsgrundlage für Kunststoffe und andere organische Materialien im Kontakt mit Trinkwasser (KTW-BWGL) - Polymerspezifischer Teil},
   year = {2022},
   url = {https://www.umweltbundesamt.de/sites/default/files/medien/5620/dokumente/ktw-bwgl_-_polymerspezifische_anlagen_-_3._aenderung_rev02_de.pdf},
   urldate = {2023-04-18}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Das ist ein Beispiel aus \citep{Basu2010,pines,westfahl:space}.
\printbibliography
\end{document}
Anstelle des Autors muss ja dann normalerweise o.V. erscheinen. Es würde also folgendermaßen aussehen:
o.V., 2022. Bewertungsgrundlage: Anlagen der Bewertungsgrundlage für Kunststoffe und andere organische Materialien im Kontakt mit Trinkwasser (KTW-BWGL) - Polymerspezifischer Teil. Umweltbundesamt. URL https://www.umweltbundesamt.de/sites/default/files/medien/5620/dokumente/ktw-bwgl_-_polymerspezifische_anlagen_-_3._aenderung_rev02_de.pdf (aufgerufen am 18.04.2023).

Wegen der Anführungszeichen versuche ich mal mit deinem Link weiterzukommen. Vielen Dank!

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

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Bei der Quelle hätte ich persönlich überhaupt keine Skrupel, das Umweltbundesamt als author anzugeben. Aber es mag andere Fälle geben, in denen es wirklich keinen author anzugeben gibt.

Das "o.V." finde ich auch immer etwas affig, aber gut, wenn es denn die Vorgabe ist. Also weg mit dem eh nicht definierten Makro labeltitle. Stattdessen definieren wir noauthor, das uns dann "o.V." anzeigt. Zusätzlich ändern wir noch die Sortierung so, dass Quellen ohne author unter "ov" einsortiert werden.
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  natbib=true,
  style=ext-numeric,
  sorting=nyt,
  labeldateparts=false,
  giveninits=true,
  innamebeforetitle=true,
  isbn=false,
  url=false,
  doi=false,
  eprint=false,
  related=false,
]{biblatex}

\DeclareNameAlias{sortname}{family-given}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}
\DeclareDelimAlias[bib]{nonameyeardelim}{nameyeardelim}
\DeclareDelimFormat[bib]{nametitledelim}{\addperiod\space}

\DeclareNameAlias{ineditor}{editor}
\DeclareNameAlias{bookauthor}{author}

\DeclareDelimFormat[bib,biblist]{innametitledelim}{\addcomma\space}

\newbibmacro*{date+extradate}{%
  \printdate}
\renewbibmacro*{issue+date}{%
  \iffieldundef{issue}
    {}
    {\printtext[parens]{%
       \printfield{issue}}}%
  \newunit}

\NewBibliographyString{noauthor}

\DefineBibliographyStrings{german}{
  noauthor = {{}o\adddot\addabthinspace V\adddot}
}

\newbibmacro*{noauthor}{\bibstring{noauthor}}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {\setunit{\printdelim{nameyeardelim}}}
       {\setunit{\printdelim{authortypedelim}}}%
     \iffieldundef{authortype}
       {}
       {\usebibmacro{authorstrg}%
        \setunit{\printdelim{nameyeardelim}}}}%
    {\usebibmacro{noauthor}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{editor}{%
  \usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
  \usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{noauthor}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{translator}{%
  \usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
  \usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{#1}%
     \clearname{translator}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\usebibmacro{noauthor}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}}

\renewbibmacro*{pubinstorg+location+date}[1]{%
  \printunit{\addperiod\space}%
  \printlist{#1}%
  \setunit*{\publocdelim}%
  \printlist{location}%
  \newunit}

\renewbibmacro*{location+date}{%
  \printlist{location}%
  \newunit}

\DeclareSortingTemplate{nyt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \literal{oV}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\begin{filecontents*}{\jobname.bib}
@incollection{Basu2010,
  author     = {Basu, Prabir},
  title      = {Biomass Characteristics},
  booktitle  = {Biomass Gasification and Pyrolysis},
  bookauthor = {Basu, Prabir},
  publisher  = {Academic Press},
  address    = {Boston},
  pages      = {27-63},
  ISBN       = {978-0-12-374988-8},
  DOI        = {10.1016/B978-0-12-374988-8.00002-7},
  url        = {https://www.sciencedirect.com/science/article/pii/B9780123749888000027},
  year       = {2010},
  type       = {Book Section},
}
@online{UBA2022,
  organization = {Umweltbundesamt},
  title        = {Bewertungsgrundlage:
                  Anlagen der Bewertungsgrundlage für Kunststoffe
                  und andere organische Materialien
                  im Kontakt mit Trinkwasser (KTW-BWGL)
                  - Polymerspezifischer Teil},
  year         = {2022},
  url          = {https://www.umweltbundesamt.de/sites/default/files/medien/5620/dokumente/ktw-bwgl_-_polymerspezifische_anlagen_-_3._aenderung_rev02_de.pdf},
  urldate      = {2023-04-18}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Das ist ein Beispiel aus \citep{Basu2010,pines,westfahl:space,UBA2022}.
\printbibliography
\end{document}

Tobi92
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 20. Jun 2023, 02:03

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von Tobi92 »

Vielen Dank für deine Mühe, das rettet meine Arbeit. Das Literaturverzeichnis sieht auch echt schon gut aus. In meinem Dokument ist noch ein Problem aufgetreten, welches mit der Umweltbundesamt Quelle im Minimalbeispiel nicht vorhanden ist. Die URL ragt über die Seitenränder hinaus. Obwohl ich das gesamte Minimalbeispiel in meinen Editor kopiert habe, wird die Quelle UBA2022 leider nicht erkannt. Daher kann ich auch kein neues Minimalbeispiel erstellen.

Außerdem wird bei Quellen mit mehr als 3 Autoren nur der Erstautor angegeben. Meine Vorgaben verlangen anstelle der Abkürzung u.a. den Namen aller Autoren. Wie lässt sich das noch realisieren?

Als letzter Punkt ist mir noch aufgefallen, dass manche Angaben kursiv geschrieben werden. Beispielsweise das Journal bei Artikeln. Wie lässt sich einstellen, dass in allen Quellen das gesamte Literaturverzeichnis nicht kursiv gesetzt ist?

Falls das ohne Minimalbeispiel nicht beantwortet werden kann, bitte ich um kurze Rückmeldung wie ich dieses wieder zum Laufen bekommen kann. Dann reiche ich es gerne nach :)

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

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Tobi92 hat geschrieben:
Mo 26. Jun 2023, 01:55
In meinem Dokument ist noch ein Problem aufgetreten, welches mit der Umweltbundesamt Quelle im Minimalbeispiel nicht vorhanden ist. Die URL ragt über die Seitenränder hinaus.
Zeilenumbrüche im Literaturverzeichnis sind ein leidiges Thema, da dort oftmals etwas längere schwer umbrechbare Passagen vorkommen und der Standardtrick für den Fließtext "formulier den Satz einfach um" keine Option ist. Ich habe bei TeX.SX mal einen längeren Beitrag über Probleme und mögliche Lösungen bei Zeilenumbrüchen im Literaturverzeichnis geschrieben: https://tex.stackexchange.com/q/442308/35864.

In diesem Fall liegt es nahe, dass das größte Problem das Umbrechen einer URL ist. Standardmäßig bricht url (das Paket das in LaTeX meist zur URL-Darstellung verwendet wird) nur an "schönen" Stellen um: Nach / und einigen anderen Satzzeichen. Für viele moderne URLs reicht das oftmals nicht aus, um ein gutes Ergebnis zu erzielen. Da müsste man dann auch Umbrüche an anderer Stelle zulassen. Es gibt bei TeX.SX eine Reihe von Diskussionen über Bordmittel, die biblatex dafür bereitstellt: https://tex.stackexchange.com/q/134191/35864, https://tex.stackexchange.com/q/117179/35864, https://tex.stackexchange.com/q/30857/35864, https://tex.stackexchange.com/q/466114/35864. Wenn Dir das zu kompliziert ist, kannst Du auch einfach das Paket xurl laden: https://tex.stackexchange.com/a/407368/35864. Dann sind überall in der URL Umbrüche erlaubt.
Tobi92 hat geschrieben:
Mo 26. Jun 2023, 01:55
Obwohl ich das gesamte Minimalbeispiel in meinen Editor kopiert habe, wird die Quelle UBA2022 leider nicht erkannt. Daher kann ich auch kein neues Minimalbeispiel erstellen.
Das hängt wahrscheinlich damit zusammen, dass wir in dem Minimalbeispiel die .bib-Datei mittels filecontents aus der .tex-Datei heraus erstellen. (Im echten Leben würde man die .bib-Datei ja einfach separat bearbeiten.) Standardmäßig überschreibt filecontents eine bereits vorhandene Datei nicht. Wenn Du also schon von einem früheren Experiment eine .bib-Datei hast, wird sie nicht mehr geändert. Du kannst filecontents mit dem optionalen Argument overwrite (also \begin{filecontents}[overwrite]{\jobname.bib}...\end{filecontents}) dazu bringen, eine vorhandene Datei doch zu überschreiben. Oder Du löschst die vorhandene .bib-Datei einfach selber. In jedem Fall möchte ich Dir dringend dazu raten, solche Experimente in einem eigens dafür angelegten neuen (initial leeren) Ordner zu machen, in dem sich keine wichtigen Dateien Deiner Arbeit befinden (oder nur Kopien, die wir auch verhunzen können).
Tobi92 hat geschrieben:
Mo 26. Jun 2023, 01:55
Außerdem wird bei Quellen mit mehr als 3 Autoren nur der Erstautor angegeben. Meine Vorgaben verlangen anstelle der Abkürzung u.a. den Namen aller Autoren. Wie lässt sich das noch realisieren?
Da gibt es die Option maxbibnames (für das Literaturverzeichnis) und maxnames (für Zitate und das Literaturverzeichnis; sowie maxcitenames nur für Zitate), die Du auf einen hohen Wert wie 999 setzen kannst, um die ersten 999 Namen angezeigt zu bekommen. https://tex.stackexchange.com/q/1554/35864.
Tobi92 hat geschrieben:
Mo 26. Jun 2023, 01:55
Als letzter Punkt ist mir noch aufgefallen, dass manche Angaben kursiv geschrieben werden. Beispielsweise das Journal bei Artikeln. Wie lässt sich einstellen, dass in allen Quellen das gesamte Literaturverzeichnis nicht kursiv gesetzt ist?
Ähnlich wie bei title haben auch die Felder journaltitle, booktitle, maintitle Voreinstellungen, die eine andere Formatierung vorsehen. Wenn Du einfach weder Anführungszeichen noch kursiven Text sehen willst, dann solltest Du wohl soetwas wie
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1\isdot}
\DeclareFieldFormat*{issuetitle}{#1}
\DeclareFieldFormat*{maintitle}{#1}
\DeclareFieldFormat*{booktitle}{#1}
probieren. Technisch gesehen brauchen wir die gesternte Version nur für title und citetitle (warum wir ihn da brauchen, wird in dem schon verlinkten https://tex.stackexchange.com/q/462133/35864 diskutiert), aber schaden tut er beim Rest auch nicht und so ist der Block konsistent.

Tobi92
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Di 20. Jun 2023, 02:03

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von Tobi92 »

Super, vielen Dank. Das hat alles funktioniert. Leider haben sich meine Vorgaben bei der Sortierung nochmal geändert. Das Jahr soll doch nicht an zweiter Stelle stehen. Ich habe einen Link zu den Vorgaben:
https://paperpile.com/s/chemical-engineering-journal-citation-style/

Wäre toll wenn ich hier noch ein letztes Mal Hilfe erhalten würde. Vielen Dank!

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

Re: Literaturverzeichnis an Vorgabe anpassen

Beitrag von MoeWe »

Da sind aber einige Unterschiede zu dem vorher gewünschten Stil. Man beachte auch, dass die Angaben auf der verlinkten Seite nicht zu einhundert Prozent mit den Vorgaben von der Journal-Webseite (https://www.elsevier.com/journals/chemical-engineering-journal/1385-8947/guide-for-authors#txt68000) übereinstimmen. Da sind zum Beispiel Doppelpunkte vor Seitenzahlen, die auf der Elsevier-Seite nicht zu finden sind. Allerdings ist die Elsevier-Seite selbst nicht sonderlich konsistent mit der Jahreszahl. Leider habe ich gerade von daheim keinen Zugriff auf aktuelle Artikel aus der Zeitschrift, um da mal den Zitierstil zu vergleichen.

Ich biete jetzt mal
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  natbib=true,
  style=ext-numeric,
  sorting=nyt,
  labeldateparts=false,
  giveninits=true,
  innamebeforetitle=true,
  isbn=false,
  url=false,
  doi=false,
  eprint=false,
  related=false,
]{biblatex}

\renewcommand*{\newunitpunct}{\addcomma\space}

\DeclareNameAlias{sortname}{given-family}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

\DeclareNameAlias{ineditor}{editor}
\DeclareNameAlias{bookauthor}{author}


\NewBibliographyString{noauthor}

\DefineBibliographyStrings{german}{
  noauthor = {{}o\adddot\addabthinspace V\adddot}
}

\newbibmacro*{noauthor}{\bibstring{noauthor}}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {}
       {\setunit{\printdelim{authortypedelim}}%
        \usebibmacro{authorstrg}}}
    {\usebibmacro{noauthor}}}

\renewbibmacro*{editor}{%
  \usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
  \usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}}%
    {\usebibmacro{noauthor}}}

\renewbibmacro*{translator}{%
  \usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
  \usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{#1}%
     \clearname{translator}}%
    {\usebibmacro{noauthor}}}

\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1\isdot}
\DeclareFieldFormat*{issuetitle}{#1}
\DeclareFieldFormat*{maintitle}{#1}
\DeclareFieldFormat*{booktitle}{#1}

\renewbibmacro*{pubinstorg+location+date}[1]{%
  \printlist{#1}%
  \setunit*{\publocdelim}%
  \printlist{location}%
  \setunit*{\locdatedelim}%
  \usebibmacro{date}%
  \newunit}

\DeclareSortingTemplate{nyt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \literal{oV}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\begin{filecontents*}{\jobname.bib}
@incollection{Basu2010,
  author     = {Basu, Prabir},
  title      = {Biomass Characteristics},
  booktitle  = {Biomass Gasification and Pyrolysis},
  bookauthor = {Basu, Prabir},
  publisher  = {Academic Press},
  address    = {Boston},
  pages      = {27-63},
  ISBN       = {978-0-12-374988-8},
  DOI        = {10.1016/B978-0-12-374988-8.00002-7},
  url        = {https://www.sciencedirect.com/science/article/pii/B9780123749888000027},
  year       = {2010},
  type       = {Book Section},
}
@online{UBA2022,
  organization = {Umweltbundesamt},
  title        = {Bewertungsgrundlage:
                  Anlagen der Bewertungsgrundlage für Kunststoffe
                  und andere organische Materialien
                  im Kontakt mit Trinkwasser (KTW-BWGL)
                  - Polymerspezifischer Teil},
  year         = {2022},
  url          = {https://www.umweltbundesamt.de/sites/default/files/medien/5620/dokumente/ktw-bwgl_-_polymerspezifische_anlagen_-_3._aenderung_rev02_de.pdf},
  urldate      = {2023-04-18}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Das ist ein Beispiel aus \citep{Basu2010,pines,westfahl:space,UBA2022,sigfridsson}.
\printbibliography
\end{document}
an.

Antworten