删除重复的作者姓名

删除重复的作者姓名

首先,我是法国人,所以我的英语水平很差:)

在制作参考书目时,我有以下情况:

但我想要 :

姓氏 名字

  - Fasc. 176, ...
  - Fasc. 175, ...

因此,列出这位作者的每一部作品。我认为这和我想要的想法是一样的:

姓氏 名字

  - Fasc. 176, ... - Fasc. 175, ...

我只需要在打印标题之前保留一行。

我使用的个人风格源自作者标题风格。有什么想法吗?谢谢。

代码:来自 standard.bbx:

\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}
  \newline
  \hbox{--\space}
%  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%

来自 authortitle.bbx (使用 standard.bbx):

\ProvidesFile{authortitle.bbx}
[\abx@bbxid]

\RequireBibliographyStyle{standard}
\ExecuteBibliographyOptions{pagetracker}

\DeclareBibliographyOption{dashed}[true]{%
  \ifstrequal{#1}{true}
    {\ExecuteBibliographyOptions{pagetracker}%
     \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}
     }
    {\renewbibmacro*{bbx:savehash}{}}
    }

\DeclareFieldFormat{shorthandwidth}{#1}
\setlength{\bibitemsep}{0pt}

\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}

\defbibenvironment{bibliography}
  {\list
     {}
     {\setlength{\leftmargin}{\bibhang}%
      \setlength{\itemindent}{-\leftmargin}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}
      }}
  {\endlist}
  {\item}

\defbibenvironment{shorthands}
  {\list
     {\printfield[shorthandwidth]{shorthand}}
     {\setlength{\labelwidth}{\shorthandwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}%
      \renewcommand*{\makelabel}[1]{##1\hss}}}
  {\endlist}
  {\item}

\InitializeBibliographyStyle{%
  \global\undef\bbx@lasthash}

\newbibmacro*{bbx:savehash}{%
  \savefield{fullhash}{\bbx@lasthash} % A supp pour laisser les noms
  }

\newbool{bbx@inset}
\DeclareBibliographyDriver{set}{%
  \booltrue{bbx@inset}%
  \entryset{}{}%
  \newunit\newblock
  \usebibmacro{setpageref}%
  \finentry}

\renewbibmacro*{begrelated}{%
  \booltrue{bbx@inset}}

\renewbibmacro*{endrelated}{%
  \usebibmacro*{bbx:savehash}}

\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
  \mkbibbold{%
       {\printnames{author}}%
%   \setunit{\addcomma\space}% % virgule au début de la ligne de titre
    \usebibmacro{bbx:savehash}}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}
    }

\renewbibmacro*{editor}{%
  \usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
  \usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{editor}%
    \setunit{\addcomma\space}%
    \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}}
    {\global\undef\bbx@lasthash}}

\renewbibmacro*{translator}{%
  \usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
  \usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{translator}%
    \setunit{\addcomma\space}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{translator}}
    {\global\undef\bbx@lasthash}}

\newbibmacro*{bbx:dashcheck}[2]{%
  \ifboolexpr{
    test {\iffieldequals{fullhash}{\bbx@lasthash}}
    and
    not test \iffirstonpage
    and
    (
       not bool {bbx@inset}
       or
       test {\iffieldequalstr{entrysetcount}{1}}
    )
  }
    {#1}
    {#2}
    }

\endinput

最后,biblatex.def:

\ProvidesFile{biblatex.def}

% ------------------------------------------------------------------
% FORMATTING COMMANDS
% ------------------------------------------------------------------

% Generic formatting commands and hooks
% ------------------------------------------------------------------

% Used in citations, bibliography and bibliography lists

\newcommand*{\mkbibnamefirst}[1]{#1}
\newcommand*{\mkbibnamelast}[1]{#1}
\newcommand*{\mkbibnameprefix}[1]{#1}
\newcommand*{\mkbibnameaffix}[1]{#1}
\newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence}

% Delimiters used in citations, bibliography and bibliography lists

\newcommand*{\multinamedelim}{\addcomma\space}
\newcommand*{\finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}
\newcommand*{\revsdnamedelim}{}
\newcommand*{\andothersdelim}{\addspace}

\newcommand*{\multilistdelim}{\addcomma\space}
\newcommand*{\finallistdelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}
\newcommand*{\andmoredelim}{\addspace}

% Used in the bibliography and bibliography lists

\newcommand*{\newunitpunct}{\addperiod\space}
\newcommand*{\entrysetpunct}{\addsemicolon\space}
\newcommand*{\finentrypunct}{\addperiod}
\newcommand*{\labelnamepunct}{\newunitpunct}
\newcommand*{\subtitlepunct}{\newunitpunct}
\newcommand*{\intitlepunct}{\addcolon\space}
\newcommand*{\bibpagespunct}{\addcomma\space}
\newcommand*{\bibpagerefpunct}{\addspace}
\newcommand*{\revsdnamepunct}{\addcomma}
\newcommand*{\bibnamedash}{%
  \ifdimless{\leftmargin}{0.75em}
    {\mbox{\textemdash\space}}
    {\makebox[\leftmargin][2]{%
       \ifdimless{\leftmargin}{1.25em}
         {\textendash}
         {\textemdash}
         }}}
\newcommand*{\relatedpunct}{\addspace}
\newcommand*{\relateddelim}{\adddot\par\nobreak}
\newcommand{\mkrelatedstring}{\mainlang}

% \bibsetup is a generic hook controlling the (low-level) layout of
% the bibliography and bibliography lists. The default
% definition should work fine in most cases.

\newcommand*{\bibsetup}{%
  \interlinepenalty=5000\relax
  \widowpenalty=10000\relax
  \clubpenalty=10000\relax
  \raggedbottom
  \frenchspacing
  \biburlsetup}

% The default font of the bibliography and the bibliography lists.
% We simply reset the current font to the global defaults.

\newcommand*{\bibfont}{\normalfont\normalsize}

% Some length registers which may be used to fine-tune the
% (high-level) layout of the bibliography.

% Default \bibhang to 1em if \parindent is 0 for some reason
\setlength{\bibhang}{\ifnumequal{\parindent}{0}{1em}{\parindent}}
\setlength{\biblabelsep}{2\labelsep}
\setlength{\bibitemsep}{\itemsep}
\setlength{\bibnamesep}{0pt}
\setlength{\bibinitsep}{0pt}
\setlength{\bibparsep}{0pt}

% ------------------------------------------------------------------
% FIELD FORMATS (#1 is the value of the field)
% ------------------------------------------------------------------

% The fallback used by \printfield

\DeclareFieldFormat{default}{#1}

% The default used by \citefield

\DeclareFieldFormat{citefield}{#1}

% ------------------------------------------------------------------
% LITERAL LIST FORMATS (#1 is the current item)
% ------------------------------------------------------------------

% Formatting directives for literal lists
% ------------------------------------------------------------------

% The fallback used by \printlist

\DeclareListFormat{default}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

% The default used by \citelist

\DeclareListAlias{citelist}{default}

% Used in the bibliography

\DeclareListFormat{publisher}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

\DeclareListFormat{language}{%
  \usebibmacro{list:delim}{%
    \ifbibstring{#1}
      {\bibxstring{#1}}
      {\ifbibstring{lang#1}
         {\bibxstring{lang#1}}
         {#1}}}%
  \ifbibstring{#1}
    {\bibstring{#1}}
    {\ifbibstring{lang#1}
       {\bibstring{lang#1}}
       {#1}}%
  \usebibmacro{list:andothers}}

\DeclareListFormat{location}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

\DeclareListFormat[patent]{location}{%
  \usebibmacro{list:plain}%
  \ifbibstring{#1}{\bibstring{#1}}{#1\isdot}%
  \usebibmacro{list:andothers}}

\DeclareListFormat{pageref}{%
  \ifnumless{\abx@pagerefstyle}{0}
    {\usebibmacro{list:plain}%
     \ifhyperref
       {\hyperlink{page.#1}{#1}}
       {#1}}
    {\ifnumequal{\value{listcount}}{1}
       {\usebibmacro{pageref:init}}
       {}%
     \usebibmacro{pageref:comp}{#1}%
     \ifnumequal{\value{listcount}}{\value{liststop}}
       {\usebibmacro{pageref:dump}}
       {}}}

\DeclareListAlias{origlocation}{location}
\DeclareListAlias{origpublisher}{publisher}
\DeclareListAlias{institution}{default}
\DeclareListAlias{organization}{default}

% Auxiliary macros for list formatting directives
% ------------------------------------------------------------------

\newbibmacro*{list:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmoreitems
     }
       {\multilistdelim}
       {\lbx@finallistdelim{#1}}}
    {}}

\newbibmacro*{list:plain}{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\multilistdelim}
    {}}

\newbibmacro*{list:andothers}{%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmoreitems
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}%
     \andmoredelim\bibstring{andmore}}
    {}}

\newbibmacro*{pageref:init}{%
  \let\abx@range@hold=\empty
  \def\abx@range@diff{0}%
  \def\abx@range@prev{-1}%
  \def\abx@range@this{0}%
  \def\abx@range@last{-1}}

% ------------------------------------------------------------------
% NAME LIST FORMATS
% ------------------------------------------------------------------

% Argments passed to formatting directives for name lists:
%
% #1 = last name
% #2 = last name (initials)
% #3 = first name
% #4 = first name (initials)
% #5 = name prefix, a.k.a. 'von part'
% #6 = name prefix (initials)
% #7 = name affix, a.k.a. 'junior part'
% #8 = name affix (initials)

% Formatting directives for name lists
% ------------------------------------------------------------------

\DeclareNameFormat{first-last}{%
  \iffirstinits
    {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}}
    {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{last-first}{%
  \iffirstinits
    {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}
    {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{last-first/first-last}{%
  \ifnumequal{\value{listcount}}{1}
    {\iffirstinits
       {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}
       {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}%
     \ifblank{#3#5}
       {}
       {\usebibmacro{name:revsdelim}}}
    {\iffirstinits
       {\usebibmacro{name:first-last}{#1}{#4}{#5}{#7}}
       {\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}}}%
  \usebibmacro{name:andothers}}

\DeclareNameFormat{initsonly}{%
  \usebibmacro{name:first-last}{#2}{#4}{#6}{#8}%
  \usebibmacro{name:andothers}}

% Fallback used by \printnames

\DeclareNameAlias{default}{first-last}

% Default used by \citename

\DeclareNameAlias{citename}{default}

% Used in some citations

\DeclareNameFormat{labelname}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:last}{#1}{#3}{#5}{#7}%
  \or
    \ifuseprefix
      {\usebibmacro{name:first-last}{#1}{#4}{#5}{#8}}
      {\usebibmacro{name:first-last}{#1}{#4}{#6}{#8}}%
  \or
    \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}%
  \fi
  \usebibmacro{name:andothers}}

% Used in the bibliography

\DeclareNameAlias{sortname}{last-first/first-last}
%\DeclareNameAlias{sortname}{last-first}

\DeclareNameAlias{author}{default}
\DeclareNameAlias{bookauthor}{author}
\DeclareNameAlias{editor}{default}
\DeclareNameAlias{editora}{editor}
\DeclareNameAlias{editorb}{editor}
\DeclareNameAlias{editorc}{editor}
\DeclareNameAlias{translator}{default}

\DeclareNameAlias{byauthor}{default}
\DeclareNameAlias{bybookauthor}{byauthor}
\DeclareNameAlias{byeditor}{default}
\DeclareNameAlias{byeditora}{byeditor}
\DeclareNameAlias{byeditorb}{byeditor}
\DeclareNameAlias{byeditorc}{byeditor}
\DeclareNameAlias{bytranslator}{default}

\DeclareNameAlias{withcommentator}{default}
\DeclareNameAlias{withannotator}{default}
\DeclareNameAlias{withintroduction}{default}
\DeclareNameAlias{withforeword}{default}
\DeclareNameAlias{withafterword}{default}

\DeclareFieldFormat{authortype}{#1}
\DeclareFieldFormat{editortype}{#1}

% Auxiliary macros for name formatting directives
% ------------------------------------------------------------------

\newbibmacro*{name:last}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}
       {}
       {\ifcapital
          {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
          {\mkbibnameprefix{#3}\isdot}%
        \ifpunctmark{'}{}{\bibnamedelimc}}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}}%
  \mkbibnamelast{#1}\isdot}%

\newbibmacro*{name:first-last}[4]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \ifblank{#2}{}{\mkbibnamefirst{#2}\isdot\bibnamedelimd}%
  \ifblank{#3}{}{%
    \mkbibnameprefix{#3}\isdot
    \ifpunctmark{'}
      {}
      {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
  \mkbibnamelast{#1}\isdot
  \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}}

\newbibmacro*{name:last-first}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \ifblank{#3}{}{%
       \ifcapital
         {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
         {\mkbibnameprefix{#3}\isdot}%
       \ifpunctmark{'}{}{\bibnamedelimc}}%
     \mkbibnamelast{#1}\isdot
     \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
     \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamefirst{#2}\isdot}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibnamelast{#1}\isdot
     \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
     \ifblank{#2#3}{}{\revsdnamepunct}%
     \ifblank{#2}{}{\bibnamedelimd\mkbibnamefirst{#2}\isdot}%
     \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}

\newbibmacro*{name:hook}[1]{%
  \ifnumequal{\value{listcount}}{1}
    {\lbx@initnamehook{#1}}
    {}}

\newbibmacro*{name:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmorenames
     }
       {\multinamedelim}
       {\lbx@finalnamedelim{#1}}}
    {}}

\newbibmacro*{name:revsdelim}{%
  \ifboolexpr{
    (
      test {\ifnumequal{\value{liststop}}{1}}
      and
      test \ifmorenames
    )
    or
    test {\ifnumequal{\value{liststop}}{2}}
  }
    {\revsdnamedelim}
    {}}

\newbibmacro*{name:andothers}{%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}%
     \andothersdelim\bibstring{andothers}}
    {}}

% ------------------------------------------------------------------
% INDEX FORMATS FOR FIELDS (#1 is the value of the field)
% ------------------------------------------------------------------

% There is no need to test if a field to be indexed is empty because
% \indexfield performs this test implicitly.

% The fallback used by \indexfield

\DeclareIndexFieldFormat{default}{\index{#1}}

% Used in the bibliography and in citations

\DeclareIndexFieldFormat{indextitle}{%
  \usebibmacro{index:title}{\index}{#1}}

\newbibmacro*{index:title}[2]{%
  \usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{\emph{#2}}}

\newbibmacro*{index:field}[3]{%
  \usebibmacro{index:entry}{#1}{\mkbibindexfield{#2}{#3}}}

% Auxiliary macros for field indexing directives
% ------------------------------------------------------------------

\newbibmacro*{index:entry}[2]{%
  \begingroup
  \protected@edef\theindexentry{\unexpanded{#1}{#2}}%
  \theindexentry
  \endgroup}

\newcommand*{\mkbibindexfield}[2]{\mkbibindexentry{#1}{\unexpanded{#2}}}
\newcommand*{\mkbibindexentry}[2]{#1\actualoperator#2}

% ------------------------------------------------------------------
% INDEX FORMATS FOR LITERAL LISTS (#1 is the current item)
% ------------------------------------------------------------------

% The fallback used by \indexlist

\DeclareIndexListFormat{default}{\index{#1}}

% ------------------------------------------------------------------
% INDEX FORMATS FOR NAME LISTS
% ------------------------------------------------------------------

% Argments passed to indexing directives for name lists:
%
% #1 = last name
% #2 = last name (initials)
% #3 = first name
% #4 = first name (initials)
% #5 = name prefix, a.k.a 'von part'
% #6 = name prefix (initials)
% #7 = name affix, a.k.a 'junior part'
% #8 = name affix (initials)

% Indexing directives for name lists
% ------------------------------------------------------------------

% The fallback used by \indexnames

\DeclareIndexNameFormat{default}{%
  \usebibmacro{index:name}{\index}{#1}{#3}{#5}{#7}}

% Used in citations

\DeclareIndexNameAlias{labelname}{default}

% Used in the bibliography

\DeclareIndexNameAlias{author}{default}
\DeclareIndexNameAlias{editor}{default}
\DeclareIndexNameAlias{bookauthor}{default}

% Auxiliary macros for name indexing directives
% ------------------------------------------------------------------

% When generating an index entry, we need to test which parts of a
% name are actually available to prevent spurious punctuation and
% spaces. Since those parts which are not available yield an empty
% argument, we can use the \ifblank test from etoolbox.sty to analyze
% the name.
%
% Note that the standard LaTeX \index command simply writes its
% argument to the .idx file without preventing expansion. This means
% that all \ifblank tests are expanded on the way and will not end
% up in the index. The index package, however, prevents expansion.
% This would lead to \ifblank ending up in the .idx file. To avoid
% that, we preprocess the index entry inside an \edef. We use
% \unexpanded to protect the \index command and the actual data from
% expansion. This definition will work with both index.sty and the
% standard indexing facilities.
%
% We also use \ifuseprefix to ensure that the name prefix is handled
% properly. \actualoperator is the so-called actual operator, as
% defined by the 'actual' specifier in the .ist file. The makeindex
% program will use the part preceeding the \actualoperator
% delimiter for sorting. The part after the delimiter is used as the
% index is printed. Note that this is not specific to biblatex, see
% the makeindex documentation for details.

\newcommand*{\actualoperator}{@}
\newcommand*{\subentryoperator}{!}

\newbibmacro*{index:name}[5]{%
  \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}

% {<last name>}{<first name>}{<first initials>}{<last name prefix>}

\newcommand*{\mkbibindexname}[4]{%
  \ifuseprefix
    {\ifblank{#3}{}{#3 }%
     \@firstofone #1% remove spurious braces
     \ifblank{#4}{}{ #4}%
     \ifblank{#2}{}{, #2}%
     \actualoperator
     \ifblank{#3}{}{\MakeCapital{#3} }%
     #1%
     \ifblank{#4}{}{ #4}%
     \ifblank{#2}{}{, #2}}
    {\@firstofone #1% remove spurious braces
     \ifblank{#4}{}{ #4}%
     \ifblank{#2#3}{}{,}%
     \ifblank{#2}{}{ #2}%
     \ifblank{#3}{}{ #3}}}

% {<control sequence>}{<control sequence>}

\newcommand*{\mkbibindexsubentry}[2]{%
  \ifblank{#1}{}{\subentryoperator#1\actualoperator#2}}

% Additional macros with subentries

\newbibmacro*{index:name:field}[6]{%
  \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
    {\thefield{#6}}{\csfield{#6}}}

\newbibmacro*{index:name:title}[5]{%
  \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
    {\thefield{indexsorttitle}}{\emph{\csfield{indextitle}}}}

\newbibmacro*{index:name:subentry}[7]{%
  \usebibmacro{index:entry}{#1}{%
    \mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}}

% ------------------------------------------------------------------
% META-FIELDS
% ------------------------------------------------------------------

\DeclareLabelname{%
  \field{shortauthor}
  \field{author}
  \field{shorteditor}
  \field{editor}
  \field{translator}
}

% ------------------------------------------------------------------
% GENERIC BIBLIOGRAPHY MACROS
% ------------------------------------------------------------------

\newbibmacro*{bibindex}{%
  \ifbibindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

\newbibmacro*{author/editor}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{editor}}}

\newbibmacro*{author/editor+others}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{editor+others}}}

\newbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {}
       {\setunit{\addcomma\space}%
        \usebibmacro{authorstrg}}}
    {}}

\newbibmacro*{editor}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\addcomma\space}%
     \usebibmacro{editorstrg}%
     \clearname{editor}}
    {}}

\newbibmacro*{editor+others}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\addcomma\space}%
     \usebibmacro{editor+othersstrg}%
     \clearname{editor}}
    {}}

\newbibmacro*{translator}{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\addcomma\space}%
     \usebibmacro{translatorstrg}%
     \clearname{translator}}
    {}}

\newbibmacro*{authorstrg}{%
  \iffieldundef{authortype}
    {}
    {\printtext[authortype]{%
       \ifbibxstring{\thefield{authortype}}
         {\ifboolexpr{
            test {\ifnumgreater{\value{author}}{1}}
            or
            test {\ifandothers{author}}
          }
            {\bibstring{\thefield{authortype}s}}
            {\bibstring{\thefield{authortype}}}}
         {\thefield{authortype}}}}}

\newbibmacro*{editor+othersstrg}{%
  \iffieldundef{editortype}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\def\abx@tempa{editors}}
       {\def\abx@tempa{editor}}}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\edef\abx@tempa{\thefield{editortype}s}}
       {\edef\abx@tempa{\thefield{editortype}}}}%
  \let\abx@tempb=\empty
  \ifnamesequal{editor}{translator}
    {\appto\abx@tempa{tr}%
     \appto\abx@tempb{\clearname{translator}}}
    {}%
  \ifnamesequal{editor}{commentator}
    {\appto\abx@tempa{co}%
     \appto\abx@tempb{\clearname{commentator}}}
    {\ifnamesequal{editor}{annotator}
       {\appto\abx@tempa{an}%
        \appto\abx@tempb{\clearname{annotator}}}
       {}}%
  \ifnamesequal{editor}{introduction}
    {\appto\abx@tempa{in}%
     \appto\abx@tempb{\clearname{introduction}}}
    {\ifnamesequal{editor}{foreword}
       {\appto\abx@tempa{fo}%
        \appto\abx@tempb{\clearname{foreword}}}
       {\ifnamesequal{editor}{afterword}
          {\appto\abx@tempa{af}%
           \appto\abx@tempb{\clearname{afterword}}}
          {}}}%
  \ifbibxstring{\abx@tempa}
    {\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb}
    {\usebibmacro{editorstrg}}}

\endinput

根据 Guido 的提议,有以下结果:(我刚刚删除了反驳)

答案1

这对你有用吗?

% What's new under the sun
\renewcommand*{\bibnamedash}{%
    \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}
        {\hspace{\bibhang}--}
        {\hspace{\bibhang}--}
}

% What you need to correct
\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \mkbibbold{\usebibmacro{author/translator+others}}% Make the author bold
  \newline--\space% % --- There was a spurious space in your code
% \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
}

% What you need to correct (removed bolding and spurious spaces)
\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}%
    {\printnames{author}}%
%   \setunit{\addcomma\space}% % virgule au début de la ligne de titre
    \usebibmacro{bbx:savehash}%
     \usebibmacro{authorstrg}}
    {\global\undef\bbx@lasthash}}

它应该与标准authortitle风格兼容,不是修改或者注释掉bbx:savehashbibmacro。

附随机书目参考:

结果


默认样式为我添加了一个破折号,并且不会重复作者姓名(这是书目的常态,因为它有助于区分同一作者的作品和没有作者的作品)。

但是,我宁愿建议您坚持使用默认设置而不是此解决方案——默认样式是法国和法国法律使用的样式。

相关内容