\textcite/\citet 中不需要逗号

\textcite/\citet 中不需要逗号

我刚刚升级到 MikTeX 2.9,发现和选项biblatex下现在解释该命令以在作者姓名和括号内的年份之间放置逗号。natbib=truestyle=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,已在biblatex3.4 中解决,请参阅biblatex错误跟踪器上的问题 #373。确实,旧系统已被更高级的系统所取代。该系统在某些样式方面存在轻微问题,仅在 3.5 版中得到修复,请参阅使用 citet 命令时,作者和年份之间不需要逗号

biblatex3.4 和 3.5 现已发布(实际上当前版本是 3.7)。只需更新biblatex并 Biber 至最新版本即可。


如果要修复biblatex3.3 中的问题,则需要重新定义textcitebibmacro。所需的确切代码取决于样式,经验法则是,您必须在 bibmacro 中分别用和替换所有出现的\nonameyeardelim\bibopenparen和。\nameyeardelim\bibopenparen\addspace\bibopenparen\addspace\bibopenparentextcite

因为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}}}

相关内容