![Biblatex:在“在线”字段中添加时间信息并在网址前面添加标签](https://linux22.com/image/267513/Biblatex%EF%BC%9A%E5%9C%A8%E2%80%9C%E5%9C%A8%E7%BA%BF%E2%80%9D%E5%AD%97%E6%AE%B5%E4%B8%AD%E6%B7%BB%E5%8A%A0%E6%97%B6%E9%97%B4%E4%BF%A1%E6%81%AF%E5%B9%B6%E5%9C%A8%E7%BD%91%E5%9D%80%E5%89%8D%E9%9D%A2%E6%B7%BB%E5%8A%A0%E6%A0%87%E7%AD%BE.png)
我正在尝试将一些“时间”信息添加到我的在线字段中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
。通常,最好将整个单词括在{
}
单个字母中以保留其大写字母(然后通过括住整个单词来调整字距)。