![BibLaTeX/Biber:截断作者列表,但不截断书籍编辑者列表](https://linux22.com/image/421235/BibLaTeX%2FBiber%EF%BC%9A%E6%88%AA%E6%96%AD%E4%BD%9C%E8%80%85%E5%88%97%E8%A1%A8%EF%BC%8C%E4%BD%86%E4%B8%8D%E6%88%AA%E6%96%AD%E4%B9%A6%E7%B1%8D%E7%BC%96%E8%BE%91%E8%80%85%E5%88%97%E8%A1%A8.png)
我已将maxnames
BibLaTeX 选项设置为,1
因为我只想显示第一位作者,然后是等。但是,对于书籍,我想定义一个专用的maxnames
。例如,目前,我对 IUPAC 金书的引用如下所示:
IUPAC:“化学术语汇编(“金书”)”。AD McNaught 等,编辑。Blackwell Scientific Publications,牛津,第 2 版,1997 年。DOI:10.1351/goldbook。
我还想显示第二位(也是最后一位)编辑 A. Wilkinson,而不是截断列表。到目前为止,我找不到使用该选项的确切代码。由于我在宏和函数maxnames
中都没有看到它,所以我猜想它在函数中使用,但我不明白该函数的代码。author
editor
\printnames
是否有可能将作者数量与编辑数量分开?
编辑:添加了 MWE
\documentclass{article}
\usepackage{hyperref}
\usepackage[%
backend = biber,%
style = trad-abbrv,%
citestyle = numeric-comp,%
sorting = nty,%
minnames = 1,%
maxnames = 1%
]{biblatex}
\bibliography{references}
\begin{filecontents}{references.bib}
@book{IUPAC1997,
address = {Oxford},
author = {IUPAC},
doi = {10.1351/goldbook},
edition = {2},
editor = {McNaught, A. D. and Wilkinson, A.},
isbn = {0-9678550-9-8},
publisher = {Blackwell Scientific Publications},
title = {{Compendium of Chemical Terminology (the “Gold Book”)}},
year = {1997}
}
\end{filecontents}
\begin{document}
This should be cited.\cite{IUPAC1997}
\printbibliography[heading = bibnumbered]
\end{document}
在我的本地文档中,我使用了trad-abbrv
bibstyle 并修改了其中的部分内容(用引号代替斜体文本等),但与这个问题无关,因此我更喜欢使用该trad-abbrv
样式共享较短的 MWE。
答案1
biblatex
maxnames
和选项minnames
同样适用于所有名称。如果您想要更好地控制不同类型的不同名称,则需要修改相关的 bibmacros。在这种情况下,有几种不同的方法可以得到所需的结果,但它们的语义会有所不同。
下面我们坚持maxnames=1,
并仅重新定义一个 bibmacro 以editor
在标题后打印更多 s。
\documentclass{article}
\usepackage[
backend = biber,
style = trad-abbrv,
citestyle = numeric-comp,
sorting = nty,
minnames = 1,
maxnames = 1,
]{biblatex}
\usepackage{hyperref}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames[byeditor][-\value{listtotal}]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{editorlstr}%
\clearname{editor}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\begin{filecontents}{\jobname.bib}
@book{IUPAC1997,
address = {Oxford},
author = {IUPAC},
doi = {10.1351/goldbook},
edition = {2},
editor = {McNaught, A. D. and Wilkinson, A.},
isbn = {0-9678550-9-8},
publisher = {Blackwell Scientific Publications},
title = {Compendium of Chemical Terminology (the “Gold Book”)},
year = {1997},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
This should be cited. \cite{IUPAC1997}
\printbibliography[heading = bibnumbered]
\end{document}