![脚注中多次引用的参考文献](https://linux22.com/image/258497/%E8%84%9A%E6%B3%A8%E4%B8%AD%E5%A4%9A%E6%AC%A1%E5%BC%95%E7%94%A8%E7%9A%84%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE.png)
我在使用时遇到以下问题\footcite
:经常发生相同的引用(同一作者、同一标题、同一页)出现在同一页的脚注中,例如:
- H. Melville。《白鲸记》,第 78 页。
- H. Melville。《白鲸记》,第 90 页。
- H. Melville。《白鲸记》,第 78 页。
有没有办法只获得:
- H. Melville。《白鲸记》,第 78 页。
- H. Melville。《白鲸记》,第 90 页。
即第二次提到p.78
Moby Dick 时又是 ¹ 而不是 ³?
答案1
您可以定义一个变体,用于\footcite
跟踪每个给定的后记和输入键组合的最后一个实例和脚注计数器值。如果页面上出现相同的组合,则只打印相应的脚注标记。否则,引用参数将传递给\footcite
。
\documentclass{article}
\usepackage[style=authortitle,citetracker,pagetracker=page]{biblatex}
\makeatletter
\DeclareCiteCommand{\superfootcite}[\cbx@wrap]
{\gdef\cbx@keys{}}
{\xappto\cbx@keys{\thefield{entrykey},}}
{}
{\ifcsundef{cbx@lastin@\cbx@keys @\strfield{postnote}}
{\csnumgdef{cbx@lastin@\cbx@keys @\strfield{postnote}}{-1}}{}%
\ifsamepage{\value{instcount}}{\csuse{cbx@lastin@\cbx@keys @\strfield{postnote}}}
{\footnotemark[\csuse{cbx@lastfn@\cbx@keys @\strfield{postnote}}]}
{\xappto\cbx@cite{\noexpand\footcite%
[\thefield{prenote}][\thefield{postnote}]{\cbx@keys}%
\csnumgdef{cbx@lastfn@\cbx@keys @\strfield{postnote}}{\value{\@mpfn}}%
\csnumgdef{cbx@lastin@\cbx@keys @\strfield{postnote}}{\value{instcount}}}}}
\newrobustcmd{\cbx@wrap}[1]{#1\cbx@cite\gdef\cbx@cite{}}
\def\cbx@cite{}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\null\vfill\noindent
New citation.\superfootcite[10--15]{companion}
New citation.\superfootcite[10--15]{companion,bertram}
Recurrent citation.\superfootcite[10--15]{companion}
New citation.\superfootcite[10]{companion}
\clearpage\null\vfill\noindent
New citation.\superfootcite[10--15]{companion}
Vanilla footnote.\footnote{Footnote text.}
New citation.\superfootcite[10--15]{bertram}
Recurrent citation.\superfootcite[10--15]{companion}
\end{document}
以下是第一页的输出:
第二: