删除作者年份后缀-同上例如(2011a)

删除作者年份后缀-同上例如(2011a)

我很难删除 authoryear-ibid 引用中的年份后缀,如下图所示。

引文图像

这是我用于 biblatex 的代码:

\usepackage[
    citestyle=verbose-ibid, 
    bibstyle=authoryear-ibid, 
    backend=biber]
    {biblatex}

我知道这个后缀显然应该由 控制,labeldateparts但显然它没有生效。任何帮助都将不胜感激。

答案1

只需清除字段即可完成此操作extradate。请注意,此解决方案适用于您的特定用例,但在其他情况下可能会导致意外结果。在这种情况下,moewe 的解决方案更加强大。请参阅那里的评论以了解一些讨论。

\begin{filecontents}{\jobname.bib}

@book{Chomsky1986,
    Address = {Cambridge Mass.},
    Author = {Noam Chomsky},
    Publisher = {{MIT} Press},
    Title = {Barriers},
    Year = {1986}}

@book{Chomsky1986b,
    Address = {New York},
    Author = {Noam Chomsky},
    Publisher = {Praeger},
    Title = {Knowledge of Language: its nature, origin and use},
    Year = {1986}}
\end{filecontents}
\documentclass{article}
\usepackage[
    citestyle=verbose-ibid, 
    bibstyle=authoryear-ibid, 
]
    {biblatex}
\addbibresource{\jobname.bib}
\DeclareFieldFormat{extradate}{}
\begin{document}
\autocite{Chomsky1986b,Chomsky1986}
\printbibliography
\end{document}

代码输出

答案2

由于我不太喜欢用空字段格式来抑制字段,所以这里有一个直接重新定义所涉及的命令的解决方案。

\documentclass{article}
\usepackage[
  citestyle=verbose-ibid,
  bibstyle=authoryear-ibid,
]{biblatex}

\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{\printdate}}}

\renewbibmacro*{bbx:ifmergeddate}[2]{#1}%


\addbibresource{biblatex-examples.bib}
\begin{document}
\autocite{knuth:ct:b,knuth:ct:c}
\printbibliography
\end{document}

Knuth, Donald E. (1986)。计算机与排版。第 B 卷:TeX:程序。马萨诸塞州雷丁:Addison-Wesley。//— (1986)。计算机与排版。第 C 卷:METAFONTbook。马萨诸塞州雷丁:Addison-Wesley。

稍微不那么激进的方法仍然会留下痕迹,labeldate只需重新定义date+extradate如下(保持bbx:ifmergeddate不变)

\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \iflabeldateisdate
         {\printdate}
         {\printlabeldate}}}}%

删除额外日期的另一种但更直接的方法是

\DeclareFieldInputHandler{extradate}{\def\NewValue{}}

相关内容