Я использую biblatex
стиль ext-verbose-trad1
в memoir
.
Мне приходится использовать сокращение «ivi» при последующем цитировании той же ссылки на другой странице, сохраняя при этом обычное сокращение «ibid.» при цитировании той же ссылки на той же странице.
Этот вопрос также рассматривается вtex.stackexchange.com/q/418701/35864, где предлагается исправление.
Как показывает следующий MWE, использование ext-verbose-trad1
стиля, предложенного патчем, работает идеально:
\documentclass[12pt, a4paper]{memoir}
\usepackage[italian]{babel}
\usepackage[style=ext-verbose-trad1]{biblatex}
%patch to use ibid and ivi
\usepackage{xpatch}
\NewBibliographyString{ibidemloccit,ibidemnoloccit}
\DefineBibliographyStrings{italian}{%
idem = {\autocap{i}d},
ibidemloccit = {\mkbibemph{\autocap{i}bid\adddot}},
ibidemnoloccit = {\mkbibemph{\autocap{i}vi}},
}
\xpatchbibmacro{author}
{\printnames{author}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{author}}}
{\printnames{author}}}
{}{}
\xpatchbibmacro{bbx:editor}
{\printnames{editor}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{editor}}}
{\printnames{editor}}}
{}{}
\xpatchbibmacro{bbx:translator}
{\printnames{translator}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{translator}}}
{\printnames{translator}}}
{}{}
\renewbibmacro*{cite:ibid}{%
\printtext{%
\bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{%
\ifloccit
{\bibstring[\mkibid]{ibidemloccit}%
\global\toggletrue{cbx:loccit}}
{\bibstring[\mkibid]{ibidemnoloccit}}}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \footcite{aristotle:anima}
Lorem \footcite[14]{aristotle:anima}
Lorem \footcite[198]{aristotle:anima}
ipsum \footcite[198]{aristotle:anima}
\printbibliography
\end{document}
давая вывод:
Когда я использую стиль, ext-verbose-trad2
он дает другой результат. Последняя цитата — простое повторение предыдущей, в то время как должна появиться строка 'Ibid':
решение1
Ответ из связанного вопроса все еще работает для (ext-)verbose-trad2
. Вы просто пропустили самый важный ингредиент ответа (который упомянут в первом предложении): Вам нужно установить опцию ibidpage=true,
.
\documentclass[12pt, a4paper]{memoir}
\usepackage[italian]{babel}
\usepackage[style=ext-verbose-trad2, ibidpage=true]{biblatex}
%patch to use ibid and ivi
\usepackage{xpatch}
\NewBibliographyString{ibidemloccit,ibidemnoloccit}
\DefineBibliographyStrings{italian}{%
idem = {\autocap{i}d},
ibidemloccit = {\mkbibemph{\autocap{i}bid\adddot}},
ibidemnoloccit = {\mkbibemph{\autocap{i}vi}},
}
\xpatchbibmacro{author}
{\printnames{author}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{author}}}
{\printnames{author}}}
{}{}
\xpatchbibmacro{bbx:editor}
{\printnames{editor}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{editor}}}
{\printnames{editor}}}
{}{}
\xpatchbibmacro{bbx:translator}
{\printnames{translator}}
{\iffootnote
{\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
{\usebibmacro{cite:idem}}
{\printnames{translator}}}
{\printnames{translator}}}
{}{}
\renewbibmacro*{cite:ibid}{%
\printtext{%
\bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{%
\ifloccit
{\bibstring[\mkibid]{ibidemloccit}%
\global\toggletrue{cbx:loccit}}
{\bibstring[\mkibid]{ibidemnoloccit}}}}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \footcite{aristotle:anima}
Lorem \footcite[14]{aristotle:anima}
Lorem \footcite[198]{aristotle:anima}
ipsum \footcite[198]{aristotle:anima}
\printbibliography
\end{document}