von MoeWe » Do 19. Mär 2020, 18:07
joe hat geschrieben:Ich verstehe die Logik hinter den Änderungen leider noch nicht. Was muss ich z. B. machen, um aus einem Punkt ein Komma zu machen
Das ist pauschal nicht so einfach zu sagen. biblatex-Stile sind modular aufgebaut. Das Herzstück der Ausgabe eines Eintrags im Literaturverzeichnis ist der sogenannte
bibliography driver für den jeweiligen Eintragstyp. Dieser driver ruft normalerweise eine Vielzahl an kleineren Bibmakros auf, die für die Ausgabe bestimmter Teile des Eintrags zuständig sind. Die Zeichensetzung zwischen einzelnen Bibmakros und Feldern wird von einem Zeichensetzungs-Puffer geregelt, der von Code im Driver und den Bibmakros befüllt wird. Welches Zeichen gesetzt wird, hängt auch von den gedruckten Feldern ab. Meist wird zwischen zwei Feldern \newunitpunct gesetzt (das geschieht im Code mit dem Befehl \newunit), aber an vielen Stellen kommen spezielle andere Makros zur Anwendung. Das muss man aber von Fall zu Fall in der Dokumentation nachsehen (mühselig, wenn man nicht schon weiß, was man sucht, außerdem sind solche Dinge nicht immer vollständig dokumentiert, da das zu weit ginge) oder im Code des Stils nachverfolgen.
joe hat geschrieben:z.B. bei dem @Article muss es statt In: fvw. so In: fvw, erscheinen.
Bei den biblatex-ext-Stilen wird die Zeichensetzung zwischen journal und volume von \jourvoldelim kontrolliert. Das musst Du selbst auf
\renewcommand*{\jourvoldelim}{\adddot\space}
umgestellt haben, um einen Punkt (eigentlich mit \adddo einen Abkürzungspunkt und keinen Satzpunkt, der wäre \addperiod) zu bekommen. In meinem Code oben stand noch
\renewcommand*{\jourvoldelim}{\addcomma\space}
für das Komma.
Bei anderen biblatex-Stilen gibt es dieses Makro nicht, da ist die Zeichensetzung mit \setunit*{\addspace}% hartkodiert. Man muss dann das ganze umschließende Bibmakro umdefinieren.
joe hat geschrieben:Gleiches bei den @Book. Nach der Angabe der Auflage muss ebenfalls ein Komma statt einem Punkt erscheinen, zusätzlich müsste direkt im Anschluss die Jahreszahl erscheinen, statt nach dem Ort und Verlag: 2. Auflage, 2004. Düsseldorf: IDW-Verlag.
Das ist schon bedeutend schwieriger. Sehen wir uns den
driver für @book aus ext-standard.bbx doch mal an (
Z. 215-255 in v0.8d)
\DeclareBibliographyDriver{book}{%
\usebibmacro{introcite:plain}%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\usebibmacro{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{edition}%
\newunit
\usebibmacro{barevolume+volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\usebibmacro{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\usebibmacro{pagetotal}%
\newunit\newblock
\usebibmacro{isbn}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
In Zeile 229 findest Du
das für die Ausgabe der Auflage sorgt. Erst in Zeile 237 steht
\usebibmacro{publisher+location+date}%
für die Ausgabe von Verlag, Ort und Datum.
Dazwischen befindet sich noch Code für die Ausgabe von Schriftenserie und Band sowie Anmerkungen in note. Das heißt, dass im Allgemeinen noch nicht einmal garantiert werden kann, dass die Auflage wirklich direkt bei Verlag, Ort und Jahr steht. Wenn man dann versteht, wie der Zeichensetungs-Puffer funktioniert, muss man leider einsehen, dass es dann noch schwieriger ist, zu garantieren, dass nach der Auflage ein Komma kommt, wenn sonst überall Punkte stehen.
Mein Lösungsvorschlag besteht darin, das Bibmakro edition so umzudefinieren, dass es nichts mehr tut, und dann publisher+location+date so umzudefinieren, dass es die Auflage mit ausgibt und die gewünschte Reihenfolge von Jahr, Verlag und Ort einhält. In den biblatex-ext-Stilen wird publisher+location+date von pubinstorg+location+date gesteuert, daher definieren wir dieses Makro um. Das ist unten im Minimalbeispiel zu finden.
Ich habe Deinen Code etwas umstrukturiert. Insbesondere habe ich Doppeldefinitionen (\DeclareFieldFormat{urldate}) beseitigt, die zwei \DefineBibliographyStringss zusammengelegt und wie in meiner Antwort oben für \DeclareFieldFormat{url} und \DeclareFieldFormat{urldate} bibstrings genutzt anstatt den Text hartzukodieren. Außerdem laden wir jetzt
csquotes, das ist immer eine gute Idee.
Zu guter Letzt sei erwähnt, dass ein Konstrukt wie \footnote{\textcite{key}} eigentlich selten eine gute Entscheidung ist, wenn die Fußnote nicht mehr Text enthält als das Zitat selbst. Stattdessen sollte man \footcite{key} oder, wenn man Zitate standardmäßig so haben möchte, noch besser \autocite{key} (mit der Option autocite=footnote,) verwenden. Mit biblatex-ext und \DeclareInnerCiteDelims{footnote}{\bibopenparen}{\bibcloseparen} ist für die gewünschten Klammern schnell gesorgt.
\documentclass[a4paper, 11pt, parskip]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{libertinus}
\deffootnote{3em}{1em}{\makebox[3em][l]{\thefootnotemark)}}
\setkomafont{footnote}{\sffamily}
\usepackage{csquotes}
\usepackage[backend=biber,
citestyle=ext-authoryear, bibstyle=ext-authortitle, sorting=nyt,
giveninits, uniquename=init, maxcitenames=3, maxbibnames=3,
introcite=plain,
autocite=footnote,]{biblatex}
\urlstyle{rm}
\NewBibliographyString{savedas}
\DefineBibliographyStrings{german}{
andothers = {et\addabbrvspace al\adddot},
savedas = {gespeichert unter},
urlseen = {Zugriff am},
urlfrom = {von},
}
\DeclareInnerCiteDelims{footnote}{\bibopenparen}{\bibcloseparen}
\DeclareFieldFormat{bbx@introcite}{\mkbibbold{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}
\DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen}
\renewcommand*{\introcitepunct}{\newline}
\DeclareDelimFormat{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias*{finalnamedelim}{multinamedelim}
\AtEveryCitekey{\renewcommand*{\mkbibnamefamily}{\textsc}}
\renewcommand*{\newunitpunct}{\addperiod\space}
\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\renewbibmacro*{in:}{%
\bibcpstring{in}%
\printunit{\intitlepunct}}
\renewcommand*{\jourvoldelim}{\addcomma\space}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\jourvoldelim}%
\iffieldundef{series}
{}
{\setunit*{\jourserdelim}%
\printfield{series}%
\setunit{\servoldelim}}%
\usebibmacro{volume+issue+date+number+eid}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\newcommand*{\voldatedelim}{\addspace}
\newcommand*{\datenumdelim}{\addspace}
\newbibmacro*{volume+issue+date+number+eid}{%
\printfield{volume}%
\setunit*{\voldatedelim}%
\usebibmacro{issue+date}%
\setunit{\datenumdelim}%
\printfield{number}%
\setunit{\adddot\space}%
\printfield{eid}}
\renewbibmacro*{edition}{}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\printfield{edition}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit\newblock
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\newunit}
\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\bibstring{urlseen}~#1}
\renewbibmacro*{url+urldate}{%
\usebibmacro{urldate}%
\newunit
\usebibmacro{url}%
}
\DeclareFieldFormat{file}{\bibstring{savedas}\addcolon\space\nolinkurl{#1}}
\renewbibmacro*{addendum+pubstate}{%
\iffieldxref{addendum}
{}
{\printfield{addendum}}%
\newunit\newblock
\iffieldxref{pubstate}
{}
{\printfield{pubstate}}%
\newunit\newblock
\printfield{file}}
\begin{filecontents}{\jobname.bib}
@book{Baetge2004,
author = {Baetge, J. and Kirsch, H. J. and Thiele, S.},
title = {Bilanzanalyse},
year = {2004},
edition = {2},
location = {Düsseldorf},
publisher = {IDW-Verlag},
}
@article{fvw202019b,
author = {Klaus Hildebrandt},
title = {Das \enquote{Lehman Brothers} der europäischen Touristik},
journal = {fvw},
year = {2019},
pages = {3},
volume = {20},
}
@online{Graue2019,
author = {Oliver Graue},
title = {Trotz Cook-Pleite: Die Pauschalreise hat Zukunft},
date = {2019},
urldate = {2020-01-04},
url = {https://www.fvw.de/reisevertrieb/news/trotz-cook-pleite-gute-zukunft-fuer-die-pauschalreise-205030.},
file = {CD/Internetquellen/Graue.pdf},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem\autocite{Baetge2004}
ipsum\autocite[380]{Graue2019}
dolor\autocite[Siehe][380]{fvw202019b}
dolor\autocite[Siehe][]{sigfridsson}
\printbibliography
\end{document}
[quote="joe"]Ich verstehe die Logik hinter den Änderungen leider noch nicht. Was muss ich z. B. machen, um aus einem Punkt ein Komma zu machen[/quote]
Das ist pauschal nicht so einfach zu sagen. [tt]biblatex[/tt]-Stile sind modular aufgebaut. Das Herzstück der Ausgabe eines Eintrags im Literaturverzeichnis ist der sogenannte [i]bibliography driver[/i] für den jeweiligen Eintragstyp. Dieser driver ruft normalerweise eine Vielzahl an kleineren Bibmakros auf, die für die Ausgabe bestimmter Teile des Eintrags zuständig sind. Die Zeichensetzung zwischen einzelnen Bibmakros und Feldern wird von einem Zeichensetzungs-Puffer geregelt, der von Code im Driver und den Bibmakros befüllt wird. Welches Zeichen gesetzt wird, hängt auch von den gedruckten Feldern ab. Meist wird zwischen zwei Feldern [tt]\newunitpunct[/tt] gesetzt (das geschieht im Code mit dem Befehl [tt]\newunit[/tt]), aber an vielen Stellen kommen spezielle andere Makros zur Anwendung. Das muss man aber von Fall zu Fall in der Dokumentation nachsehen (mühselig, wenn man nicht schon weiß, was man sucht, außerdem sind solche Dinge nicht immer vollständig dokumentiert, da das zu weit ginge) oder im Code des Stils nachverfolgen.
[quote="joe"]z.B. bei dem @Article muss es statt [i]In: fvw.[/i] so [i]In: fvw,[/i] erscheinen.[/quote]
Bei den [tt]biblatex-ext[/tt]-Stilen wird die Zeichensetzung zwischen [tt]journal[/tt] und [tt]volume[/tt] von [tt]\jourvoldelim[/tt] kontrolliert. Das musst Du selbst auf
[code]\renewcommand*{\jourvoldelim}{\adddot\space}[/code]
umgestellt haben, um einen Punkt (eigentlich mit [tt]\adddo[/tt] einen Abkürzungspunkt und keinen Satzpunkt, der wäre [tt]\addperiod[/tt]) zu bekommen. In meinem Code oben stand noch
[code]\renewcommand*{\jourvoldelim}{\addcomma\space}[/code]
für das Komma.
Bei anderen [tt]biblatex[/tt]-Stilen gibt es dieses Makro nicht, da ist die Zeichensetzung mit [tt]\setunit*{\addspace}%[/tt] hartkodiert. Man muss dann das ganze umschließende Bibmakro umdefinieren.
[quote="joe"]Gleiches bei den @Book. Nach der Angabe der Auflage muss ebenfalls ein Komma statt einem Punkt erscheinen, zusätzlich müsste direkt im Anschluss die Jahreszahl erscheinen, statt nach dem Ort und Verlag: [i]2. Auflage, 2004. Düsseldorf: IDW-Verlag.[/i][/quote]
Das ist schon bedeutend schwieriger. Sehen wir uns den [i]driver[/i] für [tt]@book[/tt] aus [tt]ext-standard.bbx[/tt] doch mal an ([url=https://github.com/moewew/biblatex-ext/blob/b131ae9f3ff8bfa25199c8082a0ee6ba470a3499/ext-standard.bbx#L215-L255]Z. 215-255 in v0.8d[/url])
[code]\DeclareBibliographyDriver{book}{%
\usebibmacro{introcite:plain}%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\usebibmacro{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{edition}%
\newunit
\usebibmacro{barevolume+volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\usebibmacro{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit
\usebibmacro{pagetotal}%
\newunit\newblock
\usebibmacro{isbn}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}[/code]
In Zeile 229 findest Du
[code]\usebibmacro{edition}%[/code]
das für die Ausgabe der Auflage sorgt. Erst in Zeile 237 steht
[code]\usebibmacro{publisher+location+date}%[/code]
für die Ausgabe von Verlag, Ort und Datum.
Dazwischen befindet sich noch Code für die Ausgabe von Schriftenserie und Band sowie Anmerkungen in [tt]note[/tt]. Das heißt, dass im Allgemeinen noch nicht einmal garantiert werden kann, dass die Auflage wirklich direkt bei Verlag, Ort und Jahr steht. Wenn man dann versteht, wie der Zeichensetungs-Puffer funktioniert, muss man leider einsehen, dass es dann noch schwieriger ist, zu garantieren, dass nach der Auflage ein Komma kommt, wenn sonst überall Punkte stehen.
Mein Lösungsvorschlag besteht darin, das Bibmakro [tt]edition[/tt] so umzudefinieren, dass es nichts mehr tut, und dann [tt]publisher+location+date[/tt] so umzudefinieren, dass es die Auflage mit ausgibt und die gewünschte Reihenfolge von Jahr, Verlag und Ort einhält. In den [tt]biblatex-ext[/tt]-Stilen wird [tt]publisher+location+date[/tt] von [tt]pubinstorg+location+date[/tt] gesteuert, daher definieren wir dieses Makro um. Das ist unten im Minimalbeispiel zu finden.
Ich habe Deinen Code etwas umstrukturiert. Insbesondere habe ich Doppeldefinitionen ([tt]\DeclareFieldFormat{urldate}[/tt]) beseitigt, die zwei [tt]\DefineBibliographyStrings[/tt]s zusammengelegt und wie in meiner Antwort oben für [tt]\DeclareFieldFormat{url}[/tt] und [tt]\DeclareFieldFormat{urldate}[/tt] bibstrings genutzt anstatt den Text hartzukodieren. Außerdem laden wir jetzt [p]csquotes[/p], das ist immer eine gute Idee.
Zu guter Letzt sei erwähnt, dass ein Konstrukt wie [tt]\footnote{\textcite{key}}[/tt] eigentlich selten eine gute Entscheidung ist, wenn die Fußnote nicht mehr Text enthält als das Zitat selbst. Stattdessen sollte man [tt]\footcite{key}[/tt] oder, wenn man Zitate standardmäßig so haben möchte, noch besser [tt]\autocite{key}[/tt] (mit der Option [tt]autocite=footnote,[/tt]) verwenden. Mit [tt]biblatex-ext[/tt] und [tt]\DeclareInnerCiteDelims{footnote}{\bibopenparen}{\bibcloseparen}[/tt] ist für die gewünschten Klammern schnell gesorgt.
[code]\documentclass[a4paper, 11pt, parskip]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{libertinus}
\deffootnote{3em}{1em}{\makebox[3em][l]{\thefootnotemark)}}
\setkomafont{footnote}{\sffamily}
\usepackage{csquotes}
\usepackage[backend=biber,
citestyle=ext-authoryear, bibstyle=ext-authortitle, sorting=nyt,
giveninits, uniquename=init, maxcitenames=3, maxbibnames=3,
introcite=plain,
autocite=footnote,]{biblatex}
\urlstyle{rm}
\NewBibliographyString{savedas}
\DefineBibliographyStrings{german}{
andothers = {et\addabbrvspace al\adddot},
savedas = {gespeichert unter},
urlseen = {Zugriff am},
urlfrom = {von},
}
\DeclareInnerCiteDelims{footnote}{\bibopenparen}{\bibcloseparen}
\DeclareFieldFormat{bbx@introcite}{\mkbibbold{#1}}
\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}
\DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen}
\renewcommand*{\introcitepunct}{\newline}
\DeclareDelimFormat{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias*{finalnamedelim}{multinamedelim}
\AtEveryCitekey{\renewcommand*{\mkbibnamefamily}{\textsc}}
\renewcommand*{\newunitpunct}{\addperiod\space}
\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareFieldFormat{journaltitle}{#1}
\DeclareFieldFormat{issuetitle}{#1}
\DeclareFieldFormat{maintitle}{#1}
\DeclareFieldFormat{booktitle}{#1}
\renewbibmacro*{in:}{%
\bibcpstring{in}%
\printunit{\intitlepunct}}
\renewcommand*{\jourvoldelim}{\addcomma\space}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\jourvoldelim}%
\iffieldundef{series}
{}
{\setunit*{\jourserdelim}%
\printfield{series}%
\setunit{\servoldelim}}%
\usebibmacro{volume+issue+date+number+eid}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\newcommand*{\voldatedelim}{\addspace}
\newcommand*{\datenumdelim}{\addspace}
\newbibmacro*{volume+issue+date+number+eid}{%
\printfield{volume}%
\setunit*{\voldatedelim}%
\usebibmacro{issue+date}%
\setunit{\datenumdelim}%
\printfield{number}%
\setunit{\adddot\space}%
\printfield{eid}}
\renewbibmacro*{edition}{}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\printfield{edition}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit\newblock
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\newunit}
\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\bibstring{urlseen}~#1}
\renewbibmacro*{url+urldate}{%
\usebibmacro{urldate}%
\newunit
\usebibmacro{url}%
}
\DeclareFieldFormat{file}{\bibstring{savedas}\addcolon\space\nolinkurl{#1}}
\renewbibmacro*{addendum+pubstate}{%
\iffieldxref{addendum}
{}
{\printfield{addendum}}%
\newunit\newblock
\iffieldxref{pubstate}
{}
{\printfield{pubstate}}%
\newunit\newblock
\printfield{file}}
\begin{filecontents}{\jobname.bib}
@book{Baetge2004,
author = {Baetge, J. and Kirsch, H. J. and Thiele, S.},
title = {Bilanzanalyse},
year = {2004},
edition = {2},
location = {Düsseldorf},
publisher = {IDW-Verlag},
}
@article{fvw202019b,
author = {Klaus Hildebrandt},
title = {Das \enquote{Lehman Brothers} der europäischen Touristik},
journal = {fvw},
year = {2019},
pages = {3},
volume = {20},
}
@online{Graue2019,
author = {Oliver Graue},
title = {Trotz Cook-Pleite: Die Pauschalreise hat Zukunft},
date = {2019},
urldate = {2020-01-04},
url = {https://www.fvw.de/reisevertrieb/news/trotz-cook-pleite-gute-zukunft-fuer-die-pauschalreise-205030.},
file = {CD/Internetquellen/Graue.pdf},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem\autocite{Baetge2004}
ipsum\autocite[380]{Graue2019}
dolor\autocite[Siehe][380]{fvw202019b}
dolor\autocite[Siehe][]{sigfridsson}
\printbibliography
\end{document}[/code]