我正在尝试为我的大学课程定义自定义书目样式,为此我想了解其他样式的作用。我查看的几乎每个 *.bbx 文件都以 开头其书目驱动程序\usebibmacro{bibindex}
。
但是,无论我是否添加它,对我来说都没有明显的效果,而且我无法从文档中找到它实际上做什么或在哪里声明它。
这是我用来测试是否获得一些可观察效果的 MWE。
\documentclass[12pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[style=german]{csquotes}
\usepackage[backend=biber, style=geschichtsfrkl, maxcitenames=2]{biblatex}
\DeclareBibliographyDriver{book}{
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit*{\addcolon\addspace}\newblock%
\usebibmacro{title}%
\setunit*{\addcommad\addspace}\newblock%
\usebibmacro{location+edition+year}%
\usebibmacro{finentry}%
}
\addbibresource{biblio.bib}
\begin{filecontents}{biblio.bib}
@book{erlerStraftheorieZychaRegister1998,
title = {Straftheorie - Zycha: Register},
author = {Erler, Adalbert},
location = {{Berlin}},
date = {1998},
}
@book{ganshofWasIstLehnswesen1975,
title = {Was ist das Lehnswesen?},
author = {Ganshof, F. L.},
location = {{Darmstadt}},
edition = {4},
date = {1975},
}
\end{filecontents}
\begin{document}
\fullcite{ganshofWasIstLehnswesen1975} \\
\fullcite{erlerStraftheorieZychaRegister1998}
\printbibliography
\end{document}
答案1
bibmacrobibindex
定义在biblatex.def
(v3.19 中第 2409-2413 行).其定义是
\newbibmacro*{bibindex}{%
\ifbibindex
{\indexnames{labelname}%
\indexfield{indextitle}}
{}}
这意味着它只在\ifbibindex
为真时才执行某些操作。如果设置了该选项以便索引参考书目条目(即,如果选项设置为或) \ifbibindex
,则为真。在这种情况下,宏会索引和。indexing
bib
true
labelname
indextitle
您可能没有看到效果,因为您已关闭索引,但对于需要索引的情况,保留该宏是一种很好的做法。
如果你写自己的 bibriver,通常最好保留所有的
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
在所有标准 bibdrivers 的开头都使用。我对尾部也有同样的感觉
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
当然,您可能有需要在这里进行更改的要求,但绝大多数情况下,代码最好留在那里。