3

This question follows this one, where some of the problems were solved, but I was asked to ask a new question with a mwe for citations with volumes.

Questions

The question is : how to make biblatex recognise that another volume of the same "book" has been cited previously, so that it uses "op. cit." and "Ibid." when it has to ?

op. cit.

We use "op. cit." when the work or the article has already been cited, but not just before : authors, op. cit., p. x. But if we cite a particular volume of a multivolume work, then we also mention the volume and it's own title if it has one.

Like this enter image description here

Ibid.

We use Ibid. if two identical references follow each other. When the volume we refer to is not the same, the reference should be under the form : Ibid., volume : title of the volume, p.~x.

Like this enter image description here

M.W.E.

Here is the mwe. I compile it with xelatex (latexmk -pdf -xelatex main.tex).

\documentclass[12pt]{article}
\usepackage{xunicode}
\usepackage[a4paper]{geometry}
\usepackage[french]{babel}
\usepackage[style=verbose-trad2]{biblatex}
\usepackage{hyperref}
\usepackage{xurl}
\usepackage[babel]{csquotes}
\ExecuteBibliographyOptions{
    sortlocale=auto,
        sortcase=false,
        maxnames=3,
        minnames=1,
        backref=false,
        backrefstyle=three,
        isbn=false,
        url=false,
        doi=false,
        eprint=false,
        citepages=omit,
        ibidpage=true,
        nosortothers=true,
        strict=false,
        giveninits=false,
        dashed=false,
        urldate=long,
        dateabbrev=false,
        singletitle=true
}
\begin{filecontents}{\jobname.bib}


@mvbook{bob,
        author = {Bob Squaresponge},
        maintitle = {Living in a pineapple},
        location = {Paris},
        publisher = {Publisher},
        date = {1975},
    series = {Collector}
}

@mvbook{bob1,
        crossref = {bob},
        volume = {1},
        title = {Pineapple},
    number = {12}
}

@mvbook{bob2,
        crossref = {bob},
        volume = {2},
        title = {Apple pen},
    number = {13}
}

@mvbook{gaillard,
    author = {Martin René and Jacques Gaillard},
    title = {Les genres littéraires à Rome},
    location = {Paris},
    publisher = {Scodel},
    date = {1381}
}

@book{gaillard1,
    volume = {vol.~1},
    crossref = {gaillard}
}

@book{gaillard2,
    volume = {vol.~2},
    crossref = {gaillard}
}

@mvbook{remond,
    author = {René Remond},
    title = {Introduction à l'histoire de notre temps},
    location = {Paris},
    publisher = {Seuil},
    date = {1974},
    series = {Points. Histoire}
}

@book{remond1,
    volume = {1},
    title = {L'Ancien Régime et la Révolution},
    number = {12},
    crossref = {remond}
}

@book{remond2,
    volume = {2},
    title = {Le XIX\up{e} siècle, 1815-1914},
    number = {13},
    crossref = {remond}
}

@book{test,
    author = {Le Wu},
    title = {Titre},
    date = {2020}
}
\end{filecontents}
\addbibresource{\jobname.bib}



%The following lines are the answers to some problems, that were solved in the previous question

\DeclareDelimFormat{titleopcitdelim}{\addcomma\space}

% suppress title if only only work by labelname
\renewbibmacro*{cite:title}{%
  \printtext[bibhyperlink]{%
    \ifsingletitle
      {}
      {\printfield[citetitle]{labeltitle}%
       \setunit{\printdelim{titleopcitdelim}}}%
    \bibstring[\mkibid]{opcit}}}

% idem also for full citations
\makeatletter
\newcommand*{\ifnameidem}[1]{%
  \ifciteidem
    {\iffieldequalstr{labelnamesource}{#1}}
    {\@secondoftwo}}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\ifnameidem{author}
       {\bibstring[\mkibid]{idem\thefield{gender}}}
       {\usebibmacro{bbx:dashcheck}
          {\bibnamedash}
          {\printnames{author}%
           \setunit{\printdelim{authortypedelim}}%
           \usebibmacro{bbx:savehash}}}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}}

\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\ifnameidem{editor}
       {\bibstring[\mkibid]{idem\thefield{gender}}}
       {\usebibmacro{bbx:dashcheck}
          {\bibnamedash}
          {\printnames{editor}%
           \setunit{\printdelim{editortypedelim}}%
           \usebibmacro{bbx:savehash}}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {\global\undef\bbx@lasthash}}

\renewbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\ifnameidem{translator}
       {\bibstring[\mkibid]{idem\thefield{gender}}}
       {\usebibmacro{bbx:dashcheck}
          {\bibnamedash}
          {\printnames{translator}%
           \setunit{\printdelim{translatortypedelim}}%
           \usebibmacro{bbx:savehash}}}%
     \usebibmacro{#1}%
     \clearname{translator}}
    {\global\undef\bbx@lasthash}}
\makeatother


%End of the citation style

%Bibliography style

\renewcommand{\newunitpunct}{\addcomma\space} %séparateur entre les informations = ","
\renewcommand{\subtitlepunct}{\addperiod\space} %point entre titre et sous-titre
\renewcommand{\revsdnamepunct}{} %pas de "," entre nom et prénom
\DeclareNameAlias{default}{family-given}% Et partout ailleurs (sauf oubli de la part de MR)
\DeclareNameAlias{labelname}{default}% Lorsqu'on a juste le nom court (citation répétée)
\DeclareNameAlias{sortname}{default}% Dans la biblio finale
\DefineBibliographyStrings{french}{%
    in = {dans},%
    andothers = {e\adddot a\adddot},%
    urlseen = {consulté le},%
    nodate = {s\adddot d\adddot}%
}
\DeclareSourcemap{%pour enlever automatiquement les champs dès le berceau → pour toutes les entrées.
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=addendum, null]
      \step[fieldset=note, null]
      \step[fieldset=pagetotal, null]
      \step[fieldset=language, null]
      \step[fieldset=eid, null]
    }
  }
}
\renewcommand*{\intitlepunct}{\space}
\renewcommand{\mkibid}[1]{\emph{#1}} 
\renewcommand{\editortypedelim}{\addspace}
\DeclareFieldFormat{issuetitle}{\mkbibquote{#1}}
\DeclareFieldFormat{url}{\url{#1}}
\DeclareFieldFormat[online,inreference]{title}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[thesis]{title}{\mkbibemph{#1}}
\DeclareFieldFormat{type}{\mkbibbrackets{\ifbibstring{#1}{\bibstring{#1}}{#1}}}
\DeclareFieldFormat{volume}{\ifnumerals{#1}{\bibstring{volume}~#1}{#1}}
\DeclareFieldFormat{volumes}{\ifnumerals{volumes}{#1~\bibstring{volumes}}{#1~vol\adddot}}
\DeclareDelimFormat{titleopcitdelim}{\addcomma\space}
\DeclareBibliographyAlias{proceedings}{book}
\DeclareBibliographyAlias{collection}{book}
\DeclareBibliographyAlias{inproceedings}{incollection}
\DeclareBibliographyAlias{inreference}{incollection}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \ifnameundef{editor}{}{\usebibmacro{editor+others}\setunit{\addcomma\space}}%pour que l'affichage de l'éditeur (éd.)
  \usebibmacro{maintitle+booktitle}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \printfield{note}%
  \setunit{\addspace}%
  \usebibmacro{series+number}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{thesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{institution+location+date}%inversé institution+location+date avec type
  \setunit{\addspace}
  \printfield{type}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\renewbibmacro*{publisher+location+date}{%
  \setunit*{\addcomma\space}%
  \iflistundef{location}{\printtext{s\adddot l\adddot}}{\printlist{location}}
  \iflistundef{publisher}
    {\setunit*{\addcomma\space}}
    {\setunit*{\addcomma\space}}%remplacé collon par comma
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  \newunit
}

\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
      \printfield{series}%
      \setunit*{\addcomma\addspace}%
      \printfield{number}}%
    \newunit}}

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{issue}%ajoute le titre du dossier thématique
  \iffieldundef{issuetitle}{\setunit{\addspace}}{\setunit{\addcomma\space}}%
  \usebibmacro{journal}%
  \setunit*{\addcomma\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{issue+date}%
  \newunit}

\renewbibmacro*{issue+date}{%Enlevé les parenthèses à la date
  \setunit{\addcomma\addspace}%
  \printfield{issue}%
  \setunit*{\addcomma\addspace}%
  \usebibmacro{date}%
  \newunit}

\renewbibmacro*{issue}{%
  \ifboolexpr{
    test {\iffieldundef{issuetitle}}
    and
    test {\iffieldundef{issuesubtitle}}
  }
    {}
    {\printtext[issuetitle]{%
       \printfield[titlecase]{issuetitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{issuesubtitle}}}%
  \setunit{\addcomma\space}
  \printfield{issuetitleaddon}}

\renewbibmacro*{editor+others}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \printtext[parens]{\usebibmacro{editor+othersstrg}}%J'ai ajouté les parenthèses autour du "éd."
     \clearname{editor}}
    {}}

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{edition}%inversé byeditors+others et edition pour avoir "2e éd. trad. du russe par"
  \setunit{\addspace}%à la place de \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit
  \printfield{volumes}%
  \setunit{\addspace}%
  \usebibmacro{series+number}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal+issuetitle}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{online}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit\newblock
  \usebibmacro{date}%
  \newunit\newblock
  \iftoggle{bbx:doi}
    {\printfield{doi}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock
  \usebibmacro{url+urldate}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


\begin{document}


If the work or the article has already been cited, but not just before. The new citation should be presented like this : authors, \emph{op. cit.}, p. x. But if we cite a particular volume of a multivolume work, then we also mention the volume and it's own title if it has one.

For example, this\autocite[103]{gaillard1}\autocite{test}\autocite[71]{gaillard2} should be cited as follow.

1. \textsc{René} Martin et \textsc{Gaillard} Jacques, \emph{Les genres littéraires à Rome}, vol.~1, Paris, Scodel, 1981, p.~103.

...

3. \textsc{René} Martin et \textsc{Gaillard} Jacques, \emph{op. cit.}, vol.~2, p.~71.

\vspace{1cm}
Another example : this\autocite[115]{remond1}\autocite{test}\autocite[45]{remond2} should be cited as follow.

1. \textsc{Remond} René, \emph{Introduction à l'histoire de notre temps}, t.~1 : \emph{L'Ancien Régime et la Révolution}, Paris, Seuil, 1974 (Points. Histoire, 12), p.~115.

...

3. \textsc{Remond} René, \emph{op. cit.}, t.~2 : \emph{Le XIX\up{e} siècle, 1815-1914} (Points. Histoire, 13), p.~45.


\newpage
If two identical references follow each other, but the volume we refer to is not the same, the reference will be under the form : \emph{Ibid.}, volume : title of the volume, p.~x.

For example, this\autocite[115]{bob1}\autocite[45]{bob2} should be cited as follow.

1. \textsc{Squaresponge} Bob, \emph{Living in a pineapple}, t.~1 : \emph{Pineapple}, Paris, Publisher, 1975 (Collector, 12), p.~115.

2. \emph{Ibid.}, t.~2 : \emph{Apple Pen} (Collector, 13), p.~45.


\end{document}

Any idea on where I could find some answer myself is also welcome.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.