biblatex 在脚注中重复引用,指向早期的脚注

biblatex 在脚注中重复引用,指向早期的脚注

我使用 biblatex 如下:

\usepackage[style=verbose-note,backend=bibtex]{biblatex}
\renewcommand{\cite}{\autocite} % citations in footnotes

这有效几乎正如我所希望的那样。我仍然希望重复引用(比如我在第 1 页引用了 \cite{A},然后我在第 2 页再次引用了 \cite{A})应该指向之前的引用。因此,在这种情况下,只应生成一个脚注,并且第 1 页和第 2 页都应该有指向该脚注的链接(仅在第 1 页上)。这可能吗?

答案1

一个相当简单的版本(显然)不能处理前注或后注,它是这样的

\makeatletter
\DeclareCiteCommand{\myfootcite}
  {}
  {\usebibmacro{citeindex}%
   \usebibmacro{myfootcite}}
  {}
  {}

\newbibmacro*{myfootcite}{%
  \ifciteseen
    {\usebibmacro{myfootcite:note}}
    {\mkbibfootnote{\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}}

\newbibmacro*{myfootcite:note}{\footref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}
\makeatother

我们定义了一个\myfootcite不打印后注或前注的新命令。它myfootcite调用的宏只会\footref在适当的脚注上发布(如果该作品之前已被引用并且已经有脚注)或创建新的脚注。

该命令基于中定义的宏集verbose-note

我们需要在实现中\footref使用它,请参阅不同的地方引用同一个脚注在下面的 MWE 中,我使用了scrextend即要获取的 KOMA 版本\footref(如果您使用任何 KOMA 文档类,则无需scrextend手动加载;memoir班级还提供\footref开箱即用;footmisc也有一个实现;另请参阅文本相同的脚注)。

平均能量损失

\documentclass{article}
\usepackage{scrextend}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage[style=verbose-note]{biblatex}
\usepackage[colorlinks=true]{hyperref}

\addbibresource{biblatex-examples.bib}

\makeatletter
\DeclareCiteCommand{\myfootcite}
  {}
  {\usebibmacro{citeindex}%
   \usebibmacro{myfootcite}}
  {}
  {}

\newbibmacro*{myfootcite}{%
  \ifciteseen
    {\usebibmacro{myfootcite:note}}
    {\mkbibfootnote{\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}}

\newbibmacro*{myfootcite:note}{\footref{cbx@\csuse{cbx@f@\thefield{entrykey}}}}
\makeatother

\begin{document}
First citation.\myfootcite{cicero}
First citation.\myfootcite{knuth:ct:a}
Lorem\footnote{ipsum} dolor\myfootcite{wilde} sit\footnote{amet} and something\myfootcite{wilde}
Second citation.\myfootcite{cicero}
\printbibliography
\end{document}

在此处输入图片描述

相关内容