如何让超链接引用指向正确的页面?

如何让超链接引用指向正确的页面?

我有一份带有自定义参考书目的文档。我的意思是,参考书目是手动完成的,以在其中插入自定义内容。以下 MWE 说明了我的问题。命令生成的链接\cite指向文档的第一页,而不是指向书目所在的页面。我猜这是正常行为,因为我没有\bibliography命令。我该如何解决这个问题?

\documentclass[a4paper, 12pt]{article}

%% Bibliography %%
\usepackage[backend=bibtex]{biblatex}
\newcommand{\itembib}[1]{\item[\cite{#1}] \fullcite{#1}}
\begin{filecontents}{mybib.bib}
  @article{Article1,
    author={Manu},
    title={A nice paper},
    journaltitle={Journal 1},
    year=2017
  }
  @article{Article2,
    author={Max},
    title={A nice paper again},
    journaltitle={Journal 2},
    year=2016
  }
\end{filecontents} 
\addbibresource{mybib.bib}

%% hyperref %%
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{
  colorlinks, linkcolor={red!50!black},
  citecolor={blue!50!black}, urlcolor={blue!80!black}
}

\begin{document}

\begin{titlepage}
  TITLE
\end{titlepage}

\newpage
\tableofcontents

\newpage
\section{INTRODUCTION}
Blabla

\newpage
\section{BIBLIO}
\subsection{Subsec 1}
\begin{itemize}
  \itembib{Article1}
\end{itemize}
\subsection{Subsec 2}
\begin{itemize}
  \itembib{Article2}
\end{itemize}
\newpage
\section{CHAPTER 1}
Blabla\cite{Article1}.

\newpage
\section{CHAPTER 2}
Blabla\cite{Article2}.

\end{document}

答案1

默认情况下,biblatex仅为参考书目中的条目分配链接锚点。特别是,\fullcite不会获得链接回的锚点。这是有道理的,因为条目的锚点应该是唯一的,并且通常可以合理地假设条目只会出现在一个参考书目中。另一方面,条目可能会被引用多次,并且其\fullcite核心仍然是引用命令。

您可以使用

\makeatletter
\DeclareCiteCommand{\fullcite}
  {\usebibmacro{prenote}}
  {\blx@anchor%
   \usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
\makeatother

生成\fullcite通常在参考书目中生成的锚点。然后链接应该可以正常工作。当然,如果您\fullcite多次使用同一项目,或者您\printbibliography毕竟使用了相同的项目,那么这将非常糟糕。

相关内容