Определение пользовательского стиля цитирования biblatex с отображением всех авторов

Определение пользовательского стиля цитирования biblatex с отображением всех авторов

Я пытаюсь определить индивидуальный стиль цитирования для моего текста. MWE — это следующее

\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}

Приведенный выше код создает введите описание изображения здесь Теперь, в отличие от вышеприведенного, я хочу, чтобы отображались все авторы, а не только первый, за которым следует et al. В документации Biblatex говорится, что printnames должен выводить все свои аргументы, но в моем коде этого не происходит. Я знаю, что способ, которым я определяю свой пользовательский формат цитирования, может быть не лучшим, это все, что я могу сделать самостоятельно, глядя на руководство biblatex. Поэтому я буду признателен, если ваши изменения не изменят слишком сильно код стиля цитирования выше.

решение1

Стиль biblatex-physзагружается biblatexсо следующими параметрами:

maxnames=999, maxcitenames=2

Так что вам просто нужно переопределить значение maxcitenamesпри загрузке biblatex. Вы можете просто использовать maxnamesопцию, которая устанавливает maxcitenamesи maxbibnames.

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

Чтобы задать количество имен непосредственно в \citelongмакросе, можно использовать \printnames[][-\value{listtotal}]{author}.

Я также немного подправил ваш макрос, чтобы пунктуация стала более надежной.

\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}}

Связанный контент