我需要创建一个引用简写列表,但我的文档仅使用一位作者的作品的简写。因此,用简写形式表示完整引用方案是多余的:它应该省略作者的名字。
这可以通过重置作者字段来实现\AtBeginShorthands
,例如:
\AtBeginShorthands{\renewbibmacro*{author}{}}
但我在其他地方也需要这种行为:文档中有一个部分,我计划在其中放置一个description list
,介绍和解释主要参考书目......
我想创建一个单独的参考书目,例如“作品按作者姓名”,其中作者的名字也是多余的......(我认为这应该在里面做,\defbibenvironment
但我不知道怎么做)
总结一下:
- 1)如何
author bibmacro
在单一环境内重置 - 2)如何
author bibmacro
在单独的参考书目中重置
答案1
前注:尽管您声明已设法重置环境中的作者字段,但恐怕这\renewbibmacro*{author}{}
将涵盖许多情况,但不是所有情况。(标准书目驱动程序使用了许多不同的 bibmacros!)
对于单独的参考书目,我建议克隆您最喜欢的参考书目/引用样式使用的 bibenvironment,并将\clearname{author}
(和\clearname{editor}
)添加到包含的第四个强制参数\defbibenvironment
中“在参考书目或简写列表的每个条目开头执行的代码”(手册,第 3.5.7 节)。
在下面的例子中,我还半自动化地创建了“按作者姓名排列的作品”书目。biblatex
没有(还没有?)命令\bibbyauthor
,但您可以为不同的作者声明类别并使用\bibbycategory
。
\documentclass{article}
\usepackage[defernumbers=true]{biblatex}
\defbibenvironment{bibnoauthors}
{\list
{\printtext[labelnumberwidth]{%
\printfield{prefixnumber}%
\printfield{labelnumber}}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
{\clearname{author}%
\clearname{editor}%
\item}
\DeclareBibliographyCategory{Author}
\DeclareBibliographyCategory{Buthor}
\addtocategory{Author}{A01x,A01y}
\addtocategory{Buthor}{B02}
\defbibheading{Author}{\section*{Works by A.~Author}}
\defbibheading{Buthor}{\section*{Works by B.~Buthor}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01x,
author = {Author, A.},
year = {2001},
title = {Alpha-First},
}
@misc{A01y,
author = {Author, A.},
year = {2001},
title = {Alpha-Second},
}
@misc{B02,
editor = {Buthor, B.},
year = {2002},
title = {Bravo},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\bibbycategory[env=bibnoauthors]
\printbibliography
\end{document}