Biblatex parencite 命令,在右括号前带有点

Biblatex parencite 命令,在右括号前带有点

我的大学喜欢制定一些有趣的引用规则,为了遵守这些规则,我需要引用命令来生成 <author> (<year>)(<author> <year>)(<author> <year>.)为此,我查看了 natbib 并发现\citet\cite非常类似于我需要的。经过一些调整,我设法使它们更接近我需要的。问题出在中间的点和逗号上

这是我目前拥有的。

\documentclass[12pt,twoside,english]{article}
\usepackage[backend=biber,style=authoryear-comp,natbib,citetracker=true,%
maxcitenames=1,uniquename=false,uniquelist=false]{biblatex}
\addbibresource{cite/citedb.bib}
\usepackage{xpatch}

\renewcommand*{\finalnamedelim}{%
  \addspace\&\space}
\AtEveryCitekey{\ifciteseen{}{\clearfield{namehash}}}

\xpatchbibmacro{cite}
  {\printnames{labelname}}
  {\ifciteseen
    {\printnames{labelname}}
    {\printnames[][1-99]{labelname}}}
  {}
  {}

\xpatchbibmacro{textcite}
  {\printnames{labelname}}
  {\ifciteseen
    {\printnames{labelname}}
    {\printnames[][1-99]{labelname}}}
  {}
  {}

\begin{document}

\citet{foo}

\citet{foo}

\citep{foo}

\cited{foo}

\printbibliography

\end{document}

这目前给我带来的是

Foo、Bar 和 Baz(xyz)

Foo 等人,(xyz)

(Foo 等人,xyz)

\citep那么,我怎样才能让年份之前的逗号消失,并创建所需的命令 ? \cited? ,并在末尾加上点,就像这样?

(Foo 等人 xyz。)

答案1

你可以用以下方法去掉逗号

\renewcommand*{\nameyeardelim}{\addspace}

事实上,natbib兼容模式(参见blx-natbib.def)使得这一改变成为必要,默认情况下仅使用空格。


\cited你可以得到的期限

\newrobustcmd{\mkbibparensperiod}[1]{\mkbibparens{#1\addperiod}}
\DeclareCiteCommand{\darencite}[\mkbibparensperiod]
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {}
  {\usebibmacro{postnote}}

\newrobustcmd*{\cited}{\darencite}

相关内容