Я пытаюсь определить индивидуальный стиль цитирования для моего текста. 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}}