与包一起使用时hyperref
,会自动为引文创建超链接,但如果使用或biblatex
插入则不会创建。 是否可以为仅年份的引文添加超链接?\citeyear
\citeyearpar
\documentclass{article}
\usepackage[backend=biber,natbib=true, style=authoryear-comp]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{ref1,
author = {Doe, John D.},
title = {Hyperrefs to citations},
journaltitle = {Links Everywhere},
volume = {1},
date = {2000},
pages = {1--2},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{hyperref}
\begin{document}
citet -- \citet{ref1}
citeyear -- \citeyear{ref1}
citeyearpar -- \citeyearpar{ref1}
\printbibliography
\end{document}
答案1
必须重新定义指示使用超链接的引用命令,即:
\DeclareCiteCommand{\citeyear}
{}
{\bibhyperref{\printdate}}
{\multicitedelim}
{}
\DeclareCiteCommand{\citeyearpar}
{}
{\mkbibparens{\bibhyperref{\printdate}}}
{\multicitedelim}
{}
答案2
另一种方法是使用\cite*
所有作者年份和作者标题样式提供的命令。请参阅手动的,第 3.7.2 节“样式特定命令”。
答案3
改进 Guido 的答案,这些功能与他的类似,但有以下修改:1)使用\printfield{year}
而不是\printdate
仅打印年份,2)使用字段extrayear
以便它们处理同一作者在同一年出版的多本出版物(例如 1997a、1997b、1997c),以及 3)他们可以使用 prenote 和 postnote,以便可以继续使用页码,例如\citeyearpar[3--4]{bib_reference_id}
。功能如下:
\DeclareCiteCommand{\citeyear}
{\usebibmacro{prenote}}
{\bibhyperref{\printfield{year}}\bibhyperref{\printfield{extrayear}}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\citeyearpar}[\mkbibparens]
{\usebibmacro{prenote}}
{\bibhyperref{\printfield{year}}\bibhyperref{\printfield{extrayear}}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
编辑:以上代码适用于style=authoryear-ibid
。如果使用style=authoryear
,请将 的两个实例都替换cite:postnote
为postnote
。