使用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
是可选的,而不会混淆索引中条目的排序。
该问题可能与\mkbibindexname
from有关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}
如果设置了某个选项,那么还应该可以选择将其应用于\MakeCapital
名称,但随后您必须决定如何讲述biblatex
这一点。