当我引用时,我希望在脚注中包含网站网址和咨询日期,以及参考书目中包含所有信息。
我已经\refbiblio
为此创建了一个函数(),但我无法获取 urldate 字段的值,它无法被识别\citefield
。
我检查了biblatex
包,urldate 是一个字段,没有命令可以直接获取它(就像\citeurl
url 一样)。
以下是 MWE:
\documentclass[11pt]{article}
\usepackage[french]{babel}
\FrenchFootnotes
\AddThinSpaceBeforeFootnotes
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{csquotes}
\usepackage{filecontents}
\begin{filecontents}{biblio.bib}
@misc{wiki_sdn,
title={Wikipedia Software-defined networkong},
url={https://en.wikipedia.org/wiki/Software-defined_networking},
urldate={2019-02-24}
}
\end{filecontents}
\usepackage[sorting=none]{biblatex}
\addbibresource{biblio.bib}
\usepackage{csquotes} % Add when use bibtex and babel
\usepackage{xpatch} % Add when use biblatex and etoolbox
\usepackage[french]{isodate}
\newcommand{\refbiblio}[1]{\footnote{\citeurl{#1}, consulté le \citefield{#1}{urldate} \cite{#1}}}
\begin{document}
Test\refbiblio{wiki_sdn}
\printbibliography
\end{document}
答案1
urldate
不是普通字段,日期内部由多个字段组成,必须以不同的方式处理,因此不能用 引用\citefield
。您可以将\citeurldate
(如\citedate
)定义为
\DeclareCiteCommand{\citeurldate}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\printurldate}
{\multicitedelim}
{\usebibmacro{postnote}}
并使用它。
但是,最好不要将多个\cite...
命令组合成一个。相反,应该将\newcommand
整个命令声明为带有 的 cite 命令。一个简单的例子就是为什么比带有多个s 的更好,因为它可以正确处理多个引文以及前后注释。如果您想用 来做到这一点,则需要做额外的工作。如果您将多个命令组合成一个调用,您还可能会遇到引文跟踪器的问题(“ibid.”等) 。\refbiblio
biblatex
\DeclareCiteCommand
\DeclareCiteCommand
\newcommand
\cite...
\DeclareCiteCommand
\newcommand
\cite...
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\FrenchFootnotes
\AddThinSpaceBeforeFootnotes
\usepackage{csquotes}
\usepackage[french]{isodate}
\usepackage[sorting=none]{biblatex}
\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1}
\renewbibmacro*{url+urldate}{%
\usebibmacro{url}%
\iffieldundef{urlyear}
{}
{\setunit*{\addcomma\space}%
\usebibmacro{urldate}}}
\DeclareCiteCommand{\fnurlcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{url+urldate}%
\setunit{\addspace}%
\printtext[labelnumberwidth]{\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{wiki_sdn,
title = {Wikipedia Software-defined networking},
url = {https://en.wikipedia.org/wiki/Software-defined_networking},
urldate = {2019-02-24},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Test\fnurlcite{wiki_sdn}
\printbibliography
\end{document}