我正在使用biblatex
+包含如下条目的文件biber
:bib
@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
的选项相同,即:doi
url
eprint
\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}}}