BibliographyDrivers 中的 \usebibmacro{bibindex} 有什么作用?

BibliographyDrivers 中的 \usebibmacro{bibindex} 有什么作用?

我正在尝试为我的大学课程定义自定义书目样式,为此我想了解其他样式的作用。我查看的几乎每个 *.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,则为真。在这种情况下,宏会索引和。indexingbibtruelabelnameindextitle

您可能没有看到效果,因为您已关闭索引,但对于需要索引的情况,保留该宏是一种很好的做法。


如果你写自己的 bibriver,通常最好保留所有的

  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%

在所有标准 bibdrivers 的开头都使用。我对尾部也有同样的感觉

  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

当然,您可能有需要在这里进行更改的要求,但绝大多数情况下,代码最好留在那里。

相关内容