如何用 biblatex+biber 显示文件字段?

如何用 biblatex+biber 显示文件字段?

我正在使用biblatex+包含如下条目的文件biberbib

@article{pm2006,
  author={Pritsker, Matthew},
  title={The hidden dangers of historical simulation},
  journal={Journal of Banking \& Finance},
  year={2006},
  volume={30},
  number={2},
  pages={561-582},
  month={February},
  file={xpto.pdf}
}

我想显示该file字段。我该怎么做?

答案1

file标准 BibLaTeX 样式不支持BibTeX 字段。需要一种支持该字段的样式reading

要以其他风格使用它,首先要为其提供格式说明:

\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space \url{#1}}

第二件事是给出打印字段的指令(并在正确的位置),这意味着重新定义一些现有的 bib 宏以将该字段包含在其中。要将其打印在条目末尾,一种可能性是重新定义 bibfinentry宏。

\renewbibmacro{finentry}{%
  \finentry\addspace
  \printfield{file}%
  }

另一种可能性是将信息包含在要打印URL或的块中DOI

\newbibmacro*{doi+eprint+url}{%
  \iftoggle{bbx:doi}
    {\printfield{doi}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:url}
    {\usebibmacro{url+urldate}}
    {}
  \newunit\newblock
  \printfield{file}
}

上述代码可以改进为包含一个选项( ),其方式与、和file的选项相同,即:doiurleprint

\newbool{bbx:file}

激活\usepackage[file,...]{biblatex},上面代码的最后一行可以替换为

\iftoggle{bbx:file}
  {\printfield{file}}
  {}

编辑解决方案使用\AtEveryBibitem

\AtEveryBibitem在条目代码之后立即执行其参数中的代码。因此使用\printfield{file}会导致文件名在条目内容之前打印。但是,可以将其附加到驱动程序内容的末尾。驱动程序的内容可通过控制序列获得blx@bbx@<entrytype>。该命令\thefield{entrytype}将为我们提供所需的字符串。因此,要在 bib 条目末尾打印文件名,我们可以使用以下指令:

\AtEveryBibitem{\csappto{blx@bbx@\thefield{entrytype}}{\addspace\printfield{file}}}

相关内容