.png)
У меня возникли трудности с удалением суффикса в обозначении года в ссылке 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}
Чуть менее агрессивный подход все равно оставит следы, labeldate
просто переопределив date+extradate
следующим образом (и оставив bbx:ifmergeddate
без изменений)
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printdate}
{\printlabeldate}}}}%
Другой, но более прямой способ удалить лишнюю дату:
\DeclareFieldInputHandler{extradate}{\def\NewValue{}}