Ich versuche, einen benutzerdefinierten Zitierstil für meinen Text zu definieren. Ein MWE ist das Folgende
\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}
Der obige Code erzeugt Anders als oben möchte ich, dass alle Autoren angezeigt werden und nicht nur der erste, gefolgt von et al. In der Biblatex-Dokumentation steht, dass printnames alle seine Argumente drucken soll, aber in meinem Code ist das nicht der Fall. Ich weiß, dass die Art und Weise, wie ich mein benutzerdefiniertes Zitatformat definiere, vielleicht nicht die beste ist, aber das ist alles, was ich allein hinbekomme, wenn ich mir das Biblatex-Handbuch anschaue. Daher wäre ich dankbar, wenn Ihre Änderung den obigen Zitatstil-Code nicht zu sehr verändert.
Antwort1
Der biblatex-phys
Stil wird biblatex
mit diesen Optionen geladen:
maxnames=999, maxcitenames=2
Sie müssen also nur den Wert von überschreiben, maxcitenames
wenn Sie laden biblatex
. Sie können einfach die Option verwenden , die sowohl als auch maxnames
festlegt .maxcitenames
maxbibnames
\usepackage[sorting=none,style=phys, maxnames=999, biblabel=brackets, pageranges=false, chaptertitle=false]{biblatex}
Um die Anzahl der Namen direkt in Ihrem \citelong
Makro festzulegen, können Sie verwenden \printnames[][-\value{listtotal}]{author}
.
Ich habe auch Ihr Makro ein wenig aufgeräumt, sodass die Zeichensetzung robuster wird.
\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}}