这个问题如下这个,其中一些问题得到了解决,但我被要求用 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}
对于我可以在哪里找到答案的任何想法,我也欢迎提出。