
我的大學喜歡有一些有趣的引用規則,為了遵守它們,我需要引用命令來生成
<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}