Klammern um "issue" entfernen in @Article

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


mogi
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Do 8. Mär 2018, 15:56

Klammern um "issue" entfernen in @Article

Beitrag von mogi »

Hallo zusammen :D

ich möchte gerne die Angabe der Heftnummer einer Zeitschrift ohne Klammern anzeigen. Im vorliegenden Fall also ...Biotechnology for Biofuels 7. Jg., Heft 1, S. 35–45. Bisher sieht der Eintrag so aus: ...Biotechnology for Biofuels 7. Jg., (Heft 1), S. 35–45. (Siehe Beispiel).

Nach einiger Recherche habe ich es mit folgendem Code versucht:
\renewbibmacro*{issue+date}{%
	\iflabeldateisdate
		{}
		{\printtext[parens]{%
			\printfield{issue}%
			\setunit*{\addspace}%
			\printdate}}}
Das klappt aber leider nicht. Hat jemand eine Idee?
\begin{filecontents}{mybib.bib}

@Article{Ahlgren2014,
  author    = {Ahlgren, Serina and Di Lucia, Lorenzo},
  title     = {Indirect land use changes of biofuel production {\textendash} a review of modelling efforts and policy developments in the European Union},
  journal   = {Biotechnology for Biofuels},
  year      = {2014},
  volume    = {7},
  issue     = {1},
  pages     = {35--45},
  doi       = {10.1186/1754-6834-7-35},
  publisher = {Springer Nature},
}
\end{filecontents}

\documentclass[12pt,
	paper=a4,
	headings=normal
	]{scrreprt}		
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
	style=authoryear,
	backend=biber, 
	maxcitenames=2, 				%Anzahl der im Verweis genannten Autoren
	maxbibnames=99,					%Unbegrenzte Darstellung im Lit-Verz
	doi=false,url=false,isbn=false,
	sorting=nyt,					%Sortikerung Einträge nach Name, Jahr, Titel
	block=space						%Abstand zwischen den Litverz-Einträgen
	]{biblatex}

\DefineBibliographyStrings{ngerman}{%
	andothers = {{et\,al.\adddot}},
	issue     = {Heft}} 
\DeclareFieldFormat[article]{title}{#1\addcomma}
\DeclareFieldFormat[article]{journal}{#1 \addcomma}
\DeclareFieldFormat[article]{volume}{#1\adddot \addspace \bibstring{jourvol} \addcomma}
\DeclareFieldFormat[article]{issue}{\bibstring{issue} \addspace #1}

\renewcommand{\labelnamepunct}{\addcolon\space}%Doppelpunkt nach letztem Autor
\renewcommand*{\multinamedelim}{\space/\space}%Schrägstrich zwischen Autoren
\renewcommand*{\finalnamedelim}{\space/\space}%Schrägstrich vor letztem Autor

\bibliography{mybib}

\begin{document}
\cite{Ahlgren2014}
\printbibliography
\end{document}

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

Beitrag von Bartman »

Wegen der Leerzeile vor dem Eintragstyp werden Literaturverweis und -verzeichnis nicht ausgegeben.

Ich habe Dein Beispiel mal etwas überarbeitet:
\begin{filecontents}{\jobname.bib}
@Article{Ahlgren2014,
	author       = {Ahlgren, Serina and Di Lucia, Lorenzo},
	title        = {Indirect land use changes of biofuel production},
	subtitle     = {A review of modelling efforts and policy developments in the European Union},
	journaltitle = {Biotechnology for Biofuels},
	date         = {2014},
	volume       = {7},
	issue        = {1},
	pages        = {35-45},
	doi          = {10.1186/1754-6834-7-35},
	publisher    = {Springer Nature}
}
\end{filecontents}

\documentclass[
	fontsize=12pt,
	headings=normal
]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
	style=authoryear,             % Stil setzt sorting=nyt
	maxcitenames=2,             %Anzahl der im Verweis genannten Autoren
	maxbibnames=99,               %Unbegrenzte Darstellung im Lit-Verz
	doi=false,
	url=false,
	isbn=false,
%	sorting=nyt,               %Sortikerung Einträge nach Name, Jahr, Titel
	block=space                  %Abstand zwischen den Litverz-Einträgen
]{biblatex}

\DefineBibliographyStrings{german}{%
	andothers = {et\,al.\adddot},
	issue     = {Heft}
} 
\DeclareFieldFormat[article]{title}{#1\addcomma}
\DeclareFieldFormat[article]{journaltitle}{#1 \addcomma}
\DeclareFieldFormat[article]{volume}{#1\adddot \addspace \bibstring{jourvol} \addcomma}
\DeclareFieldFormat[article]{issue}{\bibstring{issue} \addspace #1}

%\renewcommand{\labelnamepunct}{\addcolon\space}
%\renewcommand*{\multinamedelim}{\addspace/\space}
%\renewcommand*{\finalnamedelim}{\addspace/\space}
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}% Doppelpunkt nach letztem Autor
\DeclareDelimFormat{multinamedelim}{\addspace/\space}% Schrägstrich zwischen Autoren
\DeclareDelimAlias{finalnamedelim}{multinamedelim}% Schrägstrich vor letztem Autor

\addbibresource{\jobname.bib}% Abschnitt 3.7.1 Resources in biblatex.pdf

\begin{document}
\cite{Ahlgren2014}
\printbibliography
\end{document}
Das Beispiel dürfte mit einer aktuellen TeX-Distribution übersetzbar sein, aber wegen des Befehls \DeclareDelimAlias noch nicht mit Overleaf.

Gast

Beitrag von Gast »

Das bessere Feld wäre hier number statt issue. Die zwei sind zwar ähnlich, favorisiert ist allerdings eindeutig number, egal ob der Verlag es nun "issue" oder "Heftnummer" nennt. Siehe auch zum Beispiel https://tex.stackexchange.com/q/418590/35864 https://tex.stackexchange.com/q/288149/35864

Ich finde es außerdem etwas unschön die Zeichensetzung nach Feldern in \DeclareFieldFormat zu erledigen, das \DeclareFieldFormat[article]{journal} tut auch gar nichts, denn das betreffende Feld heißt intern journaltitle.
\begin{filecontents}{\jobname.bib}
@article{Ahlgren2014,
  author       = {Ahlgren, Serina and Di Lucia, Lorenzo},
  title        = {Indirect land use changes of biofuel production},
  subtitle     = {A review of modelling efforts and policy developments in the European Union},
  journaltitle = {Biotechnology for Biofuels},
  date         = {2014},
  volume       = {7},
  number       = {1},
  pages        = {35-45},
  doi          = {10.1186/1754-6834-7-35},
}
\end{filecontents}

\documentclass[
   fontsize=12pt,
   headings=normal
]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[
   style=authoryear,
   maxcitenames=2,
   maxbibnames=999,
   doi=false,
   url=false,
   isbn=false,
   block=space,% <- sicher, dass Du das brauchst? Ist der Standard block=none nicht genug?
]{biblatex}

\DefineBibliographyStrings{german}{%
  andothers = {{et\,al.\adddot}},
  issue     = {Heft},
}

\renewcommand*{\newunitpunct}{\addcomma\space}% <- vielleicht etwas zu radikal, da müsste man dann mal sehen, wie die anderen Typen formatiert werden sollen

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\DeclareDelimFormat{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\DeclareFieldFormat[article]{title}{#1}
\DeclareFieldFormat[article,periodical]{volume}{\mkbibordinal{#1}\addnbspace\bibstring{jourvol}}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{issue}\addnbspace#1}

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit*{\addcomma\space}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}

\addbibresource{\jobname.bib}

\begin{document}
\cite{Ahlgren2014}
\printbibliography
\end{document}

mogi
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Do 8. Mär 2018, 15:56

Beitrag von mogi »

Bartman hat geschrieben:Das Beispiel dürfte mit einer aktuellen TeX-Distribution übersetzbar sein, aber wegen des Befehls \DeclareDelimAlias noch nicht mit Overleaf.
Ist das ein dezenter Hinweis auf die Unzulänglichkeiten als Minimalbeispiel? Falls ja: Ich wusste nicht, dass das Minimalbeispiel mit Overleaf laufen muss, also danke für die Korrektur. Falls nein: Meine Frage war ja eigentlich, wie ich jetzt die Klammern aus dem Literaturverzeichnis bekomme.

mogi
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Do 8. Mär 2018, 15:56

Beitrag von mogi »

Das bessere Feld wäre hier number statt issue.
Gut zu wissen! Ich weiß gar nicht, wie ich darauf gekommen bin, issue zu verwenden. Jedenfalls habe ich das für das Beispiel extra geändert und bin jetzt froh, meine anderen Artikel nicht mehr von number in issue ändern zu müssen.
Ich finde es außerdem etwas unschön die Zeichensetzung nach Feldern in \DeclareFieldFormat zu erledigen
Ja da stimme ich dir zu, jedoch weiß ich es nicht besser und solange es funktionierte, habe ich lieber die Finger davon gelassen. Ist \renewcommand*{\newunitpunct}{\addcomma\space} also die allgemeine Definition? Ich müsste also dann nur zum Schluss die Punkte abändern!?!
Danke für die Lösung meines Hauptanliegens und die verschiedenen Ergänzungen bzw. Anmerkungen!!

Gast

Beitrag von Gast »

Ob \renewcommand*{\newunitpunct}{\addcomma\space} das Richtige ist, kann ich Dir leider nicht mit abschließender Gewissheit sagen. Das hängt insbesondere davon ab, wie andere Typen formatiert werden sollen. In dem Beispiel gab es die richtigen Ergebnisse, aber schon wenn man ein paar andere Dinge ändert (eine DOI anzeigt zum Beispiel) ist die Ausgabe etwas anders.

Standardmäßig setzt biblatex fast überall \newunitpunct (mittels \newunit), wenn Zeichensetzung erforderlich ist. An einigen Stellen gibt es speziell definierbare Delimiter oder Makros (z.B. nametitledelim vor dem Titel, \bibpagespunct vor einer Seitenangabe) oder fest einprogrammierte andere Zeichen. Eine Änderung von \newunitpunct hat also weitreichende Folgen, die allerdings nicht in jedem Fall sofort sichtbar sind, wenn stattdessen die Ausnahmen einen Großteil der Zeichensetzung erledigen.

Statt andothers = {et\,al.\adddot}, wäre mir übrigens
   andothers = {et\addabbrvspace al\adddot},
lieber (von mir aus auch mit \addabthinspace oder gar \addnbthinspace statt \addabbrvspace aber bitte nur mit \adddot ohne Punkt davor - \adddot bringt den Punkt nämlich eigentlich selbst mit).

mogi
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Do 8. Mär 2018, 15:56

Beitrag von mogi »

Ich habe jetzt meine ganzen DeclareFieldFormat's ersetzt durch \renewcommand*{\newunitpunct}{\addcomma\space} (ich hatte nämlich für meine anderen Typen auch überall den oberen Befehl benutzt) und das funktioniert prima. Deine anderen Vorschläge übernehme ich auch. Die Abstände schaue muss ich mir nochmal anschauen, aber vorher hatte ich das Gefühl, dass die LV-Einträge gar keinen Abstand hatten.
Vielen Dank nochmal an alle für die Hilfe!

Gast

Beitrag von Gast »

block=space sorgt nicht für den Abstand zwischen unterschiedlichen Einträgen des Verzeichnisses, dafür ist primär \bibitemsep (und für tolle Effekte auch \bibnamesep und \bibinitsep) zuständig. Die block-Option beeinflusst dagegen die Darstellung von größeren Blöcken von Information innerhalb eines Eintrages.
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber, block=none]{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{sigfridsson,worman,vizedom:related}
\printbibliography[title={\ttfamily block=none}]
\makeatletter\blx@opt@block@space\makeatletter% <- nicht für den Hausgebrauch, imitiert block=space
\printbibliography[title={\ttfamily block=space}]
\makeatletter\blx@opt@block@par\makeatletter% <- nicht für den Hausgebrauch, imitiert block=par
\printbibliography[title={\ttfamily block=par}]
\makeatletter\blx@opt@block@nbpar\makeatletter% <- nicht für den Hausgebrauch, imitiert block=nbpar
\printbibliography[title={\ttfamily block=nbpar}]
\makeatletter\blx@opt@block@ragged\makeatletter% <- nicht für den Hausgebrauch, imitiert block=ragged
\printbibliography[title={\ttfamily block=ragged}]
\end{document}
Der Unterschied zwischen block=none und block=space wird für mich aber nur im direkten Vergleich sichtbar.

Antworten