我将其用作biblatex
参考文献。我的bib
文件包含许多从不同来源导入的参考文献。并非所有参考文献都有条目url
,其中一些是假的。我现在喜欢默认隐藏条目,url
但仅将它们用于特定参考类型,例如@manual
。
目前我使用:
\usepackage[
style=numeric-comp,
sorting=none,
doi=false,
isbn=false,
url=true,
eprint=false,
maxnames=99
]{biblatex}
是否可以url=false
笼统地说,但类似于manual={url=true}
?我喜欢避免进入我的大bib
文件并注释掉所有其他url
条目。
答案1
\documentclass{article}
\usepackage{biblatex}
\AtEveryBibitem{%
\ifentrytype{manual}{%
}{%
\clearfield{url}%
\clearfield{urldate}%
}%
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@manual{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
url = {tex.stackexchange.com},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
url = {tex.stackexchange.com},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
答案2
我想提供另一种解决方案。您可以使用命令\DeclareFieldFormat
。这样,您可以简单地添加新的条目类型,或者您可以为不同的条目类型设置特殊格式。
该命令\DeclareFieldFormat
有一个星型版本,它为每个条目类型设置定义。在下一步中,您可以使用可选参数为一个或多个条目类型定义特殊设置。
\documentclass{article}
\usepackage{biblatex}
\DeclareFieldFormat*{url}{}
\DeclareFieldFormat[manual]{url}{\mkbibacro{URL}\addcolon\space\url{#1}}
\DeclareFieldFormat*{urldate}{}
\DeclareFieldFormat[manual]{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@manual{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
url = {tex.stackexchange.com},
urldate={2012-04-19}
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
url = {tex.stackexchange.com},
urldate={2012-04-19}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
@lockstep:我希望可以采用你的例子。
答案3
如果您使用 biber,另一种方法是在 biblatex 看到任何数据之前执行此操作。将其放入您的 biber.conf 中:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<per_type>MANUAL</per_type>
<map_step map_field_set="URL" map_field_target="URL"/>
</map>
<map>
<map_step map_field_set="URL" map_null="1"/>
</map>
</maps>
</sourcemap>
</config>
您也可以只使用一个map
子句并列出要从中删除 URL 的所有条目类型,每个条目类型占一行per_entrytype
。
答案4
基于@PLK 的回答,这里有一个示例biber.conf
,它有选择地从指定的条目类型中删除 URL,而不是有选择地保留它们。
请注意,条目类型不区分大小写。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map>
<!-- Hide urls in listed types -->
<per_type>InProceedings</per_type>
<per_type>Book</per_type>
<per_type>Conference</per_type>
<per_type>InCollection</per_type>
<per_type>Article</per_type>
<map_step map_field_set="URL" map_null="1"/>
<map_step map_field_set="UrlDate" map_null="1"/>
</map>
</maps>
</sourcemap>
</config>