首先,我是法国人,所以我的英语水平很差:)
在制作参考书目时,我有以下情况:
但我想要 :
姓氏 名字
- 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:savehash
bibmacro。
附随机书目参考:
默认样式为我添加了一个破折号,并且不会重复作者姓名(这是书目的常态,因为它有助于区分同一作者的作品和没有作者的作品)。
但是,我宁愿建议您坚持使用默认设置而不是此解决方案——默认样式是法国和法国法律使用的样式。