定義自訂 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}}

相關內容