Definieren eines benutzerdefinierten Biblitex-Zitationsstils mit Anzeige aller Autoren

Definieren eines benutzerdefinierten Biblitex-Zitationsstils mit Anzeige aller Autoren

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 Bildbeschreibung hier eingeben 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-physStil wird biblatexmit diesen Optionen geladen:

maxnames=999, maxcitenames=2

Sie müssen also nur den Wert von überschreiben, maxcitenameswenn Sie laden biblatex. Sie können einfach die Option verwenden , die sowohl als auch maxnamesfestlegt .maxcitenamesmaxbibnames

\usepackage[sorting=none,style=phys, maxnames=999, biblabel=brackets, pageranges=false, chaptertitle=false]{biblatex}

Um die Anzahl der Namen direkt in Ihrem \citelongMakro 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}}

verwandte Informationen