我使用 biblatex 在文档的多个位置显示参考列表(使用\newrefsection
和\printbibliography
)。目前我使用
\ExecuteBibliographyOptions{maxbibnames=99}
在序言中显示所有作者我的书目。但是,对于文档中的一些参考列表,我只想显示有限数量的作者。我尝试这样做
\ExecuteBibliographyOptions{maxbibnames=3}
在文档中,但得到了LaTeX Error: Can be used only in preamble.
有没有办法改变maxbibname
中间文档?或者用其他方法显示不同的作者数量?
梅威瑟:
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\ExecuteBibliographyOptions{maxbibnames=99}
\begin{document}
\newrefsection
\nocite{sigfridsson,aksin,worman,geer,pines}
\printbibliography
% Change authors
% \ExecuteBibliographyOptions{maxbibnames=1}
\newrefsection
\nocite{sigfridsson,aksin,worman,geer,pines}
\printbibliography
\end{document}
答案1
一方面,biblatex
它(min|max)(bib|cite)names
只是通过一个简单的计数器实现的,理论上可以在文档的任何位置重新定义它。
但是由于biblatex
也会传递(min|max)(bib|cite)names
给后端 Biber 或 BibTeX 用于排序目的以及唯一性和标签计算,当您(min|max)(bib|cite)names
在文档中动态更改值时,可能会在边缘情况下得到不良结果。
在您这种numeric
风格的情况下,不存在这种危险,因此我们可以将计数器设置在我们想要的任何地方。
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\ExecuteBibliographyOptions{maxbibnames=99}
\makeatletter
\newrobustcmd*{\SetMinBibnames}[1]{\numdef\blx@minbibnames{#1}}
\newrobustcmd*{\SetMaxBibnames}[1]{\numdef\blx@maxbibnames{#1}}
\makeatother
\begin{document}
\newrefsection
\nocite{sigfridsson,aksin,geer}
\printbibliography
\newrefsection
\SetMaxBibnames{1}
\nocite{sigfridsson,aksin,geer}
\printbibliography
\end{document}