Estoy intentando definir un estilo de cita personalizado para mi texto. Un MWE es el siguiente
\documentclass{report}
\usepackage[backend=biber,sorting=none,style=phys, biblabel=brackets,pageranges=false,chaptertitle=false]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{xxx1.bib}
@article{key1,
author = {Author, A. and Author, B. and Author, C.},
title = {paper title},
journal = {journal name},
volume = {50},
issue = {4},
pages = {15},
year = {2019}
}
\end{filecontents}
\addbibresource{xxx1.bib}
\DeclareCiteCommand{\citelong}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{
[%
\ifciteindex
{\indexfield{indextitle}}
{}%
\printnames{author},
\printfield[citetitle]{labeltitle},
\textit{\printfield[citefield]{journaltitle}}
\textbf{\printfield[citefield]{volume}},
\iffieldundef{pages}{% NEW
\printfield{number}%
}{% NEW
\printfield{pages}
}
(\printfield[citefield]{year})%
]%
}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
They went to the beach and met with a mermaid \citelong{key1}.
\printbibliography
\end{document}
El código anterior produce Ahora, a diferencia del anterior, quiero que se muestren todos los autores, no solo el primero seguido de et al. La documentación de Biblatex dice que printnames debería imprimir todos sus argumentos, pero no es así en mi código. Sé que la forma en que defino mi formato de cita personalizado puede no ser la mejor, hasta donde puedo hacerlo por mi cuenta consultando el manual de biblatex. Por lo tanto, le agradezco que su modificación no cambie demasiado el código de estilo de cita anterior.
Respuesta1
El biblatex-phys
estilo se carga biblatex
con estas opciones:
maxnames=999, maxcitenames=2
Entonces solo necesitas anular el valor de maxcitenames
cuando cargas biblatex
. Puedes usar la maxnames
opción que establece ambos maxcitenames
y maxbibnames
.
\usepackage[sorting=none,style=phys, maxnames=999, biblabel=brackets, pageranges=false, chaptertitle=false]{biblatex}
Para establecer la cantidad de nombres directamente en su \citelong
macro, puede usar \printnames[][-\value{listtotal}]{author}
.
También he ordenado un poco tu macro para que la puntuación sea más sólida.
\DeclareFieldFormat{citejournaltitle}{\mkbibemph{#1}}
\DeclareCiteCommand{\citelong}[\mkbibbrackets]
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexfield{indextitle}}
{}%
\printnames[][-\value{listtotal}]{author}%
\newunit
\printfield[citetitle]{labeltitle}%
\newunit
\printfield[citejournaltitle]{journaltitle}%
\setunit*{\addspace}%
\printfield{volume}%
\newunit
\iffieldundef{pages}
{\printfield{number}}
{\printfield{pages}}%
\setunit{\addspace}%
\printtext[parens]{\usebibmacro{date}}}
{\multicitedelim}
{\usebibmacro{postnote}}