我刚刚升级到 MikTeX 2.9,发现和选项biblatex
下现在解释该命令以在作者姓名和括号内的年份之间放置逗号。natbib=true
style=authoryear
\citet{}
我之前的 MikTeX 并没有出现过这种情况。
以下是 MWE:
\documentclass{article}
\usepackage[natbib=true,style=authoryear,backend=bibtex]{biblatex}
\addbibresource{bib.bib}
\begin{document}
From the outset, \citet{mar-84} gives the end away.
\printbibliography
\end{document}
其中 'bib.bib' 的内容包括
@BOOK{mar-84,
author = {Gabriel Garcia Marquez},
title = {Cien a\~{n}os de soledad},
year = 1984,
publisher = {Catedra}
}
我很高兴听到解决方案或解决方法。
答案1
这是 3.3 中的一个临时错误biblatex
,已在biblatex
3.4 中解决,请参阅biblatex
错误跟踪器上的问题 #373。确实,旧系统已被更高级的系统所取代。该系统在某些样式方面存在轻微问题,仅在 3.5 版中得到修复,请参阅使用 citet 命令时,作者和年份之间不需要逗号。
biblatex
3.4 和 3.5 现已发布(实际上当前版本是 3.7)。只需更新biblatex
并 Biber 至最新版本即可。
如果要修复biblatex
3.3 中的问题,则需要重新定义textcite
bibmacro。所需的确切代码取决于样式,经验法则是,您必须在 bibmacro 中分别用和替换所有出现的\nonameyeardelim\bibopenparen
和。\nameyeardelim\bibopenparen
\addspace\bibopenparen
\addspace\bibopenparen
textcite
因为authoryear
你需要
\renewbibmacro*{textcite}{%
\ifnameundef{labelname}
{\iffieldundef{shorthand}
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{citeyear}}}