我正在尝试链接Author Name
。
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{mcintosh1997rhythmic,
title={Rhythmic auditory-motor facilitation of gait patterns in patients with Parkinson's disease.},
author={McIntosh, Gerald C and Brown, Susan H and Rice, Ruth R and Thaut, Michael H},
journal={Journal of Neurology, Neurosurgery \& Psychiatry},
volume={62},
number={1},
pages={22--26},
year={1997},
publisher={BMJ Publishing Group Ltd}
}
\end{filecontents}
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[%
style=authoryear,
backend=biber,
maxcitenames=2,
giveninits % <========================================================
]{biblatex}
\addbibresource{\jobname.bib} % \jobname to use the bib file created with filecontents
\DeclareNameAlias{sortname}{family-given}
\usepackage[unicode,colorlinks,citecolor=blue]{hyperref} % <============
\renewcommand*{\nameyeardelim}{\addcomma\space}
\newcommand{\mycite}[1]{\citeauthor{#1}'s \citeyear{#1}} % <============
\DeclareCiteCommand{\citeauthor} % <====================================
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printtext[bibhyperref]{\printnames{labelname}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{document}
According to \citeauthor{mcintosh1997rhythmic}'s studies \autocite*{mcintosh1997rhythmic}, blablabla
\mycite{mcintosh1997rhythmic} -> McIntosh et al. (1990)\\
\textcite{mcintosh1997rhythmic} -> McIntosh et al. (1997)\\
\parencite{mcintosh1997rhythmic} -> (McIntosh et al., 1997)\\
\printbibliography
\end{document}
输出:
仅year
是链接。author name
不链接它。
答案1
为了得到你想要的,你需要将以下代码添加到你的序言中:
\DeclareCiteCommand{\citeyear} % <======================================
{}
{(\bibhyperref{\printdate})}
{\multicitedelim}
{}
\DeclareCiteCommand{\parencite} % <=====================================
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{(\usebibmacro{cite}})}
{\multicitedelim}
{\usebibmacro{postnote}}
\makeatletter
\let\abx@macro@textciteOrig\abx@macro@textcite
\renewbibmacro{textcite}{% <============================================
\bibhyperref{%
\let\bibhyperref\relax\relax%
\abx@macro@textciteOrig%
}%
}%
\makeatother
此代码改变命令\citeyear
,\parencite
并根据需要\textcite
添加超链接和括号。()
请参阅以下完整的 MWE
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{mcintosh1997rhythmic,
title={Rhythmic auditory-motor facilitation of gait patterns in patients with Parkinson's disease.},
author={McIntosh, Gerald C and Brown, Susan H and Rice, Ruth R and Thaut, Michael H},
journal={Journal of Neurology, Neurosurgery \& Psychiatry},
volume={62},
number={1},
pages={22--26},
year={1997},
publisher={BMJ Publishing Group Ltd}
}
\end{filecontents}
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[%
style=authoryear,
backend=biber,
maxcitenames=2,
giveninits
]{biblatex}
\addbibresource{\jobname.bib} % \jobname to use the bib file created with filecontents
\DeclareNameAlias{sortname}{family-given}
\usepackage[unicode,colorlinks,citecolor=blue]{hyperref}
\renewcommand*{\nameyeardelim}{\addcomma\space}
\newcommand{\mycite}[1]{\citeauthor{#1}'s \citeyear{#1}}
\DeclareCiteCommand{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printtext[bibhyperref]{\printnames{labelname}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyear} % <======================================
{}
{(\bibhyperref{\printdate})}
{\multicitedelim}
{}
\DeclareCiteCommand{\parencite} % <=====================================
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{(\usebibmacro{cite}})}
{\multicitedelim}
{\usebibmacro{postnote}}
\makeatletter
\let\abx@macro@textciteOrig\abx@macro@textcite
\renewbibmacro{textcite}{% <============================================
\bibhyperref{%
\let\bibhyperref\relax\relax%
\abx@macro@textciteOrig%
}%
}%
\makeatother
\begin{document}
According to \citeauthor{mcintosh1997rhythmic}'s studies
\autocite*{mcintosh1997rhythmic}, blablabla
\verb|\mycite|: \mycite{mcintosh1997rhythmic} -> McIntosh et al. (1990)
\verb|\textcite|: \textcite{mcintosh1997rhythmic} -> McIntosh et al. (1997)
\verb|\parencite|: \parencite{mcintosh1997rhythmic} -> (McIntosh et al., 1997)
\printbibliography
\end{document}
及其结果:
答案2
(
要从超链接中排除左括号,\parencite{}
我们应该使用以下命令:
\DeclareCiteCommand{\parencite} % <=====================================
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
(\printtext[bibhyperref]{\usebibmacro{cite}})}
{\multicitedelim}
{\usebibmacro{postnote}}