Herausgeberfeld ändern

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Herausgeberfeld ändern

Re: Herausgeberfeld ändern

von \inftyjc » Mo 23. Aug 2021, 00:31

Vielen Dank MoeWe, ich schätze deine Hilfsbereitschaft sehr!! Ich habe bewusst meine Frage diesmal hier gestellt, damit ich dir im anderen Latex Forum nicht immer solche Umstände machen muss :D

Ich habe vorhin noch etwas weiter recherchiert und auch eine Lösung gefunden, die zwar aufwendiger ist als das, was du vorschlägst, aber es hat ebenfalls geklappt:

\documentclass[a4paper, 12pt]{scrreprt}

\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}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}

\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias*[bib]{finalnamedelim}{multinamedelim}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

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

\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimFormat{finalnamedelim}{\slash}

\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},
}

\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
  \iffieldundef{origyear}{%
  }{%
    \setunit*{\addspace}%
    \printtext{\mkbibbrackets{\printorigdate}}%
    \setunit*{\addspace}
  }%
  \iffieldundef{labelyear}
    {}
    {\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*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\setunit{\addcomma\addspace}%
     \usebibmacro{byeditor+othersstrg}%
     \setunit{\addspace}%
     \printnames[byeditor]{editor}%
     \clearname{editor}%
     \setunit{\addspace}%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}

\begin{filecontents}{literatur.bib}
@book{Flaubert2001,
author = {Laget, Thierry},
title = {Madame Bovary},
publisher = {Gallimard},
year = {2001},
editor = {Flaubert, Gustave},
}
\end{filecontents}
\bibliography{literatur}

\begin{document}

\cite{Flaubert2001}
\printbibliography

\end{document}

Deine Hinweise zur Zeichensetzung merke ich mir auf jeden Fall; diese werde ich sicher noch gebrauchen können!

Re: Herausgeberfeld ändern

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}

Herausgeberfeld ändern

von \inftyjc » Sa 21. Aug 2021, 12:44

Hallo liebe Community,

für eine Hausarbeit benötige ich einen bestimmten Stil in der Bibliographie. So schreibt unser Institut für die Angabe von Primärliteratur vor:
Name, Vorname [ggf. Erstpublikation] (Jahr der vorliegenden Ausgabe). Titel des Werks, ggf. Herausgeber (ggf. Reihentitel und -nummer). Ort: Verlag.

Bis jetzt habe ich folgendes:

\documentclass[a4paper, 12pt]{scrreprt}

\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}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{ineditor}{sortname}

\DeclareDelimFormat[bib]{multinamedelim}{\addspace\slash\space}
\DeclareDelimAlias*[bib]{finalnamedelim}{multinamedelim}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldAlias{translatortype}{editortype}
\DeclareDelimAlias{translatortypedelim}{editortypedelim}

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

\DeclareDelimFormat{multinamedelim}{\slash}
\DeclareDelimFormat{finalnamedelim}{\slash}

\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},
}

\DeclareFieldFormat{superedition}{\textsuperscript{#1}}
\makeatletter
\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\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}

\begin{filecontents}{literatur.bib}
@book{Flaubert2001,
author = {Laget, Thierry},
title = {Madame Bovary},
publisher = {Gallimard},
year = {2001},
editor = {Flaubert, Gustave},
}
\end{filecontents}
\bibliography{literatur}

\begin{document}

\cite{Flaubert2001}
\printbibliography

\end{document}

Nach der Institutsvorgabe sollte das dann so aussehen:
Laget, Thierry [1857] (2001). Madame Bovary, hrsg. von Gustave Flaubert. Paris: Gallimard.
Hat jemand eine Idee, wie ich "[Erstpublikation]" hinzufügen kann und das Feld um den Herausgeber korrekt abändere (mit dem Komma nach dem Titel und einem kleinen hrsg.)?
Letzteres habe ich schon mit DeclareFieldFormat versucht, leider vergebens.


Nach oben