
В моей библиографии biblatex рядом со ссылками у меня есть числа вроде [1]. Когда я нажимаю на ссылку [1], она ссылается на библиографию [1] (благодаря пакету hyperref). Есть ли способ сделать такую ссылку в обратном направлении? Так что из библиографии я могу быстро увидеть, где цитировалась ссылка?Это решениепочти то, что я хочу, но это требует, чтобы номера страниц цитат были напечатаны, а я этого не хочу. Я понимаю, что это не имело бы смысла, если бы я цитировал ссылку больше одного раза, но это редко бывает со мной.
решение1
Следующее решение не использует backref
, но основано на связывании verbose-inote
.
Мы устанавливаем ссылку-якорь в каждой цитате и связываем метку в библиографии с первой ссылкой (которую мы сохраняем для дальнейшего использования).
Для этого необходимо, чтобы первое цитирование каждой записи произошло до \printbibliography
.
МВЭ
\documentclass{article}
\usepackage[backref=false]{biblatex}
\usepackage[colorlinks=false]{hyperref}
\makeatletter
\DeclareFieldFormat{bibhypertarget}{%
\bibhypertarget{\thefield{entrykey}:\the\value{instcount}}{#1}}
\renewbibmacro*{cite}{%
\printtext[bibhyperref]{%
\printtext[bibhypertarget]{%
\printfield{labelprefix}%
\printfield{labelnumber}%
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
{}}}%
\usebibmacro{cite:save}}
\newbibmacro*{cite:save}{%
\ifcsundef{cbx@\thefield{entrykey}}
{\csxdef{cbx@\thefield{entrykey}}{\the\value{instcount}}}
{}}
\newbibmacro{cbx:linktofirstcite}[1]{%
\ifcsdef{cbx@\thefield{entrykey}}
{\bibhyperlink
{\thefield{entrykey}:\csuse{cbx@\thefield{entrykey}}}
{#1}}
{#1}}
\DeclareFieldFormat{labelnumberwidth}{%
\usebibmacro{cbx:linktofirstcite}{\mkbibbrackets{#1}}}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{knuth:ct}
Some text \autocite{geer,worman}.
\clearpage
Some more text \autocite{cicero}.
\printbibliography
\end{document}