.png)
答案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}
稍微不那麼激進的方法仍然會留下痕跡,labeldate
只需重新定義date+extradate
如下(並保持bbx:ifmergeddate
不變)
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printdate}
{\printlabeldate}}}}%
刪除額外日期的另一種但更直接的方法是
\DeclareFieldInputHandler{extradate}{\def\NewValue{}}