%Type de document
\documentclass[11pt, a4paper]{article}
%Caractères spéciaux
\usepackage{MnSymbol}
\usepackage{mathrsfs}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%Mise en page
\usepackage[a4paper,includeheadfoot, margin=3cm]{geometry}
\linespread{1.5}
\usepackage{fancyhdr}
\renewcommand{\headrulewidth}{0pt}
\setlength{\skip\footins}{2.5\baselineskip}
\usepackage{csquotes}
%Langue
\usepackage[french]{babel}
%Biblatex
\usepackage[backend=biber, style=philosophy-classic, scauthors=bib, natbib=true]{biblatex}
%\usepackage{hyperref}
\renewcommand*{\volnumpunct}{}
\DeclareFieldFormat{volume}{{#1}}
\DeclareFieldFormat{number}{(#1)}
\DeclareFieldFormat{pages}{pp. #1}
\renewcommand*{\postnotedelim}{: }
\DeclareFieldFormat{postnote}{#1}
\setlength{\bibnamesep}{3\itemsep}
\DeclareNameAlias{sortname}{family-given}
\addbibresource{Bibliography.bib}
使用 bibilatex-philosophy,我尝试在任何情况下都保持 LASTNAME 位于首位,因为当一个条目有两个作者时,第二个作者会以 FIRSTNAME 位于首位(显然这是正确的方法,但这违反了哈佛规范)。我使用了:
\DeclareNameAlias{sortname}{family-given}
这招管用。但是,现在我的小型大写字母不见了(?!?)。所以我尝试撤回该选项:
scauthors=bib %smallcaps authors only in bibliography.
并将其替换为:
\renewcommand{\mkbibnamefamily}[1]{\textsc{#1}}
但这失败了。
更令人不安的是
scauthors=all
解决了这个问题,但我不希望我的作者在文中使用小写字母。
我试着仔细阅读了自述文件。我得到的唯一提示是这个(我使用的是法语版本):
The french.lbx localization module redefines \mkbibnamefamily in order to get the family name
in small caps shape. We do not like this approach because an author could use a localization module
without adhering to the typographical standards which should be indipendent from the linguistic
standards. For this reason we prefer to reset it to the default deffnition.
如果有人有线索......
谢谢
答案1
sortname
中的名称格式定义philosophy-standard
包括以下行
\iftoggle{bbx:scauthorsbib}{\usebibmacro{bbx:scswitch}}{}%
我们\DeclareNameAlias{sortname}{family-given}
设置了一个不包含此开关的不同名称格式。但我们可以轻松将其恢复。
请注意,此解决方案使用新的名称包装器,需要biblatex
v3.12(2018-10-30)或更高版本。如果您使用的是较旧的解决方案,则需要更长的代码。
\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=philosophy-classic, scauthors=bib, natbib=true]{biblatex}
\DeclareNameAlias{sortname}{family-given}
\DeclareNameWrapperFormat{sortname}{%
\iftoggle{bbx:scauthorsbib}{\usebibmacro{bbx:scswitch}}{}%
#1}
\addbibresource{biblatex-examples.bib}
\begin{document}
\autocite{sigfridsson}
\printbibliography
\end{document}
注意:\mkbibnamefamily
如果混合了法语,则总是有点棘手,因为biblatex
的本地化模块会重新定义\mkbibnamefamily
为产生小写字母。参见使用 biblatex 和 babel 处理法语时如何删除小写字母?和在 biblatex 中保留小写.biblatex-philosophy
的法语模块明确重新定义\mkbibnamefamily
为不应用格式。根据具体目标,可能仍需要发出\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
。
不过,我们不需要担心这里的所有内容,因为bbx:scswitch
它调用得足够晚,以至于所有这些都已经得到处理了。