所以我有两篇文章有相同的主要作者。我在这个网站上找到了如何让其\citeyearpar
成为hyperref
ed 的答案:
\DeclareCiteCommand{\citeyearpar}
{}
{\mkbibparens{\bibhyperref{\printdate}}}
{, }
{}
现在我应用它,因为\citeyearpar{article1,article2)
我得到的是 (year1),(year2),但我想要的是 (year1,year2)。我可以为此获得帮助吗?
作为示例,我编辑了 01-introduction.texbibtex 教程:
% !TEX encoding = UTF-8 Unicode
% !BIB TS-program = biber
\documentclass[a4paper]{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,backend=biber]{biblatex}
\usepackage{hyperref}
\DeclareCiteCommand{\citeyearpar}
{}
{\mkbibparens{\bibhyperref{\printdate}}}
{, }
{}
%
% We use the database biblatex-examples.bib.
\addbibresource{biblatex-examples.bib}
%
% Some generic settings.
\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\setlength{\parindent}{0pt}
\begin{document}
Test Test Test Test Test Test Test Test \citeyearpar{companion,companion} Test Test Test.
\printbibliography
\end{document}
结果是:
答案1
的第三个参数\DeclareCiteCommand
定义每个条目的呈现方式。对于当前的情况,必须为第一个元素、最后一个元素和任何其他元素指定不同的行为。可以通过比较和的值来识别各种元素citecount
。对于第一个元素,即,我们使用包含前导左括号citetotal
的元素,对于最后一个元素,即这样的元素,我们用添加一个尾随括号。请注意和确保括号是匹配的。 citecount=1
\bibopenparens
citecount=citetotal
\bibcloseparens
\bibopenparens
\bibcloseparens
定义适当的代码\DeclareCiteCommand
如下:
\DeclareCiteCommand{\citeyearpar}
{}
{\ifnumequal{\value{citecount}}{1}
{\bibopenparen\bibhyperref{\printdate}}
{\ifnumequal{\value{citecount}}{\value{citetotal}}
{\bibhyperref{\printdate}\bibcloseparen}
{\bibhyperref{\printdate}}%
}%
}
{\addcomma\addspace}
{}
产生以下输出