我想自定义详细的 biblatex 引文以排除 URL(和 DOI),但将其保留在参考书目中。有没有简单的方法可以实现这一点?
在此过程中,我想摆脱详细样式使用的“In:”(在参考书目和引文中),并将 URL 和 DOI 放在参考书目中的单独行上。
答案1
我按顺序回答你所有的问题
中的字段
biblatex
可以通过命令\clearfield
/删除\clearlist
(你可以查阅biblatex
文档要确定某个字段是 afield
还是 alist
,请参阅§2.2.2数据字段,第 15-24 页)。要仅影响引用命令,可以使用命令\AtEveryCitekey
。\AtEveryCitekey{% \clearfield{url}% \clearfield{urlyear} \clearfield{doi}% }
相反,您也可以使用
AtEveryBibitem
它来参考书目。可以通过重新定义宏来删除单词“in”,
in:
如下所示:\renewbibmacro*{in:}{}
可以通过扩展相关字段格式来实现额外的换行。
\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\space\url{#1}} \DeclareFieldFormat{doi}{\newline% \mkbibacro{DOI}\addcolon\space \ifhyperref {\href{http://dx.doi.org/#1}{\nolinkurl{#1}}} {\nolinkurl{#1}}}
每个定义都可以在文件中找到biblatex.def
。
完整代码如下:
\documentclass[]{article}
\usepackage{filecontents}
\begin{filecontents}{References.bib}
@article{Sarukkai:2005,
author = {Sarukkai, S},
title = {Revisiting the 'unreasonable effectiveness' of mathematics},
journal = {Current science},
year = {2005},
url = {http://www.ias.ac.in/currsci/feb102005/415.pdf},
}
\end{filecontents}
\usepackage[style=verbose]{biblatex}
\addbibresource{References.bib}
\AtEveryCitekey{%
\clearfield{url}%
\clearfield{urlyear}
\clearfield{doi}%
}
\DeclareFieldFormat{url}{\newline\mkbibacro{URL}\addcolon\space\url{#1}}
\DeclareFieldFormat{doi}{\newline%
\mkbibacro{DOI}\addcolon\space
\ifhyperref
{\href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
{\nolinkurl{#1}}}
\renewbibmacro*{in:}{}
\begin{document}
This, \fullcite{Sarukkai:2005} includes the URL for the citation, which I don't want; thought I do want it in the bibliography.
\printbibliography
\end{document}