使用 biblatex 在脚注中引用作者和年份

使用 biblatex 在脚注中引用作者和年份

我一直在寻找并注意到没有找到这个问题的答案,这让我很惊讶,因为这种风格很常见。

我刚刚切换到 biblatex,因为我所在领域的一些期刊使用脚注而不是内联引文,并且它可以轻松地在两者之间切换。我的问题是,我似乎无法获得任何 biblatex 命令组合来生成带有内联作者姓名和脚注年份的引文。(我使用 authoryear-icomp 作为 biblatex 样式。)

我想要的示例:

In my article I reference the recent work of Authorname^1, which is important.

^1: <this is a footnote containing only> Year.

就 natbib 而言,我想要一个 \citet{} 命令,将名称放在文本中,但将年份放在脚注中。我可以轻松使用 \footcite 将作者和年份放入脚注中,但似乎无法弄清楚如何将作者的姓名保留在文本中,以便某些句子保持流畅。

我显然可以通过写出作者姓名、标注年份并使用 \nocite 将其放入参考书目中来解决这个问题。然而,这将违背在期刊要求之间轻松切换的整个目的。

我认为有一个简单的解决方案,而我只是一个工具。帮忙吗?

答案1

第二种解决方案

再次编辑,以便大多数多引用命令都可以工作。

已编辑,\footcite现在可工作。

biblatex一个合理有效的解决方案是调整引用中打印年份的方式,从而保留 的许多功能。这可以通过重新定义与cite:year和相关的命令来实现cite:extrayear。这样做的好处是保留了 ibidem 功能。

下面的代码包括一个示例书目,然后是带有重新定义的引用代码的主文件。

\begin{filecontents}{test.bib}
@Article{Test,
author = {Author, A. N.},
title = {Article title},
year = 2005,
pages = {10-20},
journal = {Jour.},
vol = {100}
}
@Article{Test2,
author = {Author, A. N.},
title = {Second article},
year = 2005,
pages = {10-20},
journal = {Jour.},
vol = {100}
}
@Article{Test3,
author = {Author, A. B.},
title = {Third article},
year = 2005,
pages = {10-20},
journal = {Jour.},
vol = {100}
}
@Article{Test4,
author = {Author, A. N.},
title = {Fourth article},
year = 2007,
pages = {10-20},
journal = {Jour.},
vol = {100}
}
\end{filecontents}

\documentclass{article}
\usepackage[style=authoryear-icomp,autocite=plain]{biblatex}

\addbibresource{test.bib}

\renewbibmacro*{cite:labelyear+extrayear}{%
  \iffieldundef{labelyear}
    {}
    {\iftoggle{blx@footnote}
      {\printtext[bibhyperref]{%
       \printfield{labelyear}%
       \printfield{extrayear}}}
      {\footnote{\printtext[bibhyperref]{%
       \printfield{labelyear}%
       \printfield{extrayear}}}}}}

\renewbibmacro*{cite:extrayear}{%
  \iffieldundef{extrayear}
    {}
    {\iftoggle{blx@footnote}
      {\printtext[bibhyperref]{\printfield{extrayear}}}%
      {\footnote{\printtext[bibhyperref]{%
      \printfield{labelyear}%
      \printfield{extrayear}}}}}}

\renewcommand{\compcitedelim}{\space}

\begin{document}
\thispagestyle{empty}
\autocite{Test} and
\autocite[page 3]{Test}.
Some text \parencite{Test2}.

Here is a footnote citation\footcite{Test}.

\autocite{Test,Test4,Test3}.

\printbibliography
\end{document}

示例输出

如上所示,它与 一起使用\autocite\parencite并接受它们的可选参数。这种风格\autocite与 相同\cite

我没有演示过\textcite,尽管它的输出有时可能会有用;\footcite也已经设置为工作,这要归功于biblatex可以blx@footnote检测我们是否在脚注中的切换。

代码还处理了大多数多重引用\cite{ref1,ref2}。但是,如果ref1ref2是同一作者在同一年出版的两本出版物,则会出现一个虚假的逗号。修复此问题需要对引用样式文件进行更大量的重写:中的每条命令\cite\textcite等都author-icomp.cbx包含一个显式逗号\setunit{\addcomma},需要将其删除。

原始解决方案

这里是原始解决方案的重新发布,因为这显然对 OP 最有帮助。它只是定义了一个新命令\citepfy(plain-foot-year),该命令调用\citeauthor后跟一个\footcite仅产生年份的修改后的命令。它不接受 cite 命令通常使用的任何可选参数biblatex

\begin{filecontents}{b.bib}
@Article{Test,
author = {Author, A. N.},
title = {Article title},
year = 2005,
pages = {10-20},
journal = {Jour.},
vol = {100}
}
\end{filecontents}

\documentclass{article}
\usepackage[style=authoryear-icomp]{biblatex}

\addbibresource{b.bib}

\newcommand{\citepfy}[1]{\citeauthor{#1}\footyearcite{#1}}
\DeclareCiteCommand{\footyearcite}[\mkbibfootnote]
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{citeyear}}
  {}
  {\usebibmacro{cite:postnote}}

\begin{document}
\citepfy{Test}
\printbibliography
\end{document}

示例输出

相关内容