# Replace the “Ibid.” string with string “Ivi” when the same reference is cited at a different page

I'm using biblatex with ext-verbose-trad1 style in memoir.

I have to use the abbreviation "ivi" when subsequently citing the same reference at a different page, while maintain the usual "ibid." abbreviation when citing the same reference at the same page.

The question is also addressed in tex.stackexchange.com/q/418701/35864, where a patch is suggested.

As the following MWE demonstrates, using ext-verbose-trad1 style the patch suggested works perfectly:

\documentclass[12pt, a4paper]{memoir}
\usepackage[italian]{babel}

%patch to use ibid and ivi
\usepackage{xpatch}
\NewBibliographyString{ibidemloccit,ibidemnoloccit}
\DefineBibliographyStrings{italian}{%
idem           = {\autocap{i}d},
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{%
\ifloccit
{\bibstring[\mkibid]{ibidemloccit}%
\global\toggletrue{cbx:loccit}}
{\bibstring[\mkibid]{ibidemnoloccit}}}}}

\begin{document}
Lorem \footcite{aristotle:anima}
Lorem \footcite[14]{aristotle:anima}
Lorem \footcite[198]{aristotle:anima}
ipsum \footcite[198]{aristotle:anima}

\printbibliography
\end{document}


giving the output:

When I use the style ext-verbose-trad2 it gives another result. The last citation is a simple repetition of the previous, while should appear the string 'Ibid':

• For questions like this it is a very, very good idea to include a short example document that produces output as shown in the first screenshot. Then we can all be sure that we are talking about the same thing. It also helps those willing to help you get started more quickly (because they don't have to rebuild on their own what you have already). Such an example document is often called MWE (tex.meta.stackexchange.com/q/228/35864). – moewe Aug 28 '20 at 12:56
• I edited the desired MWE – Paolo Polesana Aug 28 '20 at 14:36
• The MWE and the screenshot don't seem to match exactly. There are no page references in the code of the MWE. – moewe Aug 28 '20 at 15:27
• Does tex.stackexchange.com/q/418701/35864 help? – moewe Aug 28 '20 at 15:27
• Yes, it helps quite a lot. Thanks! – Paolo Polesana Aug 28 '20 at 15:46

The answer from the linked question still works for (ext-)verbose-trad2. You were just missing the most important ingredient of the answer (which is mentioned in the first sentence): You need to set the option ibidpage=true,.

\documentclass[12pt, a4paper]{memoir}
\usepackage[italian]{babel}

%patch to use ibid and ivi
\usepackage{xpatch}
\NewBibliographyString{ibidemloccit,ibidemnoloccit}
\DefineBibliographyStrings{italian}{%
idem           = {\autocap{i}d},
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{%
\ifloccit
{\bibstring[\mkibid]{ibidemloccit}%
\global\toggletrue{cbx:loccit}}
{\bibstring[\mkibid]{ibidemnoloccit}}}}}