著者年号の接尾辞の削除 - 同上例 (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). Computers & Typesetting. Vol. B: TeX: The Program. Reading, Mass.: Addison-Wesley.//— (1986). Computers & Typesetting. Vol. C: The METAFONTbook. Reading, Mass.: Addison-Wesley.

labeldate少し控えめなアプローチでは、以下のように再定義するだけで痕跡が残りますdate+extradatebbx:ifmergeddate変更なし)。

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

余分な日付を削除する別の、しかしより直接的な方法は、

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

関連情報