Удаление суффикса в authoryear-ibid например. (2011a)

Удаление суффикса в authoryear-ibid например. (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}

Кнут, Дональд Э. (1986). Компьютеры и набор текста. Том B: TeX: Программа. Reading, Массачусетс: Addison-Wesley.//— (1986). Компьютеры и набор текста. Том C: The METAFONTbook. Reading, Массачусетс: Addison-Wesley.

Чуть менее агрессивный подход все равно оставит следы, labeldateпросто переопределив date+extradateследующим образом (и оставив bbx:ifmergeddateбез изменений)

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

Другой, но более прямой способ удалить лишнюю дату:

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

Связанный контент