更改文档中的 maxbibnames

更改文档中的 maxbibnames

我使用 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}

“Özge Aksın、Hayati Türkmen、Levent Artok、Bekir C¸etinkaya、Chaoying Ni、Orhan Büyükgüngör 和 Erhan Özkal。” vs “Özge Aksın et al.”

相关内容