¿Cómo reformatear el postfijo "eds" con la filosofía biblatex?

¿Cómo reformatear el postfijo "eds" con la filosofía biblatex?

Estoy intentando hacer coincidir un estilo de bibliografía con biblatex-philosophy. El formato que necesito para un trabajo multieditor es el siguiente: Objetivo

De forma predeterminada, biblatex-philosophycon las philosophy-modernsalidas esto:

Intentar

El código es el siguiente:

\documentclass[11pt, parskip=false]{scrartcl}

% Bibliography preamble
\usepackage[giveninits=true,style=philosophy-modern, yearleft=true]{biblatex}
\addbibresource{testbib.bib}

\DeclareFieldFormat[online]{title}{#1}

\renewcommand{\postsep}{% Add comma to end of author section
\addcomma
\null\par\nobreak\vskip\postnamesep%
\hskip-\bibhang\ignorespaces}

\begin{document}
Sentence containing citation \parencite{example2018}.

\printbibliography
\end{document}

con este .bibarchivo:

@book{example2018,
Edition = {4},
Publisher = {Penguin},
Title = {All Aboard the Good Ship Merriweather},
date = {1964},
Editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}

¿Cómo se pueden quitar los paréntesis y el punto (eds.) y moverlos al final de la sección de editores según sea necesario?

Mirar en las entrañas biblatexy biblatex-philosophyno me dejó más sabio, ya que parece particularmente complicado y más allá de mi capacidad de influencia.

Respuesta1

Lo siguiente funciona bien siempre que el mismo conjunto de autores no actúe como autores de un trabajo y editores de otro. Si desea eliminar el punto de 'eds', tendrá que redefinir las cadenas de baberos en \DefineBibliographyStrings{english}. Eche un vistazo a english.lbxtodas las demás cadenas que quizás tenga que redefinir si las usa; existen compiler, redactory revisermuchas otras funciones.

\documentclass[11pt, parskip=false]{scrartcl}

% Bibliography preamble
\usepackage[giveninits=true,style=philosophy-modern, yearleft=true, uniquename=init]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{example2018,
Edition = {4},
Publisher = {Penguin},
Title = {All Aboard the Good Ship Merriweather},
date = {1964},
Editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\DeclareFieldFormat[online]{title}{#1}

\renewcommand{\postsep}{% Add comma to end of author section
\addcomma
\null\par\nobreak\vskip\postnamesep%
\hskip-\bibhang\ignorespaces}

\DefineBibliographyStrings{english}{%
  editor           = {ed},
  editors          = {eds},
}

\DeclareFieldFormat{editortype}{#1}
\DeclareDelimFormat{editortypedelim}{\addcomma\space}
\DeclareFieldFormat{translatortype}{#1}
\DeclareDelimFormat{translatortypedelim}{\addcomma\space}

\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{%
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }%
  {\usebibmacro{bbx:dashcheck}%
     {}%
     {\printnames{editor}%
      \usebibmacro{bbx:savehash}%
      \setunit{\printdelim{editortypedelim}}%
      \usebibmacro{#1}%
      \clearname{editor}%
      \postsep}%
   \usebibmacro{date+extradate}}%
  {\global\undef\bbx@lasthash
   \usebibmacro{date+extradate}}}%

\renewbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{%
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }%
  {\usebibmacro{bbx:dashcheck}%
     {}%
     {\printnames{translator}%
      \usebibmacro{bbx:savehash}%
      \setunit{\printdelim{translatortypedelim}}%
      \usebibmacro{#1}%
      \clearname{translator}%
      \postsep}%
   \usebibmacro{date+extradate}}%
  {\global\undef\bbx@lasthash
   \usebibmacro{date+extradate}}}
\makeatother

\begin{document}
Sentence containing citation \parencite{example2018,sigfridsson,knuth:ct:a,knuth:ct:b}.

\printbibliography
\end{document}

ingrese la descripción de la imagen aquí

Conmucho másCon esfuerzo podemos hacer que lo anterior sea seguro para diferentes roles por parte de la misma lista de autores. Sin embargo, esto todavía no se ocupa de la clasificación.

\documentclass[australian, 11pt, parskip=false]{scrartcl}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[giveninits=true,style=philosophy-modern, yearleft=true, uniquename=init]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{example2018,
Edition = {4},
Publisher = {Penguin},
Title = {All Aboard the Good Ship Merriweather},
date = {1964},
Editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}
@book{example2019,
Publisher = {Penguin},
Title = {Another Ship},
date = {2017},
author = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}
@book{example2020,
Publisher = {Penguin},
Title = {Bnunb},
date = {1960},
author = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}
@book{example2021,
Publisher = {Penguin},
Title = {Znub},
date = {1961},
author = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}

@book{example2022,
Publisher = {Penguin},
Title = {Znub},
date = {2018},
author = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}


@book{example2023,
Publisher = {Penguin},
Title = {Znub},
date = {2023},
tramslator = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}


@book{example2024,
Publisher = {Penguin},
Title = {Znub},
date = {2024},
translator = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}

@book{example2025,
Publisher = {Penguin},
Title = {Znub},
date = {2025},
translator = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
editor = {Stewart, Bryce and Karl Popper and Samantha Elizabeth O'Grady},
Location = {London}}

@online{blogWithoutAuthor,
date = {2018},
title = {Historians in the News},
maintitle = {History Matters},
organization = {The University of Sydney},
url = {http://blogs.usyd.edu.au/historymatters/2018/02/historians_in_the_news_2018.html},
urldate = {2018-02-23}
}

@online{blogWithAuthor,
date = {2018},
title = {Historians in the News},
maintitle = {History Matters},
organization = {The University of Sydney},
url = {http://blogs.usyd.edu.au/historymatters/2018/02/historians_in_the_news_2018.html},
urldate = {2018-02-23},
author = {McDonnell, Mike}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\DeclareFieldFormat[online]{title}{#1}

\renewcommand{\postsep}{% Add comma to end of author section
\addcomma
\null\par\nobreak\vskip\postnamesep%
\hskip-\bibhang\ignorespaces}

\DefineBibliographyStrings{english}{%
  editor           = {ed},
  editors          = {eds},
}

\DeclareFieldFormat{editortype}{#1}
\DeclareDelimFormat{editortypedelim}{\addcomma\space}
\DeclareFieldFormat{translatortype}{#1}
\DeclareDelimFormat{translatortypedelim}{\addcomma\space}


\makeatletter
\newbibmacro*{editorstrg:gettempa}{%
  \iffieldundef{editortype}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\def\abx@tempa{editors}}
       {\def\abx@tempa{editor}}}
    {\ifbibxstring{\thefield{editortype}}
       {\ifboolexpr{
          test {\ifnumgreater{\value{editor}}{1}}
          or
          test {\ifandothers{editor}}
        }
          {\edef\abx@tempa{\thefield{editortype}s}}
          {\edef\abx@tempa{\thefield{editortype}}}}
       {\edef\abx@tempa{\thefield{editortype}}}}}

\renewbibmacro*{editorstrg}{%
  \usebibmacro{editorstrg:gettempa}%
  \printtext[editortype]{%
    \ifbibxstring{\abx@tempa}
      {\bibstring{\abx@tempa}}
      {\abx@tempa}}}

\newbibmacro*{editor+othersstrg:gettempa}{%
  \iffieldundef{editortype}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\def\abx@tempa{editors}}
       {\def\abx@tempa{editor}}}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\edef\abx@tempa{\thefield{editortype}s}}
       {\edef\abx@tempa{\thefield{editortype}}}}%
  \let\abx@tempb=\empty
  \ifnamesequal{editor}{translator}
    {\appto\abx@tempa{tr}%
     \appto\abx@tempb{\clearname{translator}}}
    {}%
  \ifnamesequal{editor}{commentator}
    {\appto\abx@tempa{co}%
     \appto\abx@tempb{\clearname{commentator}}}
    {\ifnamesequal{editor}{annotator}
       {\appto\abx@tempa{an}%
        \appto\abx@tempb{\clearname{annotator}}}
       {}}%
  \ifnamesequal{editor}{introduction}
    {\appto\abx@tempa{in}%
     \appto\abx@tempb{\clearname{introduction}}}
    {\ifnamesequal{editor}{foreword}
       {\appto\abx@tempa{fo}%
        \appto\abx@tempb{\clearname{foreword}}}
       {\ifnamesequal{editor}{afterword}
          {\appto\abx@tempa{af}%
           \appto\abx@tempb{\clearname{afterword}}}
          {}}}}

\renewbibmacro*{editor+othersstrg}{%
  \usebibmacro{editor+othersstrg:gettempa}%
  \ifbibxstring{\abx@tempa}
    {\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb}
    {\usebibmacro{editorstrg}}}

\newbibmacro*{translatorstrg:gettempa}{%
  \ifboolexpr{
    test {\ifnumgreater{\value{translator}}{1}}
    or
    test {\ifandothers{translator}}
  }
  {\def\abx@tempa{translators}}
  {\def\abx@tempa{translator}}}

\renewbibmacro*{translatorstrg}{%
  \usebibmacro{translatorstrg:gettempa}%
  \printtext[translatortype]{%
    \ifbibxstring{\abx@tempa}
      {\bibstring{\abx@tempa}}
      {\abx@tempa}}}

\newbibmacro*{translator+othersstrg:gettempa}{%
  \ifboolexpr{
    test {\ifnumgreater{\value{translator}}{1}}
    or
    test {\ifandothers{translator}}
  }
    {\def\abx@tempa{translators}}
    {\def\abx@tempa{translator}}%
  \ifnamesequal{translator}{commentator}
    {\appto\abx@tempa{co}%
     \clearname{commentator}}
    {\ifnamesequal{translator}{annotator}
       {\appto\abx@tempa{an}%
        \clearname{annotator}}
       {}}%
  \ifnamesequal{translator}{introduction}
    {\appto\abx@tempa{in}%
     \clearname{introduction}}
    {\ifnamesequal{translator}{foreword}
       {\appto\abx@tempa{fo}%
        \clearname{foreword}}
       {\ifnamesequal{translator}{afterword}
          {\appto\abx@tempa{af}%
           \clearname{afterword}}
          {}}}}

\renewbibmacro*{translator+othersstrg}{%
  \usebibmacro{translator+othersstrg:gettempa}%
  \printtext[translatortype]{\bibstring{\abx@tempa}}}

\renewbibmacro*{bbx:dashcheck}[2]{%
  \ifboolexpr{
    test {\iffieldequals{fullhash}{\bbx@lasthash}}
    and
    not test \iffirstonpage
    and
    (
       not bool {bbx@inset}
       or
       test {\iffieldequalstr{entrysetcount}{1}}
    )
    and test {\ifcsstrequal{bbx@thisnametype}{bbx@lastnametype}}
  }
    {#1}
    {#2}}

\renewbibmacro*{author}{%
  \global\def\bbx@thisnametype{author}%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
  {\usebibmacro{bbx:dashcheck}
     {}%
     {\usebibmacro{bbx:savehash}%
      \printnames{author}%
      \iffieldundef{nameaddon}
        {}%
        {\setunit{\addspace}%
         \printfield{nameaddon}}%
      \iffieldundef{authortype}
        {}%
        {\usebibmacro{authorstrg}%
         \printtext{\addcomma\space}}
      \global\def\bbx@lastnametype{author}%
      \postsep}%
   \usebibmacro{date+extradate}}%
    {\global\undef\bbx@lasthash
     \global\undef\bbx@lastnametype
     \usebibmacro{date+extradate}}}

\renewbibmacro*{bbx:editor}[1]{%
  \begingroup
  \usebibmacro{#1:gettempa}%
  \global\edef\bbx@thisnametype{\abx@tempa}%
  \endgroup
  \ifboolexpr{%
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }%
  {\usebibmacro{bbx:dashcheck}%
     {}%
     {\printnames{editor}%
      \usebibmacro{bbx:savehash}%
      \setunit{\printdelim{editortypedelim}}%
      \usebibmacro{#1}%
      \global\edef\bbx@lastnametype{\abx@tempa}%
      \global\edef\bbx@cleanup{\abx@tempb}%
      \postsep}%
   \clearname{editor}%
   \bbx@cleanup
   \usebibmacro{date+extradate}}%
  {\global\undef\bbx@lasthash
   \global\undef\bbx@lastnametype
   \usebibmacro{date+extradate}}}%

\renewbibmacro*{bbx:translator}[1]{%
  \begingroup
  \usebibmacro{#1:gettempa}%
  \global\edef\bbx@thisnametype{\abx@tempa}%
  \endgroup
  \ifboolexpr{%
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }%
  {\usebibmacro{bbx:dashcheck}%
     {}%
     {\printnames{translator}%
      \usebibmacro{bbx:savehash}%
      \setunit{\printdelim{translatortypedelim}}%
      \usebibmacro{#1}%
      \global\edef\bbx@lastnametype{\abx@tempa}%
      \global\edef\bbx@cleanup{\abx@tempb}%
      \postsep}%
   \clearname{translator}%
   \bbx@cleanup
   \usebibmacro{date+extradate}}%
  {\global\undef\bbx@lasthash
   \global\undef\bbx@lastnametype
   \usebibmacro{date+extradate}}}
\makeatother


\begin{document}
Sentence containing citation \parencite{example2018, sigfridsson, knuth:ct:a, knuth:ct:b, example2019, example2020, example2021, example2022, example2023, example2024, example2025}.

\parencite{blogWithoutAuthor, blogWithAuthor, westfahl:frontier, westfahl:space}

\printbibliography
\end{document}

ingrese la descripción de la imagen aquí

información relacionada