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
,但可以执行您想要的操作。