editortype,inproceedings 的合作者

editortype,inproceedings 的合作者

我无法获得@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与期刊或书籍相关,而不是与文章相关。这些内容的排版方式与一组特别精心设计的宏有关,我不喜欢摆弄它们。因此,至少有两种明智的方法:

  1. 修改inproceedings驱动程序,检查editora(或你有什么)并先处理它。

  2. 破解作者宏,以便它能完成工作。

由于无法访问您修改过的驱动程序,我做了第二个。要使用此功能,您需要将相关人员放在字段中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
  ...

(如果需要的话,您可能也想使用incollectionand来执行此操作inbook。)

产生结果:

修订结果

这次我没有(像我最初做的那样)修改散列以防止使用破折号表示重复的作者,但nameaname如果您愿意,可以轻松地将其添加到宏中。

相关内容