我无法获得@inproceedings条目的“合作”,因为它涉及工作而不是我所希望的文章。
@INPROCEEDINGS{roure07,
author = {Réjane Roure},
title = {Armes et têtes coupées au Cailar (Gard): premier éléments de réflexion
sur un dépôts rituel en Gaule méditerranéenne},
booktitle = {L'âge du Fer dans l'arc jurassien et ses marges : dépôts, lieux sacrés
et territorialité à l'âge du Fer : actes du XXIX\ieme{} colloque
international de l'AFEAF, volume 2},
year = {2007},
editor = {{\relax Ph}ilippe Barral and Alain Daubigney and Cynthia Dunning
and Gilbert Kaenel and Marie-Jeanne Roulière-Lambert},
pages = {653-658},
address = {Besançon},
publisher = {Presses universitaires de Franche-Comté},
editora = {Henri Duday},
editoratype = {collaborator},
eventdate = {2005-05},
owner = {Axel},
timestamp = {2014.03.06},
venue = {Bienne}
}
漂亮的截图比我荒谬的英语更容易理解
\documentclass[12pt]{report} %type de document+ police
\usepackage{fontspec}
\usepackage{xunicode}
\setmainfont[Mapping=tex-text,Numbers=OldStyle]{Linux Libertine O}
\usepackage{polyglossia}
\setdefaultlanguage{french}
%\setmonofont[Scale=0.75]{DejaVu Sans Mono}
\setotherlanguage[variant=ancient]{greek}
\setotherlanguage{english}
\usepackage{xpatch}
% Bonnes notes, sans exposant.
\makeatletter
\renewcommand\@makefntext[1]{%
\noindent\makebox[2em][r]{\@thefnmark.\space}#1}
\makeatother
\usepackage{microtype} %gère la microtypo
\usepackage{csquotes}
\usepackage{shorttoc}
%%% MARGES ET INTERLIGNES
\usepackage{geometry}
\geometry{a4paper}
\geometry{top=2cm, bottom=2cm, left=2cm , right=2cm}
%gestion interligne
\usepackage{setspace}
\onehalfspacing % interligne 1.5
\let\oldquotation\quotation %Rédéfinit l'environnement quotation pour avoir un interligne de 1
\let\endoldquotation\endquotation
\renewenvironment{quotation}
{\begin{oldquotation}\singlespace}
{\end{oldquotation}}
%MACRO
\newcommand\cad{c’est-à-dire}
\newcommand\than{« temps d'Hannibal »}
\newcommand\avjc{av. J.-C.}
\newcommand\apjc{apr. J.-C.}
\newcommand\cnrs{C.N.R.S.}
\newcommand\dgp{deuxième guerre punique}
\providecommand{\ier}{\textsuperscript{er}}
\providecommand{\iers}{\textsuperscript{ers}}
\providecommand{\iere}{\textsuperscript{ère}}
\providecommand{\ieres}{\textsuperscript{ères}}
\providecommand{\ieme}{\textsuperscript{e}}
\providecommand{\iemes}{\textsuperscript{es}}
\providecommand{\nd}{\textsuperscript{nd}}
\providecommand{\nds}{\textsuperscript{nds}}
\providecommand{\nde}{\textsuperscript{nde}}
\providecommand{\ndes}{\textsuperscript{ndes}}
\providecommand{\no}{\textsuperscript{o}}
\providecommand{\nos}{\textsuperscript{os}}
\providecommand{\mme}{M\textsuperscript{me}\space}
\providecommand{\mmes}{M\textsuperscript{mes}\space}
\providecommand{\mr}{M.\space}
\providecommand{\mrs}{MM.\space}
%%%%%%%%%%%%%%%%%% %BILIOGRAPHIE
\usepackage[ %BILIOGRAPHIE
backend=bibtex,%
language=french,%
style=authoryear,%
firstinits,%
mergedate=false,%
style=authoryear-ibid,%
maxcitenames=2, %
maxbibnames=999,%
]{biblatex}
\renewcommand*{\revsdnamepunct}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\DeclareNameAlias{sortname}{last-first}
\DeclareNameFormat{last-first}{%
\iffirstinits
{\usebibmacro{name:last-first}{#1}{(#4)}{#5}{#7}}
{\usebibmacro{name:last-first}{#1}{(#3)}{#5}{#7}}%
\usebibmacro{name:andothers}}
\renewcommand*{\labelnamepunct}{\space\textendash\space} %tiret après le label
\renewbibmacro*{date+extrayear}{}% rajoute date
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{#1}
\renewbibmacro{in:}{% enlève guillemets articles
\ifentrytype{article}
{}
{\printtext{\bibstring{in}\intitlepunct}}}
\renewbibmacro*{issue+date}{%
\printfield{issue}%
\setunit{\addcomma\space}%
\printdate%
\newunit}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\setunit*{\addcomma\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}
\renewbibmacro*{begentry}{\printtext[bold]{\usebibmacro{cite}\addspace\addcolon\space}}
%Met les abréviations des revues
\renewbibmacro*{journal}{%
\iffieldundef{shortjournal}
{%
\iffieldundef{journaltitle}
{}
{%
\printtext[journaltitle]
{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
}
{\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
}
%Enlever le tiret lorsqu'il y a une récurrence des auteurs
%
\makeatletter
\AtEveryBibitem{%
\global\undef\bbx@lasthash%
\clearfield{extraalpha}}
\makeatother
% "Et al." en ITALIQUE
\renewbibmacro*{name:andothers}{% Based on name:andothers from biblatex.def
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\andothersdelim\bibstring[\emph]{andothers}}
{}}
%%% Histoire des noms et al...
\makeatletter
\renewbibmacro*{begentry}{%
\renewcommand*{\mkbibnamelast}[1]{##1}%
\defcounter{maxnames}{\blx@maxcitenames}%
\printtext[bold]{\usebibmacro{cite}\addspace:\space}%
\defcounter{maxnames}{\blx@maxbibnames}
\renewcommand*{\mkbibnamelast}[1]{\textsc{\textnohyphenation{##1}}}}
\makeatother
%minuscule citation
\AtBeginDocument{\renewcommand*{\mkbibnamelast}[1]{#1}}
%Enlève parenthèse colloque
\renewbibmacro*{event+venue+date}{
\iffieldundef{eventtitle}
{}
{%
\bibstring{presentedat}%
\printfield{eventtitle}%
}%
\ifboolexpr{
test {\iffieldundef{venue}}
and
test {\iffieldundef{eventyear}}
}
{}
{\setunit*{\addspace}%
\printtext{%
\printfield{venue}%
\setunit*{\addcomma\space}%
\printeventdate}}%
\newunit
}
\DefineBibliographyStrings{french}{%
byeditor = \iffieldequalstr{keywords}{source}%
{Établit\space par}%
{dir\adddotspace\smartof},
in = {\textit{in}},%
editor = {dir\adddotspace},%
editors = {dir\adddotspace},%
opcit = \iffieldequalstr{entrytype}{article}{art\adddotspace cit\adddot}{\emph{op\adddotspace cit}\adddot},%
idem = {\emph{idem}},%
ibidem = {\emph{ibid\adddot}},%
%pagetotal = {p\adddot},%
%pages = {pp\adddot},%
}
%enlève la virugule avant dir.
\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
% \setunit{\addcomma\space}% DELETED
\setunit{\addspace}% ADDED
\usebibmacro{bbx:savehash}}%
% \usebibmacro{#1}% DELETED
\printtext{\usebibmacro{#1}}% ADDED
\clearname{editor}}
{\global\undef\bbx@lasthash}}
\makeatother
%%modifié book pour virgule
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\addcomma
\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}}
%Change ordre des entrées pour les in quelquechoses :
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\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{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\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{inbook}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\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}}
\AtEveryBibitem{%
\iffieldequalstr{edition}{1}
{\clearfield{edition}}
{\ifboolexpr{ test {\ifentrytype{proceedings}} or test {\ifentrytype{incollection}} }
{\savefield*{edition}{\savededition}%
\clearfield{edition}}
{}}}
\DeclareFieldFormat[article,inbook,inproceedings,incollection]{pages}{pp\adddotspace #1}%
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}
答案1
警告:我认为你使用的是相当自制的风格,这使得修改变得很尴尬,而且这没有经过充分测试,除了你的样本.bib
。我可以看到一些东西(比如bibstrings
你用于编辑器的)不一样,但我希望我的解决方案将适合您的风格,因为它涉及修改一个我猜您还没有触碰过的宏 - 或者如果您触碰过,您将能够适应它。
正如您所观察到的,标准 Biblatex 样式都假设等editora
与期刊或书籍相关,而不是与文章相关。这些内容的排版方式与一组特别精心设计的宏有关,我不喜欢摆弄它们。因此,至少有两种明智的方法:
修改
inproceedings
驱动程序,检查editora
(或你有什么)并先处理它。破解作者宏,以便它能完成工作。
由于无法访问您修改过的驱动程序,我做了第二个。要使用此功能,您需要将相关人员放在字段中namea
,并将相关“角色”放在字段中nameatype
。我决定(可能是任意的)在有合作者的情况下防止使用破折号(因为作者是同一个人还是两者是同一个人会很模糊,而且我不知道如何对两者进行哈希处理:真正的专家可能知道,但这不太可能重要)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@INPROCEEDINGS{roure07,
author = {Réjane Roure},
title = {Armes et têtes coupées au Cailar (Gard): premier éléments de réflexion
sur un dépôts rituel en Gaule méditerranéenne},
booktitle = {L'âge du Fer dans l'arc jurassien et ses marges : dépôts, lieux sacrés
et territorialité à l'âge du Fer : actes du XXIX\ieme{} colloque
international de l'AFEAF, volume 2},
year = {2007},
editor = {{\relax Ph}ilippe Barral and Alain Daubigney and Cynthia Dunning
and Gilbert Kaenel and Marie-Jeanne Roulière-Lambert},
pages = {653-658},
address = {Besançon},
publisher = {Presses universitaires de Franche-Comté},
namea = {Henri Duday},
nameatype = {collaborator},
eventdate = {2005-05},
owner = {Axel},
timestamp = {2014.03.06},
venue = {Bienne}
}
\end{filecontents}
\usepackage[style=authortitle]{biblatex}
\makeatletter
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{author}%
\setunit{\addcomma\space}%
\usebibmacro{bbx:savehash}%
\usebibmacro{authorstrg}%
\ifnameundef{namea}
{}
{\setunit{\addcomma\space}%
\global\undef\bbx@lasthash%
\usebibmacro{authorstrg}%
\setunit{\addspace}%
\usebibmacro{bynameastrg}%
\setunit{\addspace}%
\printnames{namea}}}}
{\global\undef\bbx@lasthash}}
\newbibmacro*{bynameastrg}{%
\iffieldundef{nameatype}
{}
{\usebibmacro{bytypestrg}{namea}{editor}}}
\makeatother
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
更新
鉴于您的各种修改(几乎相当于一种新风格!)我会采用不同的方法,但仍然将合作者放入字段中namea
,将类型放入nameatype
字段中。
我们定义两个新的bibmacros
来格式化namea
字段。
\newbibmacro{nameaname}{%
\ifnameundef{namea}
{}
{\usebibmacro{bynameastrg}%
\printnames{namea}}}
\newbibmacro*{bynameastrg}{%
\iffieldundef{nameatype}
{}
{\setunit{\addspace}%
\usebibmacro{bytypestrg}{namea}{editor}}}
然后,我们修改驱动程序以在打印作者后立即inproceedings
使用宏。namea
...
\usebibmacro{author/editor+others}%
\usebibmacro{nameaname}%<--ADDED
\setunit{\space\textendash\space}\newblock
...
(如果需要的话,您可能也想使用incollection
and来执行此操作inbook
。)
产生结果:
这次我没有(像我最初做的那样)修改散列以防止使用破折号表示重复的作者,但nameaname
如果您愿意,可以轻松地将其添加到宏中。