biblatex:更改序言中不同条目类型的打印字段

biblatex:更改序言中不同条目类型的打印字段

我希望url使用该authoryear样式打印字段,但仅限于@MISC条目类型。

我的解决方法是style=authoryear, url=false在包选项中设置,并将条目的字段设置为title等于。在这个特定情况下,这对我来说没问题,因为条目的并不重要,但我想知道是否有更好的方法来做到这一点。url@MISCtitle@MISC

- url>title通过以下前言代码实现

\DeclareSourcemap{
    \maps[datatype=bibtex]{
        \map[overwrite]{
            \pertype{misc}
            \step[fieldsource=url]
            \step[fieldset=title, origfieldval]
        }
    }
}

答案1

0. 使用@online代替@misc

无论全局选项设置如何,条目@online类型始终显示字段。urlurl

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear, url=false]{biblatex}


\begin{filecontents}{\jobname.bib}
@online{bronto,
  author  = {Anne Elk},
  title   = {Towards a Unified Theory on Brontosauruses},
  date    = {1972-11-16},
  url     = {http://example.edu/~elk/bronto.pdf},
  urldate = {2015-09-07},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\autocite{bronto}
\printbibliography
\end{document}

1. 设置url每个类型的选项(biblatex3.15 及以上版本)

biblatex3.15 起,您可以url在标准样式中设置每种类型的选项(https://github.com/plk/biblatex/pull/1000),因此您可以url全局禁用,但重新启用它@misc

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear, url=false]{biblatex}
\ExecuteBibliographyOptions[misc]{url=true}

\begin{filecontents}{\jobname.bib}
@misc{bronto,
  author  = {Anne Elk},
  title   = {Towards a Unified Theory on Brontosauruses},
  date    = {1972-11-16},
  url     = {http://example.edu/~elk/bronto.pdf},
  urldate = {2015-09-07},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\autocite{bronto}
\printbibliography
\end{document}

url2.使用sourcemap删除字段

此解决方案不使用该url选项。相反,它会删除除源映射之外的所有类型的url和字段。urldate@misc

优点是该字段实际上永远消失了,并且不再用于生成标签数据(例如标签日期)。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear]{biblatex}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pernottype{misc}
      \step[fieldset=url, null]
      \step[fieldset=urldate, null]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@misc{bronto,
  author  = {Anne Elk},
  title   = {Towards a Unified Theory on Brontosauruses},
  date    = {1972-11-16},
  url     = {http://example.edu/~elk/bronto.pdf},
  urldate = {2015-09-07},
}
\end{filecontents}
\addbibresource{\jobname.bib}


\begin{document}
\autocite{bronto}
\printbibliography
\end{document}

在所有情况下,输出将是

Elk, Anne (1972 年 11 月 16 日)。《雷龙统一理论》。网址:http://example.edu/~elk/bronto.pdf(访问日期:2015 年 9 月 7 日)。

相关内容