Format von Reihen anpassen

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


Felix.Herauten
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Do 3. Mär 2022, 21:23

Format von Reihen anpassen

Beitrag von Felix.Herauten »

Hallo,

ich habe ein Problem mit dem Format von Reihen bei Monographien. Der Standard ist wie folgt:
\documentclass[ngerman]{scrbook}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear-icomp,
  innamebeforetitle=true,
]{biblatex}

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}

\begin{filecontents*}{\jobname.bib}
@book{Mustermann2020,
  author = {Mustermann, Max},
  title = {Testbuch},
  series = {Grundlagen der Testwissenschaft},
  volume = {1},
  year = {2020},
  publisher = {Springer},
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
Lorem ipsum \autocite{Mustermann2020}

\printbibliography
\end{document}
Dabei wird die Reihe, in der die Monographie erschienen ist, (i) einfach zwischen Titel und Verlag gesetzt, (ii) ohne Klammern drum, (iii) mit Punkt als Trennzeichen, (iv) mit "Bd." vor der Reihennr. und (v) mit der Reihenfolge "Nr." "Reihe".

Also hier die Standardumsetzung:
Mustermann, Max (2020): Testbuch. Bd. 1. Grundlagen der Testwissenschaft. Springer.

Ich bräuchte dagegen:
Mustermann, Max (2020): Testbuch. Springer [Grundlagen der Testwissenschaft; 1].

Also im Vergleich zum Standard (i) die Reihenangaben hinter dem Verlag, (ii) mit eckigen Klammern drum, (iii) mit Semikolon als Trennzeichen, (iv) ohne "Bd." vor der Nr. und (v) zuerst Reihentitel dann Nummer.

Weiß jemand, wie man das umsetzen kann?

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

Re: Format von Reihen anpassen

Beitrag von MoeWe »

Die Bandnummer innerhalb einer Reihe gehört in das number-Feld und nicht in das volume-Feld. Letzteres wird zusammen mit maintitle genutzt (siehe z.B. https://tex.stackexchange.com/q/457598/35864).

Dann kannst Du, da Du einen biblatex-ext-Stil nutzt, die Standardausgabe von Reihe und Nummer unterdrücken, indem Du das Bibmakro series+number umdefinierst. Die Ausgabe wird dann über pubinstorg+location+date besorgt, damit wir die Felder hinter den Verlag schmuggeln.
\documentclass[ngerman]{scrbook}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear-icomp,
  innamebeforetitle=true,
]{biblatex}

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}

\renewbibmacro{series+number}{}

\renewbibmacro*{pubinstorg+location+date}[1]{%
  \printlist{location}%
  \iflistundef{#1}
    {\setunit*{\locdatedelim}}
    {\setunit*{\locpubdelim}}%
  \printlist{#1}%
  \setunit*{\pubdatedelim}%
  \usebibmacro{date}%
  \setunit{\addspace}%
  \iffieldundef{series}
    {}
    {\printtext[brackets]{%
       \printfield{series}%
       \setunit{\addsemicolon\space}%
       \printfield{number}}}%
  \newunit}

\begin{filecontents*}{\jobname.bib}
@book{Mustermann2020,
  author    = {Mustermann, Max},
  title     = {Testbuch},
  series    = {Grundlagen der Testwissenschaft},
  number    = {1},
  year      = {2020},
  publisher = {Springer},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
Lorem ipsum \autocite{Mustermann2020}

\printbibliography
\end{document}

Felix.Herauten
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Do 3. Mär 2022, 21:23

Re: Format von Reihen anpassen

Beitrag von Felix.Herauten »

Ich danke Dir vielmals für Deine wieder mal sehr hilfreiche Antwort.

Ich muss mir das auf jeden Fall mal sehr genau ansehen, um das zu verstehen. Denn ich will ja immer verstehen, was ich da in mein Dokument einfügen und nicht nur fertige Lösungen einsetzen.

Echt klasse, was man alles anpassen kann, auch wenn es in diesem Fall dann doch recht komplex wird... Aber wie gesagt: ich werde da ein wenig experimentieren und mir das Zeile für Zeile ansehen und versuchen zu verstehen.

Aber so oder so schon mal vielen Dank.

Felix.Herauten
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Do 3. Mär 2022, 21:23

Re: Format von Reihen anpassen

Beitrag von Felix.Herauten »

Ich habe jetzt nochmal eine Nachfrage dazu.

Wenn ich den Eintrag manuell vom volume-Feld in das number-Feld schiebe, funktioniert es zwar. Aber mein Problem ist folgendes:
Ich nutze Citavi und das setzt leider die Bandnr. der Reihe immer ins volume-Feld. Ich müsste jetzt also jeden einzelnen Titel kontrollieren und dann im Bibfile jeden Eintrag manuell korrigieren.

Ich dachte mir, dass ich dann einfach auch das volume im Befehl zum Unterdrücken einfüge. Also statt Deinem
\renewbibmacro{series+number}{}

habe ich dann geschrieben:
\renewbibmacro{series+number+volume}{}

Das unterdrückt auch den Reihentitel, aber leider nicht die Nr. Und ich würde wie gesagt ungern alle Bibfile-Einträge einzeln anpassen/korrigieren müssen. Wie kann ich auch das (wenn auch offenbar von Citavi falsch gesetzte) Volume unterdrücken?

Hier das angepasste Minimalbeispiel:
\documentclass[ngerman]{scrbook}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear-icomp,
  innamebeforetitle=true,
]{biblatex}

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\renewbibmacro{series+number+volume}{}

\begin{filecontents*}{\jobname.bib}
@book{Mustermann2020,
  author = {Mustermann, Max},
  title = {Testbuch},
  series = {Grundlagen der Testwissenschaft},
  volume = {1},
  year = {2020},
  publisher = {Springer},
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
Lorem ipsum \autocite{Mustermann2020}

\printbibliography
\end{document}
PS:
Aus irgendeinem Grund erscheint jetzt hier sogar der Reihentitel. Aber bei mir in der richtigen, großen Datei funktioniert zumindest das Unterdrücken des Reihentitels mit diesem Befehl und es geht nur noch um die Nr.

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

Re: Format von Reihen anpassen

Beitrag von MoeWe »

Im Standard-biblatex-datamodel gehört die Reihennummer in das number-Feld. In volume ist es schlichtweg fehl am Platze. Das ist bei base-BibTeX-Stilen (und ich vermute vielen anderen auch) noch anders. Dort ist volume richtig.

Wenn Citavi von sich behauptet, biblatex zu unterstützen, sollte es die Reihennummer nach number exportieren. Vielleicht gibt es eine Einstellung beim Export, mit der Du zwischen "BibTeX" und "biblatex" wählen kannst. Wenn das nicht der Fall ist und das Exportformat fix ist und nicht geändert werden kann, dann ist Citavi vielleicht nicht die beste Wahl. Ich kenne mich mit Literaturverwaltungen nicht so gut aus, aber von [Zotero](https://www.zotero.org/) (evtl. zusammen mit Better BibTeX) habe ich bis jetzt am meisten Gutes gehört. Das ist open Source und die Entwickler*innen scheinen recht flink zu sein.

Wir können natürlich versuchen, zu erraten, dass bei vorhandener series das volume-Feld eigentlich number sein sollte. Aber das funktioniert eigentlich nur, wenn wir annehmen, dass Du maintitle nicht benutzt und Du eben mit volume nie eine echte Bandnummer meinst.
\documentclass[ngerman]{scrbook}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  style=ext-authoryear-icomp,
  innamebeforetitle=true,
]{biblatex}

\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\renewbibmacro{series+number}{}

\DeclareSourcemap{
  \maps[datatype = bibtex]{
    \map{
      \pernottype{article}
      \pernottype{periodical}
      \step[fieldsource=series, final]
      \step[notfield=maintitle, final]
      \step[fieldsource=volume, fieldtarget=number]
    }
  }
}

\begin{filecontents*}{\jobname.bib}
@book{Mustermann2020,
  author    = {Mustermann, Max},
  title     = {Testbuch},
  series    = {Grundlagen der Testwissenschaft},
  volume    = {1},
  year      = {2020},
  publisher = {Springer},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,Mustermann2020}

\printbibliography
\end{document}
Der Versuch mit
\renewbibmacro{series+number+volume}{}
funktionierte nicht, da \renewbibmacro{<Bibmakroname>} ein Bibmakro umdefinieren soll, es hier aber kein Bibmakro namens series+number+volume gibt. Sinnvollerweise sollte das Bibmakro aber zum Umdefinieren existieren (obwohl biblatex nur warnt, wenn das Bibmakro unbekannt ist und keinen Fehler wirft wie \renewcommand). Eine Auswirkung auf die Ausgabe hat die Zeile in der Regel nur, wenn das Bibmakro wirklich existiert und auch genutzt wird. Der genutzte Stil definiert aber kein Bibmakro dieses Namens und nutzt es auch nicht. (Der Stil kennt und nutzt aber series+number.) Welche Bibmakros es gibt und was sie tun, sieht man am besten im Quellcode der Stile nach.

Keinesfalls ist es so, dass \renewbibmacro einfach eine mit + getrennte Liste von Feldern entgegennimmt, die Du loswerden möchtest. Bevor Du \renewbibmacro nutzt, musst Du nachsehen, ob es ein enstprechendes Bibmakro gibt.
Zuletzt geändert von MoeWe am Do 28. Jul 2022, 17:59, insgesamt 1-mal geändert.

gast.

Re: Format von Reihen anpassen

Beitrag von gast. »

MoeWe hat geschrieben:
Do 28. Jul 2022, 07:47
Wenn Citavi von sich behauptet, biblatex zu unterstützen, sollte es die Reihennummer nach number exportieren. Vielleicht gibt es eine Einstellung beim Export, mit der Du zwischen "BibTeX" und "biblatex" wählen kannst.
Die gibt es. Leider verwenden trotzdem viele Citavi-Anwender den bibtex-Export, obwohl sie biblatex verwenden. Das hat aber diverse Nachteile. Beispielsweise werden dann Umlaute auch nicht als UTF8 exportiert, Datumsformate können falsch sein u. v. m.

Felix.Herauten
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Do 3. Mär 2022, 21:23

Re: Format von Reihen anpassen

Beitrag von Felix.Herauten »

@MoeWe:

Vielen Dank für die Erklärungen. Ich dachte, man könne da einfach alles, was man unterdrücken will, eintragen. Ich war mir aber auch nicht bewusst, dass die Unterdrückung des Volumes zu Problemen führen kann, weil man das an anderen Stellen vielleicht wirklich haben will.

Zotero hatte ich mir tatsächlich am Anfang mal angesehen, aber da hatten mich ein paar Sachen so sehr gestört, dass ich mich dann doch für Citavi entschieden habe, zumal das bei uns der Standard ist und man da auch viel Hilfe unter Kollegen findet, wenn man sie mal braucht. Und jetzt im Nachhinein nochmal die ganze Literaturdatenbank von Citavi zu Zotero zu transferieren, habe ich ehrlich gesagt etwas Angst vor. Zumal ich in Citavi auch neben den bibliographischen Daten auch Notizen, Anhänge, Leihfristen, etc. drin habe.

Ich werde Deine Lösung mal ausprobieren, gucke aber vorher mal, ob ich innerhalb von Citavi das Problem gelöst bekomme, was ja auf jeden Fall die elegantere und bessere Lösung wäre, die Ursachen zu beheben, statt an den Symptomen rumzuwursteln.

@gast:

Vielen Dank auch Dir für den Hinweis. Ich habe tatsächlich immer nach BibTex exportiert statt nach Biblatex (wobei ich mit Umlauten u.ä. auch nie Probleme hatte). Der Export nach Biblatex ist da auch nicht standardmäßig in der Export-Liste, sondern das muss man manuell hinzufügen; ist kein Problem, muss man aber auch erst mal drauf kommen.

Habe ich auch probiert, aber auch damit ist weiterhin das Problem, dass zwar der Reihentitel verschwindet, aber dafür die Nr. innerhalb der Reihe erhalten bleibt. Das scheint Citavi also auch beim Biblatex-Export falsch zu machen. Und es kommen sogar noch neue Probleme dazu, dass nämlich beim biblatex-Export plötzlich in meinem Literaturverzeichnis auch solche Dinge wie Sprache des Werks, Gesamtseitenzahl, etc. stehen, die bisher nie dort erschienen und das auch nicht sollen.

Da das also das Problem nicht löst und sogar noch neue verursacht, werde ich wohl beim klassischen BibTex-Export bleiben. Oder ist das problematisch?

Ich hatte auch schon überlegt, ob ich nicht einfach bei den entsprechenden Titeln in Citavi die Reihen und Reihen-Nr. manuell aus den entsprechenden Feldern löschen soll. Ist natürlich zusätzlicher Aufwand und das mache ich nicht gerne, weil ich es schade finde, solche eigentlich korrekten Infos zu löschen, die dann für immer verschwunden sind (weil ich ja nicht nochmal alle Bücher, die ich teilweise gar nicht mehr habe, händisch nachgucke, ob sie in einer Reihe sind).

Ich werde mal alle Optionen durchdenken und auch nach einer Lösung innerhalb Citavis suchen. Wenn ich mehr weiß, melde ich mich nochmal.

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

Re: Format von Reihen anpassen

Beitrag von MoeWe »

Die Standard-Herangehensweise, um ein Feld echt loszuwerden, ist übrigens eine andere als die hier gezeigte. In der ursprünglichen Frage war noch gewünscht, Reihe und Nummer weiter hinten auszugeben. Daher haben wir das Bibmakro, das eigentlich für die Ausgabe zuständig ist, umdefiniert und dann in einem anderen Bibmakro die Ausgabe wiederhergestellt.

Wenn es gewünscht ist, die Ausgabe ganz zu unterdrücken, geht man normalerweise wie in https://tex.stackexchange.com/q/32930/35864 vor (wobei ich die Methode mit der \DeclareSourcemap im Allgemeinen für wesentlich eleganter als die \clearfield-Methode halte).

Felix.Herauten
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 63
Registriert: Do 3. Mär 2022, 21:23

Re: Format von Reihen anpassen

Beitrag von Felix.Herauten »

So, ich habe das Problem gelöst und wollte das wie versprochen hier rein schreiben, falls jemand mal dasselbe Problem haben sollte. Glücklicherweise hat der Support von Citavi sehr schnell reagiert.

Also: im Export-Dialog von Citavi gibt es einen relativ unscheinbaren Link, der es erlaubt, die Datenfelder beim Export anzupassen. Dort kann man in einer grafischen Oberfläche für jeden Publikationstyp genau festlegen, was exportiert werden soll und in welches Feld das kommen soll. Dort stand dann auch tatsächlich bei Reihen-Nr. "volume" statt "number" eingetragen. Ich habe das einfach geändert und schon hat es mit den Tipps von MoeWe funktioniert. Und ich habe meine Export-Vorlage entsprechend angepasst, so dass das jetzt immer so exportiert wird.

Wäre natürlich schön, wenn Citavi diesen Fehler generell beheben würde, aber ich habe das jetzt für mich schon mal gelöst. Auch dank der Hinweise hier, denn sonst wäre ich nie darauf gekommen, dass das an einem falschen Feld liegt.

@gast:
Das mit dem Zeichensatz ist übrigens kein Problem mehr. Müssen die irgendwann behoben haben. Denn in dem oben beschriebenen Dialog kann man auch ganz viele andere Sachen einstellen, u.a. auch den Zeichensatz. Und da stand auch beim BibTex-Export schon UTF-8 drin. Haben die vielleicht mal irgendwann bei einem Update schon angepasst. Könnte man ansonsten aber auch dort ändern.

@MoeWe:
Ja, das Ziel ist immer noch, dass die Reihentitel und -nr am Ende in eckiger Klammer stehen. Aber da ich ja parallel zu den "Formalia" auch am Text schreibe und die ganzen Untersuchungen dafür machen muss, kann ich solche Dinge immer nur Schritt für Schritt machen. Und ich will ja auch nie einfach nur kopieren, sondern auch (wenigstens halbwegs) verstehen, was da passiert. Auch das werde ich aber noch umsetzen, kann aber noch ein paar Wochen dauern. Jetzt war mir erst mal wichtig, dass dieser erste Schritt schon mal funktioniert. Die weiteren Schritte folgen dann.

Vielen Dank auch für den Tipp, wie man Felder loswerden kann, wenn es nicht darum geht, die anders wieder zu nutzen. Auch wenn ich hier nach Deiner ersten Verfahrensweise arbeiten werde, weil ich die Felder ja später noch anderswo nutzen will, ist das interessant. Vielleicht brauche ich das ja auch mal.

Deshalb Euch beiden vielen Dank für die vielen Hinweise, Tipps und Lösungsvorschläge. Ich hoffe, dass dann demnächst das Umleiten in eckige Klammern am Ende funktionieren wird. Aber jetzt, wo die Felder korrekt belegt sind, müsste das funktionieren.

Antworten