\bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

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

\bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von Felix.Herauten »

Hallo,

ich wollte bei den Zitationen im Text zwischen Jahr und Seitenzahl einen Doppelpunkt, damit beim Nennen mehrerer Seiten nicht sowas entsteht: (vgl. Müller 2004, 123, 145), sondern sowas (vgl. Müller 2004: 123, 145).

Dank Eurer Hilfe beim nametitledelim wollte ich jetzt mit dem im Biblatex-Handbuch gefundenen \bibpagespunct einen Doppelpunkt an dieser Stelle setzen durch \bibpagespunct{\addcolon\space}

Aber dann bekomme ich beim Kompilieren eine Fehlermeldung.
\documentclass{scrartcl}  
\usepackage[backend=biber,style=authoryear-icomp]{biblatex}

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

%% Das ist mein Versuch, das zu ändern:
\bibpagespunct{\addcolon\space}

\begin{filecontents*}{\jobname.bib}
@article{Beispiel2010,
  author  = {Max Muster},
  title   = {goLaTeX Wiki-Beispiel},
  journal = {LaTeX Journal},
  year    = {2010},
  pages   = {1-10},
} 
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Dieser Beispieltext zitiert \autocite[vgl.][3, 6, 9]{Beispiel2010} einen Artikel aus der
Bib-Datei, welche in diesem Dokument angelegt wurde.

Lorem \autocite[][123, 145]{sigfridsson}

\printbibliography
\end{document}

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

Re: \bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von Bartman »

Der argumentlose Befehl \bibpagespunct bezieht sich auf das Literaturverzeichnis und nicht auf das Zitat. Was Du suchst, ist der Name für das Argument des bereits benutzten Befehls \DeclareDelimFormat. Dieser benötigt den Namen postnote und wird, wie zum Anliegen passend, um delim erweitert.

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

Re: \bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von MoeWe »

\bibpagespunct ist der Befehl, der das Zeichen vor dem pages-Feld im Literaturverzeichnis kontrolliert. Dieser Befehl ist ein ganz normales Makro (ohne Argumente), das die Zeichensetzung beinhaltet. Daher muss es auch mit \renewcommand umdefiniert werden. Es ist nicht genug, den Befehl einfach so in die Präambel zu schreiben.

Syntaktisch richtiger wäre also
\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear-icomp]{biblatex}

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

\renewcommand*\bibpagespunct{\addcolon\space}

\begin{filecontents*}{\jobname.bib}
@article{Beispiel2010,
  author  = {Max Muster},
  title   = {goLaTeX Wiki-Beispiel},
  journal = {LaTeX Journal},
  year    = {2010},
  pages   = {1-10},
} 
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Dieser Beispieltext zitiert \autocite[vgl.][3, 6, 9]{Beispiel2010} einen Artikel aus der
Bib-Datei, welche in diesem Dokument angelegt wurde.

Lorem \autocite[][123, 145]{sigfridsson}

\printbibliography
\end{document}
Soweit ich das verstehe, ist das aber gar nicht der gewünschte Effekt. Die Zeichensetzung vor der Seitenzahl im Zitat wird nämlich von postnotedelim besorgt. Das zweite optionale Argument der \...cite-Befehle wird von biblatex als postnote bezeichnet und muss nicht per se eine Seitenzahl beinhalten. postnotedelim ist wieder ein context sensitive delimiter, der mit \DeclareDelimFormat umdefiniert werden sollte.

Wenn wie in der Frage gezeigt das "S."/"p."/"pp." für die Seitenzahlen wegfallen soll, dann müsstest Du dafür das postnote field format umdefinieren.
\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=authoryear-icomp]{biblatex}

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

\DeclareDelimFormat{postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}

\begin{filecontents*}{\jobname.bib}
@article{Beispiel2010,
  author  = {Max Muster},
  title   = {goLaTeX Wiki-Beispiel},
  journal = {LaTeX Journal},
  year    = {2010},
  pages   = {1-10},
} 
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Dieser Beispieltext zitiert \autocite[vgl.][3, 6, 9]{Beispiel2010} einen Artikel aus der
Bib-Datei, welche in diesem Dokument angelegt wurde.

Lorem \autocite[][123, 145]{sigfridsson}

\printbibliography
\end{document}

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

Re: \bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von Felix.Herauten »

Ich danke euch vielmals. Das hat wieder mal mein Problem gelöst.

Den Befehl, um die Angabe des "S." vor der Seitenzahl zu unterdrücken hatte ich auch schon eher gefunden und bei mir integriert. Hatte ich nur beim MWE weggelassen. Dennoch Danke dafür.

Auch wenn das Problem jetzt gelöst ist, nochmal zu meinem Verständnis:
Woran erkenne ich denn, ob ein Befehl ein Makro ist, das per renewcommand umdefiniert werden muss oder wie \DeclareDelimFormat alleine (also ohne renewcommand) genutzt werden kann?

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

Re: \bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von MoeWe »

Felix.Herauten hat geschrieben:
Mo 14. Mär 2022, 18:44
Auch wenn das Problem jetzt gelöst ist, nochmal zu meinem Verständnis:
Woran erkenne ich denn, ob ein Befehl ein Makro ist, das per renewcommand umdefiniert werden muss oder wie \DeclareDelimFormat alleine (also ohne renewcommand) genutzt werden kann?
Wie Makros zu nutzen sind, ist in LaTeX (wie in vielen anderen Programmiersprachen auch) "von außen" nicht unbedingt erkennbar. Man muss die korrekte Nutzung in der Dokumentation nachschlagen, aus Codebeispielen erschließen oder in der Implementation nachvollziehen.

\bibpagespunct zum Beispiel ist unter anderen im §3.12.1 Generic Commands and Hooks der biblatex-Dokumentation erwähnt. Der Abschnitt wird eingeleitet mit
The commands in this section may be redefined with \renewcommand in the
document preamble. Those marked as ‘Context Sensitive’ in the margin can also be
customised with \DeclareDelimFormat and are printed with \printdelim
(§ 3.12.2). Note that all commands starting with \mk… take one argument. All of
these commands are defined in biblatex.def.
Da \bibpagespunct weder als "context sensitive" markiert ist, noch mit \mk... beginnt, können wir folgern, dass es sich um ein einfaches Makro ohne Argument handelt, das mit \renewcommand umdefiniert werden kann.

postnotedelim hingegen ist als "context sensitive" markiert und wird daher besser mit \DeclareDelimFormat umdefiniert (\DeclareDelimFormat hat dabei aber eine funktionell ähnliche Rolle wie \renewcommand; wir hatten das ja bereits etwas ausführlicher diskutiert: viewtopic.php?p=118347#p118347).

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

Re: \bibpagespunct für Doppelpunkt zwischen Jahr und Seite verwenden

Beitrag von Felix.Herauten »

Zunächst mal sorry für die späte Antwort. Ich war ziemlich im Stress und mir ging es auch nicht so gut.

Jetzt aber zum Thema:
vielen Dank für die weiteren Erläuterungen. Ich muss gestehen, dass ich noch nicht alles perfekt verstanden habe, aber es beginnt sich langsam zu lichten. Vielen Dank dafür.

Antworten