使用 biblatex 时,不要将索引中的姓氏前缀大写

使用 biblatex 时,不要将索引中的姓氏前缀大写

使用biblatex导致前缀大写,这有时是不必要的。例如,带有前缀的荷兰名称货车或带前缀的法语名字有时索引中不大写。此外,也许有点不寻常但仍然可能相关,我最近了解到一位研究人员希望只用小写字母引用他们的名字(我相信这是在 SocSci 的某个地方)。

梅威瑟:

\begin{filecontents}{test.bib}
    @misc{vanTrijp2013,
        author = {van Trijp, Remi},
        date = {2013},
        title = {A Comparison between approach A and B},
    }
\end{filecontents}

\documentclass{article}
\usepackage[indexing=cite,style=authoryear,useprefix=true]{biblatex}
\addbibresource{test.bib}
\makeindex
\begin{document}
    \cite{vanTrijp2013}
\end{document}

这会在文件中产生以下条目.dx

\indexentry{van Trijp, Remi@\MakeCapital {van} Trijp, Remi}{1}

这将产生索引条目雷米·范特里普, 虽然雷米·范特里普是首选。我希望\MakeCapital是可选的,而不会混淆索引中条目的排序。

该问题可能与\mkbibindexnamefrom有关biblatex.def,其中\MakeCapital是硬编码。

一个可能的解决方案是,使用,从定义中etoolbox简单地删除:\MakeCapital

\patchcmd{\mkbibindexname}{\ifdefvoid{#3}{}{\MakeCapital{#3} }}{\ifdefvoid{#3}{}{#3 }}{}{}

但我不认为以这种方式更改包的代码是一个可持续的解决方案。你知道有更好的方法吗?

答案1

尽管实际的定义\mkbibindexname看起来有点令人生畏,但用户如果他们不喜欢宏产生的输出,他们应该更改该宏。因此,按照您的建议修补宏是完全没问题的。有一个普遍的问题是,修补宏还是重新定义宏更好(例如,参见Biblatex 的 bibmacros、参考书目驱动程序、格式 - 修补或重新定义?) 而对于“小”宏,\mkbibindexname我通常会倾向于重新定义路线而不是修补,但这取决于个人喜好。

对于此应用程序,我们可以重新定义相关宏,如下所示

\documentclass{article}
\usepackage[indexing=cite,style=authoryear,useprefix=true]{biblatex}
\usepackage{makeidx}

\makeatletter
\renewcommand*{\mkbibindexname}[4]{%
  \ifuseprefix
    {\ifdefvoid{#3}{}{#3 }%
     \@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifdefvoid{#2}{}{, #2}}
    {\@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}
       {,}%
     \ifdefvoid{#2}{}{ #2}%
     \ifdefvoid{#3}{}{ #3}}}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{vanTrijp2013,
  author = {van Trijp, Remi},
  date   = {2013},
  title  = {A Comparison between approach A and B},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\makeindex
\begin{document}
  \cite{vanTrijp2013}
  \printindex
\end{document}

范特里普,雷米,1

如果设置了某个选项,那么还应该可以选择将其应用于\MakeCapital名称,但随后您必须决定如何讲述biblatex这一点。

相关内容