“in:”和主标题之间的分隔符

“in:”和主标题之间的分隔符

由于我的修改,我遇到了一些书目样式问题。我修改了我的样式以符合我主管的规范,但修改并不“干净”。有时,书籍没有作者或编辑,但通过我的修改,我有一个破折号,但我不想只在这种情况下这样做。

一开始,我已经对此行进行了修改,使其类似于示例中的那样:\setunit{\textendash\space}\newblock

在:byeditor dir. – booktitle

但我只想在书籍没有作者或编辑的情况下:

在:书名…

我不知道我是否可以理解,因为我的英语很糟糕。

谢谢 !

在此处输入图片描述

\documentclass[10pt]{article}
\RequirePackage{polyglossia}
\setdefaultlanguage{french}
\setmainfont[Mapping=tex-text]{Times New Roman}
\RequirePackage{xpatch}
\usepackage{csquotes} 

%MACRO

\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}

  \usepackage[              %                                                                                   
  backend=bibtex,%
  style=authoryear, %
autolang=hyphen,%
 firstinits, mergedate=false, style=authoryear,maxcitenames=2, maxbibnames=999                          % Configuration de la bilio
]{biblatex} 

\renewcommand*{\revsdnamepunct}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\DeclareNameAlias{byeditor}{sortname}
\DeclareNameAlias{sortname}{last-first}
\renewcommand{\mkbibnamefirst}[1]{\parentext{#1}}                   %parenthèse de l'initiale
\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}},%                                    %et en italique
 editor           = {dir\adddotspace},%
 editors          = {dir\adddotspace},%
 opcit = \iffieldequalstr{entrytype}{article}{art\adddotspace cit\adddot}{\emph{op\adddotspace cit}\adddot},%
idem = {\emph{idem}},%
byeditor = {dir\adddot},% Remplace sous la direction de pour les improceedings etc. 
ibidem = {\emph{ibid\adddot}},%
%pagetotal = {p\adddot},%
 %pages            = {pp\adddot},%
}

%modifie les pages des articles ... par pp. au lieu de p.
\DeclareFieldFormat[article,inbook,inproceedings,incollection]{pages}{pp\adddotspace #1}%


%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


% put (dir.) at the end (byeditor)  pour tout ce qui est in : auteur dir.
\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {%%%\usebibmacro{byeditor+othersstrg}       %%%% suppress
     \setunit{\addcomma\addspace}%
     \printnames[byeditor]{editor}%
     \setunit{\addspace}%
    % \addspace                                  %%%% suppress
%     \usebibmacro{byeditor+othersstrg}          %%%% 
     \usebibmacro{editor+othersstrg}             %%%% 
     \clearname{editor}%            %%%%%%%%% 
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}



\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}%
 \setunit{\textendash\space}\newblock            %%%remplace \newunit\newblock pour rajouter un tiret entre le dir. et le mainttille des bouquins 
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \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
  \usebibmacro{series+number}%
%  \newunit\newblock %%%% enlever
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

%% Pour avoir collaboration après l'auteur pour namea
\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

%met entre parenthèse la collection et le numéro dans la même parenthèse
\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
     \printtext{}%
     \printfield{series}%
     \setunit*{\space}%
     \printfield{number}%
     \printtext{}}%
     }} %%% il y a un point en enleveant \nopunct.

     %Rajoute une virgule après le titre du journal et avant le numéro du volume     
     \renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addcomma\space}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}

@Inproceedings{bats1994,
  Title                    = {La vaisselle culinaire comme marqueur culturel: l'exemple de la Gaule méridionale et de la Grande Grèce (IV\ieme{}-I\ier{} s. av. J.-C.)},
  Author                   = {Michel Bats},
  Booktitle                = {Terre cuite et société. La céramique, document technique, économique, culturel},
  Pages                    = {407-424},
  Year                     = {1994},
  Address                  = {Juan-Les-Pins},
  Publisher                = {APDCA},
  Eventdate                = {1993-10-21/1993-10-23},
  Venue                    = {Actes des XIVe rencontres internationales d'Archéologie et d'Histoire d'Antibes}
}

@Inproceedings{bats1989,
  Title                    = {La Provence protohistorique},
  Author                   = {Michel Bats},
  Booktitle                = {La Provence des origines à l'an mil},
  Pages                    = {169-256},
  Year                     = {1989},
  Address                  = {Paris},
  Editor                   = {Paul-Albert Février and Michel Bats and Gabriel Camps and Michel Fixot and Jean Guyon and Jean Riser},
  Publisher                = {Ouest-France},
}


\end{filecontents}

\addbibresource{\jobname.bib}


\begin{document} 

\cite{bats1994, bats1989}

\printbibliography


\end{document}

编辑 :供参考这是我的卷轴序言,如果您有时间改进它或提供一些建议。

\usepackage[                %                                                                                   
  backend=bibtex,%
  style=authoryear, %
% autolang=other*, %permet de repéré la langue avec langid =
autolang=hyphen,%
 firstinits, mergedate=false, style=authoryear,maxcitenames=2, maxbibnames=999                          % Configuration de la bilio
]{biblatex} 
\addbibresource{bibliographie/bibliography}

\setlength\bibitemsep{1.1\itemsep} %% permet d'augmenter de 10% l'espace entre les entrées biblio

\renewcommand*{\revsdnamepunct}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\DeclareNameAlias{byeditor}{sortname}
\DeclareNameAlias{sortname}{last-first}
\renewcommand{\mkbibnamefirst}[1]{\parentext{#1}}                   %parenthèse de l'initiale
\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}},%                                    %et en italique
 editor           = {dir\adddotspace},%
 editors          = {dir\adddotspace},%
 opcit = \iffieldequalstr{entrytype}{article}{art\adddotspace cit\adddot}{\emph{op\adddotspace cit}\adddot},%
idem = {\emph{idem}},%
byeditor = {dir\adddot},% Remplace sous la direction de pour les improceedings etc. 
ibidem = {\emph{ibid\adddot}},%
%pagetotal = {p\adddot},%
 %pages            = {pp\adddot},%
}

%modifie les pages des articles ... par pp. au lieu de p.
\DeclareFieldFormat[article,inbook,inproceedings,incollection]{pages}{pp\adddotspace #1}%


%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


% put (dir.) at the end (byeditor)  pour tout ce qui est in : auteur dir.
\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {%%%\usebibmacro{byeditor+othersstrg}       %%%% suppress
     \setunit{\addcomma\addspace}%
     \printnames[byeditor]{editor}%
     \setunit{\addspace}%
    % \addspace                                  %%%% suppress
%     \usebibmacro{byeditor+othersstrg}          %%%% 
     \usebibmacro{editor+othersstrg}             %%%% 
     \clearname{editor}%            %%%%%%%%% 
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}

%inverse non prénom pour in : quelquechoses




 %%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
  \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
  \usebibmacro{series+number}%     rajoute a la fin series + nomber pour avoir la collection a la fin de la ligne. La modification du style est plus bas.
  \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}%
  \setunit{\textendash\space}\newblock            %%%remplace \newunit\newblock pour rajouter un tiret entre le dir. et le mainttille des bouquins
  \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}%
  \setunit{\textendash\space}\newblock            %%%remplace \newunit\newblock pour rajouter un tiret entre le dir. et le mainttille des bouquins 
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \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
  \usebibmacro{series+number}%
%  \newunit\newblock %%%% enlever
  \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}%
  \setunit{\textendash\space}\newblock            %%%remplace \newunit\newblock pour rajouter un tiret entre le dir. et le mainttille des bouquins
  \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}}

\DeclareBibliographyDriver{proceedings}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{editor+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit
  \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
  \usebibmacro{series+number}% rajoute collection
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


%% Pour avoir collaboration après l'auteur pour namea
\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


\DeclareBibliographyDriver{thesis}{% modifier pour la thèse la virgule après la date
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}% remplacer par la version du book
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printfield{type}%
  \newunit
  \usebibmacro{institution+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\addcomma %rajouter 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}}

%met entre parenthèse la collection et le numéro dans la même parenthèse
\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
     \printtext{}%
     \printfield{series}%
     \setunit*{\space}%
     \printfield{number}%
     \printtext{}}%
     }} %%% il y a un point en enleveant \nopunct.

     %Rajoute une virgule après le titre du journal et avant le numéro du volume     
     \renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addcomma\space}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

答案1

使用

\renewbibmacro{in:}{%
\ifentrytype{article}
  {}
  {\printtext{\bibstring{in}}%
   \printunit{\intitlepunct}}}

我们确保\intitlepunct进入标点符号缓冲区并且不会被任何后续标点符号覆盖。

MWE(经过少量修改)

\documentclass[10pt]{article}
\RequirePackage{polyglossia}
\setdefaultlanguage{french}
\setmainfont[Mapping=tex-text]{Times New Roman}
\RequirePackage{xpatch}
\usepackage{csquotes}

%MACRO

\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}

\usepackage[
  backend=bibtex,%
  style=authoryear, %
  autolang=hyphen,%
  dashed=false,
  firstinits, mergedate=false, maxcitenames=2, maxbibnames=999,
]{biblatex}

\renewcommand*{\revsdnamepunct}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\DeclareNameAlias{byeditor}{sortname}
\DeclareNameAlias{sortname}{last-first}
\renewcommand{\mkbibnamefirst}[1]{\parentext{#1}}  
\renewcommand*{\labelnamepunct}{\space\textendash\space} 
\renewbibmacro*{date+extrayear}{}%          

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1}

\renewbibmacro{in:}{%
  \ifentrytype{article}
    {}
    {\printtext{\bibstring{in}%
     \printunit{\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*{journal}{%
  \iffieldundef{shortjournal}
    {\iffieldundef{journaltitle}
       {}
       {\printtext[journaltitle]
          {\printfield[titlecase]{journaltitle}%
           \setunit{\subtitlepunct}%
           \printfield[titlecase]{journalsubtitle}}}}
    {\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}}


\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


\AtBeginDocument{\renewcommand*{\mkbibnamelast}[1]{#1}}

%Enlève parenthèse colloque

\renewbibmacro*{event+venue+date}{
  \iffieldundef{eventtitle}
    {}
    {\bibstring{presentedat}%
     \printfield{eventtitle}}%
  \setunit*{\addspace}%
  \printfield{venue}%
  \setunit*{\addcomma\space}%
  \printeventdate
  \newunit}


\DefineBibliographyStrings{french}{%
   byeditor = {\iffieldequalstr{keywords}{source}
                 {Établit\space par}%
                 {dir\adddotspace\smartof}},
in = {\textit{in}},%                                    %et en italique
 editor           = {dir\adddotspace},%
 editors          = {dir\adddotspace},%
 opcit = \iffieldequalstr{entrytype}{article}{art\adddotspace cit\adddot}{\emph{op\adddotspace cit}\adddot},%
idem = {\emph{idem}},%
byeditor = {dir\adddot},% Remplace sous la direction de pour les improceedings etc.
ibidem = {\emph{ibid\adddot}},%
%pagetotal = {p\adddot},%
 %pages            = {pp\adddot},%
}

%modifie les pages des articles ... par pp. au lieu de p.
\DeclareFieldFormat[article,inbook,inproceedings,incollection]{pages}{pp\adddotspace #1}%


%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


% put (dir.) at the end (byeditor)  pour tout ce qui est in : auteur dir.
\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {%%%\usebibmacro{byeditor+othersstrg}       %%%% suppress
     \setunit{\addcomma\addspace}%
     \printnames[byeditor]{editor}%
     \setunit{\addspace}%
    % \addspace                                  %%%% suppress
%     \usebibmacro{byeditor+othersstrg}          %%%%
     \usebibmacro{editor+othersstrg}             %%%%
     \clearname{editor}%            %%%%%%%%%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}



\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}%
  \setunit*{\textendash\space}\newblock            %%%remplace \newunit\newblock pour rajouter un tiret entre le dir. et le mainttille des bouquins
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \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
  \usebibmacro{series+number}%
%  \newunit\newblock %%%% enlever
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

%% Pour avoir collaboration après l'auteur pour namea
\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

%met entre parenthèse la collection et le numéro dans la même parenthèse
\renewbibmacro*{series+number}{%
  \iffieldundef{series}
    {}
    {\printtext[parens]{%
     \printtext{}%
     \printfield{series}%
     \setunit*{\space}%
     \printfield{number}%
     \printtext{}}%
     }} %%% il y a un point en enleveant \nopunct.

     %Rajoute une virgule après le titre du journal et avant le numéro du volume
     \renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addcomma\space}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}

@Inproceedings{bats1994,
  Title                    = {La vaisselle culinaire comme marqueur culturel: l'exemple de la Gaule méridionale et de la Grande Grèce (IV\ieme{}-I\ier{} s. av. J.-C.)},
  Author                   = {Michel Bats},
  Booktitle                = {Terre cuite et société. La céramique, document technique, économique, culturel},
  Pages                    = {407-424},
  Year                     = {1994},
  Address                  = {Juan-Les-Pins},
  Publisher                = {APDCA},
  Eventdate                = {1993-10-21/1993-10-23},
  Venue                    = {Actes des XIVe rencontres internationales d'Archéologie et d'Histoire d'Antibes}
}

@Inproceedings{bats1989,
  Title                    = {La Provence protohistorique},
  Author                   = {Michel Bats},
  Booktitle                = {La Provence des origines à l'an mil},
  Pages                    = {169-256},
  Year                     = {1989},
  Address                  = {Paris},
  Editor                   = {Paul-Albert Février and Michel Bats and Gabriel Camps and Michel Fixot and Jean Guyon and Jean Riser},
  Publisher                = {Ouest-France},
}


\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}

\cite{bats1994, bats1989, knuth:ct:a, knuth:ct:b, knuth:ct:c,
sigfridsson, worman, geer, cicero, wilde, salam, moraux}

\printbibliography
\end{document}

示例输出的一部分

相关内容