von MoeWe » So 22. Aug 2021, 13:22
Die Sache mit dem Jahr der Erstausgabe ist relativ unkompliziert, wenn man weiß, dass das Jahr zu Beginn des Eintrags mit date+extradate gedruckt wird (das hast Du ja eh schon angepasst) und es das Feld origdate gibt. Siehe z.B auch https://tex.stackexchange.com/q/142999/35864,
Die Sache mit dem Komma ist ungleich schwieriger. Das liegt daran, dass biblatex die Zeichensetzung asynchron mit einem Zwischenspeicher erledigt. Die Zeichen werden nicht sofort gesetzt, wenn sie im Code auftauchen, sondern erst in einem Zwischenspeicher abgelegt. Der Zwischenspeicher wird dann ausgegeben und geleert, wenn das nächste Mal echt Text ausgegeben wird. Das macht es sehr einfach, doppelte Zeichensetzung bei fehlenden Feldern zu vermeiden. Da aber nie sicher ist, ob ein bestimmtes Zeichen aus dem Code auch echt ausgegeben wird, kann es schwierig sein, exakt zu bestimmen, was wo gedruckt wird. Der Zwischenspeicher arbeitet so, dass es standardmäßig überschrieben wird. Das bedeutet, dass es recht einfach ist, die Zeichensetzung vor einer bestimmten Stelle exakt zu kontrollieren. Es kann aber schwierig sein, die Zeichensetzung danach zu bestimmen. Siehe auch die Ausführung in viewtopic.php?p=113336#p113336 und die dort verlinkten TeX.SX Fragen mit Beispielen und weiteren Erklärungen.
Eine Möglichkeit, im Beispiel das gewünschte Ergebnis zu bekommen, wäre es, das Standardtrennzeichen auf ein Komma umzustellen und nur vor dem Titel (nametitledelim) und vor dem Verlagsblock (pubinstorg+location+date) einen Punkt zu erzwingen. Ob das für Deinen Stil im Allgemeinen die beste Methodik ist, vermag ich mit nur einem Eintrag als Basis nicht zu sagen.
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[french, ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[autostyle]{csquotes}
\usepackage[
backend=biber,
style=ext-authoryear,
innamebeforetitle=true,
innameidem=true,
maxcitenames=2,
dashed=false,
]{biblatex}
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}
\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimAlias*{finalnamedelim}{multinamedelim}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareDelimFormat[bib]{nametitledelim}{\addperiod\space}
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\bibstring{in}%
\printunit{\intitlepunct}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addnbthinspace}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\urlstyle{same}
\DeclareFieldFormat{url}{URL: <\url{#1}>}
\DeclareFieldFormat{urldate}{\mkbibbrackets{#1}}
\DefineBibliographyStrings{german}{
editor = {Hrsg\adddot},
editors = {Hrsg\adddot},
}
\DeclareLabeldate{%
\field{date}
\field{year}
\field{eventdate}
\field{urldate}
\literal{nodate}
}
\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printorigdate
\setunit*{\addspace}%
\printtext[\blx@delimcontext labeldate]{%
\printfield[superedition]{edition}%
\global\clearfield{edition}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\makeatother
\renewbibmacro*{series+number}{%
\setunit{\addspace}%
\iffieldundef{series}
{}
{\printtext[parens]{%
\printfield{series}%
\setunit*{\sernumdelim}%
\printfield{number}}}%
\newunit}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\setunit{\addperiod\space}%
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\setunit*{\pubdatedelim}%
\usebibmacro{date}%
\newunit}
\begin{filecontents}{\jobname.bib}
@book{Flaubert2001,
author = {Laget, Thierry},
title = {Madame Bovary},
publisher = {Gallimard},
year = {2001},
location = {Paris},
editor = {Flaubert, Gustave},
origdate = {1857},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{Flaubert2001}
\printbibliography
\end{document}
Die Sache mit dem Jahr der Erstausgabe ist relativ unkompliziert, wenn man weiß, dass das Jahr zu Beginn des Eintrags mit `date+extradate` gedruckt wird (das hast Du ja eh schon angepasst) und es das Feld `origdate` gibt. Siehe z.B auch https://tex.stackexchange.com/q/142999/35864,
Die Sache mit dem Komma ist ungleich schwieriger. Das liegt daran, dass `biblatex` die Zeichensetzung asynchron mit einem Zwischenspeicher erledigt. Die Zeichen werden nicht sofort gesetzt, wenn sie im Code auftauchen, sondern erst in einem Zwischenspeicher abgelegt. Der Zwischenspeicher wird dann ausgegeben und geleert, wenn das nächste Mal echt Text ausgegeben wird. Das macht es sehr einfach, doppelte Zeichensetzung bei fehlenden Feldern zu vermeiden. Da aber nie sicher ist, ob ein bestimmtes Zeichen aus dem Code auch echt ausgegeben wird, kann es schwierig sein, exakt zu bestimmen, was wo gedruckt wird. Der Zwischenspeicher arbeitet so, dass es standardmäßig überschrieben wird. Das bedeutet, dass es recht einfach ist, die Zeichensetzung [i]vor[/i] einer bestimmten Stelle exakt zu kontrollieren. Es kann aber schwierig sein, die Zeichensetzung [i]danach[/i] zu bestimmen. Siehe auch die Ausführung in https://golatex.de/viewtopic.php?p=113336#p113336 und die dort verlinkten TeX.SX Fragen mit Beispielen und weiteren Erklärungen.
Eine Möglichkeit, im Beispiel das gewünschte Ergebnis zu bekommen, wäre es, das Standardtrennzeichen auf ein Komma umzustellen und nur vor dem Titel (`nametitledelim`) und vor dem Verlagsblock (`pubinstorg+location+date`) einen Punkt zu erzwingen. Ob das für Deinen Stil im Allgemeinen die beste Methodik ist, vermag ich mit nur einem Eintrag als Basis nicht zu sagen.
```
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[french, ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[autostyle]{csquotes}
\usepackage[
backend=biber,
style=ext-authoryear,
innamebeforetitle=true,
innameidem=true,
maxcitenames=2,
dashed=false,
]{biblatex}
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
\renewcommand*{\newunitpunct}{\addcomma\space}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}
\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimAlias*{finalnamedelim}{multinamedelim}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}
\DeclareDelimFormat[bib]{nametitledelim}{\addperiod\space}
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\bibstring{in}%
\printunit{\intitlepunct}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addnbthinspace}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\urlstyle{same}
\DeclareFieldFormat{url}{URL: <\url{#1}>}
\DeclareFieldFormat{urldate}{\mkbibbrackets{#1}}
\DefineBibliographyStrings{german}{
editor = {Hrsg\adddot},
editors = {Hrsg\adddot},
}
\DeclareLabeldate{%
\field{date}
\field{year}
\field{eventdate}
\field{urldate}
\literal{nodate}
}
\DeclareFieldFormat{origdate}{\mkbibbrackets{#1}}
\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printorigdate
\setunit*{\addspace}%
\printtext[\blx@delimcontext labeldate]{%
\printfield[superedition]{edition}%
\global\clearfield{edition}%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
\makeatother
\renewbibmacro*{series+number}{%
\setunit{\addspace}%
\iffieldundef{series}
{}
{\printtext[parens]{%
\printfield{series}%
\setunit*{\sernumdelim}%
\printfield{number}}}%
\newunit}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\setunit{\addperiod\space}%
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\setunit*{\pubdatedelim}%
\usebibmacro{date}%
\newunit}
\begin{filecontents}{\jobname.bib}
@book{Flaubert2001,
author = {Laget, Thierry},
title = {Madame Bovary},
publisher = {Gallimard},
year = {2001},
location = {Paris},
editor = {Flaubert, Gustave},
origdate = {1857},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{Flaubert2001}
\printbibliography
\end{document}
```