在 biblatex 的详细样式中,只有当引用在整篇文章中第一次出现时才会打印完整引用,之后总是打印简短的引用。我希望有相同的行为,但在页面级别。
其工作方式如下:某一引文第一次出现在某一页时,将打印完整引文,该来源的所有后续引文将缩短。然后在下一页,该来源的第一次引文再次是完整引文,所有后续引文再次缩短。
我发现了一个相当古老的问题,它朝着同样的方向发展,然而,我无法将答案应用到我的问题上:biblatex:是否有类似于 \ifciteseen 但在同一页内的命令?
答案1
您可以使用我的答案到biblatex:是否有类似于 \ifciteseen 但在同一页内的命令?。
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=verbose]{biblatex}
\usepackage[colorlinks]{hyperref}
\makeatletter
\AtEveryCitekey{%
\ifcsundef{cbx@instcount@curr@\the\c@refsection @\thefield{entrykey}}
{\csnumgdef{cbx@instcount@curr@\the\c@refsection @\thefield{entrykey}}{0}}
{}%
\csnumgdef{cbx@instcount@last@\the\c@refsection @\thefield{entrykey}}{%
\csuse{cbx@instcount@curr@\the\c@refsection @\thefield{entrykey}}}%
\csnumgdef{cbx@instcount@curr@\the\c@refsection @\thefield{entrykey}}{\value{instcount}}}
\newcommand\iflastciteonsamepage{%
\ifsamepage
{\number\csuse{cbx@instcount@curr@\the\c@refsection @\thefield{entrykey}}}
{\number\csuse{cbx@instcount@last@\the\c@refsection @\thefield{entrykey}}}}
\makeatother
\renewbibmacro*{cite}{%
\usebibmacro{cite:citepages}%
\iflastciteonsamepage
{\iffieldundef{shorthand}
{\usebibmacro{cite:short}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{cite:full}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson}
ipsum \autocite{worman}
dolor \autocite{sigfridsson}
sit \autocite{nussbaum}
amet \autocite{worman}
\clearpage
Lorem \autocite{sigfridsson}
ipsum \autocite{nussbaum}
dolor \autocite{sigfridsson}
sit \autocite{worman}
amet \autocite{nussbaum}
\printbibliography
\end{document}