
Я нахожусь в той неприятной ситуации, которую мне приходится описывать в заголовке.
Это не проблема, пока нет двух разных записей библиографии с одним и тем же автором и одним и тем же годом. В этом случае я получаю в тексте записи типа (Author 2012a)
и, (Author 2012b)
но в ссылках должна быть добавлена запись, которая должна выглядеть как (cited as: 2012a)
.
Я не настолько хорош в переопределении вещей в biblatex, чтобы справиться с этим. В идеале нужно следующее решение:
If there are multiple citations of the same author and year, then append "(cited as: <year><year_label>)", if not, do whatever you would normally do.
На данный момент это мой минимальный рабочий пример:
\documentclass{article}
\usepackage[maxcitenames=3,style=authortitle,citestyle=authoryear,dashed=false,backend=biber]{biblatex}
\DeclareNameAlias{sortname}{last-first}
\newbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\iflistundef{location}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{location}%
\setunit*{\space}%
\usebibmacro{date}%
\newunit
}
\begin{filecontents}{\jobname.bib}
@article{JoeDoe2012,
Author = {Joe Doe},
Title = {My article's title},
Journal = {My journal's title},
Editor = {Ben Editor},
URL = {http://webpage.com},
Year = {2012},
}
@article{JoeDoe20121,
Author = {Joe Doe},
Title = {Same author same year},
Journal = {My journal's title},
Editor = {Ben Editor},
URL = {http://webpage.com},
Year = {2012},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
We cite \autocite{JoeDoe2012} and \autocite{JoeDoe20121}
\printbibliography
\end{document}
На данный момент это выглядит так:
Пока я вынужден сделать это так:
(На скриншоте я обошёл эту проблему, вручную вставив « addendum = {(cited as: 2012a)}
)»
Надеюсь, кто-нибудь сможет мне помочь добиться этого тем условным способом, который я описал.
решение1
Переименуйте de bibmacro{finentry}
. Часть 'a' находится в extrayear
поле, а 2012
в labelyear
поле. Затем добавьте логическое, что если extrayear
не определено, то ничего не печатает. С другой стороны, если определено, то печатает labelyear
и entrayear
поля между скобками.
МВЭ:
\documentclass{article}
\usepackage[maxcitenames=3,style=authortitle,citestyle=authoryear,dashed=false,backend=biber]{biblatex}
\DeclareNameAlias{sortname}{last-first}
\newbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\iflistundef{location}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{location}%
\setunit*{\space}%
\usebibmacro{date}%
\newunit
}
\renewbibmacro{finentry}{%
\usebibmacro{citeas}%
\finentry}
\newbibmacro*{citeas}{%
\iffieldundef{extrayear}
{}
{\setunit{\adddot\space}
\newunit\newblock
\printtext[citeas]{%
\printfield{labelyear}%
\printfield{extrayear}}}}
\DeclareFieldFormat{citeas}{\mkbibparens{Cite as:\space#1}}
\begin{filecontents}{\jobname.bib}
@article{JoeDoe2012,
Author = {Joe Doe},
Title = {My article's title},
Journal = {My journal's title},
Editor = {Ben Editor},
URL = {http://webpage.com},
Year = {2012},
}
@article{JoeDoe20121,
Author = {Joe Doe},
Title = {Same author same year},
Journal = {My journal's title},
Editor = {Ben Editor},
URL = {http://webpage.com},
Year = {2012},
}
@article{Moe2013,
Author = {Moe Doe},
Title = {Other author},
Journal = {My journal's title},
Editor = {Ben Editor},
URL = {http://webpage.com},
Year = {2010},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
We cite \parencite{JoeDoe2012} and \parencite{JoeDoe20121}.
Other author \parencite{Moe2013}
\printbibliography
\end{document}