
Мой университет любит иметь некоторые интересные правила цитирования, и чтобы соответствовать им, мне нужны команды цитирования, чтобы создать
<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}