使用 biblatex 将引文中的第二个名字的前缀大写

使用 biblatex 将引文中的第二个名字的前缀大写

biblatex 中的命令\Cite将名称列表中的第一个前缀大写:

\cite: de Jonge and de Bruin
\Cite: De Jonge and de Bruin

不幸的是在荷兰出版物中全部前缀需要大写。基本上我需要:De Jonge 和 De Bruin。

这只在文本中有效,在参考书目中我仍然需要“Jonge,M. de 和 T. de Bruin”(这是通过概述的 hack 实现的我怎样才能在引用中将名称的前缀放在前面,但在参考书目中却不放呢?)。

有人知道我该如何在 biblatex 中解决这个问题吗?

答案1

我刚刚修改了最小的例子lockstep 的回答对于你之前的问题:

\documentclass{article}

\usepackage[useprefix=false,style=authoryear]{biblatex}% "useprefix=false" is the default

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {de Author, A. and de Bruin, T.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\makeatletter
\AtBeginDocument{%
  \toggletrue{blx@useprefix}
  \renewcommand*{\mkbibnameprefix}[1]{\MakeCapital{#1}}}% this is the relevant line of code
\AtBeginBibliography{%
  \togglefalse{blx@useprefix}
  \renewcommand*{\mkbibnameprefix}[1]{#1}}% this sets the name prefix back
\makeatother

\begin{document}

Some text \autocite{A01,B02}.

Some text \Autocite{A01,B02}.

\printbibliography

\end{document}

答案2

也许有更好的方法可以做到这一点:

\makeatletter
\newrobustcmd\NLCite{\begingroup
  \toggletrue{blx@useprefix}
  \renewcommand*{\mkbibnameprefix}[1]{\MakeCapital{##1}}%
  \@ifnextchar[\@NLCiteo\@NLCite}
\def\@NLCite#1{\cite{#1}\endgroup}
\def\@NLCiteo[#1]{\@ifnextchar[{\@NLCiteoo{#1}}{\@NLCiteox{#1}}}
\def\@NLCiteox#1#2{\cite[#1]{#2}\endgroup}
\def\@NLCiteoo#1[#2]#3{\cite[#1][#2]{#3}\endgroup}
\makeatother

现在\NLCite具有与相同的语法\Cite,但可以执行您想要的操作。

相关内容