\citefield 对 urldate 字段不起作用

\citefield 对 urldate 字段不起作用

当我引用时,我希望在脚注中包含网站网址和咨询日期,以及参考书目中包含所有信息。

我已经\refbiblio为此创建了一个函数(),但我无法获取 urldate 字段的值,它无法被识别\citefield

我检查了biblatex包,urldate 是一个字段,没有命令可以直接获取它(就像\citeurlurl 一样)。

以下是 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.”等) 。\refbibliobiblatex\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}

url: https://en.wikipedia.org/wiki/Software-defined_networking,访问于 2019 年 2 月 24 日 [1]。

相关内容