
Estoy intentando hacer coincidir un estilo de bibliografía con biblatex-philosophy
. El formato que necesito para un trabajo multieditor es el siguiente:
De forma predeterminada, biblatex-philosophy
con las philosophy-modern
salidas esto:
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 .bib
archivo:
@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 biblatex
y biblatex-philosophy
no 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.lbx
todas las demás cadenas que quizás tenga que redefinir si las usa; existen compiler
, redactor
y reviser
muchas 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}
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}