Команда 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}

То, что это сейчас мне дает, это

Фу, Бар и Баз (xyz)

Фу и др., (xyz)

(Фу и др., xyz)

Так как же мне убрать эту запятую \citepперед годом и создать нужную команду ? \cited? с точкой в ​​конце, как здесь?

(Фу и др. 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}

Связанный контент