Biblatex:在“在线”字段中添加时间信息并在网址前面添加标签

Biblatex:在“在线”字段中添加时间信息并在网址前面添加标签

我正在尝试将一些“时间”信息添加到我的在线字段中biblatex。我尝试使用该note条目,但无法按预期工作。现在我得到了以下信息:

\documentclass[a4paper, 
    oneside, 
    12pt, 
    bibliography=totocnumbered, 
    listof=totocnumbered
]{scrreprt}
\usepackage[english, ngerman]{babel}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[utf8]{inputenc}
\usepackage[automark]{scrpage2}

\usepackage[backend=biber, style=authoryear, urldate=comp, dateabbrev=false]{biblatex}
\bibliography{source}
\DeclareFieldFormat{url}{\newline\url{#1}}
\DeclareFieldFormat{urldate}{\addcomma\space#1}



\begin{document}
Latex is science \parencite{stack}

\printbibliography

\end{document}

该文件source.bib如下所示:

@online{stack,
    author = {Stack},
    title = {Why Latex is science},
    month = {april},
    year = 2012,
    url = {www.tex.stackexchange.com},
    urldate = {2013-04-29},
    note = "14.44 Uhr",
}

这目前给了我以下输出:

电流输出

我现在真正需要的是:

Stack(2012):为什么 Latex 是科学,网址:www.tex.stackexchange.com,2013 年 4 月 29 日,14.44 点。

基本上来说:

  • 在末尾添加时间信息
  • 在实际 URL 前面添加“URL:”标签
  • 将一些句号改为冒号或逗号

任何帮助都将不胜感激!


更新 1

所以我快到了。时间已经加满了(感谢 Guido)。我只需要再加一些field formating。代码部分如下所示:

\documentclass[a4paper, 
oneside, 
12pt, 
bibliography=totocnumbered, 
listof=totocnumbered
]{scrreprt}
\usepackage[english, ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[babel,german=quotes]{csquotes}
\usepackage[automark]{scrpage2}
\usepackage[]{url}


\usepackage[backend=biber, style=authoryear, urldate=comp, dateabbrev=false]{biblatex}
\bibliography{source}
%\begin{filecontents}{biblatex-dm.cfg}
%    \DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{urltime}
%\end{filecontents}
\DeclareFieldFormat{date}{#1}    % Not sure with this one
\DeclareFieldFormat{title}{#1\addcomma}
\DeclareFieldFormat{url}{\newline\bibstring{URL}\addcolon\addspace\url{#1}}
\DeclareFieldFormat{urltime}{#1}
\DeclareFieldFormat{urldate}{\addcomma\space#1\addcomma\addspace\printfield{urltime}}



\begin{document}
Latex is science \parencite{stack}

\printbibliography

\end{document}

下面是最终效果的彩色可视化:

最终应该如何

答案1

修改了更新 1 的答案

最好不要使用note。Biblatex 提供了创建新字段的机会,因此我将为 url 时间创建一个新字段(urltime)。

这可以通过

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{urltime}
\end{filecontents}

那么对于 URL 和相关信息的格式化,一种可能性是使用以下格式说明:

\DeclareFieldFormat{url}{\newline\bibstring[\MakeUppercase]{url}\addcolon\addspace\url{#1}}
\DeclareFieldFormat{urltime}{#1}
\DeclareFieldFormat{urldate}{%
  \iffieldundef{urlday}
    {}
    {\stripzeros{\thefield{urlday}}\adddot}%
  \iffieldundef{urlmonth}
    {}
    {\stripzeros{\thefield{urlmonth}}\adddot}%
  \printfield{urlyear}%
}

\renewbibmacro{url+urldate}{%
  \printfield{url}\setunit{\addcomma\addspace}
  \printurldate\addcomma\addspace
  \printfield{urltime}}

要将标准标点符号从.(点)更改为.(逗号),可以使用

\renewcommand{\newunitpunct}{\adddot}

对于.明年来说,

\renewcommand{\labelnamepunct}{\addcomma} 

最后,要从标签中删除月份,一个可能的解决方案是使用

\AtEveryBibitem{\clearfield{month}} 

文件中的条目.bib现在可以包含新urltime字段。

@online{stack,
    author = {Stack},
    title = {Why {\LaTeX} is science},
    month = {april},
    year = 2012,
    url = {www.tex.stackexchange.com},
    urldate = {2013-04-29},
    urltime = "14.44 Uhr",
} 

请注意在文件中如何正确书写 LaTeX .bib。通常,最好将整个单词括在{ }单个字母中以保留其大写字母(然后通过括住整个单词来调整字距)。

在此处输入图片描述

相关内容