我使用 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}