将作者姓氏设置为小写,但编辑、翻译等使用 biblatex 时应避免使用

将作者姓氏设置为小写,但编辑、翻译等使用 biblatex 时应避免使用

我正在使用 biblatex,并且需要作者的姓氏用小写字母,因此我执行以下操作:

\renewcommand\mkbibnamelast[1]{\textsc{#1}}

因此我得到了“SMITH,John”,这就是我需要的。但我还得到了例如:

阿尔西诺斯(1990 年)。柏拉图学说教学。编辑作者:J. WHITTAKER 和 P. LOUIS。巴黎:Belles Lettres。

问题是我不希望编辑、翻译等使用小写字母,因为西班牙语不正确。

编辑:截至 2016 年 3 月(biblatex 3.3),您需要\mkbibnamefamily

答案1

可以使用 选择性地应用小写字母\ifcurrentname。下面的示例\textsc仅适用于 字段的姓氏labelnameauthoreditor,在没有 的情况下author)。结果通过 进行演示verbose-trad1,但该解决方案应该适用于大多数样式。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage[american]{babel}
\usepackage[style=verbose-trad1]{biblatex}

\renewcommand*{\mkbibnamelast}[1]{%
  \ifmknamesc{\textsc{#1}}{#1}}

\renewcommand*{\mkbibnameprefix}[1]{%
  \ifboolexpr{ test {\ifmknamesc} and test {\ifuseprefix} }
    {\textsc{#1}}
    {#1}}

\def\ifmknamesc{%
  \ifboolexpr{ test {\ifcurrentname{labelname}}
               or test {\ifcurrentname{author}}
               or ( test {\ifnameundef{author}} and test {\ifcurrentname{editor}} ) }}

\addbibresource{biblatex-examples.bib}

\begin{document}
\null\vfill\noindent
\citeauthor{aristotle:poetics,gaonkar}.
Filler text \autocites[10--15]{aristotle:poetics}{aristotle:rhetoric,companion,cicero}.
Filler text \autocites[11]{companion}[10--15]{aristotle:poetics}{aristotle:rhetoric,gaonkar,vangennep}.
\printbibliography
\end{document}

在此处输入图片描述

请注意,应用此格式会使labelname设置\citeauthor变成小写字母。为了避免在启用引用跟踪的样式下出现这种情况,\ifmknamesc可以进行改进:

\def\ifmknamesc{%
  \ifboolexpr{ ( test {\ifbibliography} or test {\ifbool{citetracker}} )
               and ( test {\ifcurrentname{labelname}}
                     or test {\ifcurrentname{author}}
                     or ( test {\ifnameundef{author}}
                          and test {\ifcurrentname{editor}} ) ) }}

在没有跟踪的样式下,\citeauthor可直接修改:

\DeclareCiteCommand{\citeauthor}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \let\ifmknamesc=\ifbibliography%
   \printnames{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

为了完全避免在引用中使用小写字母,我们可以使用测试\ifbibliography。以下定义也限制\textsc为第一作者(或编辑)。

\def\ifmknamesc{%
  \ifboolexpr{ test {\ifnumequal{\value{listcount}}{1}}
               and test {\ifbibliography}
               and ( test {\ifcurrentname{author}}
                     or ( test {\ifnameundef{author}}
                          and test {\ifcurrentname{editor}} ) ) }}

一个特定于样式的考虑因素是idem缩写。在示例中,缩写未设置为小写字母。要更改此设置,您可以重新定义cite:idem参考书目宏。

\renewbibmacro*{cite:idem}{%
  \textsc{\bibstring[\mkibid]{idem\thefield{gender}}}%
  \setunit{\nametitledelim}}

相关内容