citeyearpar 在 latex 中将年份压缩在一起

citeyearpar 在 latex 中将年份压缩在一起

所以我有两篇文章有相同的主要作者。我在这个网站上找到了如何让其\citeyearpar成为hyperrefed 的答案:

\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\bibopenparenscitecount=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}
    {}

产生以下输出

在此处输入图片描述

相关内容