如何强制 biblatex autocite 不在脚注中重复条目?

如何强制 biblatex autocite 不在脚注中重复条目?

下面的代码

\documentclass{article}
\usepackage{lipsum}

\usepackage[backend=biber,
    bibencoding=utf8,
    citestyle=verbose,
    bibstyle=verbose,
    url=true,
    autocite=footnote,
    sorting=nyt, 
    defernumbers=true,
    maxbibnames=99
]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}

\lipsum[4]
\autocite{sigfridsson,wiki:rtl}
\lipsum[4]
\autocite{sigfridsson,wiki:rtl}
\lipsum[4]
\autocite{sigfridsson,wiki:rtl}

\end{document}

产量

脚注中的重复条目

我该如何删除重复的条目?请注意,脚注中的引用源自宏调用,因此我无法简单地手动删除每页的重复条目。

答案1

以下是基于脚注中多次引用的参考文献一些scrextend用于脚注链接

\documentclass{article}
\usepackage[style=verbose,pagetracker]{biblatex}
\usepackage{scrextend}
\usepackage{hyperref}

\makeatletter
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
  {\label{blx:inst:\the\value{instcount}}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\usebibmacro{cite:postnote}}

\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}}}
     {\footref{blx:inst:\csuse{cbx@lastin@\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{}

\DeclareMultiCiteCommand{\superfootcites}[\cbx@wrap]{\superfootcite}{}
\makeatother

\DeclareAutoCiteCommand{superfootnote}[f]{\superfootcite}{\superfootcites}
\ExecuteBibliographyOptions{autocite=superfootnote}

\addbibresource{biblatex-examples.bib}

\usepackage{lipsum}

\begin{document}
\lipsum[1]
\autocite{sigfridsson}
\lipsum[2]
\autocite{sigfridsson}
\lipsum[3]
\autocite{sigfridsson}
\lipsum[4-7]
\autocite{sigfridsson}
\lipsum[8]
\autocites{sigfridsson}{worman}
\end{document}

仅一个脚注。

答案2

这是一条长评论,而不是答案:请注意,除了“wiki:rtl”是错误的关键字之外,您示例中的第二个和第三个脚注不是完整参考文献,而只是作者和标题。这些简短的参考文献可以被视为不必要的重复,但想想那些不连续或在不同页面的引用:如果您在第 85 页,那么必须转到第 12 页才能知道您引用的是哪篇论文,这很麻烦。

无论如何,对于连续重复引用,你总是可以使用手动解决方案 \footnotemark[\value{footnote}],但是,... 难道不是最好只重写文本以仅引用一次吗?此外,如果在参考文献之间有包含另一个不相关的脚注的风险,则会产生错误的结果。对于非连续引用,这种风险更大,即使结果是正确的,也不得不经常检查其他页面的脚注,这很烦人

一个折中解决方案是,verbose-trad1当引用没有歧义时(即,当同一作者没有多部作品时),使用 样式将引用缩短为“Author, op. cit.” 。此样式不会像 那样引用第一个引用verbose-inotes,但无需创建新样式,就可以轻松手动进行交叉引用。示例:


姆韦


\documentclass{article}
\usepackage[paperheight=12cm,paperwidth=12cm]{geometry}
\usepackage{lipsum}
\usepackage[style=verbose-trad1]{biblatex}
%\usepackage[style=verbose-inote]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\lipsum[1][1]\autocite[\protect\label{x1}]{sigfridsson,shore}
\lipsum[2][1]\footnotemark[\value{footnote}]
\lipsum[3][1]\footnotemark[\value{footnote}]
\lipsum[4][1]\footnotemark[\value{footnote}]
\lipsum[5][1]\footnotemark[\value{footnote}]
\vfill\dotfill\par
(Affer dozen of pages and another cites ...) 
{\renewcommand\thefootnote{}\footnote{\ldots \ldots \ldots }}  
\setcounter{footnote}{58}
\par\dotfill\vfill
  
\lipsum[6][1]\autocite[][ see footnote \ref{x1}]{sigfridsson,shore}
%\lipsum[6][1]\autocite]{sigfridsson,shore} % for verbose-inote style
\newpage
\end{document}

相关内容