
私の 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}