当引用同一本书的不同卷时,如何管理引用样式?(“op. cit.”和“Ibid.”)

当引用同一本书的不同卷时,如何管理引用样式?(“op. cit.”和“Ibid.”)

这个问题如下这个,其中一些问题得到了解决,但我被要求用 mwe 提出一个新问题,以获取带有卷的引用。

问题

问题是:如何让 biblatex 识别出同一本“书”的另一卷之前已被引用,以便它使用“同上。同上。“ 和 ”同上。“什么时候必须这么做?

同上。同上。

我们用 ”同上。同上。“当该作品或文章已被引用,但不是在之前:作者,同上。同上。, px 但是,如果我们引用一部多卷著作中的某一卷,那么我们也会提及该卷以及它自己的标题(如果有的话)。

像这样 在此处输入图片描述

同上。

我们用同上。如果两个相同的引用彼此相连。当我们引用的卷不一样时,引用应采用以下形式:同上。,volume:卷的标题,p.~x。

像这样 在此处输入图片描述

平均能量损失

这是 mwe。我用 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}

对于我可以在哪里找到答案的任何想法,我也欢迎提出。

相关内容